Clonk-Center Titelbild

Clonk Center Forum / Allgemein / Script Problem


[ ]


Seite 1[1] [2]

Von Dragongaga am 24.11.2008 18:19  
Hi Leute
Also ich hab hier an einer Idee von Ceasar1993 gebastelt, dem Zauber zum Clonks Aufspüren.
Der soll egtl. Alle Clonks in einem Radius von 200Px mit Zauberfunken markieren, bzw. mit der
Fackelkombo, soll er auch magisch getarnte Clonks und getarnte Assas anzeigen aber außer, dass
die Fackel verschwindet, passiert nix. Kann mir vllt jemand sagen, was ich hier falsch gemacht hab?
Achja, die Variablen: fTorch...Kombotrigger
                      pObj...s.o.
                      pClonk...Der zu markierende Clonk
geschickter wäre es gewesen, ich hätte die Variablen pObj und pClonk Threadlokal gemacht, aber dass wollte die Engine nicht: "Unknown Identifier 'var'", Dabei war die Zeile mit dem var aus der Doku kopiert...
Also, danke schon im voraus
tHE_fREAK

/* Leben offenbahren */

#strict

local fTorch, pObj, pClonk;

func Activate(pCaster)
{
  if(pObj = FindContents(_TRC,pCaster)) //Kombo mit Fackel
  {
    fTorch = 1;
    RemoveObject(pObj);
  }
  while(pClonk=FindObject(0,GetX(pCaster)-200,GetY(pCaster)-200,401,401,OCF_Alive(),0,0,AnyContainer(),pClonk))
  {
    if(ObjectDistance(pClonk,pCaster) <= 200)
      if(GetOCF(pClonk) == OCF_CrewMember()) //Bistu Crew?
        if(CheckCamou(pClonk)) return(0); //Bistu getarnt?
          if(Hostile(GetOwner(pClonk),GetOwner(pCaster))) //Bistu verfeindet?
          { //rote Funken
            CreateParticle("MSpark",GetX(pClonk)+RandomX(-8, 8),GetY(pClonk)+RandomX(-10, 10),0,-20,RandomX(18,38),RGB(255,0,0));
            CreateParticle("MSpark",GetX(pClonk)+RandomX(-8, 8),GetY(pClonk)+RandomX(-10, 10),0,-20,RandomX(18,38),RGB(240,15,15));
          }
          if(!Hostile(GetOwner(pClonk),GetOwner(pCaster))) //wenn nicht, dann bistu wohl befreundet?
          { //grüne Funken
            CreateParticle("MSpark",GetX(pClonk)+RandomX(-8, 8),GetY(pClonk)+RandomX(-10, 10),0,-20,RandomX(18,38),RGB(0,255,0));
            CreateParticle("MSpark",GetX(pClonk)+RandomX(-8, 8),GetY(pClonk)+RandomX(-10, 10),0,-20,RandomX(18,38),RGB(15,240,15));
          }
  }
  Sound("Magic1");
  RemoveObject();
  return(1);
}

func CheckCamou(pObject)
{
  //haben wir Kombo?
  if(fTorch) return(0);
  //sind wir irgendwie getarnt?
  if(GetEffect("Hide", pObject)) return(1);
  if(GetEffect("InvisPSpell", pObject)) return(1);
  return(0);
}

/* Zaubercombo */

public func GetSpellClass() { return(EART); }
public func GetSpellCombo() { return ("232"); } // (1: Backward; 2: Down; 3: Forward; 4: Throw; 5: Jump; 6: Dig)

Von Twonky am 25.11.2008 13:59  
So im Überfliegen würde ich sagen, du hast folgende Probleme:
a) Deine ifs sind vermurkst, da fehlen wohl geschweifte Klammern an einigen Stellen.
b) CreateParticle verwendet relative Koordinaten. Ich habe keine Ahnung, wo ein Zauber entsteht, aber vllt. hilft AbsX() und AbsY().

Außerdem, ließe sich
>if(!Hostile(GetOwner(pClonk),GetOwner(pCaster))) //wenn nicht, dann bistu wohl befreundet?

nicht einfach durch ein else ersetzen?

Und das mit deinen Vaiablen ist, wie du schon sagst, unschön, aber nicht falsch, wenn ich das richtig sehe.

Von Dragongaga am 25.11.2008 18:31  
Tja, ich weiß deine Hilfe zu schätzen Twonky, aber es funktioniert trotzdem nicht...
Ich würd ja gern den aktuellen Script posten, aber das edit klappt iwie nicht^^
Nun, also bei den ifs war ich mir nicht sicher,
also hab ich wo es ging if(...) durch if(!...) return(0); ersetzt.
Kann sein, dass es wieder mal an der nichtfunktion der Editormodus-intern-dateiedit-aktualisierungs-Funktion liegt, aber wie gesagt: es passiert noch immer nix.

