Einzelnen Beitrag anzeigen
Alt 07.03.2011, 19:56   #18 (permalink)
Anemia
500 Beiträge
 
Benutzerbild von Anemia
 
Registriert seit: 20.05.2009
Beiträge: 605
Standard

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"];
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);
Anemia ist offline