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  

 

 Scoreboar mit relaunchscript

Nach unten 
AutorNachricht
Vadim_Rodin
Kadett
Kadett
Vadim_Rodin


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

Scoreboar mit relaunchscript Empty
BeitragThema: Scoreboar mit relaunchscript   Scoreboar mit relaunchscript EmptySo Jun 20, 2010 1:08 pm

Code:
/* Neues Szenario */

#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(906,480);} //Die Position Des Ersten Teams
  if(GetPlayerTeam(iPlr) == 2) {var i=GetCrewCount(iPlr); while (i--) GetCrew(iPlr,i)->SetPosition(1513,514);} // 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, HZCK, 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);
}

wenn ich relaunchposition ändere relauncht der hazardclonk zwar aber dann kommt Spieler :.....: eleminiert...
das ergibt doch irgendwie keinen sinn oder?
Nach oben Nach unten
 
Scoreboar mit relaunchscript
Nach oben 
Seite 1 von 1

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
CNDG :: Sonstiges :: Scripthilfe-
Gehe zu: