Clonk-Center Titelbild

Clonk Center Forum / Allgemein / Scripthilfe...


[ ]


Seite 0[1] [2] [3]

Von sareiken am 14.10.2007 17:03  
Hallo, hab mal eine Frage, kann mir mal jemand sagen wie ich es hinkriege, das ein Clonk einen angefassten, gefällten Baum per Contextmenü in seine Bestandteile zerlegt?

Von Nachtfalter am 14.10.2007 18:28  
Split2Components(), Create/AddMenu(), doku

Von boni am 14.10.2007 18:41  
-Create/AddMenu()
+Contextzeug

Von tiggi3 am 14.10.2007 18:53  
Meinst du so etwas?

public func ContextSplit(){

  [Split|Image=TREE]
  if (GetAction()=="Push"){
    if (GetActionTarget()==OCF_Chop){
      Split2Components(GetActionTarget(0));
    };
  };
}

--Achtung! Nicht getestet!--

[Edit] Thx an Nachtfalter, dass er mich auf "Split2Components" hingewiesen hat^^ Ich wollte das glatt           selbst schreiben

Von sareiken am 14.10.2007 19:23  
hmm... muss ich da sonst noch irgendetwas machen ( ausser den Script beim Clonk )?

Von Methos am 14.10.2007 20:18  
Nein

Von sareiken am 15.10.2007 11:33  
hmm, klappt nämlich leider nicht :cry:

( hab die Zeilen kopiert und beim Clonkscript ( in der entsprechenden Kategorie ) eingefügt, es ist im Kontextmenü. Aber wenn ich baum gefällt habe ( wie es soll ) danach anfasse und dann im Contextmenü auf Split gehe ( ist das zeichen mit dem Baum ^^ ) dann passiert nichts)

Von Twonky am 15.10.2007 12:22  
Der Script ist ja auch falsch.
>GetActionTarget()==OCF_Chop

Kann nicht klappen, da GetActionTarget ein Objekt liefert und somit niemals gleich einem Flag sein kann. (Edit: Doch, aber vielleicht nur, wenn beides zufällig 0 ist)
Du bräuchtest GetOCF(GetActionTarget()), und besser noch baust du zwei Funktionen, eine CanSplit() und eine ContextSplit(). So könnte man den Menüeintrag auch nur im Falle dass ein Baum festgehalten wird sehen.

Von sareiken am 15.10.2007 13:12  
... und wie macht man das :confused::eek:

Von ker am 15.10.2007 14:32  
mach einfach

if(GetActionTarget() -> ~IsTree()) {

anstatt

if (GetActionTarget()==OCF_Chop){ <<< das ist eh kompletter stuss

if (GetOCF(GetActionTarget()) & OCF_Chop) { <<< das wäre richtig *glaub* (ich weis aber nichtmehr ob der bereits gefällte baum noch ein OCF_Chop ist  (und bin zu faul zum gucken, guck selber ;) )

Von sareiken am 15.10.2007 15:19  
  [Split|Image=TREE]
  if (GetAction()=="Push"){
    if(GetActionTarget() -> ~IsTree()) {
      Split2Components(GetActionTarget(0));
    };
  };
}

so hab ich das ( also bei dem Clonk )

Klappt aber immer noch nicht

Von Konsti am 15.10.2007 18:33  
Das Script war auch ziemlich falsch. Schreib' das mal in den Clonk:

public func ContextSplit()
{
  ["Split"|Image=TREE]
  if (GetAction() eq "Push") {
    if (GetActionTarget() -> ~IsTree()) {
      Split2Components(GetActionTarget());
    }
  }
}

Von Twonky am 16.10.2007 13:36  
Wozu braucht man die Tilde ?

Von Zapper am 16.10.2007 15:28  
Die sorgt dafuer, dass wenn das Objekt die Funktion nicht hat, kein Fehler ausgegeben wird.

Von Twonky am 16.10.2007 18:47  
Cool zu wissen, danke. Das "negiert nachfolgenden den Wert bitweise" aus  der Doku hat mir nämlich nicht geholfen. :/
Ich finde, das mit der Fehlervermeidung sollte auch dastehen, wenn man auf ~ im Index klickt.

Von Zapper am 16.10.2007 19:56  
Das ist ja eigentlich "->~". Konsti hat das nur komisch getrennt.

Von Konsti am 15.10.2007 18:27  
Warum verzapfst du so ein Stuss O_o?

Von sareiken am 15.10.2007 19:11  
das war aus den sachen die oben stehen ( hab immer so gemacht wie's da stand )

Also es klappt ( danke ) und nochmal danke an alle selbst wenn es nicht so ganz geklappt hat (... ich muss echt mal scripten lernen :eek: )

Von tiggi3 am 15.10.2007 19:39  
Nö, er hat schon Recht. Mein Script war falsch, wie du selbst schon rausbekommen hast.

Von Deffi am 17.10.2007 14:12  
Hm... Ich find den Thread hier nicht grade gerecht. Schließlich gibt es dafür Inserate.

Von Zapper am 17.10.2007 14:47  
Und deshalb willst du Kapitalismus erzwingen?

Von Deffi am 17.10.2007 15:27  
Nein, eigentlich nicht. Ich meine nur, dass einige Leute Skripthilfe anbieten, und das für Clunker.
Wenn man Skripthilfe im Forum bekommt, kann man ja gleich hier reinschreiben.

Von Methos am 17.10.2007 16:41  
>Nein, eigentlich nicht. Ich meine nur, dass einige Leute Skripthilfe anbieten, und das für Clunker.


Es hätte auch einer im Antwortkommentar auf das Inserat (ggf.) geantwortet/antworten können ohne Clunker zu wollen.

>Wenn man Skripthilfe im Forum bekommt, kann man ja gleich hier reinschreiben.


Kann man auch auf Clonk.de reinschreiben. Wo ist da der Unterschied?

Von Saturas am 17.10.2007 15:51  
Genau, bannt die Leute die auf diesen Thread hier geantwortet haben!!1

Von tiggi3 am 17.10.2007 16:11  
Ob ich jetzt hier meine "Dienste" anbiete oder bei den Inseraten für umsonst ist doch egal.
Ich glaub ich spreche auch im Namen der anderen, die hier geantwortet haben.

Von Saturas am 17.10.2007 16:55  
(Das war Ironie)

Von tiggi3 am 17.10.2007 18:25  
Das war mir klar, aber der unsichtbare Text passte nicht mehr in die Zeile.

Von Deffi am 19.10.2007 10:24  
Wenn man dann jetzt schonmal beim Thema ist:

protected func Activate()
{
  if (GetMaterial(0,-50) == Material("Sky"))
   {
    Message("Can't create turret outside!",this());
    Sound("Error");
   }
   for (var iHigh = -1; iHigh > -1000; iHigh--)
    {
     if (!GetMaterial(0,iHigh) == Material("Steel")) { continue; }
     if (GetMaterial(0,iHigh) == Material("Steel"))
      {
       CheckPlace();
       break;
      }
    }  
}

protected func CheckPlace()
{
  if (FindObject2(Find_ID(SEG2),Find_AtPoint(0,GlobalN("iHigh"))))
    {
     Message("There's already another turret!",this());
     Sound("Error");
    }
    else
    {
    CreateTurret();
    }
}

protected func CreateTurret()
{
CreateObject(SEG2, 0, GlobalN("iHigh")+5, GetOwner(this()))->Arm(BZWP);
return(RemoveObject(this()));
}


Dieser Skript soll eine Selbstschussanlage an der Decke plazieren und diese mit einem Raketenwerfer ausrüsten. Das Problem ist aber, dass man mehrere Türme übereinander bauen kann.
Ich find den Fehler aber nicht :/

[EDIT]
Das ganze läüft über einen Bausatz :)

Von Deffi am 19.10.2007 13:13  
Man bin ich blöd :(
Fixed mit int :)

Von Didi_01 am 16.01.2008 13:40  
Abropo grad beim Thema... ich hab 3 grundlegende fragen die ich mir nicht beantworten konnte.


1.Wie funzt das das die Engine das Bild nimmt für das Object das ich will diese z.B. 25,0,5 dings sagt mia nichts.

2.Manchmal erscheint das Object nicht das ich gemacht hat. :confused:

3.Wie kann man Zufall zwischen 2 Parametern (z.B. bei SetYDir oder SetXDir. Geht das auch das es zwischen den 2en herumspringt? )

4.(Ja ich weiß ich hab gesagt es wären 3) Seit bitte nett zu mia :cry: !

Seite 0[1] [2] [3]