Editormodus-intern-dateiedit-aktualisierungs-Funktion damit meine ich, ich öffne ein script im CR-Editorfenster, ändere etwas und speichere es danach ab. Problem: Die Änderungen werden nicht in der Originaldatei abgelegt, sondern es wird soz. ein virtuelles Abbild der Datei erstellt, indem die Änderungen abgespeichert werden. Das Spiel benützt dann aber die Originaldatei, welche auch im Textfenster rechts angezeigt wird. Wenn ich das Script dann wieder im Fenster öffne, kommt aber das Veränderte Abbild, dh: Ich kann die Datei editieren, die Veränderungen abspeichern und dann wieder öffnen. Laut Textfenster und Spiel ist die Datei aber unverändert, auch wenn ich das Editorfenster schließe und wieder öffne.
Die Änderungen werden nur wirksam, wenn ich sie direkt im Explorer mache.

Der Fehler tritt aber immer nur zufällig in unregelmäßigen Abständen auf und ist ziemlich lästig.

Von Twonky am 26.11.2008 19:29  
Arbeite mit Entpackten Groups und am besten editiere Szens nicht mit dem Editor. Das kann manchmal Nerven sparen. Obwohl ich zugegebenermaßen den Editor auch meistens noch benutze.

Edit: So könnte das Script aussehen. Das mit Tarnen hab ich jetzt nicht getestet, könnte aber klappen. Hauptfehler war wohl das vergessene AbsX(),AbsY().
Das Script ist jetzt überhaupt auf einem neueren Stand und Unnützes wurde entfernt.


#strict 2


func Activate(pCaster)
{  
  var fTorch, pObj, pClonk;
  if(pObj = FindContents(_TRC,pCaster)) //Kombo mit Fackel
  {
    fTorch = true;
    RemoveObject(pObj);
  }
  pObj = FindObjects(Find_Distance(200),Find_OCF(OCF_CrewMember));
  for (pClonk in pObj)
  {
    if(CheckCamou(pClonk)) //Bistu getarnt?
      if(!fTorch) //Und keine Fackel?
        continue;  //Dann vergiss es.
    
    if(Hostile(GetOwner(pClonk),GetOwner(pCaster))) //Bistu verfeindet?
      { //rote Funken
        CreateParticle("MSpark",AbsX(GetX(pClonk))+RandomX(-8, 8),AbsY(GetY(pClonk))+RandomX(-10, 10),0,-20,RandomX(18,38),RGB(255,0,0));
        CreateParticle("MSpark",AbsX(GetX(pClonk))+RandomX(-8, 8),AbsY(GetY(pClonk))+RandomX(-10, 10),0,-20,RandomX(18,38),RGB(240,15,15));
      }
      else //wenn nicht, dann bistu wohl befreundet?
      { //grüne Funken
            CreateParticle("MSpark",AbsX(GetX(pClonk))+RandomX(-8, 8),AbsY(GetY(pClonk))+RandomX(-10, 10),0,-20,RandomX(18,38),RGB(0,255,0));
            CreateParticle("MSpark",AbsX(GetX(pClonk))+RandomX(-8, 8),AbsY(GetY(pClonk))+RandomX(-10, 10),0,-20,RandomX(18,38),RGB(15,240,15));
      }
  }
  Sound("Magic1");
  RemoveObject();
  return(1);
}

func CheckCamou(pObject)
{
  //haben wir Kombo?
  //sind wir irgendwie getarnt?
  if(GetEffect("Hide", pObject)) return(1);
  if(GetEffect("InvisPSpell", pObject)) return(1);
  return(0);
}

/* Zaubercombo */

public func GetSpellClass() { return(EART); }
public func GetSpellCombo() { return ("232"); } // (1: Backward; 2: Down; 3: Forward; 4: Throw; 5: Jump; 6: Dig)

Von Dragongaga am 30.11.2008 09:45  
Thx, alter.
Jetz funkionierts endlich.
Die Kombo funzt auch, also mit Fackel seh ich getarnte Clonks und ohne eben nicht^^
AbsX, AbsY...sollte ich mir mal merken
nochmal thx
Greetz.
  Dragongaga

Von Dragongaga am 30.11.2008 10:56  
Und du kriegst natürlich ein Credit in der Beschreibung^^

Von Twonky am 01.12.2008 13:25  
Bitte, bitte. Ist nicht unbedingt nötig, für mich war das eher einfach. Aber danke.

Von Feuermonster am 05.01.2009 08:34  
Zauber enstehen an der Position des Clonkes. Sofern sie normal gezaubert und nicht sonstwie herbeigeschworen werden.

Von mozart am 25.11.2008 17:24  
Für schnelle und exklusive Scripthilfe gibts den CNDG
(Clonk Newbie Developper Guide)

Von Luchs am 26.11.2008 18:07  
Hilf doch lieber einfach statt ihn wieder woanders hin zu verweisen? Ich hab das Gefühl, dass der achsotolle CNDG am besten Werbung auf sich machen kann (und sonst nichts). Außerdem ist das tmforum nicht wirklich gut aber wesentlich besser als irgendwelche Gratisforen.

Von mozart am 26.11.2008 21:01  
ICH kann nicht scripten, ich bin aufm CNDG nur moderator

Von Deffi am 26.11.2008 21:05  
Und deshalb musst du das Forum zuspammen?

