CNDG
Würden Sie gerne auf diese Nachricht reagieren? Erstellen Sie einen Account in wenigen Klicks oder loggen Sie sich ein, um fortzufahren.


Ein Forum, in dem sich neue Clonk Entwickler untereinander austauschen können.
 
StartseiteStartseite  PortalPortal  SuchenSuchen  Neueste BilderNeueste Bilder  AnmeldenAnmelden  LoginLogin  

 

 Relaunchpunkte mit Scoreboard Einfügen

Nach unten 
3 verfasser
AutorNachricht
Vadim_Rodin
Kadett
Kadett
Vadim_Rodin


Männlich Alter : 26
Ort : Scheer
Anmeldedatum : 19.01.09

Relaunchpunkte mit Scoreboard Einfügen Empty
BeitragThema: Relaunchpunkte mit Scoreboard Einfügen   Relaunchpunkte mit Scoreboard Einfügen EmptyMo 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.
Nach oben Nach unten
Mozart
Kanzler
Kanzler
Mozart


Männlich Alter : 31
Ort : Vaihingen/Enz
Anmeldedatum : 24.02.08

Relaunchpunkte mit Scoreboard Einfügen Empty
BeitragThema: Re: Relaunchpunkte mit Scoreboard Einfügen   Relaunchpunkte mit Scoreboard Einfügen EmptyMo Feb 22, 2010 11:47 pm

Das wird mal von Tutorials nach Scripts verschoben, da liegt es besser.
Nach oben Nach unten
http://www.funamfag.de
Spiederschwein
Kadett
Kadett
Spiederschwein


Männlich Anmeldedatum : 04.07.09

Relaunchpunkte mit Scoreboard Einfügen Empty
BeitragThema: Re: Relaunchpunkte mit Scoreboard Einfügen   Relaunchpunkte mit Scoreboard Einfügen EmptyDi Feb 23, 2010 4:11 pm

eine frage hast du mehr gemacht als die Leute die Immer schöne Überschriften zu ihren Skripts dazu machen? du hast nicht wirklich was erklärt Sad

aber es funktioniert
Nach oben Nach unten
Gesponserte Inhalte





Relaunchpunkte mit Scoreboard Einfügen Empty
BeitragThema: Re: Relaunchpunkte mit Scoreboard Einfügen   Relaunchpunkte mit Scoreboard Einfügen Empty

Nach oben Nach unten
 
Relaunchpunkte mit Scoreboard Einfügen
Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» Scoreboard+Killnachrichten
» Scoreboard erstellen und verwenden

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
CNDG :: Fortgeschrittene :: Scripts-
Gehe zu: