Schau Dir mal die fn_processAction.sqfan da musst nur den else Pfad von if(hasLicense)anpassen oder vorher schon rausgehen
Beiträge von moeck
-
-
Stimmt für eine Lizenz überflüssig aber in der CFGVehicles bei den Texturen äussert praktisch
, da muss man den Kram dann nur einmal einfügen und kann es in verschiedenen Shops nutzen
-
Moin,
hier solltest du mal in Zeile 16 noch eine Prüfung machen ob da auch was drinsteht. Also ich würde es mal so versuchen.
Code
Alles anzeigen/* File : fn_setPlayTime.sqf Author : NiiRoZz Description : Sets gathered time of player GATHERED - Loaded from DB and NOT changed JOIN - Time, the player joined - the newly gathered playtime will be calculated using difference */ private ["_uid", "_time_gathered"]; _uid = _this select 0; _time_gathered = ((_this select 1) * 60); if (isNil _time_gathered) then {_time_gathered = 0;}; //create value using get [_uid] call TON_fnc_getPlayTime; //set value no 1 { if ((_x select 0) isEqualTo _uid) exitWith { _x set [1, _time_gathered]; _x set [2, time]; }; } forEach TON_fnc_playtime_values;
Kann aber auch sein dass der Fehler in der getPlayTime liegt
Einfach mal ausprobieren.
Gruß,
moeck
-
Moin,
also es gibt einen Weg. Wir haben den Betrag auf 10 Mio erhöht und das funktioniert wunderbar. Wenn ich mich richt erinnere haben wir das Thema hier schon mal ausführlich diskutiert. Man musst nur eine Prüfung rausmachen, die aber ehüberflüssig war.
Diese Zeile musst Du rausnehmen. Und fürs einzahlen kann man einfach einen Alles Button bauen
Gruß,
moeck
-
Moin,
oder Du änderst die Side von einem String in ein Array
. Natürlich musste dann auch bei jeder Prüfung wo Du auf die Config zugreifst auf ein Array prüfen und nicht mehr auf einen String ist aber grundsätzlich kein Problem.
Gruß,
moeck
-
moin,
heute ist mal wieder einer der Tage wo ich mir einen bestimmten Smiley wünschen würde. Grundsätzlich funktioniert der Code auch so per Copy & Paste und wenn Du nicht verstehst was der Code macht ist es doch völlig egal wie er aussieht
*facepalm*
Gruß,
moeck
-
AvirexDE : die Übersetzung ist der Hammer
, ja das mit dem Port hat uns leider auch getroffen. Wie gesagt schaltet mal die noLogs und netLog Parameter aus wenn ihr crashes habt
-
Moin,
ich habe gerade noch eine Info gefunden. Kann es sein, dass ihr als Startparameter -nolog oder -netlog gesetzt habt? Nehmt die mal raus und testet das mal
.
Gruß,
moeck
-
Moin,
bisher noch kein Crash aufgetreten.
Mods: Keine (Vanilla Altis Life)
DB: extDB3 ohne Custom SQL
Altis Life: irgendwas zwischen 3.1.4.8 und 5.0 (wird gerade massiv umgebaut)
Server: Windows-Server 2012, Arma Server auf der Hardware, Game Port ist 2302, BattlEye Port ist 2306 und RCON Port liegt auf 2305.
Gruß,
moeck
-
-
schön, da meine Glaskugel aber immer noch in der Reperatur ist, bräucht ich ein bissel mehr als "Es geht nicht". Wie wäre es zum Beispiel mal mit Logsfiles?
-
und am besten gleich mal die beiden Dateien dazu wo die Fehler auftreten. Also core\functions\fn_updateEXP.sqf und core\gangs\fn_gangMenu.sqf
-
Stell mal ein schild auf den Marker und nimm dann den wert von Z. das sollte helfen.
-
so eine kleinigkeit habe ich jetzt noch gefunden.
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;}; 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 (CASH < _purchasePrice) exitWith {hint format [localize "STR_Shop_Veh_NotEnough",[_purchasePrice - CASH] 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;}; CASH = CASH - _purchasePrice; [0] 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 { _pos = getMarkerPos _spawnPoint; _dir = markerDir _spawnPoint; if(_spawnPoint isEqualTo "cop_car_1")then { _pos = [2923.011,12708.574,19.016]; _dir = 146.824; }; _vehicle = createVehicle [_className, _pos, [], 0, "NONE"]; waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait? _vehicle allowDamage false; //Temp disable damage handling.. _vehicle setPos _pos; _vehicle setVectorUp (surfaceNormal _pos); _vehicle setDir _dir; }; _vehicle lock 2; [_vehicle,_colorIndex] call life_fnc_colorVehicle; [_vehicle] call life_fnc_clearVehicleAmmo; [_vehicle,"trunk_in_use",false,true] remoteExecCall ["TON_fnc_setObjVar",RSERV]; [_vehicle,"vehicle_info_owners",[[getPlayerUID player,profileName]],true] remoteExecCall ["TON_fnc_setObjVar",RSERV]; _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,[CASH] 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,[CASH] call life_fnc_numberText,[BANK] call life_fnc_numberText]; }; publicVariableServer "advanced_log"; }; closeDialog 0; //Exit the menu. true;
und ich habe jetzt mal den abgleich mit der orginalen 5.0 gemacht. Den Marker auf der Karte hast Du aber gesetzt oder?
-
Moin,
im Shop ist eine Klammerin Zeile 113 zuviel drin ^^. Versuche es mal damit.
C: fn_vehicleShopBuy.sqf
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;}; 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 (CASH < _purchasePrice) exitWith {hint format [localize "STR_Shop_Veh_NotEnough",[_purchasePrice - CASH] 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;}; CASH = CASH - _purchasePrice; [0] 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 { _pos = getMarkerPos _spawnPoint; _dir = markerDir _spawnPoint; if(_spawnPoint isEqualTo "cop_car_1")then{ _pos = [2923.011,12708.574,19.016]; _dir = 146.824; }; _vehicle = createVehicle [_className, _pos, [], 0, "NONE"]; waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait? _vehicle allowDamage false; //Temp disable damage handling.. _vehicle setPos _pos; _vehicle setVectorUp (surfaceNormal (getMarkerPos _spawnPoint)); _vehicle setDir _dir; }; _vehicle lock 2; [_vehicle,_colorIndex] call life_fnc_colorVehicle; [_vehicle] call life_fnc_clearVehicleAmmo; [_vehicle,"trunk_in_use",false,true] remoteExecCall ["TON_fnc_setObjVar",RSERV]; [_vehicle,"vehicle_info_owners",[[getPlayerUID player,profileName]],true] remoteExecCall ["TON_fnc_setObjVar",RSERV]; _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,[CASH] 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,[CASH] call life_fnc_numberText,[BANK] call life_fnc_numberText]; }; publicVariableServer "advanced_log"; }; closeDialog 0; //Exit the menu. true;
Gruß,
moeck
-
Danke, ja das ist genau das was ich suche
-
Moin,
kann es sein, dass Du beim Aufsetzen nicht daas SQL File von 5.0 genommen hast sondern ein anderes? Es sieht nämlich ganz danach aus
. Ich gehe mal davon aus in deiner DB steht "playerid" statt "pid" und das kann nicht funktionieren.
Gruß,
moeck
-
-
Moin,
gibt es eine Möglichkeit das Escape Menü von Arma zu modifiziern? Ich möchte gern eine Prüfung einbauen, wenn jemand in die Lobby geht. Ich weis leider nicht wie ich es anders erklären soll
. Für Hinweise wäre ich dankbar.
Gruß,
moeck
-
blackfisch ja das ist richtig. stumpfes copy & paste ist nie eine gute idee