Dieser Torpedo tut alles was ein normaler Torpedo tut. Er greift auf FindingTarget zu und er gibt keine Fehlermeldung aus. (weder in der Engine noch sonstwo)
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Verfolgungstorpedo So März 22, 2009 11:04 am
Kein Wunder warum das nicht funktioniert. "ScriptGo();" funktioniert nur in Szenarioscripts. Mach mal nen Timer draus.
Tera-Flint-Produzent Oberst
Ort : PC Anmeldedatum : 14.03.09
Thema: Re: Verfolgungstorpedo So März 22, 2009 12:06 pm
Gut habs rausgenommen und Timer gesetzt aber es funzt immer noch net! Es ist immernoch ein ganz normaler Torpedo.
Liech Fregattenkapitän
Alter : 33 Anmeldedatum : 02.02.09
Thema: Re: Verfolgungstorpedo So März 22, 2009 1:32 pm
Wenn es wie ein ganz normales torpedo tut liegt das wohl daran:
Zitat :
private func Swimming() { var iDir=(GetDir()*2-1); Bubble(-16*iDir,0); Bubble(-16*iDir,0); if (GetActTime() > 25) SetYDir(0); }
Umezawa Feldmarschall
Alter : 29 Anmeldedatum : 30.12.08
Thema: Re: Verfolgungstorpedo So März 22, 2009 7:38 pm
Tera-Flint-Produzent schrieb:
@ Bowserkoopa:
Was soll das heißen??? Natürlich isser an, sonst könnt ich net entwickeln...
(Debugmodus!=Entwicklermodus)=true Der Entwicklermodus erlaubt dir zu entwickeln, der Debugmodus zeigt dir die Errors an.
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Verfolgungstorpedo So März 22, 2009 8:08 pm
Jertzt fällt mir grade was ein. Ich hab mal so ein Szen gespielt das war ein Rennen, man war Hydroclonk und musst ganz nach oben kommen, und unterwegs waren so U-Boote die Torpedos schossen die einen verfolgt haben, und noch minen und so...' Schau dir doch da mal den script an weiß aber nichmehr wie das Scen hies >.< ich schau nochmal.
Simsi Staatssekretär
Alter : 31 Ort : Vaihingen/Enz Anmeldedatum : 30.03.08
Thema: Re: Verfolgungstorpedo So März 22, 2009 10:04 pm
es war in randrians CM-ordner
Gerrit Generalmajor
Alter : 29 Ort : Ostrhauderfehn Anmeldedatum : 12.05.08
Thema: Re: Verfolgungstorpedo Mo März 23, 2009 8:26 pm
und? dann könntet ihr das ja mal ansehen und wenn nötig das script posten oder einfach erklären wie das geht.
Toastbrot Kadett
Anmeldedatum : 10.03.09
Thema: Re: Verfolgungstorpedo Di März 24, 2009 10:48 pm
Moin, ich habe mal einen Script zum erklären geschrieben der eigentlich größten teils Auskommentiert sein sollte. Er macht das der Torpedo automatisch nach Opfern sucht und diese Ansteuert und Expoldiert wenn er sie trifft.
//Wenn kein Ziel dann eins Suchen oder? 250 pixel suchradius als Parameter übergeben. if(target==0){target=FindTarget(250);return(1);}
//Ziel erreicht? dann explodieren aber nur wenn man net selbst das Ziel ist if(target!=0) if(ObjectDistance(this(),target)<15)Explode(30);
//Wenn nicht im Wasser dann abstürzen if(!InLiquid()){SetAction("NoWater");return(1);}
//Winkel ans Ziel anpassen und geschwindigkeit setzen SetR(Angle(GetX(),GetY(),GetX(target),GetY(target))+90); SetXDir(Cos(GetR()-180,60)); SetYDir(Sin(GetR()-180,60));
}
//Funktion zum Ziel ermitteln func FindTarget(Distance){
//Gibt ein Ziel zurück return(FindObject2(Find_OCF(OCF_Alive()),Find_Distance(Distance)),Find_NoContainer(),Find_OCF(OCF_InLiquid()));
Falls du noch irgentwelche Fragen zu den ObjectDefinitions-Komponenten hast Frag ich hab dies gemacht danmit du verstehst wie es Funktioniert und nicht einfach nur einen Script verwendest
mfg Toastbrot
Umezawa Feldmarschall
Alter : 29 Anmeldedatum : 30.12.08
Thema: Re: Verfolgungstorpedo Mi März 25, 2009 1:04 am
FindObject2() ist erst in CR neu
Code:
//Funktion zum Ziel ermitteln func FindTarget(Distance){
//Gibt ein Ziel zurück var obj; while (obj=FindObject(0, -Distance,-Distance,Distance*2,Distance*2, OCF_Alive() | OCF_InLiquid(), 0,0, NoContainer(), obj)) if(ObjectDistance (obj)<= Distance) return(obj); }
Müsste gehen, hab ich jetzt nicht getestet.
Tera-Flint-Produzent Oberst
Ort : PC Anmeldedatum : 14.03.09
Thema: Cool Fr März 27, 2009 10:52 am
Der Torpedo verlässt beim Kauf automatisch das Haus...
Der Torpedo verlässt (wenn man ihn hineingelegt hat) das U-Boot und explodiert sofort.
Öhm
das sind zwei kleine Fehler.
Vllt. Beim 2. ein Hostile-Checker???
Toastbrot Kadett
Anmeldedatum : 10.03.09
Thema: Re: Verfolgungstorpedo Fr März 27, 2009 9:58 pm
Du solltest eine Zusätzliche Action machen zum Beispiel "Wait" die inder Initialisierungs-Funktion aufgerufen wird, sodass der Torpedo erst Aktiv wird wenn man ihn aus dem U-Boot schießt (Dann mit SetAction("Water")Aktivieren) Das der Torpedo nur auf Feindliche Uboote geht kannst du in der Suchfunktion einfügen: Guck dir mal folgene Funktion an http://www.clonk.de/docs/de/sdk/script/fn/FindObjectOwner.html müsste unter CE laufen.
Tera-Flint-Produzent Oberst
Ort : PC Anmeldedatum : 14.03.09
Thema: So weit, so gut Sa März 28, 2009 12:21 pm
FindObjectOwner funktioniert nicht, da man nur die Spieler-ID angeben kann, und nicht einfach alle verfeindeten Spieler angeben kann.
//Wenn kein Ziel dann eins Suchen oder? 250 pixel suchradius als Parameter übergeben. if(target==0){target=FindTarget(250);return(1);}
//Ziel erreicht? dann explodieren aber nur wenn man net selbst das Ziel ist if(target!=0) if(ObjectDistance(this(),target)<15)Explode(30);
//Wenn nicht im Wasser dann abstürzen if(!InLiquid()){SetAction("NoWater");return(1);}
//Winkel ans Ziel anpassen und geschwindigkeit setzen SetR(Angle(GetX(),GetY(),GetX(target),GetY(target))+90); SetXDir(Cos(GetR()-180,60)); SetYDir(Sin(GetR()-180,60));
}
//Funktion zum Ziel ermitteln func FindTarget(Distance){
//Gibt ein Ziel zurück var obj; while (obj=FindObject(0, -Distance,-Distance,Distance*2,Distance*2, OCF_Alive() | OCF_InLiquid(), 0,0, NoContainer(), obj)) if(ObjectDistance (obj)<= Distance) return(obj); }
//Wenn kein Ziel dann eins Suchen oder? 250 pixel suchradius als Parameter übergeben. if(target==0){target=FindTarget(250);return(1);}
//Ziel erreicht? dann explodieren aber nur wenn man net selbst das Ziel ist if(target!=0) if(ObjectDistance(this(),target)<15)Explode(30);
//Wenn nicht im Wasser dann abstürzen if(!InLiquid()){SetAction("NoWater");return(1);}
//Winkel ans Ziel anpassen und geschwindigkeit setzen SetR(Angle(GetX(),GetY(),GetX(target),GetY(target))+90); SetXDir(Cos(GetR()-180,60)); SetYDir(Sin(GetR()-180,60));
}
//Funktion zum Ziel ermitteln func FindTarget(Distance){
//Gibt ein Ziel zurück return(FindObject2(Find_OCF(OCF_Alive()),Find_Distance(Distance)),Find_NoContainer(),Find_OCF(OCF_InLiquid()));
Thema: Re: Verfolgungstorpedo Sa Mai 02, 2009 1:11 pm
Du hattest mich ja per PM angeschrieben das ich hier noch mal hergucke und da ich nicht immer die ganzen Teile des Objectes hier Posten möchte Habe ich hier das Object+Aukommentierten script Hochgeladen: http://www.file-upload.net/download-1616556/Torpedo-Test.c4s.html
Wenn du noch fragen dazu hast schreib sie einfach.
mfg Toastbrot
Tera-Flint-Produzent Oberst
Ort : PC Anmeldedatum : 14.03.09
Thema: Ok, sieht gut aus Sa Mai 02, 2009 2:14 pm
Nun, der Torpedo hat 4 merkwürdige Eingenschaften:
Er wird vom U-Boot eingasammelt
Er explodiert wenn man ihn nochmals aktiviert
Er kann nicht mit der Grabentaste aktiviert werden
Wenn ein U-Boot zerstört wird, rasen alle VTs auf mein U-Boot zu
Vergiss bitte nicht:
Ich scripte jetzt mit CR!
Toastbrot Kadett
Anmeldedatum : 10.03.09
Thema: Re: Verfolgungstorpedo Sa Mai 02, 2009 10:02 pm
Tera-Flint-Produzent schrieb:
Nun, der Torpedo hat 4 merkwürdige Eingenschaften:
Er wird vom U-Boot eingasammelt
Er explodiert wenn man ihn nochmals aktiviert
Er kann nicht mit der Grabentaste aktiviert werden
Wenn ein U-Boot zerstört wird, rasen alle VTs auf mein U-Boot zu
Also mal zu den Punkten:
Bei 1. musst du in dem Object-Call "Entrance" (Der immer aufgerufen wird wenn das Object ein anderes betritt) Die ID des Betretenden Objectes (Das betretende Object ist der erste Parameter von "Entrance")mit GetID abfragen und wenn diese ==SUB1(Uboot) ist dann lässt du den Torpedo explodieren.Und dann muss noch eine Abfrage rein ob der Torpedo auch die Action "Water" durchführt sonnst explodiert er auch wenn man ihn einfach hineinlegt also:
Bei 2.musst du noch einen Rücksetzer in den Torpedo einbauen der sich aktiviert wenn der Torpedo nicht mehr im Wasser ist und die Action wieder auf Wait setzt.wobei dieser Punkt nicht mehr wichtig ist da der Torpedo nicht mehr eingesammelt werden kann(siehe erstens);
Bei 3.Ist das einfach so das nur Torpedos bei denen IsTorpedo() truee zurückliefert mit der Grabentaste aktiviert werden können. füge also folgendes ein:
Code:
public func IsTorpedo() { return(1); }
Bei 4.Da ist das Problem das sich die Teile Automatich aktivieren wenn sie im Wasser sind. Du musst also ein Appendto SUB1 bauen das beim zerstören alle Torpedos im inneren des Ubootes in harmlose TRP1 verwandelt.Da das etwas aufwendiger ist und ich das deshalb hier nicht schreiben will hier: http://www.file-upload.net/download-1617584/Uboot-Append.c4d.html Es wird vorausgesetzt das du die ID des Torpedos auf TRP2 änderst.
Falls du noch Fragen hast melde dich
mfg Toastbrot
Tera-Flint-Produzent Oberst
Ort : PC Anmeldedatum : 14.03.09
Thema: KLASSE So Mai 03, 2009 11:14 am
DANKE
Dennoch fehlen nur noch 3 kleine Dinge:
1. ein Spawner, sodass jeder Clonk ab und zu TRP2s bekommt 2. Relaunches 3. Da in der Winkelanpassung bei Winkel Setzen (SetR) bei GetY noch + 90 steht, geht der Torpedo bei aktivierung senkrecht nach oben (bei einem Ziel natürlich nicht)
Das wars schon...
Zuletzt von Tera-Flint-Produzent am So Mai 03, 2009 11:19 am bearbeitet; insgesamt 1-mal bearbeitet (Grund : Doch nicht)
Toastbrot Kadett
Anmeldedatum : 10.03.09
Thema: Re: Verfolgungstorpedo So Mai 03, 2009 9:04 pm
Spawner ist am besten zu handhaben indem du nicht jedem Clonk sondern jedem Uboot einen Torpedo alle paar Scripts gibts.
Dies wäre ein guter Scenarionscript:
Code:
#strict
//wird aufgerufen wenn ein Clonk beitritt public func OnClonkCreation(pClonk){ //Uboot an zufälliger Position mit Besitzer Owner von pClonk erschaffen: var Sub= CreateObject(SUB1,RandomX(40,LandscapeWidth()-40),RandomX(20,LandscapeWidth()-20),GetOwner(pClonk)); //Clonk in das Uboot tuhn pClonk->Enter(Sub); }
protected func Initialize(){ //Scriptzähler starten ScriptGo( true ); }
//Nach 20 Scripts gibt es einen Torpedo für jedes Uboot protected func Script20(){ //Mit dieser Funktion GiveTorpedo(); //zurück zu Script1 goto(1); }
//In dieser Funktion werden wir jetzt die Torpedos verteilen public func GiveTorpedo(){
//Eine For-Schleife die alle Uboote findet und jedem ein Torpedo gibt: for(var Sub in FindObjects(Find_ID(SUB1)))CreateContents(TRP2,Sub); }
//Und nun zu den Relaunches //folgende Funktion wird immer aufgerufen wenn der letzte Clonk eines Spielers stirbt public func RelaunchPlayer(iPlr){ //Wir nehmen für jeden Spieler die Entsprechende Globale (also die mit dem Index gleich dem Spieler) //so haben wir für jeden Spieler eione Eigende Variable //Es sind 10 Relaunches vorgegeben: var MaxRelaunch=10;
//Relaunchen abrechen und Spieler Eliminieren wenn das Mass überschritten ist if(Global(iPlr)>=MaxRelaunch){EliminatePlayer(iPlr);return(1);}
//Ansonsten Clonk erschaffen der Spieler Crewhinzufügen //und weiter gehts mit OnClonkCreateion var Clonk=CreateObject(CLNK,0,0,iPlr); MakeCrewMember(Clonk,iPlr);
//Nachricht ausgeben das der Clonk gestorben ist Log("%s hat einen Clonk verloren und hat noch:%d",GetPlayerName(iPlr),10-Global(iPlr));
//Globale Hochzählen Global(iPlr)++; }
Tera-Flint-Produzent schrieb:
3. Da in der Winkelanpassung bei Winkel Setzen (SetR) bei GetY noch + 90 steht, geht der Torpedo bei aktivierung senkrecht nach oben (bei einem Ziel natürlich nicht)
Was ist daran nicht in Ordnung? wohin soll er denn dann?
Falls du noch zu irgentwas eine Frage hast schreib einfach
mfg Toastbrot
Tera-Flint-Produzent Oberst
Ort : PC Anmeldedatum : 14.03.09
Thema: Re: Verfolgungstorpedo Mo Mai 04, 2009 1:49 pm
Also das klappt net so wirklich. Der erste Spieler relauncht ganz normal aber der 2. Spieler hat plötzlich keine Kontrolle mehr über seinen Clonk!
Zitat :
Was ist daran nicht in Ordnung? wohin soll er denn dann?
Nun, wenn er kein Ziel findet soll er, wie ein normaler Torpedo, nach vorne düsen. (Bis er ein Ziel hat oder explodiert)