Du kannst mal hier schauen, wenn du das so nicht hin bekommst: [TUTORIAL][Altis Life 4.0+] Cop/Medic Absperrungen per Menü
Ist zwar ohne Items, aber funktioniert auch super ![]()
Schön, dass du den Weg zu NodeZone.net gefunden hast! Aktuell bist du nicht angemeldet und kannst deshalb nur eingeschränkt auf unsere Community zugreifen. Um alle Funktionen freizuschalten, spannende Inhalte zu entdecken und dich aktiv einzubringen, registriere dich jetzt kostenlos oder melde dich mit deinem Account an.
Du kannst mal hier schauen, wenn du das so nicht hin bekommst: [TUTORIAL][Altis Life 4.0+] Cop/Medic Absperrungen per Menü
Ist zwar ohne Items, aber funktioniert auch super ![]()
Hab das grade nochmal gecheckt, in den angehängten Files stehts mit remoteExec drin. Wie gesagt überarbeite ich das Tut sowieso nochmal
11:32:03 Error in expression <[0],"life_fnc_update",true,false] spawn life_fnc_MP;
sleep 5;
[] spawn TON_fnc_c>
11:32:03 Error position: <life_fnc_MP;
sleep 5;
[] spawn TON_fnc_c>
11:32:03 Error Undefined variable in expression: life_fnc_mp
11:32:03 File life_server\Functions\DynMarket\fn_sleeper.sqf, line 15
11:32:09 Error in expression <py],"life_fnc_update",true,false] spawn life_fnc_MP;>
11:32:09 Error position: <life_fnc_MP;>
11:32:09 Error Undefined variable in expression: life_fnc_mp
11:32:09 File life_server\Functions\DynMarket\fn_calculatePrices.sqf, line 129
Alles anzeigen
Die Funktion life_fnc_MP gibt es in der 4.4r3 nicht mehr. Sicher dass du meine Files verwendest?
Das ist völlig egal, da das im Endeffekt das Gleiche ist.
wobei seit der 4.4 extra eine fn_playerSkin.sqf eingefürt wurde die meiner meinung nach Sehr Sehr gut Funktioniert
Die fn_playerSkins.sqf wird aber nur aufgerufen, wenn du im Kleidungsshop warst/nachdem die Loadout.sqf ausgeführt wurde. Deswegen gibt's da hin und wieder mal untexturierte Geschichten. Da ist die Lösung aus der init_survival vielleicht nicht schöner, aber dann ist der Rucksack zu 100% unsichtbar ![]()
wo zum Teufel gibt es die Version 4.5 ... ???
4.4r3 heißt "inoffiziell" schon 4.5. Alle entsprechenden Dateien und Label wurden schon angepasst, es läuft nur noch unter der Bezeichnng 4.4r3 da es noch nicht offiziell releast ist
fn_virt_buy.sqf
fn_virt_sell.sqf
fn_weaponShopBuySell.sqf
fn_vehicleShopBuy.sqf
fn_buyClothes.sqf
fn_chopShopSell.sqf
(alle Dateien im Ordner core\shops)
Einfach überall life_cash ersetzen mit life_atmcash und das Geld wird von der Bank abgezogen und drauf eingezahlt automatisch.
Hab nicht gesagt das ist Sehr gut von der [lexicon]Performance[/lexicon] ;p
Ne, das geht sogar. Musst die überlegen, die init_survival hat ein while (true) do mit sleep 1 drin, hier sind es 10
Tutorial wird im Laufe des heutigen Tages nochmal komplett überarbeitet!
Oh... Ehm.. Ja gut xD Meinte das wäre nur für die 4.4 gewesen... my bad lol
#MirFehltSchlafIchPosteAllesDoppeltHeute
Script: Automatische Nachrichten
Version: Alle Versionen
Schiwerigkeitsgrad: Einfach (Copy & Paste)
Funktionen:
~ anpassbare Nachrichten (per Hint) an den Spieler
~ optional mit Bild/Sound
Rechtliche Hinweise (Copyright):
Dieses Script stammt aus dem altisliferpg.com Forum und wurde dort von winter veröffentlicht. Alle Credits gehen an ihn, ich übersetze das Tutorial lediglich.
Zum ursprünglichen Tutorial: http://www.altisliferpg.com/index.php?/top…tomatic-message
Nun zum eigentlichen Teil dieses Posts...
Anleitung:
/*
File: autoMessages.sqf
Author: BenjaminSansNom
Edited by: blackfisch for Native-Network.net
Description:
Auto messages in game every X minutes
*/
// Add a line in this array to add a message
_messages = [
"Besucht doch unseren Server auch im Internet:<br/> <t color='#e32828' size='1.5'>www.mein-toller-server.de</t>",
"Kommt doch auf unseren TeamSpeak:<br/><t color='#e32828' size='1.5'>ts.mein-toller-server.de</t>",
"Für die dritte Nachricht fällt mir nichts mehr ein und ich habe keinen Bock auf Formatieren..."
];
_refreshTime = 5; // Time between each message (in minutes)
_i = 0;
for "_u" from 0 to 1 step 0 do {
_count = (count _messages) - 1;
_message = _messages select _i;
hint parseText format["<t color='#ffffff' size='2'>Mein toller</t><t color='#c45454' size='2'>Servername</t><br/><br/><img shadown='false' size='6' image='images\logo.paa'/><br/><br/>%1", _message];
uisleep (_refreshTime*60);
if (_i isEqualTo _count) then {
_i = 0;
} else {
_i = _i + 1;
};
};
Alles anzeigen
Fertig!
Das war's schon!
Sieht Ingame etwa so aus:
Für weitere Informationen zur Formatierung schau hier:
BI Community Wiki - Structured Text Operatoren: https://community.bistudio.com/wiki/Structured_Text#Operators
BI Community Wiki - format: https://community.bistudio.com/wiki/format
BI Community Wiki - hint: https://community.bistudio.com/wiki/hint
BI Community Wiki - image: https://community.bistudio.com/wiki/image
BI Community Wiki - parseText: https://community.bistudio.com/wiki/parseText
Ich wünsche euch Viel Spaß mit dem Script ![]()
Script: Schlangen entfernen
Version: Alle Versionen
Schiwerigkeitsgrad: Sehr einfach (Copy & Paste)
Funktionen:
~ löscht im 10 Sekunden Rhythmus alle Schlangen
Rechtliche Hinweise (Copyright):
Dieses Script stammt aus dem altisliferpg.com Forum und wurde dort von suffer4real veröffentlicht. Alle Credits gehen an ihn, ich übersetze das Tutorial lediglich.
Zum ursprünglichen Tutorial: http://www.altisliferpg.com/index.php?/top…emoving-snakes/
Nun zum eigentlichen Teil dieses Posts...
Anleitung:
Erstellt einen neuen Ordner scripts mit einer neuen Datei removeSnakes.sqf mit folgendem Inhalt:
/*
File: removeSnakes.sqf
Author: unknown, published by suffer4real
Modified by: blackfisch
Description:
Remove all snakes
*/
0 spawn
{
for "_i" from 0 to 1 step 0 do
{
{
if ((agent _x isKindOf "Snake_random_F")) then { deleteVehicle agent _x; };
} forEach agents;
sleep 10;
};
};
Alles anzeigen
Öffnet eure init.sqf und fügt unter [] execVM "briefing.sqf"; folgendes ein:
Fertig!
Das war's schon!
Ich wünsche euch Viel Spaß mit dem Script ![]()
Jetzt zum Teil in der @life_server und der @life_hc!
_query = format["SELECT id, side, classname, type, pid, alive, active, plate, color, inventory, gear, fuel, damage, blacklist FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid];
ersetzen mit
_query = format["SELECT id, side, classname, type, pid, alive, active, plate, color, inventory, gear, fuel, damage, blacklist, insure FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid];
Alles anzeigen
_vehicle setVariable ["dbInfo",[(_vInfo select 4),(_vInfo select 7)],true];
ersetzen mit
_vehicle setVariable ["dbInfo",[(_vInfo select 4),(_vInfo select 7),(_vInfo select 14)],true];
Alles anzeigen
[1,_spawntext] remoteExecCall ["life_fnc_broadcast",_unit];
serv_sv_use deleteAt _servIndex;
ersetzen mit
if ((_vInfo select 14) isEqualTo 1) then {
[1,"Votre véhicule est disponible et il est assuré!"] remoteExecCall ["life_fnc_broadcast",_unit];
}else{
[1,"Votre véhicule est disponible mais il n'est pas assuré!"] remoteExecCall ["life_fnc_broadcast",_unit];
};
serv_sv_use deleteAt _servIndex;
Alles anzeigen
[1,_spawntext] remoteExecCall ["life_fnc_broadcast",_unit];
serv_sv_use deleteAt _servIndex;
ersetzen mit
if ((_vInfo select 14) isEqualTo 1) then {
[1,"Votre véhicule est disponible et il est assuré!"] remoteExecCall ["life_fnc_broadcast",_unit];
}else{
[1,"Votre véhicule est disponible mais il n'est pas assuré!"] remoteExecCall ["life_fnc_broadcast",_unit];
};
serv_sv_use deleteAt _servIndex;
Alles anzeigen
/*
File: fn_insureCar.sqf
Author: Guit0x "Lintox"
Description:
Insure a vehicle from the garage.
*/
private["_vid","_pid","_query","_sql","_unit","_insurancePrice","_thread"];
_vid = [_this,0,-1,[0]] call BIS_fnc_param;
_pid = [_this,1,"",[""]] call BIS_fnc_param;
_unit = [_this,2,ObjNull,[ObjNull]] call BIS_fnc_param;
_insurancePrice = [_this,3,0,[0]] call BIS_fnc_param;
_query = format["UPDATE vehicles SET insure='1' WHERE pid='%1' AND id='%2'",_pid,_vid];
waitUntil {!DB_Async_Active};
_thread = [_query,1] call DB_fnc_asyncCall;
Alles anzeigen
/*
File: fn_insureCar.sqf
Author: Guit0x "Lintox"
Description:
Insure a vehicle from the garage.
*/
private["_vid","_pid","_query","_sql","_unit","_insurancePrice","_thread"];
_vid = [_this,0,-1,[0]] call BIS_fnc_param;
_pid = [_this,1,"",[""]] call BIS_fnc_param;
_unit = [_this,2,ObjNull,[ObjNull]] call BIS_fnc_param;
_insurancePrice = [_this,3,0,[0]] call BIS_fnc_param;
_query = format["UPDATE vehicles SET insure=‘1' WHERE pid='%1' AND id='%2'",_pid,_vid];
waitUntil {!DB_Async_Active};
_thread = [_query,1] call HC_fnc_asyncCall;
Alles anzeigen
/*%FSM<COMPILE "D:\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, Server-Side Cleanup">*/
/*%FSM<HEAD>*/
/*
item0[] = {"init",0,250,-65.004578,-391.651611,24.995417,-341.651672,0.000000,"init"};
item1[] = {"true",8,218,-62.976639,-315.185364,27.023363,-265.185364,0.000000,"true"};
item2[] = {"Share__Work_load",2,250,-64.183350,-224.681931,25.816656,-174.681931,0.000000,"Share " \n "Work-load"};
item3[] = {"true",8,218,-54.709698,75.189262,35.290302,125.189262,0.000000,"true"};
item4[] = {"Time_Check",4,218,-219.425827,-133.310532,-129.425964,-83.310455,0.000000,"Time Check"};
item5[] = {"Delete_Dead_Cars",2,4346,-220.186951,-29.248400,-130.187195,20.751413,0.000000,"Delete" \n "Dead" \n "Cars"};
item6[] = {"",7,210,-312.538239,95.295059,-304.538239,103.295059,0.000000,""};
item7[] = {"",7,210,-311.750000,-203.033707,-303.750000,-195.033707,0.000000,""};
link0[] = {0,1};
link1[] = {1,2};
link2[] = {2,4};
link3[] = {3,6};
link4[] = {4,5};
link5[] = {5,3};
link6[] = {6,7};
link7[] = {7,2};
globals[] = {0.000000,0,0,0,0,640,480,1,46,6316128,1,-629.444153,611.207214,293.309357,-434.050568,1243,885,1};
window[] = {2,-1,-1,-1,-1,985,225,1868,225,3,1261};
*//*%FSM</HEAD>*/
class FSM
{
fsmName = "Server-Side Cleanup";
class States
{
/*%FSM<STATE "init">*/
class init
{
name = "init";
init = /*%FSM<STATEINIT""">*/"private[""_impound"",""_cars"",""_objs"",""_totCars"",""_thread""];" \n
"_impound = time;" \n
"_cars = time;" \n
"_objs = time;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "true">*/
class true
{
priority = 0.000000;
to="Share__Work_load";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Share__Work_load">*/
class Share__Work_load
{
name = "Share__Work_load";
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "Time_Check">*/
class Time_Check
{
priority = 0.000000;
to="Delete_Dead_Cars";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"((time - _cars) > (3 * 60))"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Delete_Dead_Cars">*/
class Delete_Dead_Cars
{
name = "Delete_Dead_Cars";
init = /*%FSM<STATEINIT""">*/"{" \n
" if(!alive _x) then {" \n
"_dbInfo = _x getVariable[""dbInfo"",[]];" \n
"if(count _dbInfo > 0) then {" \n
"_uid = _dbInfo select 0;" \n
"_plate = _dbInfo select 1;" \n
"_insureSystem = _dbInfo select 2;" \n
" diag_log "" destroy vehicule !"";" \n
"diag_log format[""insureSystem = %1 "", _insureSystem];" \n
"if(_insureSystem == 1) then " \n
" { " \n
" diag_log "" Insured !"";" \n
" diag_log format[""insureSystem = %1 "", _insureSystem];" \n
" _query_0 = format[""UPDATE vehicles SET alive='1', insure='0', active='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate]; " \n
" _query_0 spawn " \n
" {" \n
" waitUntil {!DB_Async_Active};" \n
" _thread_0 = [_this,1] call DB_fnc_asyncCall;" \n
" };" \n
" } " \n
" else " \n
" { " \n
" diag_log "" Not insured !"";" \n
" diag_log format[""insureSystem = %1 "", _insureSystem];" \n
" _query = format[""UPDATE vehicles SET alive='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate]; " \n
" _query spawn " \n
" {" \n
" waitUntil {!DB_Async_Active};" \n
" _thread = [_this,1] call DB_fnc_asyncCall;" \n
" }; " \n
" }; " \n
" };" \n
"if(!isNil ""_x"" && {!isNull _x}) then {" \n
"deleteVehicle _x;" \n
"};" \n
" };" \n
"} foreach allMissionObjects ""LandVehicle"";" \n
"" \n
"{" \n
" if(!alive _x) then {" \n
"_dbInfo = _x getVariable[""dbInfo"",[]];" \n
"if(count _dbInfo > 0) then {" \n
"_uid = _dbInfo select 0;" \n
"_plate = _dbInfo select 1;" \n
"_insureSystem = _dbInfo select 2;" \n
" diag_log "" destroy vehicule !"";" \n
"diag_log format[""insureSystem = %1 "", _insureSystem];" \n
"if(_insureSystem == 1) then " \n
" { " \n
" diag_log "" Insured !"";" \n
" diag_log format[""insureSystem = %1 "", _insureSystem];" \n
" _query_0 = format[""UPDATE vehicles SET alive='1', insure='0', active='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate]; " \n
" _query_0 spawn " \n
" {" \n
" waitUntil {!DB_Async_Active};" \n
" _thread_0 = [_this,1] call DB_fnc_asyncCall;" \n
" };" \n
" } " \n
" else " \n
" { " \n
" diag_log "" Not Insured !"";" \n
" diag_log format[""insureSystem = %1 "", _insureSystem];" \n
" _query = format[""UPDATE vehicles SET alive='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate]; " \n
" _query spawn " \n
" {" \n
" waitUntil {!DB_Async_Active};" \n
" _thread = [_this,1] call DB_fnc_asyncCall;" \n
" }; " \n
" }; " \n
" };" \n
"if(!isNil ""_x"" && {!isNull _x}) then {" \n
"deleteVehicle _x;" \n
"};" \n
" };" \n
"} foreach allMissionObjects ""Air"";" \n
"" \n
"_cars = time;" \n
"" \n
"//Group cleanup." \n
"{" \n
" if(count units _x == 0 && local _x) then {" \n
"deleteGroup _x;" \n
" };" \n
"} foreach allGroups;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "true">*/
class true
{
priority = 0.000000;
to="Share__Work_load";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
};
initState="init";
finalStates[] =
{
};
};
/*%FSM</COMPILE>*/
Alles anzeigen
/*%FSM<COMPILE "D:\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, Server-Side Cleanup">*/
/*%FSM<HEAD>*/
/*
item0[] = {"init",0,250,-65.004578,-391.651611,24.995417,-341.651672,0.000000,"init"};
item1[] = {"true",8,218,-62.976639,-315.185364,27.023363,-265.185364,0.000000,"true"};
item2[] = {"Share__Work_load",2,250,-64.183350,-224.681931,25.816656,-174.681931,0.000000,"Share " \n "Work-load"};
item3[] = {"true",8,218,-54.709698,75.189262,35.290302,125.189262,0.000000,"true"};
item4[] = {"Time_Check",4,218,-219.425827,-133.310532,-129.425964,-83.310455,0.000000,"Time Check"};
item5[] = {"Delete_Dead_Cars",2,4346,-220.186951,-29.248400,-130.187195,20.751413,0.000000,"Delete" \n "Dead" \n "Cars"};
item6[] = {"",7,210,-312.538239,95.295059,-304.538239,103.295059,0.000000,""};
item7[] = {"",7,210,-311.750000,-203.033707,-303.750000,-195.033707,0.000000,""};
link0[] = {0,1};
link1[] = {1,2};
link2[] = {2,4};
link3[] = {3,6};
link4[] = {4,5};
link5[] = {5,3};
link6[] = {6,7};
link7[] = {7,2};
globals[] = {0.000000,0,0,0,0,640,480,1,46,6316128,1,-629.444153,611.207214,293.309357,-434.050568,1243,885,1};
window[] = {2,-1,-1,-1,-1,985,225,1868,225,3,1261};
*//*%FSM</HEAD>*/
class FSM
{
fsmName = "Server-Side Cleanup";
class States
{
/*%FSM<STATE "init">*/
class init
{
name = "init";
init = /*%FSM<STATEINIT""">*/"private[""_impound"",""_cars"",""_objs"",""_totCars"",""_thread""];" \n
"_impound = time;" \n
"_cars = time;" \n
"_objs = time;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "true">*/
class true
{
priority = 0.000000;
to="Share__Work_load";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Share__Work_load">*/
class Share__Work_load
{
name = "Share__Work_load";
init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "Time_Check">*/
class Time_Check
{
priority = 0.000000;
to="Delete_Dead_Cars";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"((time - _cars) > (3 * 60))"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "Delete_Dead_Cars">*/
class Delete_Dead_Cars
{
name = "Delete_Dead_Cars";
init = /*%FSM<STATEINIT""">*/"{" \n
" if(!alive _x) then {" \n
"_dbInfo = _x getVariable[""dbInfo"",[]];" \n
"if(count _dbInfo > 0) then {" \n
"_uid = _dbInfo select 0;" \n
"_plate = _dbInfo select 1;" \n
"_insureSystem = _dbInfo select 2;" \n
" diag_log "" destroy vehicule !"";" \n
"diag_log format[""insureSystem = %1 "", _insureSystem];" \n
"if(_insureSystem == 1) then " \n
" { " \n
" diag_log "" Insured !"";" \n
" diag_log format[""insureSystem = %1 "", _insureSystem];" \n
" _query_0 = format[""UPDATE vehicles SET alive='1', insure='0', active='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate]; " \n
" _query_0 spawn " \n
" {" \n
" _thread_0 = [_this,1] call HC_fnc_asyncCall;" \n
" };" \n
" } " \n
" else " \n
" { " \n
" diag_log "" Not Insured !"";" \n
" diag_log format[""insureSystem = %1 "", _insureSystem];" \n
" _query = format[""UPDATE vehicles SET alive='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate]; " \n
" _query spawn " \n
" {" \n
" _thread = [_this,1] call HC_fnc_asyncCall;" \n
" }; " \n
" }; " \n
" };" \n
"if(!isNil ""_x"" && {!isNull _x}) then {" \n
"deleteVehicle _x;" \n
"};" \n
" };" \n
"} foreach allMissionObjects ""LandVehicle"";" \n
"" \n
"{" \n
" if(!alive _x) then {" \n
"_dbInfo = _x getVariable[""dbInfo"",[]];" \n
"if(count _dbInfo > 0) then {" \n
"_uid = _dbInfo select 0;" \n
"_plate = _dbInfo select 1;" \n
"_insureSystem = _dbInfo select 2;" \n
" diag_log "" destroy vehicule !"";" \n
"diag_log format[""insureSystem = %1 "", _insureSystem];" \n
"if(_insureSystem == 1) then " \n
" { " \n
" diag_log "" Insured !"";" \n
" diag_log format[""insureSystem = %1 "", _insureSystem];" \n
" _query_0 = format[""UPDATE vehicles SET alive='1', insure='0', active='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate]; " \n
" _query_0 spawn " \n
" {" \n
" _thread_0 = [_this,1] call HC_fnc_asyncCall;" \n
" };" \n
" } " \n
" else " \n
" { " \n
" diag_log "" Not Insured !"";" \n
" diag_log format[""insureSystem = %1 "", _insureSystem];" \n
" _query = format[""UPDATE vehicles SET alive='0' WHERE pid='%1' AND plate='%2'"",_uid,_plate]; " \n
" _query spawn " \n
" {" \n
" _thread = [_this,1] call HC_fnc_asyncCall;" \n
" }; " \n
" }; " \n
" };" \n
"if(!isNil ""_x"" && {!isNull _x}) then {" \n
"deleteVehicle _x;" \n
"};" \n
" };" \n
"} foreach allMissionObjects ""Air"";" \n
"" \n
"_cars = time;" \n
"" \n
"//Group cleanup." \n
"{" \n
" if(count units _x == 0 && local _x) then {" \n
"deleteGroup _x;" \n
" };" \n
"} foreach allGroups;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "true">*/
class true
{
priority = 0.000000;
to="Share__Work_load";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
};
initState="init";
finalStates[] =
{
};
};
/*%FSM</COMPILE>*/
Alles anzeigen
_query = format["SELECT id, side, classname, type, pid, alive, active, plate, color FROM vehicles WHERE pid='%1' AND alive=‘1' AND active=‘0' AND side='%2' AND type='%3'",_pid,_side,_type];
ersetzen mit
_query = format["SELECT id, side, classname, type, pid, alive, active, plate, color, insure FROM vehicles WHERE pid='%1' AND alive='1' AND active='0' AND side='%2' AND type='%3'",_pid,_side,_type];
Alles anzeigen
Fertig!
Das war's schon!
Sieht Ingame etwa so aus:
Ich wünsche euch Viel Spaß mit dem Script
![]()
Script: Fahrzeug Versicherungen
Version: Altis Life 4.4r3/4.5
Schiwerigkeitsgrad: Medium
Funktionen:
~ Fahrzeuge versichern (bei Zerstörung wieder in der Garage)
Rechtliche Hinweise (Copyright):
Dieses Script stammt aus dem altisliferpg.com Forum und wurde dort von Shakir Darwish veröffentlicht. Alle Credits gehen an ihn, ich übersetze das Tutorial lediglich.
Zum ursprünglichen Tutorial: http://www.altisliferpg.com/index.php?/top…insurance-44r3/
Nun zum eigentlichen Teil dieses Posts...
Anleitung:
#include "..\..\script_macros.hpp"
/*
File: fn_insureCar.sqf
Author: Guit0x "Lintox"
Description:
Insure a vehicle from the garage.
*/
private["_vehicle","_vehicleLife","_vid","_pid","_unit","_multiplier","_price","_purchasePrice","_insurancePrice"];
disableSerialization;
if ((lbCurSel 2802) isEqualTo -1) exitWith {hint localize "STR_Global_NoSelection"};
_vehicle = lbData[2802,(lbCurSel 2802)];
_vehicle = (call compile format["%1",_vehicle]) select 0;
_vehicleLife = _vehicle;
_vid = lbValue[2802,(lbCurSel 2802)];
_pid = getPlayerUID player;
_unit = player;
if(isNil "_vehicle") exitWith {hint localize "STR_Garage_Selection_Error"};
if ((time - life_action_delay) < 1.5) exitWith {hint localize "STR_NOTF_ActionDelay";};
if (!isClass (missionConfigFile >> "LifeCfgVehicles" >> _vehicleLife)) then {
_vehicleLife = "Default"; //Use Default class if it doesn't exist
diag_log format["%1: LifeCfgVehicles class doesn't exist",_vehicle];
};
_price = M_CONFIG(getNumber,"LifeCfgVehicles",_vehicleLife,"price");
switch (playerSide) do {
case civilian: {
_multiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_CIVILIAN");
_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_CIVILIAN");
};
case west: {
_multiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_COP");
_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_COP");
};
case independent: {
_multiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_MEDIC");
_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_MEDIC");
};
case east: {
_multiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_OPFOR");
_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_OPFOR");
};
};
_insurancePrice = _purchasePrice * _multiplier;
if(!(_insurancePrice isEqualType 0) || _insurancePrice < 1) then {_insurancePrice = 500};
if(BANK < _insurancePrice) exitWith {hint format[(localize "STR_GNOTF_NotEnoughMoney"),[_insurancePrice] call life_fnc_numberText];};
if (life_HC_isActive) then {
[_vid,_pid,_insurancePrice,player,life_garage_type] remoteExecCall ["HC_fnc_insureCar",HC_Life];
} else {
[_vid,_pid,_insurancePrice,player,life_garage_type] remoteExecCall ["TON_fnc_insureCar",RSERV];
};
hint localize "STR_InsuranceApply";
BANK = BANK - _insurancePrice;
life_action_delay = time;
closeDialog 0;
Alles anzeigen
private["_control","_index","_className","_classNameLife","_dataArr","_vehicleColor","_vehicleInfo","_trunkSpace","_sellPrice","_retrievePrice","_sellMultiplier","_price","_storageFee","_purchasePrice"];
ersetzen mit
private["_control","_index","_className","_classNameLife","_dataArr","_vehicleColor","_vehicleInfo","_trunkSpace","_sellPrice","_retrievePrice","_sellMultiplier","_insurance","_insuranceMultiplier","_price","_storageFee","_purchasePrice","_insurancePrice"];
Alles anzeigen
Außerdem:
Und:
switch (playerSide) do {
case civilian: {
_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_CIVILIAN");
_sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_CIVILIAN");
};
case west: {
_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_COP");
_sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_COP");
};
case independent: {
_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_MEDIC");
_sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_MEDIC");
};
case east: {
_purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_OPFOR");
_sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_OPFOR");
};
};
ersetzen mit
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");
};
};
Alles anzeigen
Sowie:
unter
_sellPrice = _purchasePrice * _sellMultiplier;
hinzufügen:
_insurancePrice = _purchasePrice * _insuranceMultiplier;
Alles anzeigen
Weiterhin:
unter
if (!(_retrievePrice isEqualType 0) || _retrievePrice < 1) then {_retrievePrice = 500;};
hinzufügen:
if (!(_insurancePrice isEqualType 0) || _insurancePrice < 1) then {_insurancePrice = 500;};
Alles anzeigen
Und:
(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/>
" +(localize "STR_Shop_Veh_UI_Color")+ " %8<br/>
" +(localize "STR_Shop_Veh_UI_MaxSpeed")+ " %3 km/h<br/>
" +(localize "STR_Shop_Veh_UI_HPower")+ " %4<br/>
" +(localize "STR_Shop_Veh_UI_PSeats")+ " %5<br/>
" +(localize "STR_Shop_Veh_UI_Trunk")+ " %6<br/>
" +(localize "STR_Shop_Veh_UI_Fuel")+ " %7
",
ersetzen durch:
(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/>
Prix de l'assurance: <t color='#8cff9b'>$%9</t><br/>
Etat de l'assurance: %10<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>
",
Alles anzeigen
Weiter gehts:
(_vehicleInfo select 12),
_vehicleColor
];
ersetzen durch:
(_vehicleInfo select 12),
_vehicleColor,
[_insurancePrice] call life_fnc_numberText,
if(_insurance == 1) then {"<t color='#8cff9b'>Assuré</t>"} else {"<t color='#FF0000'>Pas d'assurance</t>"},
(_vehicleInfo select 9)
];
if(_insurance == 1) then {
ctrlShow [97480,False];
}else{
ctrlShow [97480,True];
};
Alles anzeigen
Fertige Datei zum Vergleich: fn_garageLBChange.sqf
Und unter F(HC_fnc_wantedRemove,HC):
<Key ID="STR_InsuranceApply">
<Original>You just insure your vehicle you are now protected against explosions!</Original>
<Czech>Právě jste pojistit své vozidlo se nyní chráněna proti výbuchu!</Czech>
<Spanish>Usted acaba de asegurar su vehículo que ahora está protegido contra explosiones!</Spanish>
<Italian>Basta assicurare il vostro veicolo si sono ora protetti contro le esplosioni!</Italian>
<Polish>Po prostu ubezpieczyć swój pojazd jesteś teraz zabezpieczona przed wybuchem!</Polish>
<Russian>Вы просто застраховать свой автомобиль, вы теперь защищены от взрывов!</Russian>
<French>Vous venez d'assurer votre véhicule vous êtes maintenant protégé contre les explosions!</French>
<Portuguese>Você só segurar o seu veículo que você está actualmente protegida contra explosões!</Portuguese>
<German>Sie versichern nur Ihr Fahrzeug, das Sie jetzt vor Explosionen geschützt sind!</German>
</Key>
Alles anzeigen
/* Vehicle Insurance Prices */
vehicle_insurance_multiplier_CIVILIAN = .25; //Civilian Vehicle Insurance Price = Vehicle Buy Price * multiplier
vehicle_insurance_multiplier_COP = .1; //Cop Vehicle Insurance Price = Vehicle Buy Price * multiplier
vehicle_insurance_multiplier_MEDIC = .1; //Medic Vehicle Insurance Price = Vehicle Buy Price * multiplier
vehicle_insurance_multiplier_OPFOR = -1; // -- NOT IN USE -- Simply left in for east support.
Das war es schon an der Mission!
Echt? Okay, dann ich nix gesagt ![]()
Port = HIER DEN SERVER PORT
Korrigiere, muss der BattlEye Port sein, wie in der beserver.cfg definiert
Irgendwie stimmt bei dir was nicht... 4.4r3er Config_Vehicles und 4.0er Shop Dateien... Was istn da kaputt? xD Versuch mal die
#include "..\..\script_macros.hpp"
/*
File: fn_vehicleShopMenu.sqf
Author: Bryan "Tonic" Boardwine
Description:
Blah
*/
private["_shop","_sideCheck","_spawnPoints","_shopFlag","_shopTitle","_disableBuy"];
(SEL(_this,3)) params [
["_shop","",[""]],
["_sideCheck",sideUnknown,[civilian]],
["_spawnPoints","",["",[]]],
["_shopFlag","",[""]],
["_shopTitle","",[""]],
["_disableBuy",false,[true]]
];
disableSerialization;
//Long boring series of checks
if(dialog) exitWith {};
if(_shop == "") exitWith {};
if(_sideCheck != sideUnknown && {playerSide != _sideCheck}) exitWith {hint localize "STR_Shop_Veh_NotAllowed"};
if(!createDialog "Life_Vehicle_Shop_v2_3D") exitWith {};
life_veh_shop = [_shop,_spawnpoints,_shopFlag,_disableBuy]; //Store it so so other parts of the system can access it.
ctrlSetText [2301,_shopTitle];
if(_disableBuy) then {
//Disable the buy button.
ctrlEnable [2309,false];
};
//Fetch the shop config.
_vehicleList = M_CONFIG(getArray,"CarShops",_shop,"vehicles");
_control = CONTROL(2300,2302);
lbClear _control; //Flush the list.
ctrlShow [2330,false];
ctrlShow [2304,false];
//Loop through
{
_className = _x select 0;
_levelAssert = _x select 1;
_levelName = _levelAssert select 0;
_levelType = _levelAssert select 1;
_levelValue = _levelAssert select 2;
_showall = true;
if (!(_levelValue isEqualTo -1)) then {
_level = missionNamespace getVariable _levelName;
if (_level isEqualType {}) then {_level = FETCH_CONST(_level);};
_showall = switch (_levelType) do {
case "SCALAR": {_level >= _levelValue};
case "BOOL": {_level};
case "EQUAL": {_level isEqualTo _levelValue};
default {false};
};
};
if (_showall) then {
_vehicleInfo = [_className] call life_fnc_fetchVehInfo;
_control lbAdd (_vehicleInfo select 3);
_control lbSetPicture [(lbSize _control)-1,(_vehicleInfo select 2)];
_control lbSetData [(lbSize _control)-1,_className];
_control lbSetValue [(lbSize _control)-1,_ForEachIndex];
};
} forEach _vehicleList;
[] call life_fnc_vehicleShopInit3DPreview;
((findDisplay 2300) displayCtrl 2302) lbSetCurSel 0;
Alles anzeigen
Bitte deine Config_Vehicles.hpp da scheint ein Array falsch zu sein :p
Korrigierte init im Anhang
core\init.sqf Da ist ein Fehler
core\shops\fn_vehicleShopLBChange.sqf ebenfalls
core\shops\fn_vehicleShopMenu.sqf Auch
beides schicken pls