Thema: Fehlerhafte Platzierung von Objekten Do Aug 26, 2010 3:01 pm
Hi
Ich versuche seit einiger Zeit per Szenario-script Objekte für verfeindete Teams zu platzieren. Nun aber funktioniert das Beispielweise nicht, wenn 2 Spieler mitmachen, wenn jedoch nur ein Spieler es spielt, und denn anderen per Spielerbeitritt joinen lässt, steht alles bis auf die Flaggen am Platz. Der Script wirkt noch ein wenig zusammengestückelt, das kommt zum Teil vom Übernehmen des (fast) gleichnamigen Szen aus dem Originalpack, zum anderen sortiere ich meine dazugeschriebene Scripts erst, wenn sie fertig sind
func InitializePlayer(int iPlr) { // Der erste Spieler bekommt ein Brückensegment in die Werkstatt. :) if (GetPlayerCount() == 1 && !g_fInitializedPlayers) { var pHut = CreateConstruction(HUT3, 4236, 310, iPlr, 100, 1); pHut->CreateContents(WOOD); var pHut = CreateConstruction(HUT3, 156, 310, iPlr, 100, 1); pHut->CreateContents(WOOD); CreateContents(FLAG,GetCrew(iPlr)); var pWindMill = CreateConstruction(WMIL, 4192, 310, iPlr, 100, 1); var pWindMill = CreateConstruction(WMIL, 202, 310, iPlr, 100, 1); var pWorkshop = CreateConstruction(WRKS, 4300, 310, iPlr, 100, 1); var pWorkshop = CreateConstruction(WRKS, 90, 310, iPlr, 100, 1); CreateConstruction(FNDR, 4148, 310, iPlr, 100, 1); CreateConstruction(FNDR, 268, 310, iPlr, 100, 1); g_fInitializedPlayers = 1; } //Damit jeder Startet wo er soll { if(GetPlayerTeam(iPlr) == 1) SetPosition(160,300,GetHiRank(Par())); if(GetPlayerTeam(iPlr) == 2) SetPosition(4236,300,GetHiRank(Par())); return(1); } }
Noch dazu zufügen wäre die Errormeldúng von der Engine im Editormodus.
Zitat :
ERROR: Object call: target is zero! by: Initialize() (RattleHill.c4s\Script.c:23)
Da ich aber nicht weiss, welches Ziel Null ist, bringt sie mir herzlich wenig. Ich bin dankbar für jede Antwort
Limeox Admiral
Anmeldedatum : 25.04.10
Thema: Re: Fehlerhafte Platzierung von Objekten Do Aug 26, 2010 3:13 pm
Zitat :
FindObject(GLDM)->SetMissionAccess("RattledOut");
Da wird wohl der Error herkommen, zumindest glaube ich kaum dass du das Ziel Goldmine mit Melee kombinierst. Es findet kein Objekt "GLDM" (Spielziel Goldmine) und verursacht daher einen Fehler.
Laut Script bekommt immer nur der erste Spieler eine Flagge, der if-Block wird ja nur ausgeführt wenn es nur einen Spieler gibt und er noch nie ausgeführt wurde.
Fresserpflänzli Clonk
Anmeldedatum : 26.08.10
Thema: Re: Fehlerhafte Platzierung von Objekten Do Aug 26, 2010 9:19 pm
Au, stimmt, hab ich übersehen. >_< Jedenfalls hab ich nun
Zitat :
FindObject(GLDM)->SetMissionAccess("RattledOut");
rausgeschmissen,
Zitat :
if (GetPlayerCount() == 1 && !g_fInitializedPlayers)
auch raus, damit wird das lästige "nur 1 Spieler" ausgeschaltet. Hab ich auch entfernt, nun funktioniert alles, leider für jeden Spieler einmal, das heisst, bei 6 Spieler stehen dann 6 Windmühlen auf der gleichen Position, sieht zwar lustig aus, aber ich brauch das nur einmalig. Eigentlich habe ich Geldpunkte mit Wettstreit kombiniert, plus Team.txt, sollte eigentlich ein Wettsiedeln werden, gemischt mit Basenmeele
Limeox Admiral
Anmeldedatum : 25.04.10
Thema: Re: Fehlerhafte Platzierung von Objekten Do Aug 26, 2010 10:01 pm
Du kannst das Ganze auch einmalig in Initialize oder per Objects.txt platzieren und nicht pro Spieler.
Fresserpflänzli Clonk
Anmeldedatum : 26.08.10
Thema: Re: Fehlerhafte Platzierung von Objekten Do Aug 26, 2010 10:18 pm
>Objects.txt platzieren und nicht pro Spieler.
OMFG, darauf hätte ich selbst kommen können X_X Danke vielmals für die (eigentlich selbsterklärende) Lösung