CNDG
Würden Sie gerne auf diese Nachricht reagieren? Erstellen Sie einen Account in wenigen Klicks oder loggen Sie sich ein, um fortzufahren.


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

 

 While macht Probleme

Nach unten 
3 verfasser
AutorNachricht
Pitri
Feldmarschall
Feldmarschall
Pitri


Männlich Alter : 30
Ort : Karlsruhe
Anmeldedatum : 02.03.09

While macht Probleme Empty
BeitragThema: While macht Probleme   While macht Probleme EmptyDo Apr 15, 2010 4:51 pm

Hi Leute Very Happy

Hier bin ich wieder und habe ein Problem!

Ich verstehe das nicht! Wenn ich eine While-Schleife mache, die Alle Objekte mit Anforderung XYZ erfüllt, hängt sich manchmal die Engine auf! Mir ist aufgefallen, dass die mit FindObject() immer funktionieren und die mit FindObject2() nur selten! D:

In meinem Objekt habe ich wieder eine Schleife und die hängt sich wieder auf, Stillstand!

Code:
  var pTarget;
  while(pTarget = FindObject2(Find_OCF(OCF_Living),Find_Distance(100)))
    [...]

Jetzt will ich nur wissen, was habe ich falsch gemacht? :O

Danke für eure antworten!
Nach oben Nach unten
http://www.clonk-fanpage.lima-city.de
Gamer
Staatsrat
Staatsrat
Gamer


Männlich Alter : 28
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

While macht Probleme Empty
BeitragThema: Re: While macht Probleme   While macht Probleme EmptyDo Apr 15, 2010 5:12 pm

oO Was willst du denn mit dieser while Schleife erreichen?
Wenn du z.B ALLE Objekte die deinne Bdeingungen erfüllen suchen willst, würde ic hdas so machen:
Code:

var pTargets=[];
pTargets = FindObjects(Find_Distance(100),Find_OCF(OCF_Living));
for(var element in pTargets){
                                          //Hier IRGENTWAS mit den gefunden objekten machen
                                        }
Wenn du nur das erst gefundene Objekt haben willst, also mit FindObject2() weiterarbeiten willst, machst du einfach:
Code:
var pTarget;
pTarget=FindObject2(Find_OCF(OCF_Living),Find_Distance(100));
Und das wars! Keine While Schleifen irgentwie oder so..
Ach nochwas: Weil du sagst manchmal findet es keine Objekte. Wenn du Find_Distance(100) machst dann ist das ein RELATIV kleiner Berreich in dem Gesucht wird. Da musst das Lebewesen schon nah drann sein.
Nach oben Nach unten
http://www.gamer95.npage.de/
Pitri
Feldmarschall
Feldmarschall
Pitri


Männlich Alter : 30
Ort : Karlsruhe
Anmeldedatum : 02.03.09

While macht Probleme Empty
BeitragThema: Re: While macht Probleme   While macht Probleme EmptyDo Apr 15, 2010 5:28 pm

Nun ja... Ich denk, ich poste mal den ganzen Script, dass ihr den Sinn für meine Schlefe findet!

Code:
/*-- Selbstangreifender KI-Flint --*/

#strict 2
#include FLNT

local pVictim,iPower;

func Initialize()
{
  SetGraphics(0,this,FLNT);
  AddEffect("SearchForTarget",this,100,10,this);
  if(!iPower)
    iPower=50;
  return true;
}

func FxSearchForTargetTimer()
{
  if(!pVictim)
  {
    var pTarget;
    while(pTarget = FindObject2(Find_OCF(OCF_Living),Find_Distance(100)))
      if(GetAlive(pTarget))
        if(PathFree(GetX(this),GetY(this),GetX(pTarget),GetY(pTarget)))
        {
          pVictim = pTarget;
          AddEffect("MoveToTarget",this,100,1,this);
          RemoveEffect("SearchForTarget",this);
        }
  }
  return true;
}

func FxMoveToTargetTimer()
{
  var iAngle = Angle(GetX(this),GetY(this),GetX(pVictim),GetY(pVictim));
  SetXDir(Cos(iAngle-90,iPower));
  SetYDir(Sin(iAngle-90,iPower));
  //SetCommand nur wegen Strg+F7!
  SetCommand(this,"MoveTo",this,GetX(pVictim),GetY(pVictim));
  var iXDistance = Abs(GetX(this)-GetX(pVictim));
  var iYDistance = Abs(GetY(this)-GetY(pVictim));
  if(iXDistance < 10)
    if(iYDistance < 10)
      Hit();
  return true;
}

func Launch(object pTarget,int iStrength)
{
  RemoveEffect("SearchForTarget",this);
  pVictim = pTarget;
  if(!iStrength)
    iStrength = 50;
  else iPower = iStrength;
  AddEffect("MoveToTarget",this,100,1,this);
  return true;
}
Nach oben Nach unten
http://www.clonk-fanpage.lima-city.de
Gamer
Staatsrat
Staatsrat
Gamer


Männlich Alter : 28
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

While macht Probleme Empty
BeitragThema: Re: While macht Probleme   While macht Probleme EmptyDo Apr 15, 2010 6:17 pm

Schreib deine FxSearchForTargetTimer() zu der hier um:
Code:

func FxSearchForTargetTimer()
{
  if(!pVictim)
  {
    var pTarget;
    pTarget = FindObject2(Find_OCF(OCF_Living),Find_Distance(100));
      if(GetAlive(pTarget))
        if(PathFree(GetX(this),GetY(this),GetX(pTarget),GetY(pTarget)))
        {
          pVictim = pTarget;
          AddEffect("MoveToTarget",this,100,1,this);
          RemoveEffect("SearchForTarget",this);
        }
  }
  return true;
}
Ach was mir aufgefallen ist: Verursacht der Script icht haufenweiße Klammerfehler? GetX(this) z.B. Oder ist das bei #strict 2 so?
Nach oben Nach unten
http://www.gamer95.npage.de/
Bowserkoopa
Staatsrat
Staatsrat
Bowserkoopa


Männlich Alter : 30
Anmeldedatum : 21.12.08

While macht Probleme Empty
BeitragThema: Re: While macht Probleme   While macht Probleme EmptyDo Apr 15, 2010 6:53 pm

GetX(this) ist schon verwendbar. This selbst hat nämlich optionale Klammern.
Nach oben Nach unten
Pitri
Feldmarschall
Feldmarschall
Pitri


Männlich Alter : 30
Ort : Karlsruhe
Anmeldedatum : 02.03.09

While macht Probleme Empty
BeitragThema: Re: While macht Probleme   While macht Probleme EmptyFr Apr 16, 2010 3:17 pm

Ich habe mir angewöhnt this, return, true und false ohne Klammern zu schreiben, ich finds einfacher so :O

Zum Script : Ich konnte noch nicht testen, obs geklappt hat, aber gleic mach ichs!
Nach oben Nach unten
http://www.clonk-fanpage.lima-city.de
Gesponserte Inhalte





While macht Probleme Empty
BeitragThema: Re: While macht Probleme   While macht Probleme Empty

Nach oben Nach unten
 
While macht Probleme
Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» Probleme mit #appendto
» Probleme mit if und Variablen
» Alien macht keinen Schaden

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