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

Austausch | 
 

 Zauber auf ein Objekt

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
Gehe zu Seite : 1, 2, 3  Weiter
AutorNachricht
Frindus
Major
Major


Männlich Anmeldedatum : 06.05.10

BeitragThema: Zauber auf ein Objekt   So Okt 10, 2010 8:02 pm

Hallo ich möchte gerne einen bestimmten Zauber auf ein Objekt scripten. Dieser Zauber soll dann auf einen sich nähernden Spieler ausgeführt werden. Was muss ich da in die Scriptdatei eingeben?
Nach oben Nach unten
Benutzerprofil anzeigen
Liech
Fregattenkapitän
Fregattenkapitän


Männlich Alter : 26
Anmeldedatum : 02.02.09

BeitragThema: Re: Zauber auf ein Objekt   So Okt 10, 2010 8:12 pm

In diesem pack gibt es den Artefakt zauber, der macht genau das, wenn er das tut was du möchtest können wir ja mal gucken wie man den mim script aktiviert:
http://ccan.de/cgi-bin/ccan/ccan-view.pl?a=view&i=3581

Ansonsten gibt es hierfür 2 möglichkeiten.
1. Die Effekte, eigentlich speziell für sowas gedacht, allerdings nicht ganz einfach.
http://www.clonk.de/docs/de/sdk/script/Effects.html
2. Ein Schedule hack
mithilfe von Schedule() rufst du immer wieder eine Globale funktion auf die rekursiv sich selbst mithilfe von Schedule() aufruft und nebenbei überprüft ob ein Spieler in der nähe des Objekts ist und sich da bei bedarf terminiert + den Zauber ausführt.
http://www.clonk.de/docs/de/sdk/script/fn/Schedule.html
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Zauber auf ein Objekt   So Okt 10, 2010 8:15 pm

Kommt immer auf den Zauber an. Generell gilt da: Zauberobjekt an der gewünschten Position erstellen und dann darin Activate(object pCaster) (normale Zauber), ActivateAngle(object pCaster, int iAngle) (Zielzauber) bzw ActivateTarget(object pCaster, object pTarget) (Zauber mit Ziel-Auswahl) aufrufen.

Du brauchst dann natürlich noch im betreffenden Objekt einen Timer. Entweder appendest du dort direkt und baust den Timer ein, oder du hängst ihm einen Timer-Effekt an.
Im Timer-Aufruf checkst du dann auf sich nähernde Clonks (FindObjects(Find_Distance(...), Find_OCF(OCF_CrewMember))) und setzt dann den Zauber ein. Bei Zielzaubern musst du dann noch per Angle() den Winkel auswerten und übergeben.
Nach oben Nach unten
Benutzerprofil anzeigen
Frindus
Major
Major


Männlich Anmeldedatum : 06.05.10

BeitragThema: Re: Zauber auf ein Objekt   So Okt 10, 2010 8:19 pm

