Ich habe mal ein Skript hier gesehen, dass in man in der Life_Server definieren kann wo Positionen von random koordinaten jeden Restart eine Position ausgewählt wird und dann random auf der map der Verarbeiter oder Händler gesetzt wird. Weiß jemand wie das geht bzw. wo der Tutorial war.
Zu dumm zum finden ...
-
skyracer2012 -
17. Oktober 2017 um 15:25 -
Erledigt
-
-
Moin,
du müsstest Dir verschiedene Positionen auf deiner Karte raussuchen und anschliessend per Script beim Restart raussuchen und den Verarbeiter bzw. Händler setzen.
Da ich deine Map bzw. Verarbeiter / Händler nicht kenne kann ich Dir auch nur ein kleines Beispiel geben.
Entweder du erstellst ein neues Script oder packst das mit in die Init.sqf des life_servers
C
Alles anzeigen/* Random Process / Dealer Author: moeck 17.10.2017 */ copper_processor = [[0,0,0],[1,0,0],[1,1,1]]call BIS_fnc_selectRandom; // Positions copper processor copper_dealer = [[0,0,0],[1,0,0],[1,1,1]]call BIS_fnc_selectRandom; // Positions copper dealer ... publicVariable "copper_processor"; publicVariable "copper_dealer"; ...
Dann musst Du in der Mission noch ein Script anlegen welches Dir die Schilder / Kassentische / etc. an die entsprechende Position setzt.
C
Alles anzeigen{ private _obj= (_x select 0)createVehicleLocal [0,0,0]; _obj setPosWorld(_x select 1); _obj enableSimulation(_x select 2); _obj allowDamage(_x select 3); if!((_x select 4) isEqualTo "")then{_obj call compile(_x select 4);}; if!((_x select 5) isEqualTo "")then{_obj setVehicleVarName (_x select 5);}; nil; } count [ ["Land_InfoStand_V2_F",copper_processor,false,false," _this addAction[localize""STR_Process_Copper"",life_fnc_processAction,""copper"",0,false,false,"""",' life_inv_copperUnrefined > 0 && !life_is_processing && !life_action_inUse']; this addAction[format [""%1 ($%2)"",localize (getText(missionConfigFile >> ""Licenses"" >> ""copper"" >> ""displayName"")), [(getNumber(missionConfigFile >> ""Licenses"" >> ""copper"" >> ""price""))] call life_fnc_numberText],life_fnc_buyLicense,""copper"",0,false,false,"""",' !license_civ_copper && playerSide isEqualTo civilian '];",""] ,["Land_InfoStand_V2_F",copper_dealer,false,false," _this addAction[localize""STR_MAR_Iron_Copper_Trader"",life_fnc_virt_menu,""iron""];",""] ];
Eventuell musst Du noch die Ausrichtung mit angeben.
Gruß,
moeck
-
Moin,
du müsstest Dir verschiedene Positionen auf deiner Karte raussuchen und anschliessend per Script beim Restart raussuchen und den Verarbeiter bzw. Händler setzen.
Da ich deine Map bzw. Verarbeiter / Händler nicht kenne kann ich Dir auch nur ein kleines Beispiel geben.
Entweder du erstellst ein neues Script oder packst das mit in die Init.sqf des life_servers
C
Alles anzeigen/* Random Process / Dealer Author: moeck 17.10.2017 */ copper_processor = [[0,0,0],[1,0,0],[1,1,1]]call BIS_fnc_selectRandom; // Positions copper processor copper_dealer = [[0,0,0],[1,0,0],[1,1,1]]call BIS_fnc_selectRandom; // Positions copper dealer ... publicVariable "copper_processor"; publicVariable "copper_dealer"; ...
Dann musst Du in der Mission noch ein Script anlegen welches Dir die Schilder / Kassentische / etc. an die entsprechende Position setzt.
C
Alles anzeigen{ private _obj= (_x select 0)createVehicleLocal [0,0,0]; _obj setPosWorld(_x select 1); _obj enableSimulation(_x select 2); _obj allowDamage(_x select 3); if!((_x select 4) isEqualTo "")then{_obj call compile(_x select 4);}; if!((_x select 5) isEqualTo "")then{_obj setVehicleVarName (_x select 5);}; nil; } count [ ["Land_InfoStand_V2_F",copper_processor,false,false," _this addAction[localize""STR_Process_Copper"",life_fnc_processAction,""copper"",0,false,false,"""",' life_inv_copperUnrefined > 0 && !life_is_processing && !life_action_inUse']; this addAction[format [""%1 ($%2)"",localize (getText(missionConfigFile >> ""Licenses"" >> ""copper"" >> ""displayName"")), [(getNumber(missionConfigFile >> ""Licenses"" >> ""copper"" >> ""price""))] call life_fnc_numberText],life_fnc_buyLicense,""copper"",0,false,false,"""",' !license_civ_copper && playerSide isEqualTo civilian '];",""] ,["Land_InfoStand_V2_F",copper_dealer,false,false," _this addAction[localize""STR_MAR_Iron_Copper_Trader"",life_fnc_virt_menu,""iron""];",""] ];
Eventuell musst Du noch die Ausrichtung mit angeben.
Gruß,
moeck
kann ich das ganze auch in die init des Objekts reinschreiben ? oder wo muss das rein
-
na du musst das objekt ja erst setzen
-
na du musst das objekt ja erst setzen
ja also wo muss das
Code
Alles anzeigen{ private _obj= (_x select 0)createVehicleLocal [0,0,0]; _obj setPosWorld(_x select 1); _obj enableSimulation(_x select 2); _obj allowDamage(_x select 3); if!((_x select 4) isEqualTo "")then{_obj call compile(_x select 4);}; if!((_x select 5) isEqualTo "")then{_obj setVehicleVarName (_x select 5);}; nil; } count [ ["Land_InfoStand_V2_F",copper_processor,false,false," _this addAction[localize""STR_Process_Copper"",life_fnc_processAction,""copper"",0,false,false,"""",' life_inv_copperUnrefined > 0 && !life_is_processing && !life_action_inUse']; this addAction[format [""%1 ($%2)"",localize (getText(missionConfigFile >> ""Licenses"" >> ""copper"" >> ""displayName"")), [(getNumber(missionConfigFile >> ""Licenses"" >> ""copper"" >> ""price""))] call life_fnc_numberText],life_fnc_buyLicense,""copper"",0,false,false,"""",' !license_civ_copper && playerSide isEqualTo civilian '];",""] ,["Land_InfoStand_V2_F",copper_dealer,false,false," _this addAction[localize""STR_MAR_Iron_Copper_Trader"",life_fnc_virt_menu,""iron""];",""] ];
hier rein in die init des objektes oder nicht wenn nein wo rein ?
-
eigenes script, was beim starten ausgeführt wird
-
d.h. in die Init von der missi ?
-
wenn ich dann am rechner bin poste ich das nochmal etwas ausführlich, aber zum verständnis. Du erstellst eine eigene Datei mit dem Kram und packst die mit in die mission. Anschliessend führst du in der mission init das script mit aus
-
So hier mal noch ein anderer Ansatz, der eventuell einfacher zu verstehen ist.
Du machst für jeden Verarbeiter / Händler x leere Marker auf die Karte und gibst ihnen Namen wie zum Beispiel "copper_process1", "copper_process2", "copper_process3"
Dann legst Du im life_server ein Script an.
C: fn_getprocess.sqf/* Random Process / Dealer Author: moeck 17.10.2017 */ copper_processor = ["copper_process1", "copper_process2", "copper_process3"]call BIS_fnc_selectRandom; // Positions copper processor publicVariable "copper_processor";
Anschliessend in erstellst Du in deiner Mission ein weiteres Script.
Code: fn_setprocessor.sqf
Alles anzeigen/* Set random Dealer and Process Author: moeck */ { private _obj= (_x select 0)createVehicleLocal [0,0,0]; _obj setPosWorld(getMarkerpos (_x select 1)); _obj setDir (getDir (_x select 1)); _obj enableSimulation(_x select 2); _obj allowDamage(_x select 3); if!((_x select 4) isEqualTo "")then{_obj call compile(_x select 4);}; if!((_x select 5) isEqualTo "")then{_obj setVehicleVarName (_x select 5);}; nil; } count [ ["Land_InfoStand_V2_F",copper_processor,false,false," _this addAction[localize""STR_Process_Copper"",life_fnc_processAction,""copper"",0,false,false,"""",' life_inv_copperUnrefined > 0 && !life_is_processing && !life_action_inUse']; this addAction[format [""%1 ($%2)"",localize (getText(missionConfigFile >> ""Licenses"" >> ""copper"" >> ""displayName"")), [(getNumber(missionConfigFile >> ""Licenses"" >> ""copper"" >> ""price""))] call life_fnc_numberText],life_fnc_buyLicense,""copper"",0,false,false,"""",' !license_civ_copper && playerSide isEqualTo civilian '];",""] ,["Land_InfoStand_V2_F",copper_dealer,false,false," _this addAction[localize""STR_MAR_Iron_Copper_Trader"",life_fnc_virt_menu,""iron""];",""] ];
und zum schluss musst Du das noch mit initialisieren. Dazu fügst Du in die initPlayerLocal.sqf das Folgende ein.
[] execVM "core\functions\fn_setprocessor.sqf";
Ich habe das jetzt nicht getestet, aber so dürfte es funktionieren.
Gruß,
moeck