Beiträge von Harry Knueller
-
-
Ansonsten kannst du eine weitere Funktion Serverseitig erstellen (nur mit dem Aufruf der Datenbank-Funktion), die du per remoteExec aufrufst, die dann die wirkliche Datenbank-Abfrage durchführt. Somit kann nicht jeder alles an die Datenbank senden.
Das hatte ich zwischen durch auch mal probiert aber wieder verworfen... hätte ich man nochmal in den Serverlog reingeguckt, dann hätte ich gesehen das ich die Abfrage nur hätte freigeben müssen.
Habs jetzt wie folgt gelöst und funktioniert, dank deiner Hilfe !Code: fn_tuningkit_V4.sqf[...] [_owner, _plate, _chip] remoteExecCall ["TON_fnc_updateVehChip", 2];
Code: fn_updateVehChip.sqfprivate["_query", "_queryResult"]; params [ ["_pid", -1, [0,""]], ["_plate", -1, [0,""]], ["_chip", -1, [0,""]] ]; private _query = format ["UPDATE vehicles SET chip='%3' WHERE pid='%1' AND plate='%2'",_pid , _plate, _chip]; private _queryResult = [_query,2] call DB_fnc_asyncCall;
-
Dann schau mal in die Serverlog was dort ausgegeben wird.
Vor allem auch in die extDB-Log.
Bin im Serverlog fündig geworden:
-
Dein Script befindet sich in der Mission und wird Clientseitig ausgeführt. Du möchtest dann aber eine Funktion aufrufen, die sich nur Serverseitig befindet und somit der Client nicht kennt. Daher kommt richtigerweiße eine Fehlermeldung.
Du musst also dem Server mitteilen, dass er die Funktion aufrufen soll. Das ist mit remoteExec möglich.
Nach dem ändern der Zeile, sollte alles richtig funktionieren.
Code_query = format ["UPDATE vehicles SET chip='%3' WHERE pid='%1' AND plate='%2'",_owner , _plate, _chip]; _thread = [_query,2] remoteExec ['DB_fnc_asyncCall',2];
Jetzt ist der Scriptfehler zwar weg, aber kein Datenbankupdate - Jetzt herrscht komplette Verwirrung
Oder einfach _query oben in private []; hinzufügen?
private ["_vehicle","_chip","_thread","_cpRate","_title","_progressBar","_titleText","_cp","_ui","_plate","_owner","_query"];
Hat nichts geändert...
-
Dein Script befindet sich in der Mission und wird Clientseitig ausgeführt. Du möchtest dann aber eine Funktion aufrufen, die sich nur Serverseitig befindet und somit der Client nicht kennt. Daher kommt richtigerweiße eine Fehlermeldung.
Du musst also dem Server mitteilen, dass er die Funktion aufrufen soll. Das ist mit remoteExec möglich.
Nach dem ändern der Zeile, sollte alles richtig funktionieren.
Vielen Dank für die super schnelle Rückmeldung. Was mich jetzt aber nach deiner Aussage wundert, ist das die anderen Scripts ohne remoteExec laufen - Ich bin etwas verwirrt.
Ich teste es schnell und werde gleich berichten ! -
Da hast du verschiedene Möglichkeiten:
Config > https://community.bistudio.com/wiki/CfgVehicles_Config_Reference
-
Moin Moin,
ich bin sonst eigentlich hier nur der stille Mitleser, aber aktuell stehe ich irgendwie auf dem Schlauch... ein simples Datenbankupdate raubt mir zur Zeit den Nerv.
Möchte gerne folgende Funktion für das DB Update nutzen, da diese auch in sämtlichen anderes Scripts ohne Probleme genutzt wird... Da ich dachte, ich hätte irgendwas bei den Variablen vertauscht, habe ich mir die Variablen im SystemChat ausgegeben - Das passt soweit alles.
Code_query = format ["UPDATE vehicles SET chip='%3' WHERE pid='%1' AND plate='%2'",_owner , _plate, _chip]; _thread = [_query,2] call DB_fnc_asyncCall;
Das komplette Script:Code: fn_tuningkit_V4.sqf
Alles anzeigen#include "..\..\script_macros.hpp" /* File: fn_tuningkit_V4.sqf Author: Harry Knueller Description: Tuningchip for edit acceleration and maxspeed. */ private ["_vehicle","_chip","_thread","_cpRate","_title","_progressBar","_titleText","_cp","_ui","_plate","_owner"]; _vehicle = cursorObject; _vehInfo = _vehicle getVariable ["dbinfo",[]]; _vehChip = _vehicle getVariable ["chip",[]]; _owner = _vehInfo select 0; _plate = _vehInfo select 1; if (isNull cursorObject) exitWith {["Aktion","Wo soll der Chip eingebaut werden?","error"] spawn cplus_notification_fnc_notification;}; if (player distance _vehicle > 5) exitWith {["Aktion","Du bist zu weit vom Fahrzeug weg!","error"] spawn cplus_notification_fnc_notification;}; if (!(_vehicle isKindOf "car")) exitWith {["Aktion","Der Chip kann nicht an diesem Fahrzeugtypen angebracht werden!","error"] spawn cplus_notification_fnc_notification;}; if (count _vehInfo isEqualTo 0) exitWith {["Aktion","Der Chip kann nicht an einem Mietfahrzeug angebracht werden!","error"] spawn cplus_notification_fnc_notification;}; //if (playerSide in [independent, west]) exitWith {["Aktion","Du kannst diesen Chip nicht verwenden!","error"] spawn cplus_notification_fnc_notification;}; if (!(_owner isEqualto getPlayerUid player)) exitWith {["Aktion","Das ist nicht dein Fahrzeug!","error"] spawn cplus_notification_fnc_notification;}; if (!(alive _vehicle)) exitWith {["Aktion","Das Fahrzeug ist zerstört","error"] spawn cplus_notification_fnc_notification;}; if (_vehChip > 0) exitWith {["Aktion","Du musst den bereits montierten Chip ausbauen!","error"] spawn cplus_notification_fnc_notification;}; if (life_inv_tuningkit_V4 < 1) exitWith {["EXPLOIT","Bugusing ist strengstens verboten!","error"] spawn cplus_notification_fnc_notification;}; life_action_inUse = true; disableSerialization; _title = "Chip wird montiert..."; "progressBar" cutRsc ["life_progress","PLAIN"]; _ui = uiNamespace getVariable "life_progress"; _progressBar = _ui displayCtrl 38201; _titleText = _ui displayCtrl 38202; _titleText ctrlSetText format ["%2 (1%1)...","%",_title]; _progressBar progressSetPosition 0.01; _cP = 0.01; _cpRate = 0.0036; for "_i" from 0 to 1 step 0 do { if (animationState player != "AinvPknlMstpSnonWnonDnon_medic_1") then { [player,"AinvPknlMstpSnonWnonDnon_medic_1",true] remoteExecCall ["life_fnc_animSync",RCLIENT]; player switchMove "AinvPknlMstpSnonWnonDnon_medic_1"; player playMoveNow "AinvPknlMstpSnonWnonDnon_medic_1"; }; uiSleep 0.18; if (isNull _ui) then { "progressBar" cutRsc ["life_progress","PLAIN"]; _ui = uiNamespace getVariable "life_progress"; _progressBar = _ui displayCtrl 38201; _titleText = _ui displayCtrl 38202; }; _cP = _cP + _cpRate; _progressBar progressSetPosition _cP; _titleText ctrlSetText format ["%3 (%1%2)...",round(_cP * 100),"%",_title]; if (_cP >= 1 || !alive player) exitWith {}; if (life_istazed) exitWith {}; if (life_isknocked) exitWith {}; if (life_interrupted) exitWith {}; }; "progressBar" cutText ["","PLAIN"]; player playActionNow "stop"; if (!alive player || life_istazed || life_isknocked) exitWith {}; if (player getVariable ["restrained",false]) exitWith {}; if (life_interrupted) exitWith {life_interrupted = false; titleText[localize "STR_NOTF_ActionCancel","PLAIN"]; life_action_inUse = false;}; life_action_inUse = false; _vehicle setVariable ["chip",4,true]; [false,"tuningkit_V4",1] call life_fnc_handleInv; ["Aktion","Du hast den Chip am Fahrzeug montiert!","success"] spawn cplus_notification_fnc_notification; _chip = _vehicle getVariable ["chip",[]]; systemChat format["UID: %1 - Kennzeichen: %2 - Chip: %3", _owner, _plate, _chip]; _query = format ["UPDATE vehicles SET chip='%3' WHERE pid='%1' AND plate='%2'",_owner , _plate, _chip]; _thread = [_query,2] call DB_fnc_asyncCall;
.rpt - AusschnittCode_thread = [_query,2] call DB_fnc_asyncCall;> 7:48:42 Error position: <DB_fnc_asyncCall;> 7:48:42 Error Nicht definierte Variable in Ausdruck: db_fnc_asynccall 7:48:42 File mpmissions\__CUR_MP.Altis\core\items\fn_tuningkit_V4.sqf..., line 78
Ich hoffe, ihr könnt mir weiter helfen.
Liebe Grüße -
naja du hast die datei noch nicht einmal ausgeführt weil sonst wehre ja der diag_log da
Code
Alles anzeigen#include "..\script_macros.hpp" /* File: fn_returnVente.sqf Author: Joaquine Description : Tous est finalisé, Donc on dit au vendeur sont dut ! */ params [ ["_unit",objNull,[objNull]], ["_vehicle",objNull,[objNull]], ["_value",0,[0]] ]; diag_log format["fn_returnVente - UID NOW: %1 | UID OLD: %2",(getPlayerUID player),(getPlayerUID _ownerLast)]; private _uidAcheteur = (getPlayerUID _unit); private _nameAcheteur = name _unit; CASH = CASH + _value; [0] call SOCK_fnc_updatePartial; life_vehicles = life_vehicles - [_vehicle]; _vehicle setVariable ["vehicle_info_owners",[[_uidAcheteur,_nameAcheteur]],true]; private _dbInfo = _vehicle getVariable "dbInfo"; private _plate = (_dbInfo select 1); _vehicle setVariable ["dbInfo",[_uidAcheteur,_plate],true]; private _vehName = getText(configFile >> "CfgVehicles" >> (typeof _vehicle) >> "displayName"); hint parseText format ["<t color='#42f456'>Du hast dein Fahrzeug verkauft. </br>%1</t></br><t color='#f48941'>Käufer: %2 </t></br><t color='#f44141'>Verkaufspreis: %3</t>",_VehName,_nameAcheteur,_value];
Code
Alles anzeigen#include "..\script_macros.hpp" /* File: fn_receivedVeh.sqf Author: Joaquine Description : Tous est finalisé, Donc on dit au vendeur sont dut ! */ params [ ["_ownerLast",objNull,[objNull]], ["_vehicle",objNull,[objNull]], ["_value",0,[0]] ]; diag_log format["fn_receivedVeh - UID NOW: %1 | UID OLD: %2",(getPlayerUID player),(getPlayerUID _ownerLast)]; // Recupere le nom du véhicule _vehName = getText(configFile >> "CfgVehicles" >> (typeof _vehicle) >> "displayName"); // Demande si oui ou non il veux acheter // Flic & Médic if (playerSide in [west,independent]) exitWith { hint "Du kannst diese Aktion nicht ausführen !"; }; _action = [ format ["%1 möchte seinen %2 für %3$ verkaufen.",name _ownerLast,_vehName,[_value] call life_fnc_numberText], "Achat de véhicule", localize "STR_Global_Yes", localize "STR_Global_No" ] call BIS_fnc_guiMessage; //Si oui //Check si assez de sous sur lui if (CASH < _value) exitWith { hint parseText format ["<t color='#f44141'>Du hast nicht genug Bargeld. </br> Dir fehlt %1$</t>",_value]; }; if (_action) then { //Envoie info au vendeur [player,_vehicle,_value] remoteExecCall ["life_fnc_returnVente",_ownerLast]; //Déduction cash + save CASH = CASH - _value; [0] call SOCk_fnc_updatePartial; //Ajout des clefs au porte clefs if (!(_vehicle in life_vehicles)) then { life_vehicles pushBack _vehicle; _dbInfo = _vehicle getVariable "dbInfo"; _plate = (_dbInfo select 1); //Always handle key management by the server [getPlayerUID player,playerSide,_vehicle,1] remoteExecCall ["TON_fnc_keyManagement",2]; //Envoie pour preparez la requete pour changer owner du véhicule en DB [_plate,(getPlayerUID player),(getPlayerUID _ownerLast),(typeof _vehicle)] remoteExecCall ["DB_fnc_changeVehKey",2]; hint parseText format ["<t color='42f456'>Du Bist der Besitzer eines: %1</t>", _vehName]; }; } else { // Si non : hint format ["Du hast den %1 von %2 nicht gekauft.", _vehName, name _ownerLast]; };
Hatte in beide sqf mal die diag_log eingefügt.
-
im Client RPT log
Ok habs. Lade dir den Hoch, steht aber gar nichts drinne
Mache nochmal einen, habe bei einer sqf den diaglog vergessen zu speichern... -
Klar wirst du auf jeden fall eine zweite Person dazu brauchen aber du kannst das ganze ja erstmal so weit testen, dass du das Skript bzw. die Parameter für das Überschreiben von Keys erfüllst.
Ich würde erstmal gucken, ob das mit dem diag_log alles passt, weil du gehst ja von dem Verkäufer zu den Käufer.
Das heißt, das ganze findet so Sinnbildlich
Habe es jetzt einmal ausgeführt. Wo finde ich jetzt den Diag_log ?
-
Hier mal die Datein
-
Stempel mich jetzt bitte nicht als doof ab, aber wie kann ich alleine das script ausführen? Ich bräuchte ja einen zweiten, dem ich die Verkaufanfrage stellen muss oder ?
Und beim Verkauf die Variablen in der Debugkonsole abfragen oder ?Code
Alles anzeigen#include "..\script_macros.hpp" /* File: fn_returnVente.sqf Author: Joaquine Description : Tous est finalisé, Donc on dit au vendeur sont dut ! */ params [ ["_ownerLast",objNull,[objNull]], ["_vehicle",objNull,[objNull]], ["_value",0,[0]] ]; diag_log format["UID NOW: %1 | UID OLD: %2",(getPlayerUID player),(getPlayerUID _ownerLast)];
Oder den diag_log einfügen und Script testen ? Und gucken was er ausspuckt dabei ?
Deathman , ich sehe gerade, das ich ausversehen die falsche fn_returnVente.sqf eingefügt habe. Ich editiere das mal im ersten Post.
Das ist die korrekte fn_returnVente.sqf:Code
Alles anzeigen#include "..\script_macros.hpp" /* File: fn_returnVente.sqf Author: Joaquine Description : Tous est finalisé, Donc on dit au vendeur sont dut ! */ params [ ["_unit",objNull,[objNull]], ["_vehicle",objNull,[objNull]], ["_value",0,[0]] ]; private _uidAcheteur = (getPlayerUID _unit); private _nameAcheteur = name _unit; CASH = CASH + _value; [0] call SOCK_fnc_updatePartial; life_vehicles = life_vehicles - [_vehicle]; _vehicle setVariable ["vehicle_info_owners",[[_uidAcheteur,_nameAcheteur]],true]; private _dbInfo = _vehicle getVariable "dbInfo"; private _plate = (_dbInfo select 1); _vehicle setVariable ["dbInfo",[_uidAcheteur,_plate],true]; private _vehName = getText(configFile >> "CfgVehicles" >> (typeof _vehicle) >> "displayName"); hint parseText format ["<t color='#42f456'>Du hast dein Fahrzeug verkauft. </br>%1</t></br><t color='#f48941'>Käufer: %2 </t></br><t color='#f44141'>Verkaufspreis: %3</t>",_VehName,_nameAcheteur,_value];
-
Naja du willst ja was in der DB Ändern oder also sollte die
fn_changeVehKey.sqf
in der life_server sein um an diese heranzukommen musst du zum Server ein Remoteexec machen du hast ja so weit auch alles richtig gemacht nur das hier
F(db_fnc_changevehkey,CLIENT) muss so aussehen F(db_fnc_changevehkey,SERVER).
RPT Log ist unverändert...
Code
Alles anzeigen19:06:36 Error in expression <"_plate","",[""]], ["_uidnew","",[""]], ["_uidold","",[""]], ["_> 19:06:36 Error position: < ["_uidold","",[""]], ["_> 19:06:36 Error Invalid number in expression 19:06:36 File \life_server\Functions\MySQL\fn_changeVehKey.sqf [DB_fnc_changeVehKey]..., line 10 19:06:36 Error in expression <"_plate","",[""]], ["_uidnew","",[""]], ["_uidold","",[""]], ["_> 19:06:36 Error position: < ["_uidold","",[""]], ["_> 19:06:36 Error Invalid number in expression
-
Naja du willst ja was in der DB Ändern oder also sollte die
fn_changeVehKey.sqf
in der life_server sein um an diese heranzukommen musst du zum Server ein Remoteexec machen du hast ja so weit auch alles richtig gemacht nur das hier
F(db_fnc_changevehkey,CLIENT) muss so aussehen F(db_fnc_changevehkey,SERVER).
Jetzt wo du es sagst, klingt das ganz logisch. Ich melde mich binnen weniger Minuten zurück !
-
Du ist aber der CLIENTeingetragen und nicht der SERVER
Korrigiert mich, wen ich falsch liege aber
remoteExecCall ["DB_fnc_changeVehKey",2];<--- Die 2
2 = SERVER1 = CLIENT
0 = ANYONE
HC_LIFE = HC
Soll ich es mal auf Client anpassen oder Server ?
-
Musst aber auch aufpassen das du DB_fnc_changeVehKey in der CfgRemoteExec.hpp mit eingetragen ist.
Dort ist es eingetragen.
Aber an sich brauchst du nicht den Type des Vehicles mit übergeben es reicht dort die Plate ID <<--- Die gibt es ja nur einmal bei jedem Fahrzeug.
Gut, dann werde ich das rausnehmen.
Guck doch mal was er dir bei _uidold und _uidnew, überhaupt ausgibt.
Das werde ich mal nachschauen.
Vielen Dank schonmal ! -
Moin, Moin, liebe Sportsfreunde,
Bin mal wieder auf ein Problem gestoßen und komme nicht wirklich weiter.
Habe hier im Forum folgendes Script gefunden: Fahrzeughandel (Autos an Spieler weiterverkaufen)Die vorgeschlagenen Fixes habe abgeändert. Aber, im RPT taucht ein Fehler zum Updaten der DB auf.
Eventuell kann mal jeman drüber schauen?
Hier der Ausschnitt des Logs:Code
Alles anzeigen9:53:28 Error in expression <"_plate","",[""]], ["_uidnew","",[""]], ["_uidold","",[""]], ["_> 9:53:28 Error position: < ["_uidold","",[""]], ["_> 9:53:28 Error Invalid number in expression 9:53:28 File \life_server\Functions\MySQL\fn_changeVehKey.sqf [DB_fnc_changeVehKey]..., line 10 9:53:28 Error in expression <"_plate","",[""]], ["_uidnew","",[""]], ["_uidold","",[""]], ["_> 9:53:28 Error position: < ["_uidold","",[""]], ["_> 9:53:28 Error Invalid number in expression 9:53:28 File \life_server\Functions\MySQL\fn_changeVehKey.sqf [DB_fnc_changeVehKey]..., line 10
fn_changeVehKey.sqf
Code
Alles anzeigen/* File: fn_changeVehKey.sqf Author: Joaquine Description: Fahrzeug DB aktuallisieren */ params [ ["_plate","",[""]], ["_uidnew","",[""]], ["_uidold","",[""]], ["_type","",[""]] ]; _query = format ["UPDATE vehicles SET pid='%2' WHERE plate='%1' and pid ='%3' and classname = '%4'", _plate,_uidnew,_uidold,_type]; [_query,1] call DB_fnc_asyncCall;
fn_returnVente.sqf
Code
Alles anzeigen#include "..\script_macros.hpp" /* File: fn_returnVente.sqf Author: Joaquine Description : Tous est finalisé, Donc on dit au vendeur sont dut ! */ params [ ["_unit",objNull,[objNull]], ["_vehicle",objNull,[objNull]], ["_value",0,[0]] ]; private _uidAcheteur = (getPlayerUID _unit); private _nameAcheteur = name _unit; CASH = CASH + _value; [0] call SOCK_fnc_updatePartial; life_vehicles = life_vehicles - [_vehicle]; _vehicle setVariable ["vehicle_info_owners",[[_uidAcheteur,_nameAcheteur]],true]; private _dbInfo = _vehicle getVariable "dbInfo"; private _plate = (_dbInfo select 1); _vehicle setVariable ["dbInfo",[_uidAcheteur,_plate],true]; private _vehName = getText(configFile >> "CfgVehicles" >> (typeof _vehicle) >> "displayName"); hint parseText format ["<t color='#42f456'>Du hast dein Fahrzeug verkauft. </br>%1</t></br><t color='#f48941'>Käufer: %2 </t></br><t color='#f44141'>Verkaufspreis: %3</t>",_VehName,_nameAcheteur,_value];
fn_receivedVeh.sqf
Code
Alles anzeigen#include "..\script_macros.hpp" /* File: fn_receivedVeh.sqf Author: Joaquine Description : Tous est finalisé, Donc on dit au vendeur sont dut ! */ params [ ["_ownerLast",objNull,[objNull]], ["_vehicle",objNull,[objNull]], ["_value",0,[0]] ]; diag_log format["UID NOW: %1 | UID OLD: %2",(getPlayerUID player),(getPlayerUID _ownerLast)]; // Recupere le nom du véhicule _vehName = getText(configFile >> "CfgVehicles" >> (typeof _vehicle) >> "displayName"); // Demande si oui ou non il veux acheter // Flic & Médic if (playerSide in [west,independent]) exitWith { hint "Du kannst diese Aktion nicht ausführen !"; }; _action = [ format ["%1 möchte seinen %2 für %3$ verkaufen.",name _ownerLast,_vehName,[_value] call life_fnc_numberText], "Achat de véhicule", localize "STR_Global_Yes", localize "STR_Global_No" ] call BIS_fnc_guiMessage; //Si oui //Check si assez de sous sur lui if (CASH < _value) exitWith { hint parseText format ["<t color='#f44141'>Du hast nicht genug Bargeld. </br> Dir fehlt %1$</t>",_value]; }; if (_action) then { //Envoie info au vendeur [player,_vehicle,_value] remoteExecCall ["life_fnc_returnVente",_ownerLast]; //Déduction cash + save CASH = CASH - _value; [0] call SOCk_fnc_updatePartial; //Ajout des clefs au porte clefs if (!(_vehicle in life_vehicles)) then { life_vehicles pushBack _vehicle; _dbInfo = _vehicle getVariable "dbInfo"; _plate = (_dbInfo select 1); //Always handle key management by the server [getPlayerUID player,playerSide,_vehicle,1] remoteExecCall ["TON_fnc_keyManagement",2]; //Envoie pour preparez la requete pour changer owner du véhicule en DB [_plate,(getPlayerUID player),(getPlayerUID _ownerLast),(typeof _vehicle)] remoteExecCall ["DB_fnc_changeVehKey",2]; hint parseText format ["<t color='42f456'>Du Bist der Besitzer eines: %1</t>", _vehName]; }; } else { // Si non : hint format ["Du hast den %1 von %2 nicht gekauft.", _vehName, name _ownerLast]; };
Spoiler anzeigen
EDIT: Über die Debugkonsole ausprobiert... ohne Fehler
Code_plate = "115516"; _uidnew = "76561198255301431"; _uidold = "76561198001565601"; _type = "O_Truck_03_device_F"; _query = format ["UPDATE vehicles SET pid='%2' WHERE plate='%1' and pid ='%3' and classname = '%4'", _plate,_uidnew,_uidold,_type]; [_query,1] call DB_fnc_asyncCall;
So viel bleibt ja dann eigentlich nicht mehr über... Dann kann es ja eigentlich nur noch an den params liegen?
-
Alles klar, danke schön !
-
this addAction[localize"STR_Process_paket",life_fnc_processAction,"paket",0,false,false,"",' life_inv_paket_unrefined > 0 && !life_is_processing && !life_action_inUse',5]; this addAction[format ["%1 ($%2)",localize (getText(missionConfigFile >> "Licenses" >> "paket" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "paket" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"paket",0,false,false,"",' !license_civ_paket && playerSide isEqualTo civilian ',5];
Ich mache es immer so das diese class ->> paket_refined mit der variable = "paket_refined"; Über ein Stimmt und nicht verschieden ist das verwird meiner Meinung nach bissel
Bitte Pass auch auf das du das ganze auch richtig in die Stringtable einträgst
Vielen Dank für deine Hilfe ! Hat super geklappt.
Für was steht die "5" am ende der Action?Kaum war die 5 drinne und die Variablen leicht angepasst ging es...
-
Nabend zusammen,
ich wende mich an euch, da ich so langsam den Wald vor lauter Bäumen nicht mehr sehen kann.
Es wird mit Sicherheit nur eine Kleinigkeit verkehrt sein, aber ich sehe es einfach nicht...
- Abbauen funktioniert
- Lizenz kaufen funkioniert
- verarbeitete Items verkaufen funktioniert- Verarbeiten funktioniert nicht
- - Add Action wird nicht mal angezeigt
Hoffe ihr könnt mir weiterhelfen
Hier mal meine Schnipsel:stringtable.xml
Code
Alles anzeigen<Key ID="STR_Item_paket_unrefined"> <Original>paket unrefined</Original> <German>leeres Paket</German> </Key> <Key ID="STR_Item_paket_refined"> <Original>paket refined</Original> <German>verpacktes Paket</German> </Key> ... <Key ID="STR_Shops_paket"> <Original>paket Trader</Original> <German>Paketstation</German> </Key> ... <Key ID="STR_MAR_Paket_Trader"> <Original>Paket Trader</Original> <German>Paketstation</German> </Key>
Config_vItems.hpp
Code
Alles anzeigenclass paket_unrefined { variable = "paketUnrefined"; displayName = "STR_Item_paket_unrefined"; weight = 3; buyPrice = -1; sellPrice = -1; illegal = false; edible = -1; icon = "icons\ico_sand.paa"; }; class paket_refined { variable = "paketRefined"; displayName = "STR_Item_paket_refined"; weight = 1; buyPrice = -1; sellPrice = 3200; illegal = false; edible = -1; icon = "icons\ico_sand.paa"; };
Config_Licenses.hpp
Codeclass paket { variable = "paket"; displayName = "STR_License_paket"; price = 20000; illegal = false; side = "civ"; };
Config_Gather.hpp
Config_Process.hpp
Codeclass paket { MaterialsReq[] = {{"paket_unrefined",1}}; MaterialsGive[] = {{"paket_refined",1}}; Text = "STR_Process_paket"; //ScrollText = "Process Oil"; NoLicenseCost = 1200; };
Händler
Codethis allowDamage false; this enableSimulation false; this addAction[localize"STR_MAR_paket_Trader",life_fnc_virt_menu,"paket"];
Verarbeiter
Codethis allowDamage false; this enableSimulation false; this addAction[localize"STR_Process_paket",life_fnc_processAction,"paket",0,false,false,"",'life_inv_paketUnrefined > 0 && !life_is_processong && !life_action_inUse']; this addAction[format ["%1 ($%2)",localize (getText(missionConfigFile >> "Licenses" >> "paket" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "paket" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"paket",0,false,false,"",'!license_civ_paket && playerSide isEqualTo civilian'];