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

Teilen | 
 

 Unverwundbarkeit?

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
AutorNachricht
Thoros
Generalmajor
Generalmajor
avatar

Anmeldedatum : 22.09.09

BeitragThema: Unverwundbarkeit?   Mi Jun 23, 2010 10:54 pm

Hallo Leute,


Mein Problem ist folgendes...
Ich will ein Objekt machen das:

-man mit Doppel-Graben Aktivieren kann
-es einen heilt wenn man 20% Gesundheit oder weniger hat
-und es einen dann 5 sec (165 frames) lang Unverwundbar macht.

So weit bin ich schon:

Code:

#strict

func Activate()

if(GetEnergy(GetCursor(0)) < 20)
{
  DoEnergy(GetPhysical("Energy", 0, GetCursor(0))*50/100000, GetCursor(0));
  CastParticles("PSpark", 10,100, 0,0, 100, 200, RGBa(255,255,0,0), RGBa(255,255,0,0));
  Sound("Zauber32.wav");
  RemoveObject();
 
  return(1);
}


Mit dem Heilen Funktioniert es schon, aber ich weis nicht wie ich das mit der Unverwundbarkeit hin bekomme.


Hoffe jemand kann mir helfen Very Happy
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Unverwundbarkeit?   Mi Jun 23, 2010 11:36 pm

Ein Effekt. Jeder Effekt kann sich zu Wort melden, wenn der betroffene Clonk (oder das Lebewesen, oder der Stein, wo der Effekt eben dranhängt) Schaden bekommt. Der Rückgabewert bestimmt dann, wieviel Schaden der Effekt durchlässt. So kann man entweder den Schaden halbieren, enorm steigern oder auch komplett abblocken (return 0;).

Also vor (!) RemoveObject():
AddEffect("Invincibility", pClonk, 500, 165, 0, GetID(this));
Dafür musst du aber Activate(pClonk) als Funktion haben. Darüber hinaus solltest du GetCursor() durch pClonk ersetzen, damit es immer der richtige Clonk bekommt, sonst bekommt es immer der ausgewählte des 1. Spielers. Wink

Im Einzelnen heißt die Zeile:
Füge pClonk den Effekt "Invincibility" hinzu. Setze Prorität 500 und den Timer auf 165. Alle benötigten Funktionen findest du in dieser Definition (GetID(this)).
Der Clonk hat nun also einen Effekt. Prorität 500 heißt einfach, dass es so ziemlich über allen anderen Effekten steht und somit jeglichen Schaden abblocken kann. GetID(this) verweist auf die Definition, wo die Callbacks drinstehen. Ein Objekt ist ja nicht möglich (daher hier 0), da es sich löscht.
Der Timer steht auf 165, also würde alle 165 Frames FxInvincibilityTimer() aufgerufen. Wenn man die Funktion aber gar nicht definiert, wird der Effekt dann einfach entfernt.

Nun zum Schaden:
protected func FxInvincibilityDamage(object pTarget, int iEffectNumber, int iDmgEngy) {
if (iDmgEngy < 0)
return;
return iDmgEngy;
}

iDmgEngy ist der erhaltene Schaden. Ist er < 0, wird 0 zurückgegeben - es kommt nichts durch. Höhere kommen hingegen durch, damit zB Heileffekte noch funktionieren.

Alles in allem müsste so aussehen:

Code:
#strict 2 //*räusper* musste sein, ja. :>

