Ein Forum, in dem sich neue Clonk Entwickler untereinander austauschen können.
 
StartseiteStartseite  PortalPortal  FAQFAQ  SuchenSuchen  AnmeldenAnmelden  MitgliederMitglieder  LoginLogin  

Teilen | 
 

 Alle Objekte/Lebewesen/Fahrzeuge auf der Map auflisten

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
AutorNachricht
Tundanér
Fregattenkapitän
Fregattenkapitän
avatar

Männlich Alter : 23
Ort : Rödental
Anmeldedatum : 03.02.09

BeitragThema: Alle Objekte/Lebewesen/Fahrzeuge auf der Map auflisten   Do Aug 26, 2010 6:52 pm

Aaalso, ich versuch schon ewig ne Funktion zu basteln,mit der man alle Objekte auf der Karte in einem Menü aufgelistet bekommt und diese dann zerstören bzw. zu sich teleportieren kann aber iwie komm ich da nicht wirklich weiter...
Muss man das mithilfe eines arrays machen oder wie sonst?
Ich hab echt keine Ahnung Smile
Nach oben Nach unten
Benutzerprofil anzeigen
Extremclonk
Staatsrat
Staatsrat
avatar

Männlich Ort : Am Anti-Spam-Limes
Anmeldedatum : 19.01.09

BeitragThema: Re: Alle Objekte/Lebewesen/Fahrzeuge auf der Map auflisten   Do Aug 26, 2010 7:22 pm

Ich bin mir nicht sicher ob es die beste Lösung ist, aber es ist immerhin eine.

FindObjects() gibt die gefundenen Objekte bekanntlich als Array aus. Nun muss man FindObjects nur noch dazu bringen alle Objekte in die Suche einzubeziehen. Am einfachsten nimmst man hier wohl Find_InRect(0,0, LandscapeWidth(), LandscapeHeight()). So bekommt man eine Array in dem alle Objekte in der Landschaft drin sind. Wir erstellen einen Array "Objects" und dann:
Code:

Objects = FindObjects(Find_InRect(0,0, LandscapeWidth(), LandscapeHeight()));
Denke das funktioniert so.
Zum Ordnen von Array hat B_E
hier etwas geschrieben, ersten Kommentar.
Und dann ein Menü erstellen.
Allerdings hatte ich bei Menüs und Arrays immer das Problem das das Menü fehlerhaft wird sobald sich im Menükommando eine Variable befindet, da diese beim Aufruf des Eintrags nicht mehr zwangsläufig das ist was sie war als der Eintrag erstellt wurde. Aber vllt. weiß ja wer eine Lösung oder einen Ansatz der das Problem umgeht.
Nach oben Nach unten
Benutzerprofil anzeigen
Tundanér
Fregattenkapitän
Fregattenkapitän
avatar

Männlich Alter : 23
Ort : Rödental
Anmeldedatum : 03.02.09

BeitragThema: Re: Alle Objekte/Lebewesen/Fahrzeuge auf der Map auflisten   Do Aug 26, 2010 7:42 pm

Mh okay und wie pack ich das dann in ein Menü Question
Smile
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Alle Objekte/Lebewesen/Fahrzeuge auf der Map auflisten   Do Aug 26, 2010 8:01 pm

Extremclonk: Das Find_InRect ist nicht nötig. Wenns nicht da ist, werden einfach alle gefunden.
Blöderweise muss mindestens ein Parameter angegeben werden, aber da tuts auch einfach ein leeres Find_Not().
SetObjectOrder ist was ganz anderes, Arrays sortiert man mit den Sort_-Funktionen (zu finden in System.c4g/FindObject.c).

In ein Menü gepackt wird das Ganze zB so:
Code:
for (var obj in FindObjects(Find_Not()))
  AddMenuItem("%s zerstören", Format("Explode(10, Object(%d))", ObjectNumber(obj)), GetID(obj));
"%s zerstören"
Name des Eintrags. Für %s wird der Name des 3. Parameters eingefügt, hier also die ID des gefundenen Objekts.
Format("Explode(10, Object(%d))", ObjectNumber(obj))
Hässlich, aber tut: Die Objektnummer wird in das Kommando gequetscht und bei Ausführung in ein Objekt zurückverwandelt und explodiert dann.

for (&ref in array a)
geht alle Objekte (bzw Integer oder Strings, was halt drin ist) im array "a" durch und speichert den jeweiligen Eintrag in "ref". Der kann dann im Block verwendet werden.
Hier werden alle Objekte, die FindObjects zurückliefert, in "obj" gespeichert und dann ins Menü gepackt.


Edit: Find_Not() geht doch nicht. Du könntest aber zB Find_Category(~0) nehmen. Extremclonks Methode findet halt zB nicht Objekte außerhalb der Landschaft, auch wenn das eher selten stört.
Nach oben Nach unten
Benutzerprofil anzeigen
Tundanér
Fregattenkapitän
Fregattenkapitän
avatar

Männlich Alter : 23
Ort : Rödental
Anmeldedatum : 03.02.09

BeitragThema: Re: Alle Objekte/Lebewesen/Fahrzeuge auf der Map auflisten   Do Aug 26, 2010 8:44 pm

Irgendwie gehts nich,entweder bin ich zu doof oder zu schlau Wink

Code:
/*-- Neues Objekt --*/

#strict


func Activate(object pClonk)
{
 CreateMenu(GetID(),pClonk);
 for(var obj in FindObjects(Find_Category(C4D_Object)))
  AddMenuItem("%s zerstören",Format("Explode(10,Object(%d)))", ObjectNumber(obj),GetID(obj),pClonk));
}

Passt doch so oder?
Das Menü erscheint auch aber ohne einträge :O
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Alle Objekte/Lebewesen/Fahrzeuge auf der Map auflisten   Do Aug 26, 2010 9:59 pm

Fehler bei den Klammern Razz
Code:
AddMenuItem("%s zerstören", Format("Explode(10, Object(%d))", ObjectNumber(obj)), GetID(obj), pClonk);
Nach oben Nach unten
Benutzerprofil anzeigen
Tundanér
Fregattenkapitän
Fregattenkapitän
avatar

Männlich Alter : 23
Ort : Rödental
Anmeldedatum : 03.02.09

BeitragThema: Re: Alle Objekte/Lebewesen/Fahrzeuge auf der Map auflisten   Do Aug 26, 2010 10:04 pm

Thx jetzt funzts Very Happy
Nach oben Nach unten
Benutzerprofil anzeigen
Gesponserte Inhalte




BeitragThema: Re: Alle Objekte/Lebewesen/Fahrzeuge auf der Map auflisten   

Nach oben Nach unten
 
Alle Objekte/Lebewesen/Fahrzeuge auf der Map auflisten
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» Spalten nicht alle gleich groß im . Wie stelle ich das ein?
» Frage zu verschiedene Styles per Wahlschalter im Forum für alle Versionen
» Alle Pferdefans - Aufgepasst!
» PN an alle Mitglieder?
» IP Adresse für alle sichtbar

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
CNDG :: Sonstiges :: Anfragen-
Gehe zu: