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

Austausch | 
 

 Zombiescript

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
AutorNachricht
MagicWipf
Brigadegeneral
Brigadegeneral
avatar

Männlich Alter : 20
Ort : Irgendwo im Nirgendwo
Anmeldedatum : 14.02.11

BeitragThema: Zombiescript   Sa Apr 09, 2011 5:44 pm

Hallo CNDG-Mitglieder,
Ich habe einen Script für einen Zombie geschrieben aber mein Zombie tut absolut garnichts. Errors werden keine angezeigt. Als TimerCall habe ich alle 50 frames die funktion Timer(). Hier ist der Script, ich hoffe ihr könnt mir weiterhelfen, vielen dank schonmal!

Code:

/*-- Der Zombie --*/

#strict

#include CLNK                                                  //Macht alles, was Clonks machen


local pTarget;                                                  //Lokale für das Opfer



func Attack(object pTarget)
{
if(ObjectDistance(this(),pTarget)>15) return(0);  //Nochmal abfragen, kann ja sein das der Kerl sich weggebeamt hat oder so ;D
Sound("Growl2");                                              //Sound machen, da soll später noch ein Zombieschrei hin
DoDmg(20,DMG_Melee,pTarget);                      //Nahkampfschaden machen (Der Zombie ist für Hazard)
}



func Attack2(object pTarget)
{
if(ObjectDistance(this(),pTarget)>15) return(0);  //Nochmal abfragen, kann ja sein das der Kerl sich weggebeamt hat oder so ;D
Sound("Growl1");                                              //Sound machen, da soll später noch ein Zombieschrei hin
DoDmg(RandomX(20,30),DMG_Melee,pTarget);  //Nahkampfschaden machen (Der Zombie ist für Hazard)
pTarget -> Flying(1,1);                                      //Der getroffene Fetzt hin!
}


func MoveToTarget(object pTarget);
{
SetCommand("MoveTo",pTarget);  //Zum Ziel laufen
}

func FollowTarget(object pTarget)
{
SetCommand("Follow",pTarget);    //Ziel Folgen
}

func Timer()
{
if(pTarget==0) SearchTarget();
else if(ObjectDistance(this(),pTarget)<15) Attack(pTarget);      //Angreifen wenn Distanz kleiner als 1
else if(ObjectDistance(this(),pTarget)<200) Follow(pTarget);    //Folgen im Umkreis von 200
else if(ObjectDistance(this(),pTarget)<300) MoveTo(pTarget); //Hinlaufen wenn kleiner als 300
else if(ObjectDistance(this(),pTarget)>300) pTarget==0;        //Distanz größer als 300? Ziel vergessen!
else Laufen();
}

func Laufen();
{
SetCommand("MoveTo",GetX(this())-(RandomX(-10,10),GetY(this()));  //Rumlaufen
}

func SearchTarget()
{
pTarget=FindObject2(Find_OCF(OCF_Prey),Find_OCF(OCF_Alive),Find_Distance(300));  //Beute suchen
Timer();
}


EDIT: Um das nochmal genau zu erklären: Eigentlich soll der Zombie sich Beute im Umkreis von 300 suchen und sie verfolgen. Wenn die Distanz klein genug ist soll er Angreifen. Der Script ist noch lange nicht fertig, dass sind nur die Grundzüge. Aber solange der Timer nicht richtig funktioniert (Oder die Beutesuche?!?) kann ich auch nicht weiterarbeiten!
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Zombiescript   Sa Apr 09, 2011 6:20 pm

Schalt mal den Debug-Modus ein, da zeigts genug Errors an. Razz
zB
Zitat :
func Laufen();
func MoveToTarget(object pTarget);

Edit: Da ist noch ein Fehler in Timer():
Zitat :
pTarget==0; //Distanz größer als 300? Ziel vergessen!
Müsste pTarget = 0 sein.
Nach oben Nach unten
Benutzerprofil anzeigen
MagicWipf
Brigadegeneral
Brigadegeneral
avatar

Männlich Alter : 20
Ort : Irgendwo im Nirgendwo
Anmeldedatum : 14.02.11

BeitragThema: Re: Zombiescript   Sa Apr 09, 2011 6:40 pm

Hups, ich habe nen neuen Laptop und da hatte ich den Degub-Modus noch nicht eingschalten :O
Vielen dank! Aber ich habe die ganzen Fehler behoben, jetzt kommt WIRKLICH kein Error. Aber meinen Clonk befällt der böse Zombie immer noch nicht.
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Zombiescript   Sa Apr 09, 2011 7:03 pm

Find_Exclude bei FindObject2? Greift er sich vllt selbst an.

Edit: Post außerdem mal, welche Packs du verwendest. Follow() müsste in Hazard sein, glaub ich. Gibt zumindest mal nen Error.
Edit2: Außerdem, wenn SearchTarget nichts findet, gibts ne böse Endlosschleife. Lösch in der Funktion einfach Timer() raus.
Nach oben Nach unten
Benutzerprofil anzeigen
MagicWipf
Brigadegeneral
Brigadegeneral
avatar

Männlich Alter : 20
Ort : Irgendwo im Nirgendwo
Anmeldedatum : 14.02.11

BeitragThema: Re: Zombiescript   Sa Apr 09, 2011 9:29 pm

Kann nicht sein, Ich hab Prey=0 Beim Zombie! Und Bei FindObjtct2 asse ich nach Prey uchen, wie bei einer Schlange...
Nach oben Nach unten
Benutzerprofil anzeigen
Limeox
Admiral
Admiral
avatar

Männlich Anmeldedatum : 25.04.10

BeitragThema: Re: Zombiescript   Sa Apr 09, 2011 9:59 pm

Sollen die Funktionen FollowTarget und MoveToTarget durch Follow() und MoveTo() ausgelöst werden? Oder wie? Die beiden erzeugen nämlich Errors.

Edit: Damit Kommandos funktionieren, muss das Objekt CrewMember sein (CrewMember = 1 in der DefCore, OCF_CrewMember und muss sich auch in einer Crew befinden).
Bei den Kommandos sind aber noch Parameterfehler (Objekt als 1.).
Nach oben Nach unten
Benutzerprofil anzeigen
MagicWipf
Brigadegeneral
Brigadegeneral
avatar

Männlich Alter : 20
Ort : Irgendwo im Nirgendwo
Anmeldedatum : 14.02.11

BeitragThema: Re: Zombiescript   So Apr 10, 2011 10:40 am

Das ist mir jetzt doch ein wenig peinlich Razz
Ich hab doch tatsächlich ausversehen die Funktionen Follow() und MoveTo() geschrieben! Natürlich sollte da eigentlich FollowTarget(pTarget) und MoveToTarget(pTarget) stehen. Ich hab es nochmal ausprobiert und der Zombie funktioniert Very Happy Ich werde jetzt ein paar animationen machen und den Script endlich ausbauen. Vielen Dank Limeox!
Nach oben Nach unten
Benutzerprofil anzeigen
Gesponserte Inhalte




BeitragThema: Re: Zombiescript   

Nach oben Nach unten
 
Zombiescript
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 :: Scripthilfe-
Gehe zu: