Was muss man im Script einfügen, das ein Team gewinnt, wenn es einen bestimmten Gegenstand in die Basis bringt. Hab schon nachgesucht und zwar einen BEfehl gefunden der funtzt leider net oder ich war zu blöd . Bitte um ein bereits fertiges Script in dass ich nur noch die id setzten muss (also wenns geht) mfg
Wasserwipf General
Alter : 28 Ort : Schweiz / Aargau Anmeldedatum : 14.08.09
Thema: Re: Objekt finden Sa Feb 19, 2011 7:48 pm
Ich bin kein Scripter, aber ich würd in nen Shedule Eine If() Abfrage stecken, welche FindObject(DEINOBJEKT) aufruft. Ich würds so machen, das der Script in der Basis steht, und die dann danach sucht. Inetwa so:
Alter : 26 Ort : In der Nähe Hamburgs Anmeldedatum : 03.11.09
Thema: Re: Objekt finden Sa Feb 19, 2011 8:02 pm
1. Das hier muss ganz klar nach Anfragen verschoben werden. Admin? 2. Sry Wasserwipf, aber so leicht isses dann auch nicht. Dein Script stimmt vorne und hinten nicht. Also im Szenario machst du dir eine neue Datei, die System.c4g heißt. Darin erstellst du ein Script mit beliebigem Namen. Da schreibst du dann rein:
Code:
#appendto 0000 // id des Objekts
public func Entrance(pNewContainer) { var WhoseBase,Team; WhoseBase=GetBase(pNewContainer); if(WhoseBase>=0) { Team=GetPlayerTeam(WhoseBase); for(var Players=GetPlayerCount(C4PT_User);Players>0;Players--) if(GetPlayerTeam(GetPlayerByIndex(Players-1))!=Team) EliminatePlayer(GetPlayerByIndex(Players-1)); Schedule("GameOver()",37); } return(_inherited(pNewContainer)); }
Falls du das Objekt gemacht hast kannst du auch einfach den Script ohne die erste Zeile in den Script deines Objektes kopieren.
Nach Anfragen verschoben. Ein Punkt an den Autor
Zuletzt von Mozart am Sa Feb 19, 2011 10:53 pm bearbeitet; insgesamt 2-mal bearbeitet (Grund : Darum)
Limeox Admiral
Anmeldedatum : 25.04.10
Thema: Re: Objekt finden Sa Feb 19, 2011 8:15 pm
Direkt an die ID appenden? Naja, wenns ein besonderes Objekt sein soll, geht das, aber wenns zB daneben noch Fakes geben soll, klappt das nicht. Außerdem ist der Script seltsam. zB verlangt GetBase als 1. Parameter den Besitzer, kein Objekt. Und... schön sieht er auch nicht aus.
Am besten ist es, dem Objekt einen Effekt anzuhängen, der das prüft.
Code:
//Dem Objekt den Effekt anhängen AddEffect("IntCheckBase", pObj, 1, 5);
global func FxIntCheckBaseTimer(object pTarget) { var pContainer = Contained(pTarget); if (!pContainer || !(GetCategory(pContainer) & C4D_Structure)) return; //Die Basis braucht eine Flagge if (!FindObject2(Find_ActionTarget(pContainer), Find_ID(FLAG))) return; var iOwner = GetOwner(pContainer); if (iOwner == NO_OWNER) return; //Die anderen eliminieren var iTeam = GetPlayerTeam(iPlr); for (var i; i < GetPlayerCount(); i++) if (GetPlayerTeam(GetPlayerByIndex(i)) != iTeam) EliminatePlayer(GetPlayerByIndex(i)); //Yep, das wars. Schedule("GameOver()", 70); return FX_Execute_Kill; }
Donky Hauptman
Alter : 26 Ort : In der Nähe Hamburgs Anmeldedatum : 03.11.09
Thema: Re: Objekt finden Sa Feb 19, 2011 8:26 pm
Ok er sieht nicht schön aus, weil ich ihn auf die Schnelle getippt hab. Aber du irrst dich GetBase verlangt ein Objekt, FindBase verlangt einen Spieler. GetBase
Zitat :
Liefert die Nummer des Spielers, dessen Heimatbasis pObj ist. Rückgabewert -1 wenn pObj keine Heimatbasis ist.
FindBase
Zitat :
Sucht eine Heimatbasis eines Spielers. Die Heimatbasis ist zumeist das Gebäude, auf dem eine Flagge weht.
BennyS Clonk
Anmeldedatum : 19.02.11
Thema: Re: Objekt finden So Feb 20, 2011 4:55 am
ehm geht nich könnts ihr ma für ganz dumme erklären mit der Objekt ID HEZ_? Also wenn das Herz in der Basis ist hat das Team gewonnen. Wär nett...
ClonkGeist Brigadegeneral
Anmeldedatum : 23.01.10
Thema: Re: Objekt finden So Feb 20, 2011 11:40 am
Ich gehe mal davon aus, dass du bereits eine System.c4g hast, in deinem Szenario?
In der System.c4g erstellst du in einer neuen Scriptdatei einen globalen Effekt für das Objekt:
Code:
#strict 2
global func FxCheckBaseTimer(object target, int nr) { if(!Contained(target)) return false; if(GetAlive(Contained(target)) && Contained(target) != EffectVar(0, target, nr)) EffectVar(0, target, nr) = Contained(target); // Speichert den Clonk, der das Objekt zuletzt hatte. if(!FindBase(GetOwner(EffectVar(0, target, nr)))) return false; if(Contained(target) != FindBase(GetOwner(EffectVar(0, target, nr)))) return false;
// Eliminieren var iTeam = GetPlayerTeam(EffectVar(0, target, nr)); for(var i = 0; i < GetPlayerCount(); i++) { if(GetPlayerTeam(i) != iTeam) { EliminatePlayer(i); } }
Damit das ganze funktioniert, musst du (im Szenarienscript bspw) den Effekt für das Objekt aufrufen: AddEffect("CheckBase", CreateObject(HEZ_, 100, 50), 101, 10);
BennyS Clonk
Anmeldedatum : 19.02.11
Thema: Re: Objekt finden So Feb 20, 2011 6:15 pm
ne sry geht auch nich. Hab in der System.c4g das Script erstellt und im Szenarienscript Add Effect gemacht geht nicht sry
ClonkGeist Brigadegeneral
Anmeldedatum : 23.01.10
Thema: Re: Objekt finden Mo Feb 21, 2011 4:49 pm
Zeig mal den Teil mit AddEffect im Szenarienscript, also mit der ganzen Funktion.
BennyS Clonk
Anmeldedatum : 19.02.11
Thema: Re: Objekt finden Mo Feb 21, 2011 6:19 pm
muss man das script auch mit func int... machen?
ClonkGeist Brigadegeneral
Anmeldedatum : 23.01.10
Thema: Re: Objekt finden Mo Feb 21, 2011 7:29 pm
func int? Was meinst du jetzt damit? Aber paste trotzdem mal die Funktion, ich möchte das gerne sehen. Außerdem: Hast du was an meinem Script den ich dir gegeben habe verändert?