Bin jedoch leider Scriptanfänger und weiß auch nicht was ich genau da in die Szenario datei schreiben soll ... =(
Nach oben Nach unten
Benutzerprofil anzeigen
Liech
Fregattenkapitän
Fregattenkapitän


Männlich Alter : 26
Anmeldedatum : 02.02.09

BeitragThema: Re: Zauber auf ein Objekt   So Okt 10, 2010 11:36 pm

In den Szenario teil? Da du scheinbar nicht wirklich irgendwie irgendetwas weißt empfehle ich dir einfach mal ein beliebiges allgemeines tutorial durchzulesen, ohne wirst du diese, nicht total einfache aufgabe nur per copy/paste unserer vorschläge lösen können.
Nach oben Nach unten
Benutzerprofil anzeigen
Frindus
Major
Major


Männlich Anmeldedatum : 06.05.10

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 8:41 am

Hmm, meint ja eig Scriptdatei. Wo gibts denn ein Tutorial solcher Art hier auf CNDG?
Nach oben Nach unten
Benutzerprofil anzeigen
Liech
Fregattenkapitän
Fregattenkapitän


Männlich Alter : 26
Anmeldedatum : 02.02.09

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 1:41 pm

http://www.ccan.de/cgi-bin/ccan/ccan-view.pl?a=view&i=982
http://de.wiki.nosebud.de/wiki/Entwicklermodus/Tutorial

sind zwar schon etwas ältere, macht aber nix, fehlen halt ein paar neuerungen.
Nach oben Nach unten
Benutzerprofil anzeigen
Frindus
Major
Major


Männlich Anmeldedatum : 06.05.10

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 2:31 pm

#strict

func Initialize() {

var pClonk = FindObject2(Find_Distance(100),Find_Func("IsClonk"));
CreateObject(GRSG)->ActivateAngle(GetX(pClonk),GetY(pClonk),GetX(this),GetY(this))

return(1);
}



Wieso klappt das hier nicht?
Nach oben Nach unten
Benutzerprofil anzeigen
Gamer
Staatsrat
Staatsrat
avatar

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

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 2:42 pm

Mhm. Was genau klappt nicht?
Das einzige was ich denke das es falsch ist ist, dass bei ActivateAngle() Nirgentswo ein Winkel sondern nur Koordinaten eingegeben werden.
Wie äusert sich denn der Fehler? Funktioniert nichts?
Vlt. noch ne Überrprüfung einbauen obs pClonk überhaupt gibt.
if(pClonk) CreateObj..
Also, 1x nähere Fehlerbeschreibung bitte!

_________________
Star Wars Projekt Homepage: http://sites.google.com/site/clonkprojekte/star-wars

Das Burg Projekt.................................................................... Schaut doch mal im Super-Mario Clonk Editon Forum vorbei!
Nach oben Nach unten
Benutzerprofil anzeigen http://www.gamer95.npage.de/
Frindus
Major
Major


Männlich Anmeldedatum : 06.05.10

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 2:59 pm

Naja aus dem objekt soll ja der Granitschlag kommen wenn der Clonk davorsteht aber da kommt nichts.
Nach oben Nach unten
Benutzerprofil anzeigen
Liech
Fregattenkapitän
Fregattenkapitän


Männlich Alter : 26
Anmeldedatum : 02.02.09

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 3:37 pm

Ist das Fantasy pack aktiviert? Also auch in den Vorgaben drin?
Du hast beim CreateObject am ende ein ; vergessen, das dürfte dir als fehlermeldung gemeldet werden. Diese Fehlermeldungen bitte immer außnahmslos mit angeben.

Der Hauptfehler liegt aber hier darin das er das gebiet zwar einmal kurz nach einem Clonk absucht, allerdings nur bei erschaffen des Objekts, du brauchst einen Timer der das Mehrmals macht. Hier mal eine reine, sehr simple Script lösung, ist sogar recht effizient. Ansonsten ist die zweite lösungsmöglichkeit das du den Clonkinternen Timer benutzt und einfach in den Defcore
Timer=10
TimerCall=SSchlagCheck
schreibst, wobei 10 der Frameintervall und SSchlagCheck die funktion ist die im intervall immer wieder aufgerufen wird.

func Initialize() {
Schedule("SSchlagCheck",1,1);
return(1);
}

global func SSchlagCheck()
{

var pClonk = FindObject2(Find_Distance(100),Find_Func("IsClonk"));
if (pClonk)
CreateObject(GRSG)->ActivateAngle(GetX(pClonk),GetY(pClonk),GetX(this),GetY(this)); //Stoppt wenn ein Clonk gefunden wurde
else Schedule("GranitCheck",1,1) //Läuft weiter falls kein Clonk gefunden wird
}
Nach oben Nach unten
Benutzerprofil anzeigen
Frindus
Major
Major


Männlich Anmeldedatum : 06.05.10

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 4:38 pm

klappt irgendwie immernochnicht =O also das was du mir halt geschrieben hast hab ich nun in die script datei geschrieben aber geht auch nicht.
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 6:04 pm

Zitat :
Schedule("SSchlagCheck",1,1);
Schedule führt den String per eval aus, und das erwartet ein vollständiges Statement - hier also "SSchlagCheck()", mit Klammern. Nur bei Funktionen der Call-Familie muss nur der Name angegeben werden.

Zitat :
var pClonk = FindObject2(Find_Distance(100),Find_Func("IsClonk"));
Fast richtig. Hier solltest du bei Find_Distance aber auch die Koordinaten angeben, wo gechekt wird, zB Find_Distance(100, 200, 300), das sucht in einem Radius von 100 Pixeln um den Punkt (200 | 300).
Zitat :
CreateObject(GRSG)->ActivateAngle(GetX(pClonk),GetY(pClonk),GetX(this),GetY(this))
GRSG war der Granitschlag? Der ist nicht im Fantasypack, den müsstest du dann reinkopieren oder das KdD-Pack aktivieren, wenn du das hast. Oder aus einem Szen rauskopieren wo der drin ist.
Den Zauber erstellst du dann am besten am selben Punkt wo auch gecheckt wird, also hier CreateObject(GRSG, 200, 300, NO_OWNER). NO_OWNER heißt hierbei dass das Objekt niemandem gehört - sonst würde sich wohl ein Spieler selbst umbringen.
Der Granitschlag braucht übrigens keinen angegebenen Winkel, also reicht Activate. Allerdings braucht er ein angegebenes Objekt, denn der Stein wird im Zauberer erstellt und dann herausgeschleudert. Außerdem fliegt er immer in die Blickrichtung des Objekts. Bei normalen Objekten würde er also immer nach links fliegen, da idR nur Lebewesen oder Fahrzeuge die Richtungen links und rechts unterscheiden..
Nach oben Nach unten
Benutzerprofil anzeigen
Liech
Fregattenkapitän
Fregattenkapitän


Männlich Alter : 26
Anmeldedatum : 02.02.09

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 6:51 pm

Find_Distance(100) ist schon richtig, er geht ja vom Objekt aus. Mit Schedule und eval hast du recht, mein fehler.
Nach oben Nach unten
Benutzerprofil anzeigen
Frindus
Major
Major


Männlich Anmeldedatum : 06.05.10

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 7:59 pm

Code:
#strict

func Initialize() {
Schedule SSchlagCheck();
return(1);
}

global func SSchlagCheck()
{
var pClonk = FindObject2(Find_Distance(100),Find_Func("IsClonk"));
if (pClonk)
CreateObject(GRSG, NO_OWNER)->ActivateAngle(GetX(pClonk),GetY(pClonk),GetX(this),GetY(this)); //Stoppt wenn ein Clonk gefunden wurde
else Schedule("GranitCheck",1,1) //Läuft weiter falls kein Clonk gefunden wird
}

<-- das geht immernoch nicht also es wird nichts ausgeführt bzw es geschieht nichts =/
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 8:14 pm

Zitat :
Schedule SSchlagCheck();
Schedule ist eine Funktion, danach also erstmal Klammern. Der auszuführende Teil muss als String vorliegen, also in Anführungszeichen. Danach kommt die Verzögerung, also:
Code:
Schedule("SSchlagCheck()", 1);
Zitat :
CreateObject(GRSG, NO_OWNER)
Da musst du die Parameter beachten: Du hast als zweiten NO_OWNER, da kommt aber erstmal die X-Position, also wohl einfach 0. Danach Y, das bleibt ebenfalls 0.
Code:
CreateObject(GRSG, 0, 0, NO_OWNER)
Zitat :
->ActivateAngle(GetX(pClonk),GetY(pClonk),GetX(this),GetY(this))
Der Granitschlag braucht Activate().
Zitat :
else Schedule("GranitCheck",1,1)
Du solltest dann dieselbe Funktion nehmen, also hier "SSchlagCheck()".
Nach oben Nach unten
Benutzerprofil anzeigen
Frindus
Major
Major


Männlich Anmeldedatum : 06.05.10

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 8:31 pm

Code:
#strict

func Initialize() {
Schedule("SSchlagCheck()", 1);
return(1);
}

global func SSchlagCheck()
{
var pClonk = FindObject2(Find_Distance(100),Find_Func("IsClonk"));
if (pClonk)
CreateObject(GRSG, 0, 0, NO_OWNER)->Activate()
else Schedule("SSchlagCheck()", 1) //Läuft weiter falls kein Clonk gefunden wird
}


So? aber da ist auch nichts gerade anders also passiert nichts
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 8:41 pm

Nach Activate und dem zweiten Schedule fehlt der Strichpunkt.
Nach oben Nach unten
Benutzerprofil anzeigen
Frindus
Major
Major


Männlich Anmeldedatum : 06.05.10

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 8:54 pm

#strict

func Initialize() {
Schedule("SSchlagCheck()", 1);
return(1);
}

global func SSchlagCheck()
{
var pClonk = FindObject2(Find_Distance(100),Find_Func("IsClonk"));
if (pClonk)
CreateObject(GRSG, 0, 0, NO_OWNER)->Activate();
else Schedule("SSchlagCheck()", 1); //Läuft weiter falls kein Clonk gefunden wird
}

auch erfolglos ...
Nach oben Nach unten
Benutzerprofil anzeigen
Liech
Fregattenkapitän
Fregattenkapitän


Männlich Alter : 26
Anmeldedatum : 02.02.09

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 9:24 pm

Wo führst du das script aus? Steht es etwa in Scenario.c4s/Script.c ?
Nach oben Nach unten
Benutzerprofil anzeigen
Frindus
Major
Major


Männlich Anmeldedatum : 06.05.10

BeitragThema: Re: Zauber auf ein Objekt   Mo Okt 11, 2010 9:29 pm

Ne was muss ich denn da reinschreiben? Aber muss da überhaupt was rein?
Nach oben Nach unten
Benutzerprofil anzeigen
Liech
Fregattenkapitän
Fregattenkapitän


Männlich Alter : 26
Anmeldedatum : 02.02.09

BeitragThema: Re: Zauber auf ein Objekt   Di Okt 12, 2010 2:56 am

Nein, da muss in diesem fall nichts rein.
Eine gute Methode dinge zu testen die nicht logisch erscheinen ist die Log methode.
Wenn du wissen möchtest ob eine gewisse stelle im Script erreicht wird schreibst du einfach dorthin
Log("Beliebiger Text");
Wenn du wissen möchtest ob ein Objekt gefunden wurde oder so schreibst du
Log("%v",pClonk);
irgendwo hin

Im Chatbereich erscheint dann die entsprechende information.
(null) bedeutet das die variable leer ist die du mit Log("%v",pClonk); überprüft hast.
Nach oben Nach unten
Benutzerprofil anzeigen
Frindus
Major
Major


Männlich Anmeldedatum : 06.05.10

BeitragThema: Re: Zauber auf ein Objekt   Di Okt 12, 2010 8:48 am

Naja ich weiß ja, dass das was ich oben zuletzt geschrieben habe auch nicht funktioniert, da immernochnichts passiert. Was muss ich daran noch verändern?
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Zauber auf ein Objekt   Di Okt 12, 2010 2:53 pm

Was für Errors gibts denn überhaupt? Wenn gar keine kommen, hast du evtl den Debug-Modus ausgeschaltet. Dann geh auf Optionen -> Entwickler -> Debug-Modus. Dann werden dir im Log (und evtl über Objekten) bei Bedarf Fehlermeldungen ausgegeben, die weiterhelfen.
Wo steht dein Script? In einem Objekt? Wenn ja, ist das überhaupt platziert?
Nach oben Nach unten
Benutzerprofil anzeigen
Frindus
Major
Major


Männlich Anmeldedatum : 06.05.10

BeitragThema: Re: Zauber auf ein Objekt   Di Okt 12, 2010 3:26 pm

0 warnings, 0 errors des steht dort also anscheinend gibts keine errors.
Und der Script steht in der Script datei. Also das rote schriftteil da. Und wenn du mir plazieren meinst, ob es in der Map ist: Ja, ich hab ihn reingezogen
Nach oben Nach unten
Benutzerprofil anzeigen
Gesponserte Inhalte




BeitragThema: Re: Zauber auf ein Objekt   

Nach oben Nach unten
 
Zauber auf ein Objekt
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 3Gehe zu Seite : 1, 2, 3  Weiter

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