Keiner, eine idee woran der fehler hier liegen könnte ?
@blackfisch @Shinji @nox @Motombo
Evntl kann sich das von euch mal jemand anschauen, weil eine Datei steht in der RPT nicht drin.. also in was für einer Datei der Fehler sein soll...
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.
Keiner, eine idee woran der fehler hier liegen könnte ?
@blackfisch @Shinji @nox @Motombo
Evntl kann sich das von euch mal jemand anschauen, weil eine Datei steht in der RPT nicht drin.. also in was für einer Datei der Fehler sein soll...
Hab eben nachgeschaut,
der fehler ist glaube ich in der "life_server\FSM\cleanup.fsm"
/*%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 "" Versichert !"";" \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] spawn DB_fnc_asyncCall;" \n
" };" \n
" } " \n
" else " \n
" { " \n
" diag_log "" Nicht Versichert !"";" \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] spawn 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 "" Versichert !"";" \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] spawn DB_fnc_asyncCall;" \n
" };" \n
" } " \n
" else " \n
" { " \n
" diag_log "" Nicht Versichert !"";" \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] spawn 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
Jetzt spamt er mir das hier in die RPT:
20:46:07 "insureSystem = [[],0] "
20:46:07 Error in expression < %1 ", _insureSystem];
if(_insureSystem == 1) then
{
diag_log " Versichert !";>
20:46:07 Error position: <== 1) then
{
diag_log " Versichert !";>
20:46:07 Error Generic error in expression
20:46:07 Error in expression < %1 ", _insureSystem];
if(_insureSystem == 1) then
{
diag_log " Versichert !";>
20:46:07 Error position: <== 1) then
{
diag_log " Versichert !";>
20:46:07 Error Generic error in expression
20:46:07 " destroy vehicule !"
20:46:07 "insureSystem = [[],0] "
20:46:07 Error in expression < %1 ", _insureSystem];
if(_insureSystem == 1) then
{
diag_log " Versichert !";>
20:46:07 Error position: <== 1) then
{
diag_log " Versichert !";>
20:46:07 Error Generic error in expression
20:46:07 Error in expression < %1 ", _insureSystem];
if(_insureSystem == 1) then
{
diag_log " Versichert !";>
20:46:07 Error position: <== 1) then
{
diag_log " Versichert !";>
20:46:07 Error Generic error in expression
20:46:07 " destroy vehicule !"
20:46:07 "insureSystem = [[],0] "
20:46:07 Error in expression < %1 ", _insureSystem];
if(_insureSystem == 1) then
{
diag_log " Versichert !";>
20:46:07 Error position: <== 1) then
{
diag_log " Versichert !";>
20:46:07 Error Generic error in expression
20:46:07 Error in expression < %1 ", _insureSystem];
if(_insureSystem == 1) then
{
diag_log " Versichert !";>
20:46:07 Error position: <== 1) then
{
diag_log " Versichert !";>
20:46:07 Error Generic error in expression
20:46:07 " destroy vehicule !"
20:46:07 "insureSystem = [[],0] "
20:46:07 Error in expression < %1 ", _insureSystem];
if(_insureSystem == 1) then
{
Alles anzeigen
habe eben geschaut, aber finde den fehler wieder nicht...
Ich Verzweifel xD
MfG
Wäre nice, wenn mir dabei nochmals jemand helfen könnte
Klasse Matthias
Back to the roots... hats geklappt?
Jop hat geklappt Super !
Danke dir @blackfisch
MfG
Zeile 137:
EQUAAL schreibt man nur mit einem A
Bringt mir immer noch diesen Fehler:
19:49:33 Error in expression <life_fnc_vehicleAnimate",_unit];
};
if( == 1) then {
[1,"Ihr Fahrzeug ist bereit>
19:49:33 Error position: <== 1) then {
[1,"Ihr Fahrzeug ist bereit>
19:49:33 Error Invalid number in expression
19:49:33 File life_server\Functions\Systems\fn_spawnVehicle.sqf, line 137
19:49:33 Error in expression <life_fnc_vehicleAnimate",_unit];
};
if( == 1) then {
[1,"Ihr Fahrzeug ist bereit>
19:49:33 Error position: <== 1) then {
[1,"Ihr Fahrzeug ist bereit>
19:49:33 Error Invalid number in expression
19:49:33 File life_server\Functions\Systems\fn_spawnVehicle.sqf, line 137
Alles anzeigen
Habe es nun so drin stehen:
#include "\life_server\script_macros.hpp"
/*
File: fn_spawnVehicle.sqf
Author: Bryan "Tonic" Boardwine
Description:
Sends the query request to the database, if an array is returned then it creates
the vehicle if it's not in use or dead.
*/
private["_vid","_sp","_pid","_query","_sql","_vehicle","_nearVehicles","_name","_side","_tickTime","_dir","_servIndex"];
_vid = [_this,0,-1,[0]] call BIS_fnc_param;
_pid = [_this,1,"",[""]] call BIS_fnc_param;
_sp = [_this,2,[],[[],""]] call BIS_fnc_param;
_unit = [_this,3,ObjNull,[ObjNull]] call BIS_fnc_param;
_price = [_this,4,0,[0]] call BIS_fnc_param;
_dir = [_this,5,0,[0]] call BIS_fnc_param;
_unit_return = _unit;
_name = name _unit;
_side = side _unit;
_unit = owner _unit;
if(EQUAL(_vid,-1) OR EQUAL(_pid,"")) exitWith {};
if(_vid in serv_sv_use) exitWith {};
serv_sv_use pushBack _vid;
_servIndex = serv_sv_use find _vid;
_query = format["SELECT id, side, classname, type, pid, alive, active, plate, color, inventory, gear, fuel, insure FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid];
_tickTime = diag_tickTime;
_queryResult = [_query,2] call DB_fnc_asyncCall;
if(EXTDB_SETTING(getNumber,"DebugMode") == 1) then {
diag_log "------------- Client 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 "------------------------------------------------";
};
if(EQUAL(typeName _queryResult,typeName "")) exitWith {};
_vInfo = _queryResult;
if(isNil "_vInfo") exitWith {serv_sv_use deleteAt _servIndex;};
if(EQUAL(count _vInfo,0)) exitWith {serv_sv_use deleteAt _servIndex;};
if(EQUAL(SEL(_vInfo,5),0)) exitWith {
serv_sv_use deleteAt _servIndex;
[1,format[(localize "STR_Garage_SQLError_Destroyed"),_vInfo select 2]] remoteExecCall ["life_fnc_broadcast",_unit];
};
if(EQUAL(SEL(_vInfo,6),1)) exitWith {
serv_sv_use deleteAt _servIndex;
[1,format[(localize "STR_Garage_SQLError_Active"),_vInfo select 2]] remoteExecCall ["life_fnc_broadcast",_unit];
};
if!(EQUAL(typeName _sp,typeName "")) then {
_nearVehicles = nearestObjects[_sp,["Car","Air","Ship"],10];
} else {
_nearVehicles = [];
};
if(count _nearVehicles > 0) exitWith {
serv_sv_use deleteAt _servIndex;
[_price,_unit_return] remoteExecCall ["life_fnc_garageRefund",_unit];
[1,(localize "STR_Garage_SpawnPointError")] remoteExecCall ["life_fnc_broadcast",_unit];
};
_query = format["UPDATE vehicles SET active='1' WHERE pid='%1' AND id='%2'",_pid,_vid];
_trunk = [_vInfo select 9] call DB_fnc_mresToArray;
_gear = [_vInfo select 10] call DB_fnc_mresToArray;
[_query,false] spawn DB_fnc_asyncCall;
if(typeName _sp == "STRING") then {
_vehicle = createVehicle[(_vInfo select 2),[0,0,999],[],0,"NONE"];
waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
_vehicle allowDamage false;
_hs = nearestObjects[getMarkerPos _sp,["Land_Hospital_side2_F"],50] select 0;
_vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
sleep 0.6;
} else {
_vehicle = createVehicle [(_vInfo select 2),_sp,[],0,"NONE"];
waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
_vehicle allowDamage false;
_vehicle setPos _sp;
_vehicle setVectorUp (surfaceNormal _sp);
_vehicle setDir _dir;
};
_vehicle setFuel (_vInfo select 11);
_vehicle allowDamage true;
//Send keys over the network.
[_vehicle] remoteExecCall ["life_fnc_addVehicle2Chain",_unit];
[_pid,_side,_vehicle,1] call TON_fnc_keyManagement;
_vehicle lock 2;
//Reskin the vehicle
[_vehicle,_vInfo select 8] remoteExecCall ["life_fnc_colorVehicle",_unit];
_vehicle setVariable["vehicle_info_owners",[[_pid,_name]],true];
_vehicle setVariable["dbInfo",[(_vInfo select 4),_vInfo select 7,_vInfo select 9]];
_vehicle setVariable["Trunk",_trunk,true];
_vehicle disableTIEquipment true; //No Thermals.. They're cheap but addictive.
[_vehicle] call life_fnc_clearVehicleAmmo;
if (count _gear > 0) then {
_items = _gear select 0;
_mags = _gear select 1;
_weapons = _gear select 2;
_backpacks = _gear select 3;
for "_i" from 0 to ((count (_items select 0)) - 1) do {
_vehicle addItemCargoGlobal [((_items select 0) select _i), ((_items select 1) select _i)];
};
for "_i" from 0 to ((count (_mags select 0)) - 1) do {
_vehicle addMagazineCargoGlobal [((_mags select 0) select _i), ((_mags select 1) select _i)];
};
for "_i" from 0 to ((count (_weapons select 0)) - 1) do {
_vehicle addWeaponCargoGlobal [((_weapons select 0) select _i), ((_weapons select 1) select _i)];
};
for "_i" from 0 to ((count (_backpacks select 0)) - 1) do {
_vehicle addBackpackCargoGlobal [((_backpacks select 0) select _i), ((_backpacks select 1) select _i)];
};
};
//Sets of animations
if(EQUAL(SEL(_vInfo,1),"civ") && EQUAL(SEL(_vInfo,2),"B_Heli_Light_01_F") && !(EQUAL(SEL(_vInfo,8),13))) then {
[_vehicle,"civ_littlebird",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
if(EQUAL(SEL(_vInfo,1),"cop") && (SEL(_vInfo,2)) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","C_Hatchback_01_sport_F","B_Heli_Light_01_F","B_Heli_Transport_01_F"]) then {
[_vehicle,"cop_offroad",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
if(EQUAL(SEL(_vInfo,1),"med") && EQUAL(SEL(_vInfo,2),"C_Offroad_01_F")) then {
[_vehicle,"med_offroad",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
if(EQUAL(SEL(_vInfo,9)) == 1) then {
[1,"Ihr Fahrzeug ist bereit und Versichert!"] remoteExecCall ["life_fnc_broadcast",_unit];
}
else {
[1,"Ihr Fahrzeug ist bereit!"] remoteExecCall ["life_fnc_broadcast",_unit];
};
serv_sv_use deleteAt _servIndex;
Alles anzeigen
jetzt bekomme ich wieder diesen fehler in der RPT:
19:07:33 Error in expression <fnc_vehicleAnimate",_unit];
};
if(EQUAAL() == 1) then {
[1,"Ihr Fahrzeug ist ber>
19:07:33 Error position: <() == 1) then {
[1,"Ihr Fahrzeug ist ber>
19:07:33 Error Missing )
19:07:33 File life_server\Functions\Systems\fn_spawnVehicle.sqf, line 137
19:07:33 Error in expression <fnc_vehicleAnimate",_unit];
};
if(EQUAAL() == 1) then {
[1,"Ihr Fahrzeug ist ber>
19:07:33 Error position: <() == 1) then {
[1,"Ihr Fahrzeug ist ber>
19:07:33 Error Missing )
19:07:33 File life_server\Functions\Systems\fn_spawnVehicle.sqf, line 137
Alles anzeigen
Hab es so abgeändert wie du mir geschrieben hast @Shinji
#include "\life_server\script_macros.hpp"
/*
File: fn_spawnVehicle.sqf
Author: Bryan "Tonic" Boardwine
Description:
Sends the query request to the database, if an array is returned then it creates
the vehicle if it's not in use or dead.
*/
private["_vid","_sp","_pid","_query","_sql","_vehicle","_nearVehicles","_name","_side","_tickTime","_dir","_servIndex"];
_vid = [_this,0,-1,[0]] call BIS_fnc_param;
_pid = [_this,1,"",[""]] call BIS_fnc_param;
_sp = [_this,2,[],[[],""]] call BIS_fnc_param;
_unit = [_this,3,ObjNull,[ObjNull]] call BIS_fnc_param;
_price = [_this,4,0,[0]] call BIS_fnc_param;
_dir = [_this,5,0,[0]] call BIS_fnc_param;
_unit_return = _unit;
_name = name _unit;
_side = side _unit;
_unit = owner _unit;
if(EQUAL(_vid,-1) OR EQUAL(_pid,"")) exitWith {};
if(_vid in serv_sv_use) exitWith {};
serv_sv_use pushBack _vid;
_servIndex = serv_sv_use find _vid;
_query = format["SELECT id, side, classname, type, pid, alive, active, plate, color, inventory, gear, fuel, insure FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid];
_tickTime = diag_tickTime;
_queryResult = [_query,2] call DB_fnc_asyncCall;
if(EXTDB_SETTING(getNumber,"DebugMode") == 1) then {
diag_log "------------- Client 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 "------------------------------------------------";
};
if(EQUAL(typeName _queryResult,typeName "")) exitWith {};
_vInfo = _queryResult;
if(isNil "_vInfo") exitWith {serv_sv_use deleteAt _servIndex;};
if(EQUAL(count _vInfo,0)) exitWith {serv_sv_use deleteAt _servIndex;};
if(EQUAL(SEL(_vInfo,5),0)) exitWith {
serv_sv_use deleteAt _servIndex;
[1,format[(localize "STR_Garage_SQLError_Destroyed"),_vInfo select 2]] remoteExecCall ["life_fnc_broadcast",_unit];
};
if(EQUAL(SEL(_vInfo,6),1)) exitWith {
serv_sv_use deleteAt _servIndex;
[1,format[(localize "STR_Garage_SQLError_Active"),_vInfo select 2]] remoteExecCall ["life_fnc_broadcast",_unit];
};
if!(EQUAL(typeName _sp,typeName "")) then {
_nearVehicles = nearestObjects[_sp,["Car","Air","Ship"],10];
} else {
_nearVehicles = [];
};
if(count _nearVehicles > 0) exitWith {
serv_sv_use deleteAt _servIndex;
[_price,_unit_return] remoteExecCall ["life_fnc_garageRefund",_unit];
[1,(localize "STR_Garage_SpawnPointError")] remoteExecCall ["life_fnc_broadcast",_unit];
};
_query = format["UPDATE vehicles SET active='1' WHERE pid='%1' AND id='%2'",_pid,_vid];
_trunk = [_vInfo select 9] call DB_fnc_mresToArray;
_gear = [_vInfo select 10] call DB_fnc_mresToArray;
[_query,false] spawn DB_fnc_asyncCall;
if(typeName _sp == "STRING") then {
_vehicle = createVehicle[(_vInfo select 2),[0,0,999],[],0,"NONE"];
waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
_vehicle allowDamage false;
_hs = nearestObjects[getMarkerPos _sp,["Land_Hospital_side2_F"],50] select 0;
_vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
sleep 0.6;
} else {
_vehicle = createVehicle [(_vInfo select 2),_sp,[],0,"NONE"];
waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
_vehicle allowDamage false;
_vehicle setPos _sp;
_vehicle setVectorUp (surfaceNormal _sp);
_vehicle setDir _dir;
};
_vehicle setFuel (_vInfo select 11);
_vehicle allowDamage true;
//Send keys over the network.
[_vehicle] remoteExecCall ["life_fnc_addVehicle2Chain",_unit];
[_pid,_side,_vehicle,1] call TON_fnc_keyManagement;
_vehicle lock 2;
//Reskin the vehicle
[_vehicle,_vInfo select 8] remoteExecCall ["life_fnc_colorVehicle",_unit];
_vehicle setVariable["vehicle_info_owners",[[_pid,_name]],true];
_vehicle setVariable["dbInfo",[(_vInfo select 4),_vInfo select 7,_vInfo select 9]];
_vehicle setVariable["Trunk",_trunk,true];
_vehicle disableTIEquipment true; //No Thermals.. They're cheap but addictive.
[_vehicle] call life_fnc_clearVehicleAmmo;
if (count _gear > 0) then {
_items = _gear select 0;
_mags = _gear select 1;
_weapons = _gear select 2;
_backpacks = _gear select 3;
for "_i" from 0 to ((count (_items select 0)) - 1) do {
_vehicle addItemCargoGlobal [((_items select 0) select _i), ((_items select 1) select _i)];
};
for "_i" from 0 to ((count (_mags select 0)) - 1) do {
_vehicle addMagazineCargoGlobal [((_mags select 0) select _i), ((_mags select 1) select _i)];
};
for "_i" from 0 to ((count (_weapons select 0)) - 1) do {
_vehicle addWeaponCargoGlobal [((_weapons select 0) select _i), ((_weapons select 1) select _i)];
};
for "_i" from 0 to ((count (_backpacks select 0)) - 1) do {
_vehicle addBackpackCargoGlobal [((_backpacks select 0) select _i), ((_backpacks select 1) select _i)];
};
};
//Sets of animations
if(EQUAL(SEL(_vInfo,1),"civ") && EQUAL(SEL(_vInfo,2),"B_Heli_Light_01_F") && !(EQUAL(SEL(_vInfo,8),13))) then {
[_vehicle,"civ_littlebird",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
if(EQUAL(SEL(_vInfo,1),"cop") && (SEL(_vInfo,2)) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","C_Hatchback_01_sport_F","B_Heli_Light_01_F","B_Heli_Transport_01_F"]) then {
[_vehicle,"cop_offroad",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
if(EQUAL(SEL(_vInfo,1),"med") && EQUAL(SEL(_vInfo,2),"C_Offroad_01_F")) then {
[_vehicle,"med_offroad",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
if(EQUAAL(SEL(_vInfo select 9)) == 1) then {
[1,"Ihr Fahrzeug ist bereit und Versichert!"] remoteExecCall ["life_fnc_broadcast",_unit];
}
else {
[1,"Ihr Fahrzeug ist bereit!"] remoteExecCall ["life_fnc_broadcast",_unit];
};
serv_sv_use deleteAt _servIndex;
Alles anzeigen
Nur schade ist das der GPS Tracker nicht am Fahrzeug gespeichert bleibt. Sobald man das Fahrzeug einparkt & ausparkt muss man sich wieder einen neuen GPS Tracker Kaufen.
MfG
Funktioniert auch für 4.3 Version
habs für [lexicon]Tanoa[/lexicon] fertig gemacht
Zeigt es bei dir auch die "Fahrzeug Skins" an ?
MfG
Habe das hier gefunden in der RPT Log:
18:05:54 Error in expression <fnc_vehicleAnimate",_unit];
};
if(EQUAAL( == 1) then {
[1,"Ihr Fahrzeug ist bere>
18:05:54 Error position: <( == 1) then {
[1,"Ihr Fahrzeug ist bere>
18:05:54 Error Missing )
18:05:54 File life_server\Functions\Systems\fn_spawnVehicle.sqf, line 137
18:05:54 Error in expression <fnc_vehicleAnimate",_unit];
};
if(EQUAAL( == 1) then {
[1,"Ihr Fahrzeug ist bere>
18:05:54 Error position: <( == 1) then {
[1,"Ihr Fahrzeug ist bere>
18:05:54 Error Missing )
18:05:54 File life_server\Functions\Systems\fn_spawnVehicle.sqf, line 137
Alles anzeigen
Nur weiß ich nicht was ich dort genau abändern soll.
Das ist die Datei:
#include "\life_server\script_macros.hpp"
/*
File: fn_spawnVehicle.sqf
Author: Bryan "Tonic" Boardwine
Description:
Sends the query request to the database, if an array is returned then it creates
the vehicle if it's not in use or dead.
*/
private["_vid","_sp","_pid","_query","_sql","_vehicle","_nearVehicles","_name","_side","_tickTime","_dir","_servIndex"];
_vid = [_this,0,-1,[0]] call BIS_fnc_param;
_pid = [_this,1,"",[""]] call BIS_fnc_param;
_sp = [_this,2,[],[[],""]] call BIS_fnc_param;
_unit = [_this,3,ObjNull,[ObjNull]] call BIS_fnc_param;
_price = [_this,4,0,[0]] call BIS_fnc_param;
_dir = [_this,5,0,[0]] call BIS_fnc_param;
_unit_return = _unit;
_name = name _unit;
_side = side _unit;
_unit = owner _unit;
if(EQUAL(_vid,-1) OR EQUAL(_pid,"")) exitWith {};
if(_vid in serv_sv_use) exitWith {};
serv_sv_use pushBack _vid;
_servIndex = serv_sv_use find _vid;
_query = format["SELECT id, side, classname, type, pid, alive, active, plate, color, inventory, gear, fuel, insure FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid];
_tickTime = diag_tickTime;
_queryResult = [_query,2] call DB_fnc_asyncCall;
if(EXTDB_SETTING(getNumber,"DebugMode") == 1) then {
diag_log "------------- Client 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 "------------------------------------------------";
};
if(EQUAL(typeName _queryResult,typeName "")) exitWith {};
_vInfo = _queryResult;
if(isNil "_vInfo") exitWith {serv_sv_use deleteAt _servIndex;};
if(EQUAL(count _vInfo,0)) exitWith {serv_sv_use deleteAt _servIndex;};
if(EQUAL(SEL(_vInfo,5),0)) exitWith {
serv_sv_use deleteAt _servIndex;
[1,format[(localize "STR_Garage_SQLError_Destroyed"),_vInfo select 2]] remoteExecCall ["life_fnc_broadcast",_unit];
};
if(EQUAL(SEL(_vInfo,6),1)) exitWith {
serv_sv_use deleteAt _servIndex;
[1,format[(localize "STR_Garage_SQLError_Active"),_vInfo select 2]] remoteExecCall ["life_fnc_broadcast",_unit];
};
if!(EQUAL(typeName _sp,typeName "")) then {
_nearVehicles = nearestObjects[_sp,["Car","Air","Ship"],10];
} else {
_nearVehicles = [];
};
if(count _nearVehicles > 0) exitWith {
serv_sv_use deleteAt _servIndex;
[_price,_unit_return] remoteExecCall ["life_fnc_garageRefund",_unit];
[1,(localize "STR_Garage_SpawnPointError")] remoteExecCall ["life_fnc_broadcast",_unit];
};
_query = format["UPDATE vehicles SET active='1' WHERE pid='%1' AND id='%2'",_pid,_vid];
_trunk = [_vInfo select 9] call DB_fnc_mresToArray;
_gear = [_vInfo select 10] call DB_fnc_mresToArray;
[_query,false] spawn DB_fnc_asyncCall;
if(typeName _sp == "STRING") then {
_vehicle = createVehicle[(_vInfo select 2),[0,0,999],[],0,"NONE"];
waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
_vehicle allowDamage false;
_hs = nearestObjects[getMarkerPos _sp,["Land_Hospital_side2_F"],50] select 0;
_vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
sleep 0.6;
} else {
_vehicle = createVehicle [(_vInfo select 2),_sp,[],0,"NONE"];
waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
_vehicle allowDamage false;
_vehicle setPos _sp;
_vehicle setVectorUp (surfaceNormal _sp);
_vehicle setDir _dir;
};
_vehicle setFuel (_vInfo select 11);
_vehicle allowDamage true;
//Send keys over the network.
[_vehicle] remoteExecCall ["life_fnc_addVehicle2Chain",_unit];
[_pid,_side,_vehicle,1] call TON_fnc_keyManagement;
_vehicle lock 2;
//Reskin the vehicle
[_vehicle,_vInfo select 8] remoteExecCall ["life_fnc_colorVehicle",_unit];
_vehicle setVariable["vehicle_info_owners",[[_pid,_name]],true];
_vehicle setVariable["dbInfo",[(_vInfo select 4),_vInfo select 7,_vInfo select 9]];
_vehicle setVariable["Trunk",_trunk,true];
_vehicle disableTIEquipment true; //No Thermals.. They're cheap but addictive.
[_vehicle] call life_fnc_clearVehicleAmmo;
if (count _gear > 0) then {
_items = _gear select 0;
_mags = _gear select 1;
_weapons = _gear select 2;
_backpacks = _gear select 3;
for "_i" from 0 to ((count (_items select 0)) - 1) do {
_vehicle addItemCargoGlobal [((_items select 0) select _i), ((_items select 1) select _i)];
};
for "_i" from 0 to ((count (_mags select 0)) - 1) do {
_vehicle addMagazineCargoGlobal [((_mags select 0) select _i), ((_mags select 1) select _i)];
};
for "_i" from 0 to ((count (_weapons select 0)) - 1) do {
_vehicle addWeaponCargoGlobal [((_weapons select 0) select _i), ((_weapons select 1) select _i)];
};
for "_i" from 0 to ((count (_backpacks select 0)) - 1) do {
_vehicle addBackpackCargoGlobal [((_backpacks select 0) select _i), ((_backpacks select 1) select _i)];
};
};
//Sets of animations
if(EQUAL(SEL(_vInfo,1),"civ") && EQUAL(SEL(_vInfo,2),"B_Heli_Light_01_F") && !(EQUAL(SEL(_vInfo,8),13))) then {
[_vehicle,"civ_littlebird",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
if(EQUAL(SEL(_vInfo,1),"cop") && (SEL(_vInfo,2)) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","C_Hatchback_01_sport_F","B_Heli_Light_01_F","B_Heli_Transport_01_F"]) then {
[_vehicle,"cop_offroad",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
if(EQUAL(SEL(_vInfo,1),"med") && EQUAL(SEL(_vInfo,2),"C_Offroad_01_F")) then {
[_vehicle,"med_offroad",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
if(EQUAAL(SEL(_vInfo select 9) == 1) then {
[1,"Ihr Fahrzeug ist bereit und Versichert!"] remoteExecCall ["life_fnc_broadcast",_unit];
}
else {
[1,"Ihr Fahrzeug ist bereit!"] remoteExecCall ["life_fnc_broadcast",_unit];
};
serv_sv_use deleteAt _servIndex;
Alles anzeigen
Wäre Super wenn mir jemand weiterhelfen würde.
MfG
Ich habe das Versicherungs System eingebaut es Funktioniert auch alles bis auf das Ausparken! Und zwar wenn ich mein Fahrzeug in der Garage Versichere und ich es danach ausparken will Spawnt das Fahrzeug nicht mehr aus der Garage.
Es steht oben Rechts nur "Fahrzeug wird bereitgestellt, bitte warten..."
Aber es Spawnt nicht.
Wäre nett wenn mir jemand weiterhelfen würde, ich habe jetzt 3 Stunden an dem Ding geschaut aber nichts gefunden woran es liegen könnte.
Wie gesagt in der Datenbank wird "insure" auch auf "1" gesetzt wenn ich es Versichert habe, aber ingame will das Fahrzeug nicht mehr Spawnen... Komisch.. wäre echt nett wenn mir jemand weiterhelfen könnte, bin am Verzweifeln...
Ich Benutze die Version 4.3
MfG
Benutze die 4.3 Version.
Würde das bei der 4.3 Version auch funktionieren. Wenn nicht was müsste ich genau abändern
Wäre super wenn mir da jemand weiterhelfen könnte.
MfG
Altis 4.0
Das ist aber für die Version "3.1.4.8".
Das würde aber in 3.1.4.8 auch funktionieren oder nicht?
steht doch drüber für alle versionen. Also denke ich funktioniert es auch für die Version 3.1.4.8
MfG
Hab das Script eingebaut und es ging nichts mehr! Konnte nicht mal auf den Server.
Was hast du für eine Version? 4.4, 3.1.4.8, 4.0 etc wäre mal nice zu wissen.
Sag mal ist es schwer dort noch hinzuzufügen, das wenn das Fahrzeug kaputt ist das man es dort auch abhollen/rauskaufen muss ?
Und wenn ja, was müsste ich dort abändern genau.
Würde mich freuen wenn da jemand was dazu schreiben könnte.
In:
Neue Datei in \core\shops\ Namens "fn_impoundedmenu.sqf"
Spoiler fehlt der Code
Tutorial ( Neue Farming Routen 4.4 Hinzufügen)
Tutorial by Shinji
____________________________________________________________________________________
Ein Item erstellen bzw. 2 stück
class gummiu {
variable = "gummiu";
displayName = "STR_Item_Rock"; << ich hoffe da weißt wie es geht :)
weight = 3;
buyPrice = -1;
sellPrice = 25;
illegal = false;
edible = -1;
icon = "";
};
class gummip {
variable = "gummip";
displayName = "STR_Item_CementBag"; << ebenfalls bitte Strngtable schauen :)
weight = 2;
buyPrice = -1;
sellPrice = 590;
illegal = false;
edible = -1;
icon = "";
};
Alles anzeigen
Eine lizenz erstellen, um das später zu processen
class gummiprocess {
variable = "gummiprocess";
displayName = "STR_License_Cement"; << wie immer schön Strings machen
price = 6500;
illegal = false;
side = "civ";
};
Einmal in die gather.sqf wechseln -> sollte unter core\actions\ zu finden zu sein
dort finden wir folgendes vor:
_resourceZones = ["apple_1","apple_2","apple_3","apple_4","peaches_1","peaches_2","peaches_3","peaches_4","heroin_1","cocaine_1","weed_1"];
switch(true) do {
case (_zone in ["apple_1","apple_2","apple_3","apple_4"]): {_gather = ["apple",3];};
case (_zone in ["peaches_1","peaches_2","peaches_3","peaches_4"]): {_gather = ["peach",3];};
case (_zone in ["heroin_1"]): {_gather = ["heroin_unprocessed",1];};
case (_zone in ["cocaine_1"]): {_gather = ["cocaine_unprocessed",1];};
case (_zone in ["weed_1"]): {_gather = ["cannabis",1];};
default {""};
};
Da tragen wir einfach eine neue Zone ein unter der case (_zone in["weed1"....
Nicht vergessen auch in der "_resourceZones" Eintragen!
case (_zone in ["gummi"]): {_gather = ["gummiu",1];};
erklärung:
_zone gummi -> Marker Name der auf der Karte zu sehen is
_gather gummiu 1 -> du bekommst 1 unprocessed gummi dort
Allein damit könnte man schon farmen gehen, zwar nicht verkaufen, aber hey Farmen
[/b]
Tragen wir also das Item mal noch in einen Shop ein -> Config_vItem.hpp
class market {
name = "STR_Shops_Market";
side = "civ";
license = "";
level[] = { "", "", -1, "" };
items[] = { "waterBottle", "rabbit", "apple", "redgull", "tbacon", "lockpick", "pickaxe", "fuelFull", "peach", "boltcutter", "storagesmall", "storagebig", "rabbit_raw", "hen_raw", "rooster_raw", "sheep_raw", "goat_raw" };
};
und fügen hinter "goat_raw" einfach noch ein Komma "gummip" ein
class market {
name = "STR_Shops_Market";
side = "civ";
license = "";
level[] = { "", "", -1, "" };
items[] = { "waterBottle", "rabbit", "apple", "redgull", "tbacon", "lockpick", "pickaxe", "fuelFull", "peach", "boltcutter", "storagesmall", "storagebig", "rabbit_raw", "hen_raw", "rooster_raw", "sheep_raw", "goat_raw", "gummip" };
};
Alles anzeigen
Nun könnte man das processed item verkaufen. Fehlt das Processen... core\actions\processAction.sqf
wir finden:
_itemInfo = switch (_type) do {
case "oil": {["oil_unprocessed","oil_processed",1200,(localize "STR_Process_Oil")];};
case "diamond": {["diamond_uncut","diamond_cut",1350,(localize "STR_Process_Diamond")];};
case "heroin": {["heroin_unprocessed","heroin_processed",1750,(localize "STR_Process_Heroin")];};
case "copper": {["copper_unrefined","copper_refined",750,(localize "STR_Process_Copper")];};
case "iron": {["iron_unrefined","iron_refined",1120,(localize "STR_Process_Iron")];};
case "sand": {["sand","glass",650,(localize "STR_Process_Sand")];};
case "salt": {["salt_unrefined","salt_refined",450,(localize "STR_Process_Salt")];};
case "cocaine": {["cocaine_unprocessed","cocaine_processed",1500,(localize "STR_Process_Cocaine")];};
case "marijuana": {["cannabis","marijuana",500,(localize "STR_Process_Marijuana")];};
case "cement": {["rock","cement",350,(localize "STR_Process_Cement")];};
default {[];};
};
Alles anzeigen
und fügen wieder unter dem letzten eintrag aber ÜBER default -> also unter -> case "cement" ...
case "gummi": {["gummiu","gummip",90,(localize "STR_Process_Cement")];}; << wieder darauf achten das die Stringtable passt.
Erklärung:
case gummi -> ist die Action die vom NPC auf der KArte komme.
gummiu , gummip , 90 -> von unprocessed gummi zu processed ohne lizenz kostet es 90$ pro item
Nun sollte nur noch der Marker fehlen der "gummi" genannt wird.
Dann noch der Processtyp ->
In der init eines NPC`s
this enableSimulation false; this allowDamage false;
this addAction[localize "STR_MAR_Process_Rock",life_fnc_processAction,"gummi",0,false,false,"",' life_inv_gummiu > 0 && !life_is_processing'];
this addAction[format["%1 ($%2)",localize (getText(missionConfigFile >> "Licenses" >> "gummiprocess" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "gummiprocess" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"gummiprocess",0,false,false,"",' !license_civ_gummiprocess && playerSide == civilian '];
Okay das sollte es gewesen sein!
Viel Spaß mit dem Farming Routen & natürlich beim Farmen!
Ein Großes Dankeschön geht nochmals an @Shinji für sein Tutorial!
MfG John_Parker