Alter : 28 Ort : Niedersachsen Anmeldedatum : 29.07.08
Thema: Message, wenn Objekt entfernt wird Sa Okt 23, 2010 12:57 pm
Ich suche nach einem Script, das ganz einfach eine Message ausgibt, sobald ein bestimmtes Objekt von einem Spieler genommen wird (Für ein CTF-Szenario), also zB.: Spieler 1 nimmt die Flagge, eine globale Message erscheint "Spieler 1 hat die Flagge erobert!", sobald Spieler 2 die Flagge dann wieder hat, "Spieler 2 hat die Flagge!" usw.
Müsste eigentlich simpel sein, aber ich habe überhaupt keine Ahnung von Scripten! Danke im Vorraus.
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Message, wenn Objekt entfernt wird Sa Okt 23, 2010 1:11 pm
Das musst du im Script der Flagge regeln. Die hat Folgendes:
Da sieht man, das es im Log ein gewissens $HasTheFlag$ drinnen ist. Nun kannst du zum einen in dir die Flagge kopieren (Hazard.c4d \ Goals.c4d \ CTF.c4d \ Flagbase.c4d \ Flag.c4d) und din dieser die Datei en StringTblDE.txt und StringTblEN.txt verändern. Da steht drinn:
Zitat :
ReturnedTheFlag=%s hat die Flagge zurückgebracht CapturedTheFlag=%s hat die Flagge erfolgreich geklaut HasTheFlag=%s hat die Flagge von Team %s FlagLost=Die Flagge von Team %s wurde fallen gelassen FlagReturned=Die Flagge von Team %s ist zurück
Diese Werte kannst du dann ändern. Natürlich auch für die Englische Version
Draewa Fähnrich
Alter : 28 Ort : Niedersachsen Anmeldedatum : 29.07.08
Thema: Re: Message, wenn Objekt entfernt wird Sa Okt 23, 2010 6:43 pm
Hmmm... Ich habe versucht, das durch
Code:
protected func Collected(pClonk) { if (!Collected(this, pClonk)); Message("%BeispielString%",0); return(1); }
zu lösen, das Objekt meldet aber einfach nichts. Was ist falsch?
Limeox Admiral
Anmeldedatum : 25.04.10
Thema: Re: Message, wenn Objekt entfernt wird Sa Okt 23, 2010 6:49 pm
Das gibt erstmal eine Endlosschleife, da du jedes Mal die Funktion nochmal aufrufst x)
Wenn du ein neues Objekt machst, solltest du Entrance(object pInto) benutzen. Die Funktion wird aufgerufen, wenn ein Objekt eingesammelt wird. Genauso kannst du dann auch Departure(object pContainer) benutzen, wenn das Objekt fallengelassen wird.
Draewa Fähnrich
Alter : 28 Ort : Niedersachsen Anmeldedatum : 29.07.08
Thema: Re: Message, wenn Objekt entfernt wird So Okt 24, 2010 10:00 am
Jetzt hab ich es folgendermaßen:
Code:
protected func Entrance(this,pClonk) { Message("@Die Flagge wurde genommen!",0); Sound("Scream"); }
Schöner wäre es so:
Code:
protected func Entrance(this,pClonk) { Message("Die Flagge wurde von %s genommen!", this, GetPlayerName(GetOwner)); Sound("Scream"); }
Mit zweiterem kommt aber leider folgender Error: ERROR: '(' expected, but found ')' (in Entrance, Szenario.c4s\Flagge.c4d\Script.c:547:75) also genau beim String. Was ist falsch? Ich habe das fast 1 zu 1 aus der Doku übernommen und die Syntax ist (glaube ich) auch richtig.
Btw: Der Thread hier sollte besser zu Anfänger verschoben werden
ClonkGeist Brigadegeneral
Anmeldedatum : 23.01.10
Thema: Re: Message, wenn Objekt entfernt wird So Okt 24, 2010 10:31 am
Bei GetOwner fehlt das Objekt.
Zitat :
protected func Entrance(this,pClonk) { Message("Die Flagge wurde von %s genommen!", this, GetPlayerName(GetOwner(pClonk))); Sound("Scream"); }
Mal abgesehen davon, wieso "this" als Parameter? - Scheint mir sinnlos.
Draewa Fähnrich
Alter : 28 Ort : Niedersachsen Anmeldedatum : 29.07.08
Thema: Re: Message, wenn Objekt entfernt wird So Okt 24, 2010 10:37 am
this in der Funktion oder in der Message? In der Message hab ich es aus versehen geschrieben, in der Funktion dachte ich, es gehört zur Syntax (Welche Funktion,welcher Aktor,welches Ziel?). Danke für die Hilfe, jetzt klappt es!
[Edit]
Mist, nächstes Problem! Das Spiel gibt zwar keine Errors mehr, dafür wird die Nachricht jetzt verkorkst ausgegeben: "Spieler (Null) aus Team (Null) hat die Flagge genommen!" Hab ich im String etwas falsch gemacht? Die fertige Funktion sieht so aus:
Code:
protected func Entrance(this,pClonk) { Message("@Die Flagge wurde von %s aus Team %s genommen!", this, GetPlayerName(GetOwner(pClonk)), GetTeamName(GetOwner(pClonk))); Sound("Scream"); }
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Message, wenn Objekt entfernt wird So Okt 24, 2010 11:04 am
Ähm, was sucht der Paramater "this" in der Funktion? o_O? Mach die mal raus und schreib ein "object" vor das pClonk. Und bei this in dem Message Befehl würde ich noch die Funktionsklammern mitreinnehmen. Also so:
Code:
protected func Entrance(object pClonk) { Message("@Die Flagge wurde von %s aus Team %s genommen!", this(), GetPlayerName(GetOwner(pClonk)), GetTeamName(GetOwner(pClonk))); Sound("Scream"); }
Draewa Fähnrich
Alter : 28 Ort : Niedersachsen Anmeldedatum : 29.07.08
Thema: Re: Message, wenn Objekt entfernt wird So Okt 24, 2010 11:16 am