Vadim_Rodin Kadett
Alter : 26Ort : ScheerAnmeldedatum : 19.01.09 Thema: Relaunchpunkte mit Scoreboard Einfügen Mo Feb 22, 2010 11:45 pm Hallo,ich werde euch heute Erklären wie man relaunchpunkte und ScoreBoard in ein szen einfügt hoffe ich helfe euch.
Erklärung ist unten.
Der Komplette script:
Code: #strict // Spielerkonfiguration static const PlrVarNumber = 3; // Scoreboard static const SbrdColRelaunches = 0, SbrdColKills = 1; //////////////////////////////////// script //////////////////////////////////// /*---------------------------------| Engine |---------------------------------*/ // Initialisierung protected func Initialize() { // Objekte; Deaktiviert return(1); } protected func InitializePlayer(int iPlr) { // Fog of War // SetFoW(1, iPlr); // Deaktiviert // Scoreboard initialisieren InitializeScoreboard(); //Startposition von Teams. if(GetPlayerTeam(iPlr) == 1) {var i=GetCrewCount(iPlr); while (i--) GetCrew(iPlr,i)->SetPosition(374,171);} //Die Position Des Ersten Teams if(GetPlayerTeam(iPlr) == 2) {var i=GetCrewCount(iPlr); while (i--) GetCrew(iPlr,i)->SetPosition(2944,1153);} // Des Zweiten // Spieler erzeugen CreatePlayer(iPlr); // Spieler launchen RelaunchPlayer(iPlr); return(1); } protected func RelaunchPlayer(int iPlr) { // Clonk var pClonk = GetCrew(iPlr); // Noch Relaunches übrig? if (!pClonk) { if (--Global(iPlr*PlrVarNumber+1) >= 0) { // Scoreboard aktualisieren UpdateScoreboard(iPlr); } else { // Scoreboard aktualisieren UpdateScoreboard(iPlr); return(); } } // Relaunchen pClonk = Redefine(pClonk, PYRO, iPlr); // Sichtweite // SetPlrViewRange(400, pClonk); // Deaktiviert RelaunchClonk(iPlr, pClonk); return(); } protected func RelaunchClonk(int iPlr, object pClonk) { // Ventalionen Flint CreateContents(VNFL, pClonk); return(1); } protected func OnClonkDeath(object pClonk, int iKilledBy) { // Spieler var iPlr = GetOwner(pClonk); // Tod durch den Besitzer (= Selbstmord) if (iKilledBy == iPlr) { // Nachricht Log("Selbstmord!", GetTaggedPlayerName(iPlr));Sound("SelfKill00*"); } // Tod durch einen Teamkollegen :/ else if (GetPlayerTeam(iKilledBy) == GetPlayerTeam(iPlr)) { // Nachricht Log("%s ist ein Teamkiller!", GetTaggedPlayerName(iPlr), GetTaggedPlayerName(iKilledBy));Sound("Soundmussnichtsein"); } // Anderer Tod else if (iKilledBy < 0) { // Nachricht Log("Tot.", GetTaggedPlayerName(iPlr)); } // Tod durch einen Gegner else if (iKilledBy >= 0) { // Nachricht Log("<c 00fffc>%s <c 2aff00>wurde Getötet von <c ff0000>%s!", GetTaggedPlayerName(iPlr), GetTaggedPlayerName(iKilledBy));Sound("Soundmussnichtsein"); // Spielervariablen Global(iKilledBy*PlrVarNumber+2)++; // Scoreboard: Kills // Scoreboard aktualisieren UpdateScoreboard(iKilledBy); } return(1); } /*---------------------------------| Spielerfunktionen |----------------------*/ protected func CreatePlayer(int iPlr) { // Spielervariablen Global(iPlr*PlrVarNumber+0) = 1; // Initialisationsstatus Global(iPlr*PlrVarNumber+1) = 5; // Relaunches Global(iPlr*PlrVarNumber+2) = 0; // Kills // Scoreboard UpdateScoreboard(iPlr); DoScoreboardShow(1, iPlr); return(1); } protected func RemovePlayer(int iPlr) { // Spielervariablen Global(iPlr*PlrVarNumber+0) = 0; // Initialisationsstatus Global(iPlr*PlrVarNumber+1) = 0; // Relaunches Global(iPlr*PlrVarNumber+2) = 0; // Kills // Scoreboard UpdateScoreboard(iPlr); return(1); } /*---------------------------------| Scoreboardfunktionen |-------------------*/ public func InitializeScoreboard() { // Scoreboardstruktur SetScoreboardData(SBRD_Caption, SBRD_Caption, "Scoreboard"); SetScoreboardData(SBRD_Caption, SbrdColRelaunches, "{{BILD}}"); SetScoreboardData(SBRD_Caption, SbrdColKills, "{{BILD}}"); return(1); } public func UpdateScoreboard(int iPlr) { // Scoreboard aktualisieren var iPlrID = GetPlayerID(iPlr); // Spieler noch nicht initialisiert oder schon eliminiert? if (!Global(iPlr*PlrVarNumber+0)) { SetScoreboardData(iPlrID, SBRD_Caption); // Spielername SetScoreboardData(iPlrID, SbrdColRelaunches); // Relaunches SetScoreboardData(iPlrID, SbrdColKills); // Kills } // Sonst updaten else { SetScoreboardData(iPlrID, SBRD_Caption, Format("%s", GetTaggedPlayerName(iPlr))); // Spielername SetScoreboardData(iPlrID, SbrdColRelaunches, Format("%d", Global(iPlr*PlrVarNumber+1)), Global(iPlr*PlrVarNumber+1)); // Relaunches if (Global(iPlr*PlrVarNumber+1) < 0) SetScoreboardData(iPlrID, SbrdColRelaunches, "Eliminiert!", Global(iPlr*PlrVarNumber+1)); // Out SetScoreboardData(iPlrID, SbrdColKills, Format("%d", Global(iPlr*PlrVarNumber+2)), Global(iPlr*PlrVarNumber+2)); // Kills } // Nach den Relaunches sortieren SortScoreboard(SbrdColRelaunches, 1); return(1); } /*---------------------------------| Funktionen |-----------------------------*/ public func Redefine(object pClonk, id idTo, int iPlr) { // Welcher Clonk? if (!pClonk && this()) pClonk = this(); var pNew = pClonk; // Neuer Clonk if (GetID(pClonk) != idTo) { // Neuer Clonk erstellen pNew = PlaceAnimal(idTo); // Alten Clonk übernehmen if (pClonk) { // Position pNew -> SetPosition(GetX(pClonk), GetY(pClonk)); // Inhalte übernehmen pNew -> GrabContents(pClonk); // Aktion übernehmen pNew -> SetAction(GetAction(), GetActionTarget(0, pClonk), GetActionTarget(1, pClonk)); // Richtung übernehmen pNew -> SetDir(GetDir(pClonk)); // Kommandorichtung übernehmen pNew -> SetComDir(GetComDir(pClonk)); // Fertig; Diesen Clonk nun entfernen RemoveObject(pClonk); } } // Position var iX = AbsX(GetX(pNew)), iY = AbsY(GetY(pNew)); RelaunchPosition(iX, iY, GetPlayerTeam(iPlr)); pNew -> SetPosition(iX, iY); // Besitzer pNew -> SetOwner(iPlr); // Crewmitglied pNew -> MakeCrewMember(pNew, iPlr); // Volle Startenergie pNew -> DoEnergy(10000); // Für den Spieler SetCursor(iPlr, pNew); SetPlrView(iPlr, pNew); return(pNew); } /* Relaunchposition */ public func RelaunchPosition(& iX, & iY, int iTeam) { return(1); }
Erklärung
Code: // Spielerkonfiguration static const PlrVarNumber = 3; // Scoreboard static const SbrdColRelaunches = 0, SbrdColKills = 1;
Konfiguriert die Spieler
Code: InitializeScoreboard(); //Intialisiert das Scoreboard if(GetPlayerTeam(iPlr) == 1) {var i=GetCrewCount(iPlr); while (i--) GetCrew(iPlr,i)->SetPosition(374,171);} //Die Position Des Ersten Teams if(GetPlayerTeam(iPlr) == 2) {var i=GetCrewCount(iPlr); while (i--) GetCrew(iPlr,i)->SetPosition(2944,1153);} // Des Zweiten
StartPosition von teams (ist frei wählbar) und die intilisierung des Scoreboard.
Code: CreatePlayer(iPlr); // das Der Spieler auch gerelauncht wird. RelaunchPlayer(iPlr); return(1);
Relauncht den Spieler.
Code: protected func RelaunchPlayer(int iPlr) { // Clonk var pClonk = GetCrew(iPlr); // Relaunches übrig? if (!pClonk) { if (--Global(iPlr*PlrVarNumber+1) >= 0) { // Scoreboard aktualisieren UpdateScoreboard(iPlr); } else { // Scoreboard aktualisieren UpdateScoreboard(iPlr); return(); } }
Fragt ab ob noch relaunches Übrig sind und Aktualisiert den Scoreboard.
Code: protected func RelaunchClonk(int iPlr, object pClonk) { // Holt Etwas ins Inventar beim Relaunch und beim Start CreateContents(IDID, pClonk); return(1); }
Muss nicht sein wenn man dass nicht möchte einfach Entfernen.
Code: protected func OnClonkDeath(object pClonk, int iKilledBy) { // Spieler var iPlr = GetOwner(pClonk); // Tod durch den Besitzer (= Selbstmord) if (iKilledBy == iPlr) { // Nachricht Log("Selbstmord!", GetTaggedPlayerName(iPlr));Sound("SelfKill00*"); }
wenn ein Clonk Getötet Wird Kommt eine Nachricht.
Code: protected func CreatePlayer(int iPlr) { // Spielervariablen Global(iPlr*PlrVarNumber+0) = 1; // Initialisationsstatus Global(iPlr*PlrVarNumber+1) = 5; // Relaunches Global(iPlr*PlrVarNumber+2) = 0; // Kills // Scoreboard UpdateScoreboard(iPlr); DoScoreboardShow(1, iPlr); return(1); } protected func RemovePlayer(int iPlr) { // Spielervariablen Global(iPlr*PlrVarNumber+0) = 0; // Initialisationsstatus Global(iPlr*PlrVarNumber+1) = 0; // Relaunches Global(iPlr*PlrVarNumber+2) = 0; // Kills // Scoreboard UpdateScoreboard(iPlr); return(1); }
ohne dies würde der Clonk ja nicht relaunchen. Und Der Scoreboard wird Upgedated.
Code: public func InitializeScoreboard() { // Scoreboardstruktur SetScoreboardData(SBRD_Caption, SBRD_Caption, "Scoreboard"); SetScoreboardData(SBRD_Caption, SbrdColRelaunches, "{{BILD}}"); SetScoreboardData(SBRD_Caption, SbrdColKills, "{{BILD}}");
Code: public func UpdateScoreboard(int iPlr) { // Scoreboard aktualisieren var iPlrID = GetPlayerID(iPlr); // Spieler noch nicht initialisiert oder schon eliminiert? if (!Global(iPlr*PlrVarNumber+0)) { SetScoreboardData(iPlrID, SBRD_Caption); // Spielername SetScoreboardData(iPlrID, SbrdColRelaunches); // Relaunches SetScoreboardData(iPlrID, SbrdColKills); // Kills } // Sonst updaten else { SetScoreboardData(iPlrID, SBRD_Caption, Format("%s", GetTaggedPlayerName(iPlr))); // Spielername SetScoreboardData(iPlrID, SbrdColRelaunches, Format("%d", Global(iPlr*PlrVarNumber+1)), Global(iPlr*PlrVarNumber+1)); // Relaunches if (Global(iPlr*PlrVarNumber+1) < 0) SetScoreboardData(iPlrID, SbrdColRelaunches, "Eliminiert!", Global(iPlr*PlrVarNumber+1)); // Out SetScoreboardData(iPlrID, SbrdColKills, Format("%d", Global(iPlr*PlrVarNumber+2)), Global(iPlr*PlrVarNumber+2)); // Kills } // Nach den Relaunches sortieren SortScoreboard(SbrdColRelaunches, 1); return(1); }
Der ScoreBoard wird Upgedatet.
Zitat : SortScoreboard(SbrdColRelaunches, 1); Sortiert nach den Relaunches.
Code: SetScoreboardData(iPlrID, SBRD_Caption, Format("%s", GetTaggedPlayerName(iPlr))); // Spielername SetScoreboardData(iPlrID, SbrdColRelaunches, Format("%d", Global(iPlr*PlrVarNumber+1)), Global(iPlr*PlrVarNumber+1)); // Relaunches if (Global(iPlr*PlrVarNumber+1) < 0) SetScoreboardData(iPlrID, SbrdColRelaunches, "Eliminiert!", Global(iPlr*PlrVarNumber+1)); // Out SetScoreboardData(iPlrID, SbrdColKills, Format("%d", Global(iPlr*PlrVarNumber+2)), Global(iPlr*PlrVarNumber+2)); // Kills
%s nimmt den spielernamen. %d nimmt die Relaunches. z.B
Code: Log("%s = Twonky hat nur noch %d Relaunches!");
Code: public func Redefine(object pClonk, id idTo, int iPlr) { // Welcher Clonk? if (!pClonk && this()) pClonk = this(); var pNew = pClonk; // Neuer Clonk if (GetID(pClonk) != idTo) { // Neuen Clonk erstellen pNew = PlaceAnimal(idTo); // Alten Clonk übernehmen if (pClonk) { // Position pNew -> SetPosition(GetX(pClonk), GetY(pClonk)); // Inhalte übernehmen pNew -> GrabContents(pClonk); // Aktion übernehmen pNew -> SetAction(GetAction(), GetActionTarget(0, pClonk), GetActionTarget(1, pClonk)); // Richtung übernehmen pNew -> SetDir(GetDir(pClonk)); // Kommandorichtung übernehmen pNew -> SetComDir(GetComDir(pClonk)); // Fertig; Diesen Clonk nun entfernen RemoveObject(pClonk); } }
Code: pNew -> SetPosition(GetX(pClonk), GetY(pClonk));
Position wo er relauncht.
Code: pNew -> GrabContents(pClonk);
Übernimmt die Inhalte.
Code: pNew -> SetAction(GetAction(), GetActionTarget(0, pClonk), GetActionTarget(1, pClonk));
Übernimmt dei Aktion.
Code: pNew -> SetDir(GetDir(pClonk));
Übernimmt Die Richtung.
Code: pNew -> SetComDir(GetComDir(pClonk));
Übernimmt die Kommandorichtung.
Code: RemoveObject(pClonk);
Entfernt den Clonk.
Code: // Position var iX = AbsX(GetX(pNew)), iY = AbsY(GetY(pNew)); RelaunchPosition(iX, iY, GetPlayerTeam(iPlr)); pNew -> SetPosition(iX, iY); // Besitzer pNew -> SetOwner(iPlr); // Crewmitglied pNew -> MakeCrewMember(pNew, iPlr); // Volle Startenergie pNew -> DoEnergy(10000); // Für den Spieler SetCursor(iPlr, pNew); SetPlrView(iPlr, pNew); return(pNew); }
Code: var iX = AbsX(GetX(pNew)), iY = AbsY(GetY(pNew)); RelaunchPosition(iX, iY, GetPlayerTeam(iPlr)); pNew -> SetPosition(iX, iY);
Relaunchposition.
Code: pNew -> SetOwner(iPlr);
Besitzer.
Code: pNew -> MakeCrewMember(pNew, iPlr);
Crewmitglied.
Code: pNew -> DoEnergy(10000);
Volle Startenergie.
Code: SetCursor(iPlr, pNew); SetPlrView(iPlr, pNew); return(pNew); }
Für Den Spieler.
Code: public func RelaunchPosition(& iX, & iY, int iTeam) { return(1); //und Return halt }
Die Relaunchposition.
so das wars jetzt sollte es klappen, ich hoffe das tutorial gefällt euch. Jetzt sollte ein ScoreBoard Erscheinen und man sollte 5 Relaunchpunkte haben.
Gefällt mir Gefällt mir nicht