keine Ahnung was du machst, es ist jedenfalls falsch Bei mir ist der Fehler nicht. Hab es jetzt mehrmals kontrolliert. Hast du die Config richtg?
Beiträge von Risk
-
-
Langsam finde ich es unhöfflich
Ich auch von dir keine Geduld zu behalten.
-
Aufjedenfall richtig drine jetzt. Habs nochmal rein kopiert.
Hab es jetzt auch mehrmals getestet. Geht aufjedenfall.
-
Ich gucke gleich mal ob ich beim reinkopieren einen Fehler gemacht habe :p
-
Schon was in der Config geändert und es falsch gemacht? Hab ihn nämlich nicht.
-
Hab es jetzt mal geänder max.mm80
-
Moin danke fürs Kommenta. War mir schon bewusst, wollte aber erstmal ein funktionierendes Ergebnis haben bevor ich es optimiere
-
Hier ein kleines Restartscript welches ohne irgendwelche Programme läuft.
Ich habe das ganze noch nicht testen können also bin ich auf eure Hilfe angewiesen.
1. geht in eure description.exi und erstell bei CfgNotifications eine neue class.
Codeclass restart { title = "RESTART"; iconPicture = "\A3\ui_f\data\map\mapcontrol\taskIcon_ca.paa"; color[] = {0,0.8,0,1}; description = "%1"; duration = 10; priority = 6; };
2. geht in eure CfgRemoteExec.hpp und tragt folgendes ein
3. erstellt eine neue config im Config Ordner und tragt diese mit #include "Config_Restart.hpp" in der Config Master ein
Code
Alles anzeigenclass RestartTime { class times { RestartTimeHours[] = { 6, 12, 18, 0 }; /* Warn examples 5:00, 5:15, 5:30, 5:45, 5:55 */ WarnTimeHours[] = { 5, 11, 17, 23 }; WarnTimeMinutes[] = { 0, 15, 30, 45, 55 }; }; text[] = { "Neustart in 60 Minuten! Zeiten 6 Uhr, 12 Uhr, 18 Uhr, 24Uhr", "Neustart in 45 Minuten! Zeiten 6 Uhr, 12 Uhr, 18 Uhr, 24Uhr", "Neustart in 30 Minuten! Zeiten 6 Uhr, 12 Uhr, 18 Uhr, 24Uhr", "Neustart in 15 Minuten! Zeiten 6 Uhr, 12 Uhr, 18 Uhr, 24Uhr", "Neustart in 5 Minuten! Zeiten 6 Uhr, 12 Uhr, 18 Uhr, 24Uhr" }; };
4. in eurem life_server tragt folgendes in eurer config.cpp in die class Systems ein
erstellt diese beiden Dateien unter life_server/Functions/Systems mit folgendem Inhalt
fn_getRealTime.sqf
Code
Alles anzeigen/* Autor: ԄӏՖҚ Written for Die-Sippe Gets the realtime if call it */ for "_i" from 0 to 1 step 0 do { realTimeSippe = "extDB3" callExtension "9:LOCAL_TIME"; realTimeSippe = call compile realTimeSippe; publicVariable "realTimeSippe"; sleep 0.1; };
fn_restart.sqf denkt hier bitte daran das ServerCommandPassword zu ändern da es sonst nicht geht.
Code
Alles anzeigen/* author: ԄӏՖҚ description: Regelt die Restarts. returns: nothing */ waitUntil{!(realTimeSippe isEqualTo [])}; //Set Vars once so they don't get called every time just once. private _configRestartHours = getArray(missionConfigFile >> "RestartTime" >> "times" >> "RestartTimeHours"); private _configWarnTimeHours = getArray(missionConfigFile >> "RestartTime" >> "times" >> "WarnTimeHours"); private _configWarnTimeMinutes = getArray(missionConfigFile >> "RestartTime" >> "times" >> "WarnTimeMinutes"); private _configText = getArray(missionConfigFile >> "RestartTime" >> "text"); _configRestartHours params [ "_configRestartHoursOne", "_configRestartHoursTwo", "_configRestartHoursThree", "_configRestartHoursFour" ]; _configWarnTimeHours params [ "_warnTimeHourOne", "_warnTimeHourTwo", "_warnTimeHourThree", "_warnTimeHourFour" ]; _configWarnTimeMinutes params [ "_warnTimeMinuteOne", "_warnTimeMinuteTwo", "_warnTimeMinuteThree", "_warnTimeMinuteFour", "_warnTimeMinuteFive" ]; _configText params[ "_configTextOne", "_configTextTwo", "_configTextThree", "_configTextFour", "_configTextFive" ]; life_warnOne = true; life_warnTwo = true; life_warnThree = true; life_warnFour = true; life_warnFive = true; for "_i" from 0 to 1 step 0 do { private _times = realTimeSippe select 1; private _Stunde = _times select 3; private _Minute = _times select 4; diag_log "---------------------------"; diag_log format["_Stunde %1 - _Minute %2", _Stunde, _Minute]; if(_Stunde in [_warnTimeHourOne, _warnTimeHourTwo, _warnTimeHourThree, _warnTimeHourFour])then{ //Restart Warn 1 if(_Minute isEqualTo _warnTimeMinuteOne && life_warnOne)then { diag_log format["Warn 1: %1 Minute %2", _configTextOne, _warnTimeMinuteOne]; ["restart",[_configTextOne]] remoteExecCall ['bis_fnc_showNotification',0]; life_warnOne = false; }; //Restart Warn 2 if(_Minute isEqualTo _warnTimeMinuteTwo && life_warnTwo)then { diag_log format["Warn 2: %1 Minute %2", _configTextTwo, _warnTimeMinuteTwo]; ["restart",[_configTextTwo]] remoteExecCall ['bis_fnc_showNotification',0]; life_warnTwo = false; }; //Restart Warn 3 if(_Minute isEqualTo _warnTimeMinuteThree && life_warnThree)then { diag_log format["Warn 3: %1 Minute %2", _configTextThree, _warnTimeMinuteThree]; ["restart",[_configTextThree]] remoteExecCall ['bis_fnc_showNotification',0]; life_warnThree = false; }; //Restart Warn 4 if(_Minute isEqualTo _warnTimeMinuteFour && life_warnFour)then { diag_log format["Warn 4: %1 Minute %2", _configTextFour, _warnTimeMinuteFour]; ["restart",[_configTextFour]] remoteExecCall ['bis_fnc_showNotification',0]; life_warnFour = false; }; //Restart Warn 5 if(_Minute isEqualTo _warnTimeMinuteFive && life_warnFive)then { diag_log format["Warn 5: %1 Minute %2", _configTextFive, _warnTimeMinuteFive]; ["restart",[_configTextFive]] remoteExecCall ['bis_fnc_showNotification',0]; life_warnFive = false; }; }; //Actual Restart if(_Stunde in[_configRestartHoursOne,_configRestartHoursTwo,_configRestartHoursThree,_configRestartHoursFour] && _Minute isEqualTo 0)then { "CE8C283FB8EDDA1F89B3BD5C7EBE8" serverCommand "#restartserver"; }; diag_log "---------------------------"; sleep 5; };
5. geht in eurem life_server in die init.sqf und tragt vor EXTDB "9:LOCK"; folgendes ein
fertig. Bei Problemen einfach melden.
-
die impound.hpp aus der Mission
Code
Alles anzeigenclass Life_impound_menu { idd = 2800; name="life_vehicle_shop"; movingEnable = 0; enableSimulation = 1; onLoad = "ctrlShow [2330,false];"; class controlsBackground { class Life_RscTitleBackground: Life_RscText { colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; idc = -1; x = 0.1; y = 0.2; w = 0.8; h = (1 / 25); }; class MainBackground: Life_RscText { colorBackground[] = {0,0,0,0.7}; idc = -1; x = 0.1; y = 0.2 + (11 / 250); w = 0.8; h = 0.7 - (22 / 250); }; class Title: Life_RscTitle { idc = 2801; text = "$STR_GUI_Garage"; x = 0.1; y = 0.2; w = 0.8; h = (1 / 25); }; class VehicleTitleBox: Life_RscText { idc = -1; text = "$STR_GUI_YourVeh"; colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; x = 0.11; y = 0.26; w = 0.3; h = (1 / 25); }; class VehicleInfoHeader: Life_RscText { idc = 2830; text = "$STR_GUI_VehInfo"; colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; x = 0.42; y = 0.26; w = 0.46; h = (1 / 25); }; class CloseBtn: Life_RscButtonMenu { idc = -1; text = "$STR_Global_Close"; onButtonClick = "closeDialog 0;"; x = -0.06 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); y = 0.9 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; class RetrieveCar: Life_RscButtonMenu { idc = -1; text = "$STR_Global_Retrieve"; onButtonClick = "call life_fnc_unimpound;"; x = 0.1 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); y = 0.9 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; class SellCar: Life_RscButtonMenu { idc = -1; text = "$STR_Global_Sell"; onButtonClick = "call life_fnc_sellGarage; closeDialog 0;"; x = 0.26 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); y = 0.9 - (1 / 25); w = (6.25 / 40); h = (1 / 25); }; class InsureCar : life_RscButtonMenu { idc = -1; text = "Versichern"; onButtonClick = "call life_fnc_insureCar;"; x = 0.58; y = 0.86; w = 0.15625; h = 0.04; }; class kennzeichenButton: life_RscButtonMenu { idc = -1; text = "Kennzeichen"; //--- ToDo: Localize; onButtonClick = "call TLG_Client_fnc_changePlate;"; x = 0.74; y = 0.86; w = 0.15625; h = 0.04; }; }; class controls { class VehicleList: Life_RscListBox { idc = 2802; text = ""; sizeEx = 0.04; colorBackground[] = {0.1,0.1,0.1,0.9}; onLBSelChanged = "_this call life_fnc_garageLBChange;"; x = 0.11; y = 0.302; w = 0.303; h = 0.49; }; class vehicleInfomationList: Life_RscStructuredText { idc = 2803; text = ""; sizeEx = 0.035; x = 0.41; y = 0.3; w = 0.5; h = 0.5; }; class MainBackgroundHider: Life_RscText { colorBackground[] = {0,0,0,1}; idc = 2810; x = 0.1; y = 0.2 + (11 / 250); w = 0.8; h = 0.7 - (22 / 250); }; class MainHideText: Life_RscText { idc = 2811; text = "$STR_ANOTF_QueryGarage"; sizeEx = 0.06; x = 0.24; y = 0.5; w = 0.6; h = (1 / 15); }; class RscEdit_1400: Life_RscEdit { idc = 2812; text = "erster Teil"; //--- ToDo: Localize; x = 0.1125; y = 0.8; w = 0.15; h = 0.04; }; class RscEdit_1401: Life_RscEdit { idc = 2813; text = "zweiter Teil"; //--- ToDo: Localize; x = 0.2625; y = 0.8; w = 0.15; h = 0.04; }; }; };
und nochmal 4 neue files für die Mission.
Code/* author: Risk description: Fragt das Kennzeichen des Spielers ab und gibt den Namen wieder. returns: Nothing */ params[ "_vehicle" ]; diag_log format["abfrageCop %1",_vehicle]; [getPlateNumber _vehicle,player] remoteExecCall ["TLG_Client_fnc_getNamePlate",2];
Code/* author: Risk description: Sends Plate to DB returns: nothing */ private _enteredPlate = ctrlText 50000; ["Schicke das Kennzeichen an die Leitstelle..","fast","blue"] spawn TLG_Client_fnc_msgHandle; [_enteredPlate,player] remoteExecCall ["TLG_Client_fnc_getNamePlate",2];
Code
Alles anzeigen/* author: Risk description: Ändert dein Kennzeichen in eines deiner Wünsche returns: nothing */ _vid = lbValue[2802,(lbCurSel 2802)]; _Buchstabe = ctrlText 2812; _Zahl = ctrlText 2813; _zuAendern = format["TLG-%1-%2", _Buchstabe, _Zahl]; _length = count (toArray(_zuAendern)); _chrByte = toArray (_zuAendern); _allowed = toArray("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-"); if (_length > 15) exitWith {["Du kannst das Kennzeichen nicht größer als 15 machen!","fast","red"] spawn TLG_Client_fnc_msgHandle;}; _badChar = false; { if (!(_x in _allowed)) exitWith { _badChar = true; }; } forEach _chrByte; if (_badChar) exitWith {[localize "STR_GNOTF_IncorrectChar","fast","red"] spawn TLG_Client_fnc_msgHandle;}; _uid = getPlayerUID player; closeDialog 0; [_zuAendern,_uid,_vid] remoteExec ["TLG_Server_fnc_Plate",2];
Code/* author: Risk description: Fragt das Kennzeichen des Spielers ab und gibt den Namen wieder. returns: Nothing */ params[ "_vehicle" ]; diag_log format["abfrageCop %1",_vehicle]; [getPlateNumber _vehicle,player] remoteExecCall ["TLG_Client_fnc_getNamePlate",2];
wenn ich dann nochmal lust hab mach ich ein richtiges tut draus.
-
Hier mein Part.
das ganze ist für SQL_Custom gemacht worden.
Code[changePlate] SQL1_1 = UPDATE vehicles SET plate = ? WHERE pid = ? AND id = ? SQL1_INPUTS = 1, 2, 3 [getNamePlate] SQL1_1 = SELECT owner FROM vehicles WHERE plate = ? SQL1_INPUTS = 1 OUTPUT = 1-STRING
einmal die fn_vehicleShopBuy geändert.
Spoiler anzeigen
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 {[localize "STR_Shop_Veh_DidntPick","fast","red"] spawn TLG_Client_fnc_msgHandle; 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 {[localize "STR_Shop_Veh_NoLicense","fast","red"] spawn TLG_Client_fnc_msgHandle;}; private _colorIndex = lbValue[2304,(lbCurSel 2304)]; if (_purchasePrice < 0) exitWith {closeDialog 0;}; //Bad price entry if (CASH < _purchasePrice) exitWith {[format [localize "STR_Shop_Veh_NotEnough",[_purchasePrice - CASH] call life_fnc_numberText],"fast","red"] spawn TLG_Client_fnc_msgHandle;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 {[localize "STR_Shop_Veh_Block","fast","red"] spawn TLG_Client_fnc_msgHandle; closeDialog 0;}; CASH = CASH - _purchasePrice; 0 call SOCK_fnc_updatePartial; [format [localize "STR_Shop_Veh_Bought",getText(configFile >> "CfgVehicles" >> _className >> "displayName"),[_purchasePrice] call life_fnc_numberText],"fast","blue"] spawn TLG_Client_fnc_msgHandle; //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,"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; }; }; _char1 = selectRandom ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]; _char2 = selectRandom ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]; _vehicle setPlateNumber format["TLG-%1%2-%3",_char1,_char2,round(random(1000000))]; _vehicle allowDamage true; private _plate = getPlateNumber _vehicle; private _vehicleOwner = name player; 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,_plate,_vehicleOwner] remoteExecCall ["HC_fnc_vehicleCreate",HC_Life]; } else { [(getPlayerUID player),playerSide,_vehicle,_colorIndex,_plate,_vehicleOwner] 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"; }; ["VehiclePurchased"] spawn mav_ttm_fnc_addExp; closeDialog 0; //Exit the menu. true;
die fn_garageLBChange
Spoiler anzeigen
Code
Alles anzeigen#include "..\..\script_macros.hpp" /* File: fn_garageLBChange.sqf Author: Bryan "Tonic" Boardwine Description: Can't be bothered to answer it.. Already deleted it by accident.. */ disableSerialization; params[ "_control", "_index" ]; //Fetch some information. private _dataArr = CONTROL_DATAI(_control,_index); _dataArr = call compile format ["%1",_dataArr]; private _className = (_dataArr select 0); private _classNameLife = _className; private _insurance = (_dataArr select 3); private _plate = (_dataArr select 2); if (!isClass (missionConfigFile >> "LifeCfgVehicles" >> _classNameLife)) then { _classNameLife = "Default"; //Use Default class if it doesn't exist diag_log format ["%1: LifeCfgVehicles class doesn't exist",_className]; }; private _vehicleColor = ((M_CONFIG(getArray,"LifeCfgVehicles",_classNameLife,"textures") select (_dataArr select 1)) select 0); if (isNil "_vehicleColor") then {_vehicleColor = "Default";}; private _vehicleInfo = [_className] call life_fnc_fetchVehInfo; private _trunkSpace = [_className] call life_fnc_vehicleWeightCfg; private _price = M_CONFIG(getNumber,"LifeCfgVehicles",_classNameLife,"price"); private _storageFee = LIFE_SETTINGS(getNumber,"vehicle_storage_fee_multiplier"); private "_sellMultiplier"; private "_insuranceMultiplier"; private "_purchasePrice"; switch (playerSide) do { case civilian: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_CIVILIAN"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_CIVILIAN"); _insuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_CIVILIAN"); }; case west: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_COP"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_COP"); _insuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_COP"); }; case independent: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_MEDIC"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_MEDIC"); _insuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_MEDIC"); }; case east: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_OPFOR"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_OPFOR"); _insuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_OPFOR"); }; }; private _retrievePrice = _purchasePrice * _storageFee; private _sellPrice = _purchasePrice * _sellMultiplier; private _insurancePrice = _purchasePrice * _insuranceMultiplier; if (!(_sellPrice isEqualType 0) || _sellPrice < 1) then {_sellPrice = 500;}; if (!(_retrievePrice isEqualType 0) || _retrievePrice < 1) then {_retrievePrice = 500;}; if (!(_insurancePrice isEqualType 0) || _insurancePrice < 1) then {_insurancePrice = 500;}; (CONTROL(2800,2803)) ctrlSetStructuredText parseText format[ (localize "STR_Shop_Veh_UI_RetrievalP")+ " <t color='#8cff9b'>$%1</t><br/> " +(localize "STR_Shop_Veh_UI_SellP")+ " <t color='#8cff9b'>$%2</t><br/> Preis der Versicherung: <t color='#8cff9b'>$%9</t><br/> Versicherungszustand: %10<br/> Kennzeichen: %12<br/> " +(localize "STR_Shop_Veh_UI_Color")+ " <t color='#8cff9b'>%8</t><br/> " +(localize "STR_Shop_Veh_UI_MaxSpeed")+ " <t color='#8cff9b'>%3 km/h</t><br/> " +(localize "STR_Shop_Veh_UI_HPower")+ " <t color='#8cff9b'>%4</t><br/> " +(localize "STR_Shop_Veh_UI_PSeats")+ " <t color='#8cff9b'>%5</t><br/> " +(localize "STR_Shop_Veh_UI_Trunk")+ " <t color='#8cff9b'>%6</t><br/> " +(localize "STR_Shop_Veh_UI_Fuel")+ " <t color='#8cff9b'>%7</t> ", [_retrievePrice] call life_fnc_numberText, [_sellPrice] call life_fnc_numberText, (_vehicleInfo select 8), (_vehicleInfo select 11), (_vehicleInfo select 10), if (_trunkSpace isEqualTo -1) then {"None"} else {_trunkSpace}, (_vehicleInfo select 12), _vehicleColor, [_insurancePrice] call life_fnc_numberText, if(_insurance == 1) then {"<t color='#8cff9b'>Versichert</t>"} else {"<t color='#FF0000'>nicht Versichert</t>"}, (_vehicleInfo select 9), _plate ]; if(_insurance == 1) then { ctrlShow [97480,False]; }else{ ctrlShow [97480,True]; }; ctrlShow [2803,true]; ctrlShow [2830,true];
die fn_impoundMenu
Spoiler anzeigen
Code
Alles anzeigen#include "..\..\script_macros.hpp" /* File: fn_impoundMenu.sqf Author: Bryan "Tonic" Boardwine Description: Not actually a impound menu, may act as confusion to some but that is what I wanted. The purpose of this menu is it is now called a 'Garage' where vehicles are stored (persistent ones). */ disableSerialization; private _vehicles = param [0,[],[[]]]; ctrlShow[2803,false]; ctrlShow[2830,false]; waitUntil {!isNull (findDisplay 2800)}; if (count _vehicles isEqualTo 0) exitWith { ctrlSetText[2811,localize "STR_Garage_NoVehicles"]; }; private _control = CONTROL(2800,2802); lbClear _control; { _vehicleInfo = [(_x select 2)] call life_fnc_fetchVehInfo; _control lbAdd (_vehicleInfo select 3); _tmp = [(_x select 2),(_x select 8),(_x select 7),(_x select 9)]; _tmp = str(_tmp); _control lbSetData [(lbSize _control)-1,_tmp]; _control lbSetPicture [(lbSize _control)-1,(_vehicleInfo select 2)]; _control lbSetValue [(lbSize _control)-1,(_x select 0)]; } forEach _vehicles; ctrlShow[2810,false]; ctrlShow[2811,false];
neue Datei im life_server fn_Plate
Spoiler anzeigen
die fn_vehicleCreate
Spoiler anzeigen
Code
Alles anzeigen/* File: fn_vehicleCreate.sqf Author: Bryan "Tonic" Boardwine Description: Answers the query request to create the vehicle in the database. */ params [ ["_uid", "", [""]], ["_side", sideUnknown, [west]], ["_vehicle", objNull, [objNull]], ["_color", -1, [0]], ["_plate", "", [""]], "_vehicleOwner" ]; //Error checks if (_uid isEqualTo "" || {_side isEqualTo sideUnknown} || {isNull _vehicle}) exitWith {}; if (!alive _vehicle) exitWith {}; private _className = typeOf _vehicle; private _type = switch (true) do { case (_vehicle isKindOf "Car"): {"Car"}; case (_vehicle isKindOf "Air"): {"Air"}; case (_vehicle isKindOf "Ship"): {"Ship"}; }; _side = switch (_side) do { case west:{"cop"}; case civilian: {"civ"}; case independent: {"med"}; case east: {"adac"}; default {"Error"}; }; [_uid, _side, _type, _classname, _color, _plate, _vehicleOwner] call DB_fnc_insertVehicle; _vehicle setVariable ["dbInfo", [_uid, _plate], true];
die fn_insertVehicle
Spoiler anzeigen
Code
Alles anzeigen/* File: fn_insertVehicle.sqf Author: Bryan "Tonic" Boardwine Description: Inserts the vehicle into the database */ params [ "_uid", "_side", "_type", "_className", ["_color",-1,[0]], ["_plate", "", [""]], "_vehicleOwner" ]; //Stop bad data being passed. if (_uid isEqualTo "" || {_side isEqualTo ""} || {_type isEqualTo ""} || {_className isEqualTo ""} || {_color isEqualTo -1} || {_plate isEqualTo ""}) exitWith {}; private _query = format ["insertVehicle:%1:%2:%3:%4:%5:%6:%7", _side, _className, _type, _uid, _color, _plate, _vehicleOwner]; [_query, 1] call DB_fnc_asyncCall;
-
Kann meins hochladen wenn ich alles zusammen bekomme.
-
erstmal unter gekommen
-
viel glück
Danke
-
Hallo liebes Forum.
Ich suche wieder einen Server, auf dem ich mich austoben kann.
Ich selber habe mittlerweile 3000 Arma Stunden und Scripte seit mehreren Jahren.
Auf Anfrage kann ich euch auch einige Scripte zusammenbauen. Aber auch nicht alles.
Da ich nicht weis was ich schreiben soll, fragt mich doch einfach was ihr wissen wollt.
Der Server dem ich beitreten würde, sollte schon mindestens 20-30 Spieler haben. Möchte mir keine Mühe auf dem Server machen um dann am Ende das Projekt leer zu sehen
Mir ist wichtig das dass ganze auf Mods aufgebaut ist.
Rechtschreibung und Satzfehler einfach ignorieren
-
-
Jo passt danke dir
Gar nicht dran gedacht.
-
Teste ich mal, danke!
-
Mahlzeit Leute!
Ich habe auf der Karte eine Kiste platziert, welche Items bekommt wenn man fertig mit dem Craften ist..
Code_backpack = backpack player; removeBackpack player; Schneiderei_Kiste addBackpackCargoGlobal [_backpack,1]; player addBackpack _newItem; hint "Deine altes Item ist in der Kiste hinter dir.(Für Rucksäcke derzeit nicht funktionsfähig!)";
Leider kann ich dort keine Rucksäcke raus nehmen.. vllt kennt jemand den Fehler und kann mir weiter helfen!
Spoiler anzeigen
Code
Alles anzeigenDie Kiste class Item6072 { dataType="Object"; class PositionInfo { position[]={7274.002,174.29866,13969.356}; angles[]={0,1.0180855,0}; }; side="Empty"; class Attributes { name="Schneiderei_Kiste"; disableSimulation=1; }; id=17560; type="Land_PlasticCase_01_small_gray_F"; atlOffset=0.47877502; class CustomAttributes { class Attribute0 { property="ammoBox"; expression="[_this,_value] call bis_fnc_initAmmoBox;"; class Value { class data { class type { type[]= { "STRING" }; }; value="[[[[],[]],[[],[]],[[],[]],[[],[]]],false]"; }; }; }; class Attribute1 { property="allowDamage"; expression="_this allowdamage _value;"; class Value { class data { class type { type[]= { "BOOL" }; }; value=0; }; }; }; nAttributes=2; }; };
-
Naja ist jetzt auch nicht wirklich sinnvoll sollte genau in dem Moment wo das Item auf den Boden Gedropt wurde das Cleanup Durchlaufen und die Objecte Löschen währe es halt auch Blöde
Joa stimmt schon. Aber auch schon überlegt das ganze einfach in eine Kiste nebendran zu adden
-
Hab mal die fn_craftAction bearbeitet.
Die Alten Rucksäcke und Kleidung fällt jetzt auf den Boden damit nichts im Konflikt mit den neuen Sachen steht.