Von mozart am 26.11.2008 21:30  
meiner Meinung nach war das kein Spamm, ich hab ihn auf eine Seite verwiesen, die ihm weiterhelfen kann.

Von Luchs am 27.11.2008 16:55  
Hier wird ihm doch auch weitergeholfen.

Von mozart am 27.11.2008 17:50  
deswegen kann ichn ihn doch trotzdem aufs CNDG verweisen
Und mo_sc verweißt ihn ja auch auf was anderes

Von Deffi am 27.11.2008 18:24  
Und weil er es macht, darfst du das auch? (oder auch umgekehrt)

Von mozart am 27.11.2008 18:34  
es gibt keinerlei aussage es wäre verboten
Bloß hat Luchs anscheinend entweder was gegen mich oder gegen das CNDG und kommt deshalb mit einem Argument und man kann meine Antwort auch als Frage verstehen warum er sich bei mir darüber beschwert und nicht bei mo_sc

Von Deffi am 27.11.2008 18:40  
Ich habe nie behauptet, es wäre verboten, sondern es ist einfach "unerwünscht". Ich glaube, du würdest es auch nicht mögen, wenn das CNDG vollgeschrieben werden würde mit Posts wie "Geh doch auf's CC, da bekommst' du auch Scripthilfe!"

Von mozart am 27.11.2008 18:55  
Entschuldigung, ich habe nicht gewusst dass es "unerwünscht" ist
Was ich immer noch nicht verstehe ist warum hier ich dafür zusammengeschissen werde und nicht mo_sc
und bei dem von dir geposteten Szenario gibts es noch den kleinen Unterschied dass das CNDG sich auf Hilfe spezialisiert hat, während das CC recht umfassend ist.
Und fürs CC braucht man ja keine Werbung machen, ich würde sagen jeder Clonk kennt es

Von mo_sc am 27.11.2008 21:26  
Hm, s' bringts nicht.! Wann werde ich nur mal wieder zusammengeschissen...?!

Von Deffi am 28.11.2008 22:10  
>und bei dem von dir geposteten Szenario

whut?

>es noch den kleinen Unterschied dass das CNDG sich auf Hilfe spezialisiert hat, während das CC recht umfassend ist

Eben deshalb ja, dann braucht man nicht noch auf eine andere Seite verlinken.

>Was ich immer noch nicht verstehe ist warum hier ich dafür zusammengeschissen werde

Ich mach hier niemanden irgendwo irgendwann fertig.

Von mozart am 29.11.2008 14:26  
>whut?

Das Szenario <<wenn das CNDG vollgeschrieben werden würde mit Posts wie "Geh doch auf's CC, da bekommst' du auch Scripthilfe!">>

>Eben deshalb ja, dann braucht man nicht noch auf eine andere Seite verlinken.

Warum?
Ist es nicht besser sich zu spezialisieren als alles auf einen posten zu legen?

>Ich mach hier niemanden irgendwo irgendwann fertig.

Das bezog sich auch nicht auf dich... (sondern auf Luchs)

Von Deffi am 30.11.2008 18:26  
>Das bezog sich auch nicht auf dich... (sondern auf Luchs)

->ICH hab doch gar kein Problem, aber Caesar anscheinend

>Ist es nicht besser sich zu spezialisieren als alles auf einen posten zu legen?

Hier seh ich keinen Sinn, wenn er schon in's CC schreibt und du ihn dann noch mal extra irgendwo hinschickst?

Von mozart am 30.11.2008 20:01  
boah, dann bezieht es sich eben doch auf dich
ist doch gehopft wie gesprungen, zumindest hat irgendjm mir gesagt ich würde spammen und irgendjm hat anstoß daran genommen, dass ich ihn aufs CNDG verwiesen habe.

>Hier seh ich keinen Sinn, wenn er schon in's CC schreibt und du ihn dann noch mal extra irgendwo hinschickst?

Aber das kann ihm ja auch das nächste mal wenn er etwas braucht helfen

Von Deffi am 30.11.2008 20:28  
Komm mal runter?

Von mozart am 03.12.2008 13:32  
o_O
ich find mich grad eig ganz entspannt...

Von mo_sc am 27.11.2008 21:24  
Jah, man wir wissens bald.

Von mozart am 27.11.2008 21:39  
Wenn mich caesar beschuldigt das bla werd ich doch wohl noch antworten dürfen

Von Twonky am 27.11.2008 20:36  
Ich glaube, das Problem ist nicht, *dass* du auf den CNDG verwiesen hast, sondern *wie*. Dein Post war mehr wie eine schlechte Werbung. Besser wäre wohl etwas gewesen wie:

Ah, ich seh schon, du hast in deinem Script ein paar Probleme mit den ifs und du solltest dir FindObjects() angewöhnen.[...] Nebenbei, wenn du Scripthilfe brauchst, wir im CNDG helfen dir auch gerne. ;)


Das wäre so wohl besser angekommen.

Von mozart am 27.11.2008 21:15  
gut, werds mir merken

warum nich gleich so :-)

Seite 1[1] [2]