protected func Activate(object pClonk) {
  if (GetEnergy(pClonk) < 20) {
    DoEnergy(200, pClonk); //Hehe, reicht. ;)
  CastParticles("PSpark", 10,100, 0,0, 100, 200, RGBa(255,255,0,0), RGBa(255,255,0,0));
  Sound("Zauber32.wav");
  AddEffect("Invincibility", pClonk, 500, 165, 0, GetID(this));
  RemoveObject();
  return 1;
}

protected func FxInvincibilityDamage(object pTarget, int iEffectNumber, int iDmgEngy) {
  if (iDmgEngy < 0)
    return;
  return iDmgEngy;
}
Nach oben Nach unten
Benutzerprofil anzeigen
Thoros
Generalmajor
Generalmajor
avatar

Anmeldedatum : 22.09.09

BeitragThema: Re: Unverwundbarkeit?   Do Jun 24, 2010 12:27 am

Erstmal Danke für die Hilfe!
Aber:
-Das Object geht nicht weg nach benutzung.
-Der Clonk bekommt immer noch schaden.

Und noch wegen dem Schaden:
Wird jeder Schaden verhindert? Weil ich habs mit dem Chaosgewehr (aus dem alten Hazard Pack) und mit abwerfen getestet. Bei beidem bekam der Schaden.
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Unverwundbarkeit?   Do Jun 24, 2010 12:38 am

Oh, da ist eine Klammer zu viel. Nach dem if (...) einfach die öffnende geschweifte Klammer rausnehmen, und es klappt.
Sollte die Engine aber eig auch als Fehler ausspucken^^

Edit: Ja, jeder Schaden wird verhindert.
Nach oben Nach unten
Benutzerprofil anzeigen
awed
Kadett
Kadett


Männlich Ort : berlin
Anmeldedatum : 24.02.10

BeitragThema: Re: Unverwundbarkeit?   Do Jun 24, 2010 8:33 pm

Ich würd empfehlen bei RemoveObject()
this() in die klammer zu schreiben Wink
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Unverwundbarkeit?   Do Jun 24, 2010 9:40 pm

this hat denselben Effekt wie 0. Hier zumindest. Siehe Doku:
Zitat :
0 bei lokalem Aufruf.
Und 0 kann man weglassen, also reicht auch RemoveObject(). Und die Klammern bei this sind veraltet. Wink
Nach oben Nach unten
Benutzerprofil anzeigen
Thoros
Generalmajor
Generalmajor
avatar

Anmeldedatum : 22.09.09

BeitragThema: Re: Unverwundbarkeit?   Fr Jun 25, 2010 3:40 pm

Es geht jetzt. Der fehler war das bei "this" von...

Code:
  AddEffect("Invincibility", pClonk, 500, 165, 0, GetID(this))

...die Klammer fehlt. Ich habs grad getestet und es geht : )
Kann es daran liegen das ich Endeavour habe?

Jetz hab ich es so:

Code:
 AddEffect("Invincibility", pClonk, 500, 165, 0, GetID(this()))

Nur kommt jetzt die Meldung:

Code:
C4AulExec
(SDHG:SDHG)::Activate[1]
execution break: parser error
at this position

Aber er tut was er machen soll.
Was heißt aber diese Meldung?

Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Unverwundbarkeit?   Fr Jun 25, 2010 3:44 pm

Hm. Angesichts der Fehlermeldung und der Tatsache, dass this nicht tut, sondern nur this(), nehme ich mal an, du nutzt nicht CR?
Jedenfalls hat er nen Parserfehler. Dürfte wohl an return 1; liegen, das bei CE/CP return(1); heißen muss.
Nach oben Nach unten
Benutzerprofil anzeigen
Thoros
Generalmajor
Generalmajor
avatar

Anmeldedatum : 22.09.09

BeitragThema: Re: Unverwundbarkeit?   Sa Jun 26, 2010 8:19 pm

Naja. Es tut was es soll. Das zählt doch^^
Thx für alle die geholfen haben!
Nach oben Nach unten
Benutzerprofil anzeigen
Pitri
Feldmarschall
Feldmarschall
avatar

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

BeitragThema: Re: Unverwundbarkeit?   Sa Jun 26, 2010 10:08 pm

Und die Errors sind dir egal? oO
Nach oben Nach unten
Benutzerprofil anzeigen http://www.clonk-fanpage.lima-city.de
Gesponserte Inhalte




BeitragThema: Re: Unverwundbarkeit?   

Nach oben Nach unten
 
Unverwundbarkeit?
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 1

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