02.07.2016, 22:23 | #1 (permalink) |
Registriert seit: 08.11.2015
Beiträge: 18
|
Marker in einem zufälligen Feld setzen
Moin,
ich möchte auf der neuen Map(Tanoa) ein Marker in einem Reisfeld setzten. Allerdings haben Pflanzen ja kein Classname, oder?? Somit kann ich ja nicht einfach eine zufällige Position suchen und dann mit nearestObject eine Reispflanze finden. Geht das irgendwie anders oder ist das überhaupt nicht möglich? MfG Tim |
03.07.2016, 12:58 | #2 (permalink) |
Registriert seit: 10.10.2006
Beiträge: 263
|
also es geht schon. Ich weis nur gerade nicht wo Reisfelder auf der map sind aber stelle dich mal in ein Reisfeld rein und mach
Code:
nearestTerrainObjects [player, [], 5, false] |
03.07.2016, 15:35 | #3 (permalink) |
Registriert seit: 08.11.2015
Beiträge: 18
|
Ja dann bekomm ich als Rückgabe ja die ID und das Modell was genutzt wird.
Code:
[297170: b_sugarcane_sapling_row_f.p3d,297165: b_sugarcane_sapling_row_f.p3d,...] Code:
xyz = nearestTerrainObjects [player, ["b_sugarcane_sapling_row_f"], 5, false] MfG Tim |
04.07.2016, 11:34 | #4 (permalink) |
Falls das Reisfeld einen eigenen definierten Untergrund hat kannst du es evtl. damit finden.
https://community.bistudio.com/wiki/surfaceType Dann müsstest du um es automatisch zu finden jedoch immer noch die Karte mit einem Dummy-Objekt was in einem bestimmten Raster über die Map wandert und den Untergrund abfragt. Ist also relativ aufwändig. Wäre also einfacher die Positionen aller Reisfelder in ein Array aufzunehmen und aus diesem dann eine zufällige Position zu wählen. Code:
_alleFelderPos = [[1,2,3],[3,2,1],[4,5,6]]; _randomFeldPos = selectRandom _alleFelder; _reisMarker = createMarker ["reis",_randomFeldPos];
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ Geändert von Pfandgiraffe (04.07.2016 um 11:37 Uhr). |
|
05.07.2016, 19:56 | #5 (permalink) |
Registriert seit: 08.11.2015
Beiträge: 18
|
Erstmal Vorweg ich habe am Anfang ausversehen Resifelder geschrieben, allerdings ist das Zuckerrohr was da auf Tanoa wächst.
Das Problem an einem Array mit allen Positionen ist das es relativ viele Zuckerrohrfelder gibt. Es gibt ja den Befehl nearestTerrainObjects, mit dem man unter anderem jeglichen Art von Busch finden kann der in einem bestimmten Umkreis ist. https://community.bistudio.com/wiki/...TerrainObjects Code:
nearestTerrainObjects [player,["BUSH"],20] ; Wäre es nicht irgendwie möglich eine neue type name zu erstellen und dort dann nur das Zuckerrohr reinzumachen??? Code:
nearestTerrainObjects [player,["SugarCane"],20] ; |
05.07.2016, 20:11 | #6 (permalink) |
Nicht ohne Mods oder sogar einer komplett neuen Insel. Hast du surfaceType getestet?
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
06.07.2016, 08:50 | #7 (permalink) |
Registriert seit: 20.06.2016
Beiträge: 37
|
Wenn du mit nearestTerrainObjects deine zuckerpflanzen als objekt bekommst, dann kannst du doch mit typeOf nachschauen ob die nen classname haben...
Wenn es einen classname gibt: Um die arbeit der feldersuche nicht während der missi machen zu müssen, würede ich ein script schre9ben welches die komplette map scannt und alle felderpositionen in ein array packt, welches du dann mit diag_log oder copyToClipboard ausgibst. Danach kopierst du das array in ein script und kannst damit selectRandom machen.
__________________
Sarogahtyps Spawn Script Creator - SSSC the easy way to cache ur units, vehicles and their waypoints |
09.07.2016, 02:14 | #8 (permalink) |
Registriert seit: 08.11.2015
Beiträge: 18
|
Hatte die letzten Tage viel zu tun, deswegen eine etwas verspätete Antwort.
@Pfandgiraffe Der Boden ist ganz normales Grass wie es auch neben den Feldern überall ist. @Sarog Das Problem ist ja das es meines Wissens nach keine Classnames für Pflanzen gibt. Die Felsen haben ja auch erst mit der Einführung in den Editor ein Classname erhalten. Auch mit typeOf wird kein Classname angezeigt, was ja bestätigt das sie keine Classnames haben. MfG Tim Geändert von TimmK (09.07.2016 um 02:16 Uhr). |
09.07.2016, 09:22 | #9 (permalink) |
Registriert seit: 20.06.2016
Beiträge: 37
|
dann mach aus den zurückgegebenen objekten einen string und suche mit find nach dem modellnamen. Damit kannst du die felder 8dentifizieren.
objekt_str = str objekt; If ( objekt_str find "b_sugarcane_sapling_row_f.p3d" != -1) then { hint "zuckerfeld";} else {hint "kein zuckerfeld";}; So sollte es gehen, hab ich aber nicht getestet. Edit: _worldhalf = worldSize / 2; _farthest_point = sqrt (_worldhalf * _worldhalf + _worldhalf * _worldhalf); _worldcenter = [_worldhalf, _worldhalf]; _sugar = (nearestTerrainObjects [_worldcenter, "BUSH", _farthest_point, false]) select { _its_sugar = false; _obj_str = str _x; if ( obj_str find "b_sugarcane_sapling_row_f.p3d" != -1) then {_its_sugar = true;}; _its_sugar }; _sugar_posis = _sugar apply {getPos _x}; copyToClipboard str _sugar_posis; Das sollte die map nach allen zuckerpflanzen durchsuchen und die positionen als array in die zwischenablage kopieren...
__________________
Sarogahtyps Spawn Script Creator - SSSC the easy way to cache ur units, vehicles and their waypoints Geändert von Sarogahtyp (09.07.2016 um 17:21 Uhr). |
10.07.2016, 00:36 | #10 (permalink) |
Registriert seit: 08.11.2015
Beiträge: 18
|
Diese Script sucht jetzt eine zufällige Position und sucht dann nach Zuckerrohr und setzt einen Marker:
Code:
_centerPos = []call BIS_fnc_randomPos; _sugarPos = []; _bushes = nearestTerrainObjects [_centerPos, ["Bush"], 200,true]; for [{_x= 0},{_x <= count _bushes},{_x = _x + 1}] do { _testBush = _bushes select _x; if (str (_testBush) find "b_sugarcane_sapling_row_f"!=-1) then { _sugarPos = getPos (_bushes select _x), }; if (count _sugarPos == 1)exitWith{}; _sugarPos; }; _marker = createMarker ["Marker_1", _sugarPos]; _marker setMarkerShape "ICON"; _marker setMarkerType "hd_dot"; Nochmal danke für eure Hilfe Tim Geändert von TimmK (10.07.2016 um 00:48 Uhr). |
10.07.2016, 09:57 | #11 (permalink) |
Registriert seit: 20.06.2016
Beiträge: 37
|
Code:
_sugarPos = nil; while {isNil "_sugarPos"} do { _centerPos = [] call BIS_fnc_randomPos; _bushes = nearestTerrainObjects [_centerPos, ["Bush"], 200,false]; { if ((str _x) find "b_sugarcane_sapling_row_f"!=-1) exitWith {_sugarPos = getPos _x;}; } count _bushes; }; _marker = createMarker ["Marker_1", _sugarPos]; _marker setMarkerShape "ICON"; _marker setMarkerType "hd_dot"; For do ist meines wissens etwas langsamer als count und ich würd nearestTerrainObjects nicht sortieren lassen weil es dann auch schneller läuft. Du möchtest ja eh ne zufällige position haben, da ist das nicht notwendig.
__________________
Sarogahtyps Spawn Script Creator - SSSC the easy way to cache ur units, vehicles and their waypoints Geändert von Sarogahtyp (10.07.2016 um 10:02 Uhr). |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Marker für Gegner unsichtbar machen? | JeeperCreeper | Editing & Scripting | 1 | 01.11.2013 01:27 |
Marker verbergen | mo0504 | Editing | 0 | 28.09.2013 14:11 |
Marker an Gruppe heften | Phobos_4 | Editing & Scripting | 8 | 16.09.2013 11:39 |
Marker für Mitspieler nicht sichtbar | Wolkenbeisser | Multiplayer | 3 | 08.03.2013 16:56 |
Multiplayer Objekt Lokalitaet und Marker | TeTeT | Editing & Scripting | 11 | 04.12.2012 21:45 |