Beiträge von Joe Barbaro
-
-
Soo nun etwas verspätet weil... öhm vergessen
wie man über die neue Währung bezahlt
Also ich nehme hier als beispiel die fn_VehicleShopBuy.sqf
Code
Alles anzeigen#include "..\..\script_macros.hpp" /* File: fn_vehicleShopBuy.sqf Author: Bryan "Tonic" Boardwine Description: Does something with vehicle purchasing. */ params [["_mode",true,[true]]]; if ((lbCurSel 2302) isEqualTo -1) exitWith {hint localize "STR_Shop_Veh_DidntPick";closeDialog 0;}; if ((time - life_action_delay) < 0.2) exitWith {hint localize "STR_NOTF_ActionDelay";}; life_action_delay = time; private _className = lbData[2302,(lbCurSel 2302)]; private _vIndex = lbValue[2302,(lbCurSel 2302)]; private _vehicleList = M_CONFIG(getArray,"CarShops",(life_veh_shop select 0),"vehicles"); private _shopSide = M_CONFIG(getText,"CarShops",(life_veh_shop select 0),"side"); private _initalPrice = M_CONFIG(getNumber,"LifeCfgVehicles",_className,"price"); private "_buyMultiplier"; private "_rentMultiplier"; switch (playerSide) do { case civilian: { _buyMultiplier = LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_CIVILIAN"); _rentMultiplier = LIFE_SETTINGS(getNumber,"vehicle_rental_multiplier_CIVILIAN"); }; case west: { _buyMultiplier = LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_COP"); _rentMultiplier = LIFE_SETTINGS(getNumber,"vehicle_rental_multiplier_COP"); }; case independent: { _buyMultiplier = LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_MEDIC"); _rentMultiplier = LIFE_SETTINGS(getNumber,"vehicle_rental_multiplier_MEDIC"); }; case east: { _buyMultiplier = LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_OPFOR"); _rentMultiplier = LIFE_SETTINGS(getNumber,"vehicle_rental_multiplier_OPFOR"); }; }; private "_purchasePrice"; if (_mode) then { _purchasePrice = round(_initalPrice * _buyMultiplier); } else { _purchasePrice = round(_initalPrice * _rentMultiplier); }; private _conditions = M_CONFIG(getText,"LifeCfgVehicles",_className,"conditions"); if !([_conditions] call life_fnc_levelCheck) exitWith {hint localize "STR_Shop_Veh_NoLicense";}; private _colorIndex = lbValue[2304,(lbCurSel 2304)]; if (_purchasePrice < 0) exitWith {closeDialog 0;}; //Bad price entry if (COINS < _purchasePrice) exitWith {hint format [localize "STR_Shop_Veh_NotEnough",[_purchasePrice - COINS] call life_fnc_numberText];closeDialog 0;}; private _spawnPoints = life_veh_shop select 1; private _spawnPoint = ""; if ((life_veh_shop select 0) == "med_air_hs") then { if (nearestObjects[(getMarkerPos _spawnPoints),["Air"],35] isEqualTo []) exitWith {_spawnPoint = _spawnPoints}; } else { //Check if there is multiple spawn points and find a suitable spawnpoint. if (_spawnPoints isEqualType []) then { //Find an available spawn point. { if ((nearestObjects[(getMarkerPos _x),["Car","Ship","Air"],5]) isEqualTo []) exitWith {_spawnPoint = _x}; true } count _spawnPoints; } else { if (nearestObjects[(getMarkerPos _spawnPoints),["Car","Ship","Air"],5] isEqualTo []) exitWith {_spawnPoint = _spawnPoints}; }; }; if (_spawnPoint isEqualTo "") exitWith {hint localize "STR_Shop_Veh_Block"; closeDialog 0;}; COINS = COINS - _purchasePrice; [8] call SOCK_fnc_updatePartial; hint format [localize "STR_Shop_Veh_Bought",getText(configFile >> "CfgVehicles" >> _className >> "displayName"),[_purchasePrice] call life_fnc_numberText]; //Spawn the vehicle and prep it. private "_vehicle"; if ((life_veh_shop select 0) == "med_air_hs") then { _vehicle = createVehicle [_className,[0,0,999],[], 0, "NONE"]; waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait? _vehicle allowDamage false; _hs = nearestObjects[getMarkerPos _spawnPoint,["Land_Hospital_side2_F"],50] select 0; _vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]); sleep 0.6; } else { _vehicle = createVehicle [_className, (getMarkerPos _spawnPoint), [], 0, "NONE"]; waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait? _vehicle allowDamage false; //Temp disable damage handling.. _vehicle setPos (getMarkerPos _spawnPoint); _vehicle setVectorUp (surfaceNormal (getMarkerPos _spawnPoint)); _vehicle setDir (markerDir _spawnPoint); }; _vehicle lock 2; [_vehicle,_colorIndex] call life_fnc_colorVehicle; [_vehicle] call life_fnc_clearVehicleAmmo; _vehicle setVariable ["trunk_in_use",false,true]; _vehicle setVariable ["vehicle_info_owners",[[getPlayerUID player,profileName]],true]; _vehicle disableTIEquipment true; //No Thermals.. They're cheap but addictive. //Side Specific actions. switch (playerSide) do { case west: { [_vehicle,"cop_offroad",true] spawn life_fnc_vehicleAnimate; }; case civilian: { if ((life_veh_shop select 2) isEqualTo "civ" && {_className == "B_Heli_Light_01_F"}) then { [_vehicle,"civ_littlebird",true] spawn life_fnc_vehicleAnimate; }; }; case independent: { [_vehicle,"med_offroad",true] spawn life_fnc_vehicleAnimate; }; }; _vehicle allowDamage true; life_vehicles pushBack _vehicle; //Always handle key management by the server [getPlayerUID player,playerSide,_vehicle,1] remoteExecCall ["TON_fnc_keyManagement",RSERV]; if (_mode) then { if !(_className in LIFE_SETTINGS(getArray,"vehicleShop_rentalOnly")) then { if (life_HC_isActive) then { [(getPlayerUID player),playerSide,_vehicle,_colorIndex] remoteExecCall ["HC_fnc_vehicleCreate",HC_Life]; } else { [(getPlayerUID player),playerSide,_vehicle,_colorIndex] remoteExecCall ["TON_fnc_vehicleCreate",RSERV]; }; }; }; if (LIFE_SETTINGS(getNumber,"player_advancedLog") isEqualTo 1) then { if (LIFE_SETTINGS(getNumber,"battlEye_friendlyLogging") isEqualTo 1) then { advanced_log = format [localize "STR_DL_AL_boughtVehicle_BEF",_className,[_purchasePrice] call life_fnc_numberText,[COINS] call life_fnc_numberText,[BANK] call life_fnc_numberText]; } else { advanced_log = format [localize "STR_DL_AL_boughtVehicle",profileName,(getPlayerUID player),_className,[_purchasePrice] call life_fnc_numberText,[COINS] call life_fnc_numberText,[BANK] call life_fnc_numberText]; }; publicVariableServer "advanced_log"; }; closeDialog 0; //Exit the menu. true; [_mode,_vehicle] spawn max_immat_fnc_vehicleBuyImmatriculation;
Lange rede kurzer Sinn,
ihr müsst lediglich von z.B CASH auf COINS umstellen und den updatePartial case changen
Und fertig viel spaß damit
Mit freundlichen Grüßen
Joe Barbaro
-
Kleiner Zusatz zum TUT
Wer das [TUTORIAL] JAIL TIME ALTIS LIFE 5.0 von der lieben Alice Kingsleigh nutzt muss folgendes ändern.
Schritt 1. Geht in die fn_queryRequest.sqf wo ihr diese findet in dem Functions\MYSQL Ordner, wenn ihr diese geöffnet habt sucht ihr folgenden CODE
case civilian: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, civ_licenses, arrested, civ_gear, civ_stats, civ_alive, civ_position, playtime FROM players WHERE pid='%1'",_uid];};
uns erstetzt ihn mit diesem
case civilian: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, civ_licenses, arrested, civ_gear, civ_stats, civ_alive, civ_position, playtime, jail_time, Coins FROM players WHERE pid='%1'",_uid];};
Nur als erklärung was hier gerade passiert ist wir haben hinter playtime ein Komma gestzt und dort Coins eingetragen Achtung nach dem Coins kein Komma
Jetzt geht ihr zu der case civilian das sich in der Zeile 97-131 befinden Sollte (ACHTUNG STANDART FRAMEWORK) jetzt sucht ihr in dem case nach gang_%1 wenn ihr das Gefunden habt schreibt ihr folgenden Code darunter.
Spoiler anzeigen
JETZT SIND WIR IN DER LIFE SERVER FERTIG UND MACHEN IN DER MISSIONSDATEI WEITER
Schritt 4. Geht in die fn_requestReceived.sqf wo ihr diese findet in dem core\session Ordner, wenn ihr diese geöffnet geht ihr zu der case civilian das sich in der Zeile 62-93 befinden Sollte (ACHTUNG STANDART FRAMEWORK) jetzt sucht ihr in dem case nach [] spawn life_fnc_initHouses; wenn ihr das Gefunden habt schreibt ihr folgenden Code darunter.
wem das zu viel zum lesen ist...
select 13 zu select 14 + in der fn_querryRequest.sqf JailTime mit in die SELECT abfrage schreiben fertig
Mit freundlichen Grüßen
Joe Barbaro
-
Soweit sieht das echt alles gut aus. Aber als Idee wäre nun, das Ganze noch mal für einen Shop zu schreiben, so dass die Leute auch wissen, wie man die dann einsetzt, um damit was zu kaufen/die Coins einzutauschen
Gerade dabei
-
Der letzte Satz sagt alles aus.
Kaufs das möchte ich sehen
-
Das ist doch auch nix anderes?!
Warum kaufen wenn man das TUT da hat?
-
-
Mach einfach in eine neue LifeServer Function wo du folgendes reinschreibst
Code_PID = param [0,"",[""]]; _query = format ["SELECT uid FROM players WHERE pid='%1'",_PID]; _queryResult = [_query,2] call DB_fnc_asyncCall; [_queryResult] remoteExec ["life_fnc_HudUpdate", remoteExecuteOwner];
Definier sie natürlich noch in der config.cpp.
Im CientRepo fügst du diese Funktion noch in die CfgRemoteExec.hpp ein unter Server also F(TON_fnc_UID,SERVER); und dann in deiner Function wo du danach Fragst folgendes
Funtion sollte so gehen habe es aber nicht getestet.
Freue mich auf deine Rückmeldung.
Mit freundlichen Grüßen
Joe Barbaro
Soooo ich hab das mal fix bei mir gemacht also
Clientside
Code
Alles anzeigen_type = _this select 0; switch (_type) do { case 0 : { private _PID = getPlayerUID player; [_PID] remoteExec ["DB_fnc_DBID",2]; }; case 1 : { private _DBID = _this select 1; ((uiNamespace getVariable "DEINKEKS") displayCtrl DEINEIDD) ctrlSetText format ["%1",_DBID];// for Display }; };
Serverside
Code_PID = _this select 0; _query = format ["SELECT uid FROM players WHERE pid='%1'",_PID]; _queryResult = [_query,2] call DB_fnc_asyncCall; [1,_queryResult] remoteExec ["life_fnc_DEINEHUDFNC", remoteExecutedOwner];
Das funzt büdde
Vergiss bitte nicht die Sachen die in CAPSLOCK geschrieben sind mit deinen Daten zu füllen!
Mit freundlichen Grüßen
Joe Barbaro
-
-
INFO: Hier mit untersage ich die nutzung von meinem Skript und deren veröffentlichung auf irgend ein forum
Also verstehe ich richtig das du Hilfe bei deinem Code brauchst, diesen aber niemand verwenden darf?
Also find ich echt uncool und ich würde da auch keine großartige Hilfe erwarten.
Meine Meinung.
Mit freundlichen Grüßen
Joe Barbaro
-
-
So wird mein HUD aufgerufen
Codeclass HUD { idd = 7760; duration = 999999999999999999999999999999999999999999999999999999999; movingEnable = 0; fadein = 0; fadeout = 0; name = "HUD"; onLoad = "uiNamespace setVariable ['HUD',_this select 0]";
So sag ich halt welches Display der ansteuern soll
Mit freundlichen Grüßen
Joe Barbaro
-
Soooo ich hab das mal fix bei mir gemacht also
Clientside
Code
Alles anzeigen_type = _this select 0; switch (_type) do { case 0 : { private _PID = getPlayerUID player; [_PID] remoteExec ["DB_fnc_DBID",2]; }; case 1 : { private _DBID = _this select 1; ((uiNamespace getVariable "DEINKEKS") displayCtrl DEINEIDD) ctrlSetText format ["%1",_DBID];// for Display }; };
Serverside
Code_PID = _this select 0; _query = format ["SELECT uid FROM players WHERE pid='%1'",_PID]; _queryResult = [_query,2] call DB_fnc_asyncCall; [1,_queryResult] remoteExec ["life_fnc_DEINEHUDFNC", remoteExecutedOwner];
Das funzt büdde
Vergiss bitte nicht die Sachen die in CAPSLOCK geschrieben sind mit deinen Daten zu füllen!
Mit freundlichen Grüßen
Joe Barbaro
-
Moin,
also erstmal musst du im Dialog RscButtonMenu zu life_RscButtonMenu ändern.
Danach noch die Idd's anders belegen, da die 1000 sicher schon verwendet wird.
Abgesehen davon brauchst du mehr als nur den Button. Dann musst du die addaction abändern,da dir sonst der Standard Market Dialog rausgeworfen wird.
Dazu schreib einfach ne neue function. Das Action = ... im Dialog wird dir da auch nicht helfen. Für die Bedeutung von Action Gib mal auf Google arma 3 Dialog Action ein.
Das war noch nicht alles aber da ich gerade in der Bahn sitze würde ich dich nachher gerne auf meinen ts einladen sofern du noch Hilfe brauchst. Das Ergebnis können wir ka dann Posten.
Wenn du Interesse hast schreib mir ne pn.
Mit freundlichen Grüßen
Joe Barbaro
-
Guck dir beide Dialoge an verfolg die IDD´s vom Orginal zurück.
Und beim Rest Trail and Error
Mit freundlichen Grüßen
Joe barbaro
-
Des Rätsels Lösung C++ 2015 32bit deinstalliert c++ 2017 draufgelassen kalppt
#close Alice Kingsleigh
-
mach so etwas bitte nicht.... sinnlos und dumm... installier einfach die oben genannten Programme und es sollte funktionieren...
Warum also auch auf meinem alten Server musste ich die DLL´s nachschieben...
Kläre mich auf
-
-
Liebe NN-Community,
wir sind im Januar auf einen neuen Dedicated umgezogen.
Dieser hat Windoof Server 2019 x64 als Betriebssystem.
So weit so gut.
Also ich lade per SteamCMD Arma 3 runter will es starten und dann das.
WICHTIG: Die 32 bit Version kann ich ohne Probleme nutzen.
Jetzt die Frage:
Wie behebe ich das oder liegt das an Windoof Server 2019?
Sollte ich Infos vergessen habe dann fragt einfach nach
Danke im Voraus
Mit freundlichen Grüßen
Joe Barbaro
-