Hey,
erstmal das ist mein erstes Tutorial also ich bitte um konstruktive Kritik!
Disclaimer
Das Script kommt bzw. wurde von br1zey editiert so das man Fahrzeuge nach Koordinaten spawnen lassen kann.
Ich habe dabei außer Br1zey mit Fehlern genervt gar nichts selbst gescripted oder der weitern.
Ich zeige nur anhand von Beispielen wie man das ganze gestaltet.
Das ganze funktioniert bei mir unter der Version 5.0 bei anderen Versionen habe ich keine Ahnung ob es klappt und werde es vorerst auch nicht Test wäre lieb wenn das jdm. von euch machen kann.
Und los gehts
Ihr benötigt folgenden Datein:
fn_unimpound.sqf (Eure_Mission\dialog\function\fn_unimpound.sqf)
fn_vehicleShopBuy.sqf (Eure_Mission\core\shops\fn_vehicleShopBuy.sqf)
(Optional aber empfehlenswert)
Kopiert eure Datein und fügt sie im gleichen Ordner wieder ein.
Somit habt ihr immer eine "Standard" Backup Datei.
Nun zu der fn_vehicleShopBuy.sqf:
In der fn_vehicleShopBuy.sqf ersetzt ihr ab Zeile 96 (nach } else { ) folgendes:
_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);
};
mit:
_pos = getMarkerPos _spawnPoint;
_dir = markerDir _spawnPoint;
if(_spawnPoint isEqualTo "Dein_Marker_Name")then{
_pos = [Deine.00,Koordi.00,naten.00];
_dir = dir.00;
};
_vehicle = createVehicle [_className, _pos, [], 0, "NONE"];
waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
_vehicle allowDamage false; //Temp disable damage handling..
_vehicle setPos _pos;
_vehicle setVectorUp (surfaceNormal (getMarkerPos _spawnPoint));
_vehicle setDir _dir;
};
Alles anzeigen
die Code stelle sollte dann so aussehen:
if ((life_veh_shop select 0) == "med_air_hs") then {
_vehicle = createVehicle [_className,[0,0,999],[], 0, "NONE"];
waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
_vehicle allowDamage false;
_hs = nearestObjects[getMarkerPos _spawnPoint,["Land_Hospital_side2_F"],50] select 0;
_vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
sleep 0.6;
} else {
_pos = getMarkerPos _spawnPoint;
_dir = markerDir _spawnPoint;
if(_spawnPoint isEqualTo "Dein_Marker_Name")then{
_pos = [Deine.00,Koordi.00,naten.00];
_dir = dir.00;
};
_vehicle = createVehicle [_className, _pos, [], 0, "NONE"];
waitUntil {!isNil "_vehicle" && {!isNull _vehicle}}; //Wait?
_vehicle allowDamage false; //Temp disable damage handling..
_vehicle setPos _pos;
_vehicle setVectorUp (surfaceNormal (getMarkerPos _spawnPoint));
_vehicle setDir _dir;
};
Alles anzeigen
Jetzt müsst ihr euren Marker namen mit "Dein_Marker_Namen" ersetzen.
Eure Koordinaten mit "Deine.00,Koordi.00,naten.00" ersetzen. (Format XXX.xx,XXX.xx,XXX.xx)
Und zuletzt müsst ihr "dir.00" mit eurer Dircention ersetzen (Format XXX.xx)
Wie ihr eure Koordinaten und Dircention herausfindet erfahrt ihr später noch.
Als Beispiel so sieht das ganze bei mir aus:
Nun zu der fn_unimpound.sqf
In der fn_vehicleShopBuy.sqf ersetzt ihr folgendes in den zeilen 54 und 56:
mit
Das ganze sollte dann so aussehen (Zeile 53 bis 57
if (life_HC_isActive) then {
[_vid,_pid,_pos,_unit,_price,_dir,_spawntext] remoteExec ["HC_fnc_spawnVehicle",HC_Life];
} else {
[_vid,_pid,_pos,_unit,_price,_dir,_spawntext] remoteExec ["TON_fnc_spawnVehicle",RSERV];
};
nun fügt ihr dadrüber also nach dem } else { in zeile 52 folgendes ein:
_pos = getMarkerPos life_garage_sp;
_dir = markerDir life_garage_sp;
if(life_garage_sp isEqualTo "Dein_Marker_Name")then{
_pos = [Deine.00,Koordi.00,naten.00];
_dir = dir.00;
};
Das ganze sollte nun so aussehen:
} else {
_pos = getMarkerPos life_garage_sp;
_dir = markerDir life_garage_sp;
if(life_garage_sp isEqualTo "Dein_Marker_Name")then{
_pos = [Deine.00,Koordi.00,naten.00];
_dir = dir.00;
};
if (life_HC_isActive) then {
[_vid,_pid,_pos,_unit,_price,_dir,_spawntext] remoteExec ["HC_fnc_spawnVehicle",HC_Life];
} else {
[_vid,_pid,_pos,_unit,_price,_dir,_spawntext] remoteExec ["TON_fnc_spawnVehicle",RSERV];
};
};
};
Alles anzeigen
Jetzt müsst ihr euren Marker namen mit "Dein_Marker_Namen" ersetzen.
Eure Koordinaten mit "Deine.00,Koordi.00,naten.00" ersetzen. (Format XXX.xx,XXX.xx,XXX.xx)
Und zuletzt müsst ihr "dir.00" mit eurer Dircention ersetzen (Format XXX.xx)
Wie ihr eure Koordinaten und Dircention herausfindet erfahrt ihr gleich.
Als Beispiel so sieht das ganze bei mir aus:
Nun geht ihr in den 3D Editor und nehm ein beliebiges fahrzeug und zieht es so hin wie ihr wollt das es am ende spawnen soll.
Nun macht ein Doppel klick auf das Fahrzeug und nehmt euch die koordinaten des fahzeuges sowie die Dircention.
_pos = [X,00,Y.00,Z.00];
Der Z Wert beschreibt die Höhe
Die Rotation ist der Z wert unter "Rotation"
_dir = Z.00;
Um einen weiteren Koordinaten Spawn einzufügen müsst ihr in der fn_vehicleShopBuy.sqf folgendes:
if(_spawnPoint isEqualTo "Dein_Marker_Name")then{
_pos = [Deine.00,Koordi.00,naten.00];
_dir = dir.00;
};
Unter euren ersten Koordinaten Spawn einfügen.
bei mir zB. sieht das so aus:
if(_spawnPoint isEqualTo "civ_car_2")then{
_pos = [7825.01,5794.52,4.224];
_dir = 325.996;
};
if(_spawnPoint isEqualTo "civ_car_3")then{
_pos = [7833.51,5801.43,3.3];
_dir = 325.996;
};
Das gleiche gilt für die fn_unimpound.sqf einfach unter euren ersten spawn folgendes einfügen:
if(life_garage_sp isEqualTo "Dein_Marker_Name")then{
_pos = [Deine.00,Koordi.00,naten.00];
_dir = dir.00;
};
Bei mir sieht das ganze dann so aus:
if(life_garage_sp isEqualTo "car_g_3")then{
_pos = [7825.01,5794.52,4.224];
_dir = 32.9061;
};
if(life_garage_sp isEqualTo "car_g_4")then{
_pos = [7837.47,5803.52,2.93];
_dir = 32.9061;
};
Ich hoffe ich konnte ein paar Leute damit weiter helfen.
Wie im Disclaimer schon geschrieben vielen dank an Br1zey der das ganze gescripted hat.
Bei Fehlern gerne melden aber bitte direkt die beiden Datein sowie ein RPT-Log Anhängen