Dann poste mal die initAdac
Beiträge von Rom
-
-
Hey, die Meldung ist fast selbsterklärend
Du willst in der Nichtvorhandenen Spalte "playerid" etwas abgleichen, ersetze hinter der WHERE-Klausel "playerid" mit "pid" -
Wie gesagt, bin am Handy
muss mir dazu die NN-Mission angucken, denke aber da brauchst du nix deine ändern. Wenn können wir uns nachher auf dem NN TS treffen
-
Ich bin zwar am Handy, aber du musst zusätzlich die Fahrzeuge im fn_keyhandler.sqf, und in den Sirenslight-Scripts hinzufügen. Du findest dort jeweils (soweit ich zurückdenken kann) ein Array, in dem du die Fahrzeugklassen bspw. C_Offroad_01_F findest und musst du dort mit dem neuen Fahrzeug erweitern. Auch serverseitig musst du was ändern (wie du schon selber geschrieben hast) -
Spoiler anzeigen
richtig spielen
Auf jeden Fall Arma 3
Such dir lieber ein Team den wenn du keine Ahnung von der sache hast solltest du erstmal auf dem PC gucken wie das alles geht und nich gleich ein Server machen
das ist viel Arbeit und Kostet viel Zeit
, da gebe ich dir recht
-
Gehört das nicht eigentlich in die Marktsektion?
Und es ist je nach Addon mit Erweiterungen (für callExtension) wichtig, auf welchem OS der A3-Server läuft.
Und der Preis fehlt -
init.sqf in mission/core or @life_server.pbo or mission/init.sqf
life_server\init.sqf
Even if the server without players!
Deswegen würde ich sagen serverseitig @Flyyying_nflug
-
Tut mir leid, wenn man um Hilfe bittet, sollte man auch alle Infos zur Hand haben und nicht x Jahre später nachreichen...
-
vorher: waitUntil(scriptDone null};nachher: waitUntil{scriptDone null};
-
@romolos Ich habe in der Init.sqf eine exec für "random.sqf" angelegt.
Die sieht jetzt wie folgt aus:
Code
Alles anzeigen_counter = 0; while {_counter < 5} do // Geschweifte Klammern! { switch (floor(random 4)) do // Bin mir gerade unsicher, aber eine Zahl ist kein String und würde, denke ich, keine Übereinstimmung liefern { case 0: { null = [340,600,true,true,false] execvm "AL_dust_storm\al_duststorm.sqf";}; case 1: { null = [1] execvm "ALfallstar\alias_meteor_ini.sqf"}; case 2: { null = [1] execvm "ALfallstar\alias_fallingstar_ini.sqf"}; }; waitUntil(scriptDone null}; _counter = _counter + 1; sleep (10 + floor(random 20)); }; //In diesem Fall liegt die Wartezeit zwischen 1800 und 3600 Sekunden. Also mindetens 30 Minuten //und maximal 60 Minuten, wobei im Durchschnitt 45 Minuten gewartet wird.
Blöd nur dass er kein Script ausführt roflHabe ich da was falsch eingefügt?
Mir ist gerade aufgefallen, dass waitUntil noch falsch ist. die ( ist verkehrt am Platz
Code
Alles anzeigen_counter = 0; while {_counter < 5} do // Geschweifte Klammern! { switch (floor(random 4)) do // Bin mir gerade unsicher, aber eine Zahl ist kein String und würde, denke ich, keine Übereinstimmung liefern { case 0: { null = [340,600,true,true,false] execvm "AL_dust_storm\al_duststorm.sqf";}; case 1: { null = [1] execvm "ALfallstar\alias_meteor_ini.sqf"}; case 2: { null = [1] execvm "ALfallstar\alias_fallingstar_ini.sqf"}; }; waitUntil{scriptDone null}; _counter = _counter + 1; sleep (10 + floor(random 20)); }; //In diesem Fall liegt die Wartezeit zwischen 1800 und 3600 Sekunden. Also mindetens 30 Minuten //und maximal 60 Minuten, wobei im Durchschnitt 45 Minuten gewartet wird.
-
Hello, some brackets are missing between switches to close the cases. You can try this
Code
Alles anzeigen#include "..\..\script_macros.hpp" /* File: fn_craftCfg.sqf Author: EdgeKiller Description: Master configuration file for the crafting menu. */ private["_craft","_return"]; _craft = [_this,0,"",[""]] call BIS_fnc_param; if(_craft isEqualTo "") exitWith {closeDialog 0}; //Bad shop type passed. switch(_craft) do { case "weapon": { switch (true) do { case (license_civ_rebel): { _return = [ ["arifle_SDAR_F", ["sarme",1,"boite",1, "alliagemixte",1]], ["20Rnd_556x45_UW_mag", ["sarme",1,"boite",1,"poudre",1,"alliagemixte",1]] ]; }; // ici case (license_civ_syndikat): { _return = [ ["SMG_01_F", ["sarme",1,"boite",1, "alliagemixte",1]], ["30Rnd_45ACP_Mag_SMG_01", ["sarme",1,"boite",1,"poudre",1,"alliagemixte",1]] ]; }; }; }; case "uniform": { switch (true) do { case (license_civ_rebel): { _return = [ ["U_IG_Guerilla1_1", ["tisu",1,"aigui",1]], ["U_OG_Guerilla1_1", ["tisu",1,"aigui",1]] ]; }; // ici case (license_civ_syndikat): { _return = [ ["U_BG_Guerilla2_2", ["tisu",1,"aigui",1]], ["U_BG_Guerilla2_3", ["tisu",1,"aigui",1]] ]; }; }; }; case "backpack": { switch (true) do { case (license_civ_rebel): { _return = [ ["B_Parachute", ["tisu",1,"aigui",1]], ["B_ViperLightHarness_hex_F", ["tisu",1,"aigui",1]] ]; }; // ici case (license_civ_syndikat): { _return = [ ["B_ViperHarness_hex_F", ["tisu",1,"aigui",1]], ["B_ViperLightHarness_khk_F", ["tisu",1,"aigui",1]] ]; }; }; }; case "item": { switch (true) do { case (license_civ_rebel): { _return = [ ["couteau", ["iron_refined",1,"copper_refined",1]], ["boite", ["iron_refined",1,"copper_refined",1]] ]; }; // ici case (license_civ_syndikat): { _return = [ ["kit", ["iron_refined",1,"pile",1]], ["pelec", ["iron_refined",1,"pile",1]] ]; }; }; }; }; _return;
-
Die erste Sache, die ich machen würde, wäre das ganze aus der Init.sqf auszulagern.
Sprich du lässt in der Init.sqf ein Script ausführen (z.B. sturm.sqf).sturm.sqf
Spoiler anzeigen
C
Alles anzeigen_counter = 0; while (_counter < 5) do { switch (floor(random 4)) do { case "0": { null = execVM ...;}; case "1": { null = execVM ...;}; case "2": { null = execVM ...;}; }; waitUntil(scriptDone null}; _counter = _counter + 1; sleep (1800 + floor(random 1801)); }; //In diesem Fall liegt die Wartezeit zwischen 1800 und 3600 Sekunden. Also mindetens 30 Minuten //und maximal 60 Minuten, wobei im Durchschnitt 45 Minuten gewartet wird.
Kleine Verbesserung
Code
Alles anzeigen_counter = 0; while {_counter < 5} do // Geschweifte Klammern! { switch (floor(random 4)) do // Bin mir gerade unsicher, aber eine Zahl ist kein String und würde, denke ich, keine Übereinstimmung liefern { case 0: { null = execVM ...;}; case 1: { null = execVM ...;}; case 2: { null = execVM ...;}; }; waitUntil(scriptDone null}; _counter = _counter + 1; sleep (1800 + floor(random 1801)); }; //In diesem Fall liegt die Wartezeit zwischen 1800 und 3600 Sekunden. Also mindetens 30 Minuten //und maximal 60 Minuten, wobei im Durchschnitt 45 Minuten gewartet wird.
-
Nabend, wenn du möchtest, dass es ein Minimum und ein Maximum gibt, dann kannst du das hier nehmen:
sleep (3600 + (random 3600));In diesem Beispiel würde der Code mindestens jede Stunde fortgeführt und spätestens nach 2 Stunden.
Aber warum < und > fun-Effekt? -
Kannst du am Ende von fn_initCop.sqf anfügen
-
Statt (backpack player) setObj..... bitte (unitBackpack player) setObj... nutzen, da Backpack die Klasse und unitBackpack den Rucksack als Objekt zurück gibt.
-
Du kannst auch -filepatching (oä) in deinen Serverstartparametern nutzen und dann brauchst du deine Altis_Life.Altis nicht mehr in eine pbo packen. Der Server packt diese dann in __curMp (oä). Ich glaube aber dass du dann die PBO nicht mehr in dem MPmission Ordner haben darfst sondern nur den ungepackten Ordner. Dann kannst du die geänderten Dateien immer einzeln hochladen oder ggf. direkt mit filezilla editieren. Solltest du aber immer wieder das ungepackte komplett erneut hochladen, dann kannst du auch bei der pbo-Variante bleiben (spart die Lese-undSchreibzeit)
-
-
Mahlzeit,
ich habe mal die Makros rausgenommen, vllt liegt es ja daran.
Code
Alles anzeigen/* File: fn_processAction.sqf Author: Bryan "Tonic" Boardwine Description: Master handling for processing an item. */ private["_vendor","_type","_itemInfo","_oldItem","_newItem","_cost","_upp","_hasLicense","_itemName","_oldVal","_ui","_progress","_pgText","_cP"]; _vendor = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param; _type = [_this,3,"",[""]] call BIS_fnc_param; //Error check if(isNull _vendor OR (_type isEqualTo "") OR (player distance _vendor > 10)) exitWith {}; //unprocessed item,processed item, cost if no license,Text to display (I.e Processing (percent) ..." _itemInfo = switch (_type) do { //case "apple": {["apple",];}; // case "peach": {["peach",];}; case "oil": {["oilu","oilp",1200,(localize "STR_Process_Oil")];}; case "diamond": {["diamond_uncut","diamond_cut",1350,(localize "STR_Process_Diamond")];}; case "heroin": {["heroin_unprocessed","heroin_processed",1750,(localize "STR_Process_Heroin")];}; case "copper": {["copper_unrefined","copper_refined",750,(localize "STR_Process_Copper")];}; case "iron": {["iron_unrefined","iron_refined",1120,(localize "STR_Process_Iron")];}; case "sand": {["sand","glass",650,(localize "STR_Process_Sand")];}; case "salt": {["salt_unrefined","salt_refined",450,(localize "STR_Process_Salt")];}; case "cocaine": {["cocaine_unprocessed","cocaine_processed",1500,(localize "STR_Process_Cocaine")];}; case "marijuana": {["cannabis","marijuana",500,(localize "STR_Process_Marijuana")];}; case "cement": {["rock","cement",350,(localize "STR_Process_Cement")];}; default {["","",0,(localize "STR_Process_Default")];}; }; //Error checking if((count _itemInfo) isEqualTo 0) exitWith {}; //Setup vars. _oldItem = _itemInfo select 0; _newItem = _itemInfo select 1; _cost = _itemInfo select 2; _upp = _itemInfo select 3; if(_vendor in [mari_processor,coke_processor,heroin_processor]) then { _hasLicense = true; } else { _hasLicense = call compile format["license_civ_%1",_type]; }; _itemName = getText(missionConfigFile >> "VirtualItems" >> _newItem >> "displayName"); _oldVal = call compile format["life_inv_%1",_oldItem]; _cost = _cost * _oldVal; //Some more checks if(_oldVal isEqualTo 0) exitWith {}; //Setup our progress bar. disableSerialization; 5 cutRsc ["life_progress","PLAIN"]; _ui = uiNamespace getVariable "life_progress"; _progress = _ui displayCtrl 38201; _pgText = _ui displayCtrl 38202; _pgText ctrlSetText format["%2 (1%1)...","%",_upp]; _progress progressSetPosition 0.01; _cP = 0.01; life_is_processing = true; if(_hasLicense) then { while{true} do { sleep 0.3; _cP = _cP + 0.01; _progress progressSetPosition _cP; _pgText ctrlSetText format["%3 (%1%2)...",round(_cP * 100),"%",_upp]; if(_cP >= 1) exitWith {}; if(player distance _vendor > 10) exitWith {}; }; if(player distance _vendor > 10) exitWith {hint localize "STR_Process_Stay"; 5 cutText ["","PLAIN"]; life_is_processing = false;}; if(!([false,_oldItem,_oldVal] call life_fnc_handleInv)) exitWith {5 cutText ["","PLAIN"]; life_is_processing = false;}; if(!([true,_newItem,_oldVal] call life_fnc_handleInv)) exitWith {5 cutText ["","PLAIN"]; [true,_oldItem,_oldVal] call life_fnc_handleInv; life_is_processing = false;}; 5 cutText ["","PLAIN"]; titleText[format[localize "STR_Process_Processed",_oldVal,localize _itemName],"PLAIN"]; life_is_processing = false; } else { if(life_cash < _cost) exitWith {hint format[localize "STR_Process_License",[_cost] call life_fnc_numberText]; 5 cutText ["","PLAIN"]; life_is_processing = false;}; while{true} do { sleep 0.9; _cP = _cP + 0.01; _progress progressSetPosition _cP; _pgText ctrlSetText format["%3 (%1%2)...",round(_cP * 100),"%",_upp]; if(_cP >= 1) exitWith {}; if(player distance _vendor > 10) exitWith {}; }; if(player distance _vendor > 10) exitWith {hint localize "STR_Process_Stay"; 5 cutText ["","PLAIN"]; life_is_processing = false;}; if(life_cash < _cost) exitWith {hint format[localize "STR_Process_License",[_cost] call life_fnc_numberText]; 5 cutText ["","PLAIN"]; life_is_processing = false;}; if(!([false,_oldItem,_oldVal] call life_fnc_handleInv)) exitWith {5 cutText ["","PLAIN"]; life_is_processing = false;}; if(!([true,_newItem,_oldVal] call life_fnc_handleInv)) exitWith {5 cutText ["","PLAIN"]; [true,_oldItem,_oldVal] call life_fnc_handleInv; life_is_processing = false;}; 5 cutText ["","PLAIN"]; titleText[format[localize "STR_Process_Processed2",_oldVal,localize _itemName,[_cost] call life_fnc_numberText],"PLAIN"]; life_cash = life_cash - _cost; life_is_processing = false; };
Kannst du ja mal ausprobieren, ich versichere aber nixMfG
-
ja, vollkommen vergessen
Am besten den Code nehmen und das Script per call aufrufen (ist so performanter)
ich wollte anmerken, dass spawn oder call einen neuen Scope erstellt, aus dem lokale Scriptvariablen nicht ohne weitere übergeben werden oder ausgeben werden können.
Argumente können mit bspw. _this oder _this select index.
Hier wird dir jeweils etwas angezeigt, wenn du akzeptierst bzw. ablehnst.Code: Bsp. 10 spawn { _action = ["Möchtest du wirklich respawnen?","Respawn bestätigen","Ja, ich will!","Ne, lass mal..."] call BIS_fnc_guiMessage; if (_action) then { hint "ja"; } else { hint "nein"; }; };
Bei der Variante von @blackfisch würde es nicht ganz so klappen wie gewollt.
Füre das Script lieber komplett via spawn (lokal) oder mit remoteExec für andere Spieler (in der Ferne) oder nutze den geänderten Quellcode und passe diesen an.Spoiler anzeigen
Nicht böse werden blackfisch
-
https://community.bistudio.com/wiki/BIS_fnc_guiMessage
["NACHRICHT","ÜBERSCHIRFT","OK-BESCHRIFTUNG","ABBRECHEN-BESCHRIFTUNG"] call BIS_fnc_guiMessage;
Beispiel:
["Möchtest du wirklich respawnen?","Respawn bestätigen","Ja, ich will!","Ne, lass mal..."] call BIS_fnc_guiMessage;Abfrage:
Dabei den sheduled environment (spawn,remoteExec) nicht vergessen