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

Austausch | 
 

 Clonk nach ChangeDef nicht steuerbar

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
AutorNachricht
Dark
Oberst
Oberst
avatar

Männlich Alter : 23
Ort : Deutschland/Frankfurt Main
Anmeldedatum : 07.07.10

BeitragThema: Clonk nach ChangeDef nicht steuerbar   Mo Jul 12, 2010 4:49 pm

Ich habe im moment das Problem, dass ich wenn ich einen Clonk habe und dann ChangeDef (KNIG, GetCrew()); auf ihn anwende ich ihn nicht mehr kontrollieren kann obwohl er noch zu meiner Crew gehört.
Nach oben Nach unten
Benutzerprofil anzeigen
Pitri
Feldmarschall
Feldmarschall
avatar

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

BeitragThema: Re: Clonk nach ChangeDef nicht steuerbar   Mo Jul 12, 2010 5:30 pm

Folgendes muss hin:

Code:
ChangeDef(KNIG,GetCrew());
ObjectSetAction("Walk",GetCrew());

Denn ohne die zweite Zeile hat der Clonk keine Action! Und Ohne Action kann man nicht laufen!

Wenn du sie abgeworfen hast, wäre es gegangen! :Þ
Nach oben Nach unten
Benutzerprofil anzeigen http://www.clonk-fanpage.lima-city.de
Dark
Oberst
Oberst
avatar

Männlich Alter : 23
Ort : Deutschland/Frankfurt Main
Anmeldedatum : 07.07.10

BeitragThema: Re: Clonk nach ChangeDef nicht steuerbar   Mo Jul 12, 2010 5:35 pm

Gibt es och eine andere Variante wie ich aus einem Clonk einen Ritter mit alen Aktionen machen kann ohne dass sich der Name des Clonks ändert und ohne, dass ein neuer Clonk der Crew hizu gefügt wird.

Denn bei mir soll ein Clonk zum Ritter geschlagen werden und dann vom Clonk zum Ritter werden.
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Clonk nach ChangeDef nicht steuerbar   Mo Jul 12, 2010 5:57 pm

Ritter erstellen und per GrabObjectInfo zum gleichen Clonk machen.

Code:
var pClonk = GetCrew();
GrabObjectInfo(pClonk, CreateObject(KNIG, GetX(pClonk), GetY(pClonk), GetOwner(pClonk)));
RemoveObject(pClonk);

Edit: Bei CreateObject() wird der Ritter gleich initialisiert, "Walk" wird also gleich gesetzt.
Nach oben Nach unten
Benutzerprofil anzeigen
Dark
Oberst
Oberst
avatar

Männlich Alter : 23
Ort : Deutschland/Frankfurt Main
Anmeldedatum : 07.07.10

BeitragThema: Re: Clonk nach ChangeDef nicht steuerbar   Mo Jul 12, 2010 8:06 pm

Limeox deine Variante funzt irgendwie net. Der Name stimmt, aber ich kann den Conk immernoch net steuern.
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Clonk nach ChangeDef nicht steuerbar   Mo Jul 12, 2010 8:39 pm

Crew durchwechseln oder SetCursor()... der Clonk ist noch nicht ausgewählt. x)
Nach oben Nach unten
Benutzerprofil anzeigen
Extremclonk
Staatsrat
Staatsrat
avatar

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

BeitragThema: Re: Clonk nach ChangeDef nicht steuerbar   Mo Jul 12, 2010 9:53 pm

Man muss den Clonk Initializen.....zu was schreib ich eig. Tuts?
@Dark: Ruf im Clonk die Funktion Initialize() auf, dann sollte er laufen.
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Clonk nach ChangeDef nicht steuerbar   Mo Jul 12, 2010 10:27 pm

Zitat :
Man muss den Clonk Initializen.....zu was schreib ich eig. Tuts?
@Dark: Ruf im Clonk die Funktion Initialize() auf, dann sollte er laufen.
Immer wenn ein Objekt erstellt wird, wird es sofort initialisiert. Das muss man nicht manuell nachholen.
Nach oben Nach unten
Benutzerprofil anzeigen
Extremclonk
Staatsrat
Staatsrat
avatar

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

BeitragThema: Re: Clonk nach ChangeDef nicht steuerbar   Di Jul 13, 2010 12:10 am

Ich bezog mich auf den ursprünglichen Post, nicht auf dein Beispiel, Limeox. Und nach ChangeDef muss man Initialize aufrufen das der Clonk sich bewegen kann.
Nach oben Nach unten
Benutzerprofil anzeigen
Dark
Oberst
Oberst
avatar

Männlich Alter : 23
Ort : Deutschland/Frankfurt Main
Anmeldedatum : 07.07.10

BeitragThema: Re: Clonk nach ChangeDef nicht steuerbar   Di Jul 13, 2010 1:08 am

Mit

Code:
var pClonk = GetCrew();
GrabObjectInfo(pClonk, CreateObject(KNIG, GetX(pClonk), GetY(pClonk), GetOwner(pClonk)));
RemoveObject(pClonk);

Ging es ja nachdem ich den clonk ausgewählt habe
Nach oben Nach unten
Benutzerprofil anzeigen
Gurkenglas
Oberst
Oberst


Anmeldedatum : 04.01.09

BeitragThema: Re: Clonk nach ChangeDef nicht steuerbar   Di Jul 13, 2010 7:57 pm

Häng noch ein SetCursor(0,GetCrew(0),true,true); hintenran, das macht den einzigen Clonk des ersten Spielers (Nr. 0) zum ausgewählten Clonk des Spielers (immer noch Nr. 0). Die beiden trues sind dafür zuständig dass kein Pfeil und kein Auswahlrechteck angezeigt werden, wie beim normalen Auswählen.
Nach oben Nach unten
Benutzerprofil anzeigen
Donky
Hauptman
Hauptman
avatar

Männlich Alter : 20
Ort : In der Nähe Hamburgs
Anmeldedatum : 03.11.09

BeitragThema: Re: Clonk nach ChangeDef nicht steuerbar   So Nov 14, 2010 9:54 pm

Ähhh kurze Frage: Im Clonk gibts ne Funktion, die Redefine2(idTo) heißt. Warum nutzt ihr die nicht?
Code:

private func RedefinePhysical(szPhys, idTo)
{
  // Physical-Werte ermitteln
  var physDefFrom = GetPhysical(szPhys, 0, 0, GetID()),
      physDefTo  = GetPhysical(szPhys, 0, 0, idTo),
      physCurr    = GetPhysical(szPhys);
  // Neuen Wert berechnen
  var physNew; if (physDefTo) physNew=BoundBy(physDefTo-physDefFrom+physCurr, 0, 100000);
  // Neuen Wert für den Reset immer temporär setzen, selbst wenn keine Änderung besteht, damit der Reset richtig funktioniert
  SetPhysical(szPhys, physNew, PHYS_StackTemporary);
  // Fertig
  return(1);
}

protected func FxIntRedefineStart(object trg, int num, int tmp, id idTo)
  {
  // Ziel-ID in Effektvariable
  if (tmp)
    idTo = EffectVar(0, trg, num);
  else
    {
    EffectVar(0, trg, num) = idTo;
    EffectVar(1, trg, num) = GetID();
    }
  // Physicals anpassen
  RedefinePhysical("Energy", idTo);
  RedefinePhysical("Breath", idTo);
  RedefinePhysical("Walk", idTo);
  RedefinePhysical("Jump", idTo);
  RedefinePhysical("Scale", idTo);
  RedefinePhysical("Hangle", idTo);
  RedefinePhysical("Dig", idTo);
  RedefinePhysical("Swim", idTo);
  RedefinePhysical("Throw", idTo);
  RedefinePhysical("Push", idTo);
  RedefinePhysical("Fight", idTo);
  RedefinePhysical("Magic", idTo);
  RedefinePhysical("Float", idTo);
  /*if (GetRank()<4) RedefinePhysical("CanScale", idTo);
  if (GetRank()<6) RedefinePhysical("CanHangle", idTo);*/ // z.Z. können es alle
  RedefinePhysical("CanDig", idTo);
  RedefinePhysical("CanConstruct", idTo);
  RedefinePhysical("CanChop", idTo);
  RedefinePhysical("CanSwimDig", idTo);
  RedefinePhysical("CorrosionResist", idTo);
  RedefinePhysical("BreatheWater", idTo);
  // Damit Aufwertungen zu nicht-Magiern keine Zauberenergie übrig lassen
  if (GetPhysical("Magic")/1000 < GetMagicEnergy()) DoMagicEnergy(GetPhysical("Magic")/1000-GetMagicEnergy());
  // Echtes Redefine nur bei echten Aufrufen (hat zu viele Nebenwirkungen)
  if (tmp) return(FX_OK);
  Redefine(idTo);
  // Fertig
  return(FX_OK);
  }
 
