![]() |
#1 (permalink) |
![]() Registriert seit: 20.05.2009
Beiträge: 605
|
![]()
Ich habe mit hilfe von "noobfire" vor einiger zeit mal dieses script erstellt. Hier wird über einen addaction eintrag dem spieler verschiedene wegpunkte gegeben, nach beendigung bekommt er einen geldbonus und supply punkte.
Der Titel ist vielleicht nicht ganz passend gewählt, lässt sich aber nun leider nicht mehr ändern. Das script funktioniert soweit, allerdings gibt es da ein paar schönheitsfehler. 1.: Alte wegpunkte werde nach beedigung der Patroullie nicht gelöscht oder halt wenn man eine neue patroullie starten will. 2.: Wegpunkte können auf der Map per Maus an eine x beliebige stelle gezogen werden. Im editor habe ich an verschiedenen stellen versteckte Heli H's plaziert r1 bis r8 Die Patruouille starte ich derzeit über einen addaction eintrag an einem wasserfass in der basis. Könnt ihr mir ein bisschen weiter helfen ?! es funktioniert ja schon fast ![]() Code:
this addaction ["Patroullie", "missions\get_route.sqf"]; Code:
//TODO: Alte Waypoints werdern nicht richtig gelöscht. _playerGrp = group player; positions = [position r1, position r2, position r3, position r4, position r5, position r6, position r7, position r8]; // hier die Namen der Heli-H eintragen _i = ceil random (count positions); wposition = positions select _i; wp1 = _playerGrp addWaypoint [wposition, 0,0]; wp1 setWaypointType "MOVE"; _i = ceil random (count positions); wposition = positions select _i; wp2 = _playerGrp addWaypoint [wposition, 0,1]; wp2 setWaypointType "MOVE"; _i = ceil random (count positions); wposition = positions select _i; wp3 = _playerGrp addWaypoint [wposition, 0,2]; wp3 setWaypointType "MOVE"; wp4 = _playerGrp addwaypoint [position grendpos, 0,3]; wp4 setwaypointtype "MOVE"; wp4 setWaypointStatements ["true", "smp1 sidechat ""You a back in Base + 500 $""; cash = cash + 500"]; Geändert von Anemia (05.03.2011 um 19:49 Uhr). |
![]() |
![]() |
#2 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
Für Wegpunkte löschen habe ich einmal eine Funktion geschrieben. Die fügst du ganz am Beginn deines Skripts ein:
Code:
//Funktion alle Wegpunkgte löschen. Aufurf: <Objekt> call _clearAllWP _clearAllWP = compile "private['_w'];for[{_w=Count Waypoints _this},{_w>=0},{_w=_w-1}]do{deleteWaypoint[group _this,_w]}"; player call _clearAllWP; z.B. in deinem Skript bevor du die Wegpunkte erstellst. Auch habe ich eine Funktion zum Wegpunkt erstellen (auch ganz oben im Skript einfügen): Code:
//Funktion Wegpunkt hinzufügen. Aufruf: [<Objekt>,[<Position>],"Type",<sichtbar "NEVER"/"ALWAYS">] call _addWP; _addWP = compile "Private['_w'];_w=group(_this select 0)AddWaypoint[_this select 1,Count Waypoints(_this select 0)];_w SetWaypointType(_this select 2);_w ShowWaypoint(_this select 3);_w"; _i = ceil random (count positions); [player, positions select _i, "MOVE", "NEVER"] call _addWP; Die Wegpunktnummer brauchst du nicht angeben, die wird automatisch erstellt. Diese Wegpunkte sind auf der der Karte nicht sichtbar und können daher auch nicht verstellt werden. Sollen sie dort sichtbar sein, dann musst du an ihrer Position einen Marker erstellen. Noch Hinweise: Du verwendest in dem Skript globale Variable (jene ohne Unterstrich) die solltest du durch lokale ersetzen. Du wählst mehrere zufällige Positionen aus. Da könnte es vorkommen, dass es die selben sind. |
![]() |
![]() |
#3 (permalink) |
![]() Registriert seit: 20.05.2009
Beiträge: 605
|
![]()
Danke deiner hilfe sieht das ganze nun schonmal so aus ... Code:
////////////////////////////////////////////////////////////////// // Function file for Armed Assault // Created by: TODO: Author Name ////////////////////////////////////////////////////////////////// //Funktion alle Wegpunkgte löschen. Aufurf: <Objekt> call _clearAllWP _clearAllWP = compile "private['_w'];for[{_w=Count Waypoints _this},{_w>=0},{_w=_w-1}]do{deleteWaypoint[group _this,_w]}"; player call _clearAllWP; //TODO: Alte Waypoints werdern nicht richtig gelöscht. // mit diesem Code geht es halbwegs _playerGrp = group player; positions = [position r1, position r2, position r3, position r4, position r5, position r6, position r7, position r8]; // hier die Namen der Heli-H eintragen //Funktion Wegpunkt hinzufügen. Aufruf: [<Objekt>,[<Position>],"Type",<sichtbar "NEVER"/"ALWAYS">] call _addWP; _addWP = compile "Private['_w'];_w=group(_this select 0)AddWaypoint[_this select 1,Count Waypoints(_this select 0)];_w SetWaypointType(_this select 2);_w ShowWaypoint(_this select 3);_w setWaypointCompletionRadius (_this select 4);_w"; _i = ceil random (count positions); [player, positions select _i, "MOVE", "ALWAYS",10] call _addWP; _i = ceil random (count positions); [player, positions select _i, "MOVE", "ALWAYS",10] call _addWP; _i = ceil random (count positions); [player, positions select _i, "MOVE", "ALWAYS",10] call _addWP; _i = ceil random (count positions); [player, positions select _i, "MOVE", "ALWAYS",10] call _addWP; //Back to Base, dieser wegpunkt ist der startpunkt _i = ceil random (count positions); [player, getpos grendpos, "MOVE", "ALWAYS"] call _addWP; Habe zu testzwecken erstmal die WP anzeigen lassen. wenn man diesen umstand bei seite lässt funktioniert das ding nun super ![]() |
![]() |
![]() |
#4 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
Den Parameter für den "Endradius" hast du in die Funktion korrekt eingefügt!
Nur hast du beim letzten Wegpunkt vergessen einen Wert dafür einzugeben. Da wird die Zeile dann nicht ausgeführt, oder das Skript überhaupt beendet. |
![]() |
![]() |
#5 (permalink) |
![]() Registriert seit: 20.05.2009
Beiträge: 605
|
![]()
Habe das im letzten WP nochmal ergänzt , scheint aber keine wirkung zu haben. es verändert leider nicht das verhalten der WP's. die werden immernoch sehr viel zu früh ausgelößt. Teste das gerade auf einer kleinen insel ...
Und leider ist es wirklich min. 1 km zu früh, wenn ich einen WP an der küste plaziere und der den schon im landesinneren als erledigt kennzeichnet. ???? hast du vielleicht auch noch einen Tipp wie ich es umgehen kann das er mir die gleichen Positionen mehrmals ausgibt ? ![]() EDIT: Habe nun mal versucht die unsichtbaren Heli H's durch eine Spiellogik zu tauschen, in der hoffnung das es an den H liegt. Leider auch ohne erfolg. Geändert von Anemia (06.03.2011 um 08:12 Uhr). |
![]() |
![]() |
#6 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
Das mit dem Endradius funktioniert nicht! Bug? (bei im Editor erstellten Wegpunkten allerdings schon) Man sieht zwar auf der Karten den eingestellten Radius, aber es wird immer bei 50 Meter Abstand ein Wegpunkt als erreicht angenommen.
Im Anhang eine Mission mit Testaufstellung. Wo zu sehen ist, wie die bereits verwendeten Zielpunkte (Objekte) aus der Liste entfernt sind. Auch ist die Add-Funktion korrigiert. Da war ein Fehler bei der Plazierung des Wegpunktes. Code:
////////////////////////////////////////////////////////////////// // Function file for Armed Assault // Created by: TODO: Author Name ////////////////////////////////////////////////////////////////// private ["_clearAllWP","_addWP","_basis","_allObj","_sichtbar","_obj","_wp"]; //Funktion alle Wegpunkgte löschen. Aufurf: <Objekt> call _clearAllWP _clearAllWP = compile "private['_w'];for[{_w=Count Waypoints _this},{_w>=0},{_w=_w-1}]do{deleteWaypoint[group _this,_w]}"; //Funktion Wegpunkt hinzufügen. Aufruf: [<Objekt>,[<Position>],"Type",<sichtbar "NEVER"/"ALWAYS">] call _addWP; _addWP = compile "Private['_w'];_w=group(_this select 0)AddWaypoint[_this select 1,0];_w SetWaypointType(_this select 2);_w ShowWaypoint(_this select 3);_w"; _basis = getPos grendpos; _allObj = [r1, r2, r3, r4, r5, r6, r7, r8]; // hier die Namen der Heli-H eintragen _sichtbar = "ALWAYS"; player call _clearAllWP; _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; [player, getPos _obj, "MOVE", _sichtbar] call _addWP; player groupchat format["%1",_allObj]; // nur zum Testen _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; [player, getPos _obj, "MOVE", _sichtbar] call _addWP; player groupchat format["%1",_allObj]; // nur zum Testen _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; [player, getPos _obj, "MOVE", _sichtbar] call _addWP; player groupchat format["%1",_allObj]; // nur zum Testen _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; [player, getPos _obj, "MOVE", _sichtbar] call _addWP; player groupchat format["%1",_allObj]; // nur zum Testen //Back to Base, dieser wegpunkt ist der startpunkt _wp = [player, _basis, "MOVE", _sichtbar] call _addWP; // nur zum Testen cash = 0; _wp setWaypointStatements ["true", "cash = cash + 500; player sideChat format['cash: %1',cash]"]; |
![]() |
![]() |
#7 (permalink) |
![]() Registriert seit: 20.05.2009
Beiträge: 605
|
![]()
Habs gerade mal getestet , es funktioniert aufjedenfall schon sehr viel besser. mit den 50 metern kann ich leben .... das ist halb so wild wenn die patroullie dann über die ganze insel verteilt ist machen die paar meter glaub ich nichts.
DANKE !!!! Die wegpunkte lassen sich wenn sie angezeigt werden zwar verschieben, aber wenn sie nicht angezeigt werden ist auch nichts zum verschieben da ![]() Damit man aber auf der karte trotzdem schauen kann wo man überhaupt hin muss habe ich folgendes probiert Code:
_obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; // WP Marker start _markerstr = createMarker["WP_1",[getpos _obj]]; _markerstr setMarkerShape "ICON"; _markerstr setMarkerType "DOT"; _markerstr setMarkerPos [_obj]; //WP Marker ende [player, getPos _obj, "MOVE", _sichtbar] call _addWP; player groupchat format["%1",_allObj]; // nur zum Testen ![]() warum muss das alles immer so ein rumgefriemel sein. Mir ist da gerade noch die idee gekommen..... wenn ich nun aus den erstellten wegpunkten einen für ein "event" nutzen möchte, z.b. das an einem der zufällig ausgewählten WP's feindliche KI einen hinterhalt gelegt hat oder eine IED plaziert ist. müsste ich mir nach erstellung der WP's den inhalt von _allobj ausgeben lassen , und an einer zufällig ausgewählten position aus _allobj dann meine gewünschte gegner KI beamen ?! |
![]() |
![]() |
#10 (permalink) |
![]() ![]() ![]() Registriert seit: 11.03.2005
Ort: HH
Alter: 53
Beiträge: 1.930
|
![]()
Seh grad schon wieder eckige Klammern... _markerstr = createMarker["WP_1",[getpos _obj]];...
Weg mit den Dingern! ![]() Code:
_markerstr = createMarker["WP_1",getpos _obj]; ![]() |
![]() |
![]() |
#11 (permalink) |
![]() Registriert seit: 20.05.2009
Beiträge: 605
|
![]() Klasse das wars , irgendwann werde ich auch mal die syntax richtig können ... hoffe ich zumindest , blöde (){[]} ;, . und diese ganzen mist zeichen ... ![]() |
![]() |
![]() |
#12 (permalink) |
![]() Registriert seit: 20.05.2009
Beiträge: 605
|
![]()
EDIT: Nun habe ich Marker eingefügt , diese möchte ich nun in richtung des nächsten WP's ausrichten... Code:
////////////////////////////////////////////////////////////////// // Function file for Armed Assault // Created by: TODO: Author Name ////////////////////////////////////////////////////////////////// private ["_clearAllWP","_addWP","_basis","_allObj","_sichtbar","_obj","_wp"]; //Funktion alle Wegpunkgte löschen. Aufurf: <Objekt> call _clearAllWP _clearAllWP = compile "private['_w'];for[{_w=Count Waypoints _this},{_w>=0},{_w=_w-1}]do{deleteWaypoint[group _this,_w]}"; //Funktion Wegpunkt hinzufügen. Aufruf: [<Objekt>,[<Position>],"Type",<sichtbar "NEVER"/"ALWAYS">] call _addWP; _addWP = compile "Private['_w'];_w=group(_this select 0)AddWaypoint[_this select 1,0];_w SetWaypointType(_this select 2);_w ShowWaypoint(_this select 3);_w"; _basis = getPos grendpos; _allObj = [r1, r2, r3, r4, r5, r6, r7, r8]; // hier die Namen der Heli-H eintragen _sichtbar = "ALWAYS"; player call _clearAllWP; deleteMarker "WP_1"; deleteMarker "WP_2"; deleteMarker "WP_3"; deleteMarker "WP_4"; _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; // WP Marker start _markerstr = createMarker["WP_1",getpos _obj]; _markerstr setMarkerShape "ICON"; _markerstr setMarkerType "Arrow"; _markerstr setMarkerPos (getPos _obj); //WP Marker ende [player, getPos _obj, "MOVE", _sichtbar] call _addWP; player groupchat format["%1",_allObj]; // nur zum Testen _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; // WP Marker start _markerstr = createMarker["WP_2",getpos _obj]; _markerstr setMarkerShape "ICON"; _markerstr setMarkerType "Arrow"; _markerstr setMarkerPos (getPos _obj); //WP Marker ende [player, getPos _obj, "MOVE", _sichtbar] call _addWP; player groupchat format["%1",_allObj]; // nur zum Testen _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; // WP Marker start _markerstr = createMarker["WP_3",getpos _obj]; _markerstr setMarkerShape "ICON"; _markerstr setMarkerType "Arrow"; _markerstr setMarkerPos (getPos _obj); //WP Marker ende [player, getPos _obj, "MOVE", _sichtbar] call _addWP; player groupchat format["%1",_allObj]; // nur zum Testen _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; // WP Marker start _markerstr = createMarker["WP_4",getpos _obj]; _markerstr setMarkerShape "ICON"; _markerstr setMarkerType "Arrow"; _markerstr setMarkerPos (getPos _obj); //WP Marker ende [player, getPos _obj, "MOVE", _sichtbar] call _addWP; player groupchat format["%1",_allObj]; // nur zum Testen //Back to Base, dieser wegpunkt ist der startpunkt _wp = [player, _basis, "MOVE", _sichtbar] call _addWP; // nur zum Testen cash = 0; _wp setWaypointStatements ["true", "cash = cash + 500; player sideChat format['cash: %1',cash]"]; "WP_1" setMarkerDir "WP_2"; "WP_2" setMarkerDir "WP_3"; "WP_3" setMarkerDir "WP_4"; "WP_4" setMarkerDir _basis; Ich habs so versucht Code:
"WP_1" setMarkerDir "WP_2"; "WP_2" setMarkerDir "WP_3"; "WP_3" setMarkerDir "WP_4"; "WP_4" setMarkerDir _basis; |
![]() |
![]() |
#13 (permalink) |
![]() ![]() ![]() Registriert seit: 11.03.2005
Ort: HH
Alter: 53
Beiträge: 1.930
|
![]()
Kennst Du diese Seite?
Sollte dem nicht so sein, dann solltest Du schleunigst damit anfangen, Dir die Befehle, die Du verwendest, dort vorher mal anzuschauen. In den Beschreibungen steht deutlich beschrieben, wie ein Befehl zu verwenden ist... meistens sind sogar Beispiele dazu vorhanden. Was Du machst hat ziemlich viel mit Rätselraten und Phantasie zu tun... ![]() setMarkerDir zB. dort steht man soll einen Winkel und kein Objekt angeben. Wenn Du keienn Winkel hast, dann musst Du den vorher errechnen. Dazu gibt es zB von BIS erstellte Funktionen die Du nutzen könnstet: >> click << ![]() |
![]() |
![]() |
#14 (permalink) |
![]() Registriert seit: 20.05.2009
Beiträge: 605
|
![]()
Hatte mir das vorher in der Wiki schon angeschaut ... jaa ... aber probieren kann man ja mal ![]() Danke aufjedenfall für die links.... das mit den funktionen werd ich mir mal genauer anschauen... da sind sicherlich noch so 2 - 3 andere interessante dinge drinne. Scripten hat für mich momentan wirklich noch viel mit rätselraten zu tun .... aber mein verständniss wird immer besser .... Die Community hier auf a-a.de hat auch einen großen teil dazu beigetragen ... man lernt es halt leider nicht vom einen auf den nächsten tag. ![]() |
![]() |
![]() |
#15 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
Für den Befehl setMarkerDir benötigst du den Winkel zwischen zwei Positionen. Den Winkel errechnet diese Funktion:
Code:
//Funktion Winkel zwischen 2 Positionen: [[Position-VON],[Position-ZU]] call _dir2obj; _dir2obj=compile "private['_p1','_p2','_d'];_p1=_this select 1;_p2=_this select 0;_d=((_p1 select 0) - (_p2 select 0))atan2((_p1 select 1) - (_p2 select 1));if (_d<0)then{_d=_d+360};_d"; z.B. "Marker1" setMarkerDir ([waypointPosition [group Player, 1],waypointPosition [group Player, 2]] call _dir2obj) Der Aktivierungsbreich eines Skript-Wegpunktes kann nicht kleiner als 50m sein. Es gibt aber eine Möglichkeit ihn größer als 50 Meter zu machen (falls benötigt). Dazu wurde die Funktion für die Wegpunkte entsprechend geändert! Zur (nicht) Sichtbarkeit aller Wegpunkte reicht ein Aufruf beim letzten Wegpunkt. Auch muss ein erster Wegpunkt direkt beim Spieler/KI sein. Code:
////////////////////////////////////////////////////////////////// // Function file for Armed Assault // Created by: TODO: Author Name ////////////////////////////////////////////////////////////////// private ["_clearAllWP","_addWP","_basis","_allObj","_sichtbar","_obj","_wp"]; //Funktion alle Wegpunkgte löschen. Aufurf: <Objekt> call _clearAllWP _clearAllWP = compile "private['_w'];for[{_w=Count Waypoints _this},{_w>=0},{_w=_w-1}]do{deleteWaypoint[group _this,_w]}"; //Funktion Wegpunkt hinzufügen. Aufruf: [<Objekt>,[<Position>],"Type",<Aktivierungsabstand in Meter>] call _addWP; _addWP = compile "Private['_w'];_w=group(_this select 0)AddWaypoint[_this select 1,0];_w SetWaypointType(_this select 2);_w setWaypointCompletionRadius(_this select 3);_w setWaypointStatements ['true',''];_w"; //Der Aktivierungsabstand wird nur berücksichtigt wenn er über 50 Meter ist!!!! //Der 1.Wegpunkt ist direkt an der Position des Spielers/KI zu setzen. _basis = getPos grendpos; _allObj = [r1, r2, r3, r4, r5, r6, r7, r8]; // hier die Namen der Heli-H eintragen _sichtbar = "ALWAYS"; // oder "NEVER" player call _clearAllWP; // 1.Wegpunkt direkt beim Spieler!! [player, getPos player, "MOVE", 0] call _addWP; _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; [player, getPos _obj, "MOVE", 100] call _addWP; _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; [player, getPos _obj, "MOVE", 100] call _addWP; _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; [player, getPos _obj, "MOVE",100] call _addWP; _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; [player, getPos _obj, "MOVE", 100] call _addWP; //Back to Base, dieser wegpunkt ist der startpunkt _wp = [player, _basis, "MOVE", 100] call _addWP; //beim letzten Wegpunkt hinzufügen ob die Wegpunkte angezeigt werden sollen _wp ShowWaypoint _sichtbar; // nur zum Testen cash = 0; _wp setWaypointStatements ["true", "cash = cash + 500; player sideChat format['cash: %1',cash]"]; |
![]() |
![]() |
#18 (permalink) |
![]() Registriert seit: 20.05.2009
Beiträge: 605
|
![]()
Danke für eure super Hilfe hier , damit evtl. noch jemand anderes an dem Script sein spass haben kann , poste ich hier dann mal meine momentane fassung.
Für alle die nicht mitgelesen haben. Dieses Script erstellt zufällig angeordnete Wegpunkte, an vorher definierte Punkte auf der Karte, für den Spieler. An den jeweiligen Punkten werden Marker in Pfeilform generiert die auf den nächst folgenden WP zeigen. To Do - Editor 1.: Plaziere eine Spiel-Logik oder Objekt mit Namen : grendpos Das ist der Punkt an dem jede Patrouille endet. 2.: Zum plazieren der Patrouillen Wegpunkte erstelle fortlaufend benummert jeweils eine Spiel-Logik an gewünschter Stelle. Im script sind das r1 - r8 , weitere mögliche WP's sind dort einzutragen. 3.: Plaziere ein Objekt deiner Wahl mit folgender Initzeile Code:
this addaction ["Patroullie", "missions\get_route.sqf"]; Code:
////////////////////////////////////////////////////////////////// // Welcome to the Jungel - Patrouille // Created by: Anemia // Special Thanks to: Vienna & Buliwyf // Version 1.0 ////////////////////////////////////////////////////////////////// private ["_clearAllWP","_addWP","_basis","_allObj","_sichtbar","_obj","_wp"]; //Funktion alle Wegpunkgte löschen. Aufurf: <Objekt> call _clearAllWP _clearAllWP = compile "private['_w'];for[{_w=Count Waypoints _this},{_w>=0},{_w=_w-1}]do{deleteWaypoint[group _this,_w]}"; //Funktion Wegpunkt hinzufügen. Aufruf: [<Objekt>,[<Position>],"Type",<Aktivierungsabstand in Meter>] call _addWP; //Der Aktivierungsabstand wird nur berücksichtigt wenn er über 50 Meter ist!!!! //Der 1.Wegpunkt ist direkt an der Position des Spielers/KI zu setzen. _addWP = compile "Private['_w'];_w=group(_this select 0)AddWaypoint[_this select 1,0];_w SetWaypointType(_this select 2);_w setWaypointCompletionRadius(_this select 3);_w ShowWaypoint(_this select 4);_w setWaypointStatements ['true',''];_w"; //Funktion Winkel zwischen 2 Positionen: [[Position-VON],[Position-ZU]] call _dir2obj; _dir2obj=compile "private['_p1','_p2','_d'];_p1=_this select 1;_p2=_this select 0;_d=((_p1 select 0) - (_p2 select 0))atan2((_p1 select 1) - (_p2 select 1));if (_d<0)then{_d=_d+360};_d"; _basis = getPos grendpos; _allObj = [r1, r2, r3, r4, r5, r6, r7, r8]; _sichtbar = "NEVER"; // oder "NEVER" player call _clearAllWP; deleteMarker "WP_1"; deleteMarker "WP_2"; deleteMarker "WP_3"; deleteMarker "WP_4"; deleteMarker "WP_5"; // 1.Wegpunkt direkt beim Spieler!! [player, getPos player, "MOVE", 0, _sichtbar] call _addWP; // WP Marker start _markerstr = createMarker["WP_1",getpos player]; _markerstr setMarkerShape "ICON"; _markerstr setMarkerType "Arrow"; _markerstr setMarkerText "WP 1"; //WP Marker ende _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; [player, getPos _obj, "MOVE", 50, _sichtbar] call _addWP; // WP Marker start _markerstr = createMarker["WP_2",getpos _obj]; _markerstr setMarkerShape "ICON"; _markerstr setMarkerType "Arrow"; _markerstr setMarkerText "WP 2"; //WP Marker ende _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; [player, getPos _obj, "MOVE", 50, _sichtbar] call _addWP; // WP Marker start _markerstr = createMarker["WP_3",getpos _obj]; _markerstr setMarkerShape "ICON"; _markerstr setMarkerType "Arrow"; _markerstr setMarkerText "WP 3"; //WP Marker ende _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; [player, getPos _obj, "MOVE", 50, _sichtbar] call _addWP; // WP Marker start _markerstr = createMarker["WP_4",getpos _obj]; _markerstr setMarkerShape "ICON"; _markerstr setMarkerType "Arrow"; _markerstr setMarkerText "WP 4"; //WP Marker ende _obj = _allObj select (ceil random (count _allObj) - 1); _allObj = _allObj - [_obj]; [player, getPos _obj, "MOVE", 50, _sichtbar] call _addWP; // WP Marker start _markerstr = createMarker["WP_5",getpos _obj]; _markerstr setMarkerShape "ICON"; _markerstr setMarkerType "Arrow"; _markerstr setMarkerText "WP 5"; //WP Marker ende //Back to Base, dieser wegpunkt ist der startpunkt _wp = [player, _basis, "MOVE", 50] call _addWP; //beim letzten Wegpunkt hinzufügen ob die Wegpunkte angezeigt werden sollen _wp ShowWaypoint _sichtbar; // nur zum Testen cash = 0; _wp setWaypointStatements ["true", "cash = cash + 500; player sideChat format['cash: %1',cash]"]; // Ausrichtung der Wegpunkte , von - zu wegpunkt possition sollten mehr wegpunkte erstellt werden, muss müssen diese hier aufgeführt werden. "WP_1" setMarkerDir ([waypointPosition [group Player, 0],waypointPosition [group Player, 1]] call _dir2obj); "WP_2" setMarkerDir ([waypointPosition [group Player, 1],waypointPosition [group Player, 2]] call _dir2obj); "WP_3" setMarkerDir ([waypointPosition [group Player, 2],waypointPosition [group Player, 3]] call _dir2obj); "WP_4" setMarkerDir ([waypointPosition [group Player, 3],waypointPosition [group Player, 4]] call _dir2obj); "WP_5" setMarkerDir ([waypointPosition [group Player, 4],waypointPosition [group Player, 5]] call _dir2obj); |
![]() |
![]() |
#19 (permalink) |
![]() ![]() ![]() ![]() Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
![]()
Versuche vielleicht noch einiges eleganter zu lösen.
Die Marker löschen mit forEach: {...} forEach [....]; Dann eine Funktion zum erstellen der Marker, die so aufzurufen ist: ["Name",Position,"Shape","Type","Text"] call _marker; Weil Xeno mich gerügt hat eine veraltete Programmierung zu verwenden, zeige ich dir noch wie es sein soll: Code:
//Funktion ..... _marker = { private "_m"; _m = createMarker[_this select 0, _this select 1]; _m setMarkerShape _this select 2; _m setMarkerType _this select 3; _m setMarkerText _this select 4; _m }; Keine Kommentare ( // ....) oder Pausen ( sleep 1; ) in eine Funktion schreiben (zwischen den {....}). |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|