... wie mache ich das jetzt mit feuerwehr auch?
okay hab schon danke trotzdem .
Könntest du es mir verraten, wie du das hinbekommen hast?
... wie mache ich das jetzt mit feuerwehr auch?
okay hab schon danke trotzdem .
Könntest du es mir verraten, wie du das hinbekommen hast?
Ich hab alles nach dieser Anleitung gemacht: https://www.altisliferpg.com/topic/1065-tut…h-bank-account/
Dafür gibts jetzt ein neues Problem: neue Spieler können nicht mehr auf den Server connecten, scheint so als würde irgendwas in Dauerschleife laufen, Performance vom Server geht irgendwann nach längerer Zeit den Bach runter.
Weiß jemand weiter?
EDIT: Fehler gefunden! Läuft wieder, war ein Fehler in der fn_insertRequest.sqf
//Prepare the query statement..
_query = format ["INSERT INTO players (pid, name, cash, bankacc, westcash, westbankacc, independentcash, independentbankacc, aliases, cop_licenses, med_licenses, civ_licenses, civ_gear, cop_gear, med_gear) VALUES('%1', '%2', '%3', '%4', '%5', '%6', '%7', '%8', '%9', '""[]""','""[]""','""[]""','""[]""','""[]""','""[]""')",
_uid,
_name,
_money,
_bank,
_money, //added for westcash
_bank, //added for westbankacc
_money, //added for independentcash
_bank, //added for independentbankacc
_alias
];
Alles anzeigen
VALUES('%1', '%2', '%3', '%4', '%5', '%6', '%7', '%8', '%9', '""[]""','""[]""','""[]""','""[]""','""[]""','""[]""')", <-- da hatte ich vergessen, die `%` Zahlen zu erweitern, gingen nur bis %5 kleine Ursache, große Wirkung
Bei dem System ist nur ein Problem:
Dieser Teil:
if (life_westbankcount <= 1) then {
BANK = 200000; // Change this value to change the starting money
life_westbankcount = life_westbankcount + 1;
};
Bewirkt, dass bei jedem einloggen geschaut wird ob die Variable: ife_westbankcount kleiner 1 ist. Da diese in der configuration mit ife_westbankcount = 0; gesetzt wird, ist dein Bankkonto der Cops bei jedem einloggen wieder auf die 200 000,- gesetzt.
Man müsste irgendwie die einstellungen der config_master.hpp da verwenden können, weil man da für die verschiedenen Fraktionen ein Startguthaben definieren kann. Und das dann nicht immer überschreiben, so wie bei den civ konten halt auch.
Bei dem System ist nur ein Problem:
Dieser Teil:
C: initCop.sqfif (life_westbankcount <= 1) then { BANK = 200000; // Change this value to change the starting money life_westbankcount = life_westbankcount + 1; };
Bewirkt, dass bei jedem einloggen geschaut wird ob die Variable: ife_westbankcount kleiner 1 ist. Da diese in der configuration mit ife_westbankcount = 0; gesetzt wird, ist dein Bankkonto der Cops bei jedem einloggen wieder auf die 200 000,- gesetzt.
Man müsste irgendwie die einstellungen der config_master.hpp da verwenden können, weil man da für die verschiedenen Fraktionen ein Startguthaben definieren kann. Und das dann nicht immer überschreiben, so wie bei den civ konten halt auch.
Soweit ich das Jetzt richtig verstanden habe, willst du damit ja den Cops Startgeld geben.
Aber anstatt es SQF machen zu lassen lasse es doch einfach SQL Machen.
Da das Startgeld ja eh nur einmal benötigt wird.
Heißt du machst einfach die Standard Value auf dein Startgeld:
Ist zwar nicht getestet, aber sollte nach meinem Verständnis von SQL funktionieren.
Gut hat auch 1-2 Nachteile, aber dafür Simpel.
MfG
Florian
Alles anzeigenSoweit ich das Jetzt richtig verstanden habe, willst du damit ja den Cops Startgeld geben.
Aber anstatt es SQF machen zu lassen lasse es doch einfach SQL Machen.
Da das Startgeld ja eh nur einmal benötigt wird.
Heißt du machst einfach die Standard Value auf dein Startgeld:
Ist zwar nicht getestet, aber sollte nach meinem Verständnis von SQL funktionieren.
Gut hat auch 1-2 Nachteile, aber dafür Simpel.
MfG
Florian
Naja ist eigentlich ja unnötig. Da in der config-Master man schon ein Startelf für Cop, medic und civ getrennt einstellen kann. Also so ist es in meiner aktuellen 5.0.0. Über nen DB Eintrag will ich das nicht machen. Und aktuell kannst nach dem obigen Tutorial kannst eh eintragen was du willst, es wird bei jeden einloggen überschrieben.
Ich will dass es beim ersten einloggen die Werte aus den config_master einträgt und danach nichts mehr macht. Eigentlich kann er das ja direkt nach dem ersten einloggen als ziv generell machen. Wird halt dann nur genutzt wenn man später Cop wird.
Habe das Problem gelöst. Hoffe das ist so auch ok. Erste Tests haben funktioniert
Also das obige Tutorial abarbeiten: Getrennte Konten in Version 4.4r3 und höher.
Aber diese Zeilen nicht eintragen:
if (life_westbankcount <= 1) then {
BANK = 200000; // Change this value to change the starting money
life_westbankcount = life_westbankcount + 1;
};
Statdessen die fn_insertPlayerInfo.sqf so abändern:
/*
File: fn_insertPlayerInfo.sqf
Author: Bryan "Tonic" Boardwine
Description:
Upon first join inital player data is sent to the server and added to the database.
Setup data gets sent to life_server\Functions\MySQL\fn_insertRequest.sqf
*/
if (life_session_completed) exitWith {}; //Why did this get executed when the client already initialized? F.... arma...
cutText[localize "STR_Session_QueryFail","BLACK FADED"];
//[0, localize "STR_Session_QueryFail"] call mav_introcam_fnc_updateCinematicStatus;
0 cutFadeOut 9999999;
private ["_bank", "_bankcop", "_bankmed"];
/*
switch (playerSide) do { //Das hier ausklammern!
case west: {
_bankcop = LIFE_SETTINGS(getNumber,"bank_cop");
};
case civilian: {
_bank = LIFE_SETTINGS(getNumber,"bank_civ");
};
case independent: {
_bankmed = LIFE_SETTINGS(getNumber,"bank_med");
};
};*/
_bankcop = LIFE_SETTINGS(getNumber,"bank_cop"); // <- Einfügen
_bank = LIFE_SETTINGS(getNumber,"bank_civ"); // <- Einfügen
_bankmed = LIFE_SETTINGS(getNumber,"bank_med"); // <- Einfügen
if (life_HC_isActive) then {
[getPlayerUID player,profileName,CASH,_bank,_bankcop,_bankmed,player] remoteExecCall ["HC_fnc_insertRequest",HC_Life]; // ,_bankcop,_bankmed Einfügen!
} else {
[getPlayerUID player,profileName,CASH,_bank,_bankcop,_bankmed,player] remoteExecCall ["DB_fnc_insertRequest",RSERV]; // ,_bankcop,_bankmed Einfügen!
};
Alles anzeigen
Dadurch werden beim Anlegen der Spieler immer alle 3 Konten schon angelegt. Ist ja egal ob auf dem Polizei Konto was drauf ist, wenn man kein Polizist ist.
Da die Datei mit der Funktion insertRequest die Daten in die DB schreibt muss da natürlich auch was abgeändert werden. Das sieht bei mir nun so aus:
#include "\life_server\script_macros.hpp"
/*
File: fn_insertRequest.sqf
Author: Bryan "Tonic" Boardwine
Description:
Adds a player to the database upon first joining of the server.
Recieves information from core\sesison\fn_insertPlayerInfo.sqf
*/
private ["_queryResult","_query","_alias"];
params [
"_uid",
"_name",
["_money",-1,[0]],
["_bank",-1,[0]],
["_bankcop",-1,[0]], //<- Einfügen
["_bankmed",-1,[0]], //<- Einfügen
["_returnToSender",objNull,[objNull]]
];
//Error checks
if ((_uid isEqualTo "") || (_name isEqualTo "")) exitWith {systemChat "Bad UID or name";}; //Let the client be 'lost' in 'transaction'
if (isNull _returnToSender) exitWith {systemChat "ReturnToSender is Null!";}; //No one to send this to!
_query = format ["SELECT pid, name FROM players WHERE pid='%1'",_uid];
_tickTime = diag_tickTime;
_queryResult = [_query,2] call DB_fnc_asyncCall;
if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
diag_log "------------- Insert Query Request -------------";
diag_log format ["QUERY: %1",_query];
diag_log format ["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)];
diag_log format ["Result: %1",_queryResult];
diag_log "------------------------------------------------";
};
//Double check to make sure the client isn't in the database...
if (_queryResult isEqualType "") exitWith {[] remoteExecCall ["SOCK_fnc_dataQuery",(owner _returnToSender)];}; //There was an entry!
if !(count _queryResult isEqualTo 0) exitWith {[] remoteExecCall ["SOCK_fnc_dataQuery",(owner _returnToSender)];};
//Clense and prepare some information.
_name = [_name] call DB_fnc_mresString; //Clense the name of bad chars.
_alias = [[_name]] call DB_fnc_mresArray;
_money = [_money] call DB_fnc_numberSafe;
_bank = [_bank] call DB_fnc_numberSafe;
_bankcop = [_bankcop] call DB_fnc_numberSafe; //<- Einfügen
_bankmed = [_bankmed] call DB_fnc_numberSafe; //<- Einfügen
//Prepare the query statement..
_query = format ["INSERT INTO players (pid, name, cash, bankacc, westcash, westbankacc, independentcash, independentbankacc, aliases, cop_licenses, med_licenses, civ_licenses, civ_gear, cop_gear, med_gear) VALUES('%1', '%2', '%3', '%4', '%5', '%6', '%7', '%8', '%9','""[]""','""[]""','""[]""','""[]""','""[]""','""[]""')",
_uid,
_name,
_money,
_bank,
_money, //added for westcash
_bankcop, //added for westbankacc //<- Einfügen
_money, //added for independentcash
_bankmed, //added for independentbankacc //<- Einfügen
_alias
];
[_query,1] call DB_fnc_asyncCall;
[] remoteExecCall ["SOCK_fnc_dataQuery",(owner _returnToSender)];
Alles anzeigen
Dann könnt ihr in der Config_Master-hpp für die 3 Fraktionen die Bank-Start-Werte auswählen und festlegen. Das geht dann hier ab Zeile 108:
/* Paycheck & Bank System Configurations */
bank_cop = 500000; //Amount of cash in bank for new cops
bank_civ = 25000; //Amount of cash in bank for new civillians
bank_med = 1000000; //Amount of cash in bank for new medics
Hoffe hab nichts vergessen und es hilft euch
MfG
Saturin78
PS. Achtung nicht einfach Copy&Paste, da ich entgegen des Tutorials nicht nur die Cops mit extra Konto ausgestattet habe!
wird getestet !