Moin NN-Community,
ich habe vorgestern Nach eine Scriptumstellung begonnen und wollte zb in diesem Script eine Timerkompremmierung beginnen, um in Zukunft diese nicht separiert laufen zu lassen.
Jedoch befürchte ich (normal arbeite ich zurzeit mit c# wo zb Funktionen wie nameOf auch gehen, scheint aber in Arma leider gar nicht zu existieren) dass in sqf das evtl so nicht möglich ist, von der Logic her.
Daher wollte ich hier einmal nachfragen.
Im besten Fall habe ich ja nur etwas übersehen
Fehler gibts dazu keinen, es tut an sich, nur nimmt er nicht die richtigen Werte bzw setzt diese nicht mehr richtig.
Also wenn der Cooldown eines eingetragenen Cooldowns zb 300 ist, bleibt der ständig auf 300. Also klappt das mit der foreach nicht ganz.
Zudem ist die aktuelle Version die 2. weswegen die 1. auch etwas verfälscht ist. Dort war eigentlich _x etc genutzt worden. Hatte jedenfalls leider auch nicht geklappt daher die Umstellung.
Also es geht primär um die Zeile sozusagen:
Ich habe auch 2 Versionen um das zu prüfen oder evtl zu fixen, hatte aber nicht geklappt:
1.Version
Spoiler anzeigen
_sleepDuration = 5;
_count = 0;
_cooldownZeit = 0;
_namenString = "";
_activeCooldowns = [];
while {true} do {
sleep _sleepDuration;
_activeCooldowns = [life_boxcooldown,life_questCooldownBlaubart,life_questCooldownIngo,life_animalcooldown,life_medauftragcooldown,life_registrierungcooldown,life_checkpointtimer,life_registrierungtimer,life_ceoCooldown];
_count = 0;
{
_cooldownZeit = _activeCooldowns select _count;
_namenString = life_cooldownNamenStringArray select _count;
if(_cooldownZeit >= _sleepDuration) then {
//call compile format ["%1 = %1 - %2",_cooldownZeit,_sleepDuration];
_cooldownZeit = _cooldownZeit - _sleepDuration;
if(_cooldownZeit == 0) then {
switch (_namenString) do {
case "life_questCooldownSanta": {
systemChat "Santas Bote: Du kannst nun wieder einen Auftrag bei mir abgeben!";
};
case "life_questCooldownIngo": {
systemChat "Ingo: Du kannst nun wieder einen Auftrag bei mir abgeben!";
};
case "life_questCooldownBlaubart": {
systemChat "Blaubart: Du kannst nun wieder einen Auftrag bei mir abgeben!";
};
case "life_animalcooldown": {
hint parseText "<t size='1.3'><t color='#97FFFF'>Du kannst nun wieder</t></t><br></br><t size='1.6'><t color='#8B4513'>Tiere</t></t><br></br><t size='1.5'><t color='#6B8E23'>freisetzen</t>!</t>";
};
case "life_medauftragcooldown": {
hint parseText "<t size='1.7'><t color='#FF4040'>Auftragscooldown</t></t><br></br><t size='1.5'><t color='#32cd32'>abgelaufen!</t></t>";
};
case "life_registrierungcooldown": {
systemChat "Du kannst nun wieder bei checkpoints auf eine Registrierung geprüft werden!";
};
case "life_checkpointtimer": {
life_checkpoint = 0;
};
case "life_registrierungtimer": {
systemChat "Deine Checkpointgenehmigung ist abgelaufen! Beantrage beim nächsten Checkpoint eine neue!";
hint "Deine Checkpointgenehmigung ist abgelaufen! Beantrage beim nächsten Checkpoint eine neue!";
life_registrierung = 0;
};
case "life_ceoCooldown": {
hint parseText "<t size='1.2'>Du kannst nun wieder einen<br></br><t color='#FF4500'>CEO</t><br></br><t color='#698B22'>einstellen</t>!</t>";
};
case "life_ausraubCooldown": {
hint parseText "<t size='1.2'>Du kannst nun wieder einen<br></br><t color='#FF4500'>Raub</t><br></br><t color='#698B22'>begehen</t>!</t>";
};
default {
};
};
};
} else {
_cooldownZeit = 0;
};
_count = _count + 1;
}forEach _activeCooldowns;
};
Alles anzeigen
2. Version
Spoiler anzeigen
/* Autor: MaltepowR99
Maltis Life Custom System
Private File For MALTIS LIFE - Usage not allowed!
*/
_sleepDuration = 5;
_count = 0;
_count2 = 0;
_cooldownZeit = 0;
_namenString = "";
_namenString2 = "";
_activeCooldowns = [];
while {true} do {
sleep _sleepDuration;
_activeCooldowns = [life_boxcooldown,life_questCooldownBlaubart,life_questCooldownIngo,life_animalcooldown,life_medauftragcooldown,life_registrierungcooldown,life_checkpointtimer,life_registrierungtimer,life_ceoCooldown];
_count = 0;
{
_cooldownZeit = _activeCooldowns select _count;
_namenString = life_cooldownNamenStringArray select _count;
if(_cooldownZeit >= _sleepDuration) then {
//call compile format ["%1 = %1 - %2",_cooldownZeit,_sleepDuration];
_cooldownZeit = _cooldownZeit - _sleepDuration;
if(_cooldownZeit == 0) then {
switch (_namenString) do {
case "life_questCooldownSanta": {
systemChat "Santas Bote: Du kannst nun wieder einen Auftrag bei mir abgeben!";
};
case "life_questCooldownIngo": {
systemChat "Ingo: Du kannst nun wieder einen Auftrag bei mir abgeben!";
};
case "life_questCooldownBlaubart": {
systemChat "Blaubart: Du kannst nun wieder einen Auftrag bei mir abgeben!";
};
case "life_animalcooldown": {
hint parseText "<t size='1.3'><t color='#97FFFF'>Du kannst nun wieder</t></t><br></br><t size='1.6'><t color='#8B4513'>Tiere</t></t><br></br><t size='1.5'><t color='#6B8E23'>freisetzen</t>!</t>";
};
case "life_medauftragcooldown": {
hint parseText "<t size='1.7'><t color='#FF4040'>Auftragscooldown</t></t><br></br><t size='1.5'><t color='#32cd32'>abgelaufen!</t></t>";
};
case "life_registrierungcooldown": {
systemChat "Du kannst nun wieder bei checkpoints auf eine Registrierung geprüft werden!";
};
case "life_checkpointtimer": {
life_checkpoint = 0;
};
case "life_registrierungtimer": {
systemChat "Deine Checkpointgenehmigung ist abgelaufen! Beantrage beim nächsten Checkpoint eine neue!";
hint "Deine Checkpointgenehmigung ist abgelaufen! Beantrage beim nächsten Checkpoint eine neue!";
life_registrierung = 0;
};
case "life_ceoCooldown": {
hint parseText "<t size='1.2'>Du kannst nun wieder einen<br></br><t color='#FF4500'>CEO</t><br></br><t color='#698B22'>einstellen</t>!</t>";
};
case "life_ausraubCooldown": {
hint parseText "<t size='1.2'>Du kannst nun wieder einen<br></br><t color='#FF4500'>Raub</t><br></br><t color='#698B22'>begehen</t>!</t>";
};
default {
};
};
};
} else {
_cooldownZeit = 0;
};
_count = _count + 1;
}forEach _activeCooldowns;
_count2 = 0;
{
_namenString2 = life_cooldownNamenStringArray select _count2;
switch (_namenString2) do {
case "life_questCooldownSanta": {
life_questCooldownSanta = _activeCooldowns select _count2;
};
case "life_questCooldownIngo": {
life_questCooldownIngo = _activeCooldowns select _count2;
};
case "life_questCooldownBlaubart": {
life_questCooldownBlaubart = _activeCooldowns select _count2;
};
case "life_animalcooldown": {
life_animalcooldown = _activeCooldowns select _count2;
};
case "life_medauftragcooldown": {
life_medauftragcooldown = _activeCooldowns select _count2;
};
case "life_registrierungcooldown": {
life_registrierungcooldown = _activeCooldowns select _count2;
};
case "life_checkpointtimer": {
life_checkpointtimer = _activeCooldowns select _count2;
};
case "life_registrierungtimer": {
life_registrierungtimer = _activeCooldowns select _count2;
};
case "life_ceoCooldown": {
life_ceoCooldown = _activeCooldowns select _count2;
};
case "life_ausraubCooldown": {
life_ausraubCooldown = _activeCooldowns select _count2;
};
default {
};
};
_count2 = _count2 + 1;
}forEach _activeCooldowns;
};
Alles anzeigen
Und das 2. Wäre ein für mich gerade unidentifizierbarer Fehler:
Log:
Spoiler anzeigen
if(life_arbeit == 0) then {
life_arbeit = >
23:43:39 Error position: <life_arbeit == 0) then {
life_arbeit = >
23:43:39 Error Nicht definierte Variable in Ausdruck: life_arbeit
23:43:39 File mpmissions\__CUR_MP.Altis\Maltis\Crafting\craftingStation.sqf..., line 15
23:43:39 Error in expression <t = 0;
_position = "";
_time = 0;
Alles anzeigen
(life_arbeit und life_craft sind sicher definiert)
script:
Spoiler anzeigen
/* Autor: MaltepowR99
Onw processor */
_resourceTwoAmount = 0;
_neededResourceTwoAmount = 0;
_resourceOneAmount = 0;
_neededResourceOneAmount = 0;
_resourceThreeAmount = 0;
_neededResourceThreeAmount = 0;
_position = "";
_time = 0;
if(life_arbeit == 0) then {
//if(life_verarbeiterzeahler == 0) exitWith { hint parseText "<t size='1.2'>Du hast <t color='#ff0000'>keinen</t> <t color='#ffb90f'>Craftingbauplan</t> eingelöst!</t>"; };
life_arbeit = 1;
_time = life_craft * 50;
titleText [format ["Starte das Herstellen... Deine Verarbeitungsgeschwindigkeit liegt durch dein Skillsystem bei %1 Sekunden.", _time], "PLAIN", 1];
while {true} do {
{
if(player distance (getMarkerPos _x) < 25) exitWith {_position = _x;};
} foreach life_craftingZones;
switch (_position) do {
case "kohlenstoff_1": {
_resourceOneAmount = life_DiastaubLagerCraftingStation;
_neededResourceOneAmount = 2;
};
case "carbon_1": {
_resourceOneAmount = life_kohlenstoffCarbonLagerCraftingStation;
_neededResourceOneAmount = 2;
};
case "silber2_1": {
_resourceOneAmount = life_silber2AluLagerCraftingStation;
_resourceTwoAmount = life_silber2SilberLagerCraftingStation;
_neededResourceOneAmount = 8; //Alu
_neededResourceTwoAmount = 4; //Silber
};
case "schokobrot_1": {
_resourceOneAmount = life_schokoladenLagerCraftingStation;
_resourceTwoAmount = life_brotLagerCraftingStation;
_neededResourceOneAmount = 60; //SCHOKO
_neededResourceTwoAmount = 20; //BROT
};
case "legierung_1": {
_resourceOneAmount = life_legierungAluLagerCraftingStation;
_resourceTwoAmount = life_legierungZinkLagerCraftingStation;
_neededResourceOneAmount = 5; //ALU
_neededResourceTwoAmount = 5; //ZINK
};
case "schneider_1": {
_resourceOneAmount = life_kleidung1StoffLagerCraftingStation;
_resourceTwoAmount = life_kleidung1LederLagerCraftingStation;
_resourceThreeAmount = life_kleidung1RubinLagerCraftingStation;
_neededResourceOneAmount = 25; //STOFF
_neededResourceTwoAmount = 15; // LEEDER
_neededResourceThreeAmount = 7; // RUBIN
};
case "schneider_2": {
_resourceOneAmount = life_kleidung2StoffLagerCraftingStation;
_resourceTwoAmount = life_kleidung2LederLagerCraftingStation;
_resourceThreeAmount = life_kleidung2DiaLagerCraftingStation;
_neededResourceOneAmount = 15; //STOFF
_neededResourceTwoAmount = 5; // LEDER
_neededResourceThreeAmount = 1; //DIA
};
case "schneider_3": {
_resourceOneAmount = life_kleidung3LederLagerCraftingStation;
_resourceTwoAmount = life_kleidung3StoffLagerCraftingStation;
_neededResourceOneAmount = 15; // LEDER
_neededResourceTwoAmount = 7; //STOFF
};
case "schneider_4": {
_resourceOneAmount = life_kleidung4StoffLagerCraftingStation;
_resourceTwoAmount = life_kleidung4LederLagerCraftingStation;
_neededResourceOneAmount = 7; //STOFF
_neededResourceTwoAmount = 2; //LEDER
};
case "gerber_1": {
_resourceOneAmount = life_lederRohlederLagerCraftingStation;
_neededResourceTwoAmount = 6;
};
case "wolle_1": {
_resourceOneAmount = life_wolleLagerCraftingStation;
_neededResourceOneAmount = 1;
};
default {
if(true) exitWith { hint "Error! Nicht in einer gültigen Zone!"; life_arbeit = 0;};
};
};
if(_resourceOneAmount < _neededResourceOneAmount _resourceTwoAmount < _neededResourceTwoAmount _resourceThreeAmount < _neededResourceThreeAmount) exitWith {life_arbeit = 0; hint parseText "Du hast<t color='#ff0000'><br></br> KEINE</t><br></br> oder<br></br> <t color='#ff0000'>NICHT GENÜGEND</t><br></br> <t color='#ffb90f'>Rohstoffe</t> im Lager!<br></br> Um zu sehen, was du brauchst,<br></br> kannst du auf<t color='#ffb90f'><br></br> Z Craft Items</t> nachschauen.<br></br> Zudem benötigst du bei <t color='#ffb90f'>Craftingstations</t><br></br> <t color='#ff0000'>IMMER<br></br></t> einen <t color='#ffb90f'>Crafting Bauplan</t> <br></br>für 5 Mal <t color='#ffb90f'>Craften</t>!";};
_time = life_craft * 50;
sleep _time;
switch (_position) do {
case "kohlenstoff_1": {
life_kohlenstoffLagerCraftingStation = life_kohlenstoffLagerCraftingStation + 1;
life_DiastaubLagerCraftingStation = life_DiastaubLagerCraftingStation - _neededResourceOneAmount;
};
case "carbon_1": {
life_carbonLagerCraftingStation = life_carbonLagerCraftingStation + 1;
life_kohlenstoffCarbonLagerCraftingStation = life_kohlenstoffCarbonLagerCraftingStation - _neededResourceOneAmount;
};
case "silber2_1": {
life_silber2LagerCraftingStation = life_silber2LagerCraftingStation + 1;
life_silber2AluLagerCraftingStation = life_silber2AluLagerCraftingStation - _neededResourceOneAmount; //Alu
life_silber2SilberLagerCraftingStation = life_silber2SilberLagerCraftingStation - _neededResourceTwoAmount; //Silber
};
case "schokobrot_1": {
life_schokobrotLagerCraftingStation = life_schokobrotLagerCraftingStation + 1;
life_schokoladenLagerCraftingStation = life_schokoladenLagerCraftingStation - _neededResourceOneAmount; //SCHOKO
life_brotLagerCraftingStation = life_brotLagerCraftingStation - _neededResourceTwoAmount; //BROT
};
case "legierung_1": {
life_legierungLagerCraftingStation = life_legierungLagerCraftingStation + 1;
life_legierungAluLagerCraftingStation = life_legierungAluLagerCraftingStation - _neededResourceOneAmount; //ALU
life_legierungZinkLagerCraftingStation = life_legierungZinkLagerCraftingStation - _neededResourceTwoAmount; //ZINK
};
case "schneider_1": {
life_kleidung1LagerCraftingStation = life_kleidung1LagerCraftingStation + 1;
life_kleidung1StoffLagerCraftingStation = life_kleidung1StoffLagerCraftingStation - _neededResourceOneAmount; //STOFF
life_kleidung1LederLagerCraftingStation = life_kleidung1LederLagerCraftingStation - _neededResourceTwoAmount; // LEEDER
life_kleidung1RubinLagerCraftingStation = life_kleidung1RubinLagerCraftingStation - _neededResourceThreeAmount; // RUBIN
};
case "schneider_2": {
life_kleidung2LagerCraftingStation = life_kleidung2LagerCraftingStation + 1;
life_kleidung2StoffLagerCraftingStation = life_kleidung2StoffLagerCraftingStation - _neededResourceOneAmount; //STOFF
life_kleidung2LederLagerCraftingStation = life_kleidung2LederLagerCraftingStation - _neededResourceTwoAmount; // LEDER
life_kleidung2DiaLagerCraftingStation = life_kleidung2DiaLagerCraftingStation - _neededResourceThreeAmount; //DIA
};
case "schneider_3": {
life_kleidung3LagerCraftingStation = life_kleidung3LagerCraftingStation + 1;
life_kleidung3LederLagerCraftingStation = life_kleidung3LederLagerCraftingStation - _neededResourceOneAmount; // LEDER
life_kleidung3StoffLagerCraftingStation = life_kleidung3StoffLagerCraftingStation - _neededResourceTwoAmount; //STOFF
};
case "schneider_4": {
life_kleidung4LagerCraftingStation = life_kleidung4LagerCraftingStation + 1;
life_kleidung4StoffLagerCraftingStation = life_kleidung4StoffLagerCraftingStation - _neededResourceOneAmount; //STOFF
life_kleidung4LederLagerCraftingStation = life_kleidung4LederLagerCraftingStation - _neededResourceTwoAmount; //LEDER
};
case "gerber_1": {
life_lederLagerCraftingStation = life_lederLagerCraftingStation + 1;
life_lederRohlederLagerCraftingStation = life_lederRohlederLagerCraftingStation - _neededResourceOneAmount;
};
case "wolle_1": {
life_stoffLagerCraftingStation = life_stoffLagerCraftingStation + 1;
life_wolleLagerCraftingStation = life_wolleLagerCraftingStation - _neededResourceOneAmount;
};
default {
if(true) exitWith { hint "Error! Nicht in einer gültigen Zone!"; life_arbeit = 0;};
};
};
life_afkReduceTickActionTriggered = 0.5;
call life_fnc_antiAfk;
[true,"xps",life_verarbeiterxp] call life_fnc_handleInv;
call life_fnc_XPUmwandeln;
call life_fnc_BoxVerarbeiter;
};
life_arbeit = 0;
} else {
hint parseText "<t size='1.2'>Du führst <t color='#ff0000'>bereits</t> eine <t color='#ff0000'>Aktion</t> durch!</t>";
};
Alles anzeigen
Hinweis:
ich arbeite mit der 3.1.4.8
Danke für eure Hilfe!
MfG Malte