protected func FxIntRedefineStop(object trg, int num, int iReason, bool tmp)
  {
  // Physicals wiederherstellen
  ResetPhysical(0, "BreatheWater");
  ResetPhysical(0, "CorrosionResist");
  ResetPhysical(0, "CanSwimDig");
  ResetPhysical(0, "CanChop");
  ResetPhysical(0, "CanConstruct");
  ResetPhysical(0, "CanDig");
  ResetPhysical(0, "Float");
  ResetPhysical(0, "Magic");
  ResetPhysical(0, "Fight");
  ResetPhysical(0, "Push");
  ResetPhysical(0, "Throw");
  ResetPhysical(0, "Swim");
  ResetPhysical(0, "Dig");
  ResetPhysical(0, "Hangle");
  ResetPhysical(0, "Scale");
  ResetPhysical(0, "Jump");
  ResetPhysical(0, "Walk");
  ResetPhysical(0, "Breath");
  ResetPhysical(0, "Energy");
  // Keine Rückänderung bei temporären Aufrufen oder beim Tod/Löschen
  if (tmp || iReason) return();
  // Damit Aufwertungen von nicht-Magiern keine Zauberenergie übrig lassen
  if (GetPhysical("Magic")/1000 < GetMagicEnergy()) DoMagicEnergy(GetPhysical("Magic")/1000-GetMagicEnergy());
  // OK; alte Definition wiederherstellen
  Redefine(EffectVar(1, trg, num));
  }

public func Redefine2(idTo)
{
  if (GetID() == idTo) return(true);
  RemoveEffect("IntRedefine", this());
  if (GetID() == idTo) return(true);
  return(!!AddEffect("IntRedefine", this(), 10, 0, this(), 0, idTo));
}

public func Redefine(idTo)
{
  // Aktivitätsdaten sichern
  var phs=GetPhase(),act=GetAction();
  // Umwandeln
  ChangeDef(idTo);
  // Aktivität wiederherstellen
  var chg=SetAction(act);
  if (!chg) SetAction("Walk");
  if (chg) SetPhase(phs);
  // Fertig
  return(1);
}




Nach oben Nach unten
Benutzerprofil anzeigen
Pitri
Feldmarschall
Feldmarschall
avatar

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

BeitragThema: Re: Clonk nach ChangeDef nicht steuerbar   Mo Nov 15, 2010 9:04 pm

Berechtigte Frage. Ich hab sie ja noch vor kurzem angeschaut, aber war so vernagelt und habe sie hier nicht gepostet. Mad
Nach oben Nach unten
Benutzerprofil anzeigen http://www.clonk-fanpage.lima-city.de
der kleine boss
Vizeadmiral
Vizeadmiral
avatar

Männlich Alter : 22
Ort : In einem gaaaaanz kleinen Kaff in Austria
Anmeldedatum : 21.03.09

BeitragThema: Re: Clonk nach ChangeDef nicht steuerbar   So Nov 21, 2010 2:08 pm

es gibt afaik einen unterschied zwischen ChangeDef() und Redefine2() und zwar glaub ich war das, wenn man zb nen hazard zu nem mage machte mit Redefine2() hatte der Mage dann die Kraft und Atem vom Hazard

und ja mich gibts auch noch ;D
Nach oben Nach unten
Benutzerprofil anzeigen http://www.clonk.de
Wipfmagus
Konteradmiral
Konteradmiral
avatar

Weiblich Alter : 22
Anmeldedatum : 06.03.10

BeitragThema: Re: Clonk nach ChangeDef nicht steuerbar   Sa Dez 04, 2010 10:01 pm

War es nicht umgekehrt, dass ChangeDef() die Eigenschaften (Vertices etc.) behält?

Jedenfalls würde ich eher
Code:
CreateObject(KNIG, GetX(pClonk), GetY(pClonk))->GrabObjectInfo(pClonk);
RemoveObject(pClonk);
verwenden. Das sollte die Eigenschaften vernünftig übertragen.
Nach oben Nach unten
Benutzerprofil anzeigen
Gesponserte Inhalte




BeitragThema: Re: Clonk nach ChangeDef nicht steuerbar   

Nach oben Nach unten
 
Clonk nach ChangeDef nicht steuerbar
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» Logo wird nach neuaufspielen nicht angezeigt????
» Wahlschalter erscheint nach Installation nicht
» GIF Bild bewegt sich nach 10 Minuten nicht mehr
» Nach Einbindungen von grafiken lädt das Forum bei einigen Usern nicht mehr
» log in nach domain änderung nicht möglich

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