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

Austausch | 
 

 Szenarioscript - Eliminieren

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
AutorNachricht
MagicWipf
Brigadegeneral
Brigadegeneral
avatar

Männlich Alter : 20
Ort : Irgendwo im Nirgendwo
Anmeldedatum : 14.02.11

BeitragThema: Szenarioscript - Eliminieren   Sa Jul 30, 2011 7:28 pm

Hallo Leute,
Ich habe versucht mit einem Szenarioscript einen Effekt zu erstellen, der die Funktion Hallo() aufruft, wenn der durch FindObject() ermittelte Wipf tot ist. Diese Funktions soll dann alle Spieler außer den Killer Eliminieren. Aber das klappt nicht so ganz.
Das ist der Script:
Code:
func Initialize() {
  AddEffect("Test",0,200,1,0);
  return(1);
}

global func FxTestStart()
{
if(GetAlive(FindObject(WIPF))) Hallo();
}

global func Hallo()
{
for(var i = GetPlayerCount(); i > 0; i--)
  {
  var y=i-1;
  if(!GetPlayerByIndex(y)==GetKiller(FindObject(WIPF))) EliminatePlayer(i-1);
  }
}

Ich habe auch mal versucht, Hallo() aufzurufen wenn der Wipf tot ist. Dann hat es auch nicht funktiniert. Es muss laso an der Funktion Hallo liegen. Könnt ihr mir da weiterhelfen?

EDIT:
Ich hab das Problem selbst gelöst.
1. Wird die Definition des Wipfs geändert wenn er draufgeht, wesshalb der Killer nicht zurück gegeben werden kann.
2. Ist der Script ein Produkt aus 2 min Arbeit und hat darum auch bestimmmt viele andere Fehler -.-

Nun habe ich den Script geändert. Er erstellt nun einen Clonk namens Hugo und steckt ihn in das Team vom Scriptplayer "Gegner".
Er läuft quer durch die Map und wer ihn tötet, bleibt verschont wenn die For-Schleife alle Eliminiert, die Hugo nicht getötet haben.

Hier ist der Script:
Code:

/*-- Neues Szenario --*/

#strict

static pClonk;

func Initialize() {
  CreateScriptPlayer("Gegner",RGB(25, 30, 125));
  pClonk = CreateObject(CLNK,RandomX(20,LandscapeWidth()),50,0);
  SetGraphics(0, pClonk, MCLK);
  ScriptGo(1);
  return(1);
}

func InitializePlayer()
{
  RemoveObject(GetHiRank(GetPlayerByName("Gegner")));
  pClonk -> SetName("Hugo");
  MakeCrewMember(pClonk,GetPlayerByName("Gegner"));
  SetOwner(GetPlayerByName("Gegner"),pClonk);
}


global func Schleife()
{
 for(var i=GetPlayerCount(); i > -1; i--)
  {
  Log(Format("Spieler %v wird geprüft",GetPlayerByIndex(i)));
  if(!i == GetKiller(pClonk)) EliminatePlayer(i);
  if(i == -1) break;
  }
 return(1);
}

func Script1()
{
  var Player = Random(GetPlayerCount());
  var Color = GetPlrColorDw(Player-1);
  if(Random(10)) SetColorDw(Color,pClonk);
  var Laufen = RandomX(20,LandscapeWidth());
  SetCommand(pClonk,"MoveTo",0,Laufen,GetY(pClonk));
}

func Script10()
 {
  if(GetAlive(pClonk)) goto(1);
 }

func Script15()
 {
  Schleife();
 }

func Script16()
{
 if(GetKiller(pClonk) == -1) Message("Hugo hat sich selbst ermordet der Trottel! Das spiel geht unentschieden aus");
 else Message(Format("%v hat den %v getötet und wird darum zum Sieger gekrönt.",GetPlayerName(GetKiller(pClonk)),GetName(pClonk)));
}


Das Problem: Es funktioniert immer noch nicht. Mal wird nur ein Spieler eliminiert, dann wieder keiner und am Schluss alle -.-

Ich denke der Script ist selbsterklärend. Wenn nicht, werde ich ihn noch weiter erläutern.
Nach oben Nach unten
Benutzerprofil anzeigen
ClonkGeist
Brigadegeneral
Brigadegeneral


Männlich Anmeldedatum : 23.01.10

BeitragThema: Re: Szenarioscript - Eliminieren   So Jul 31, 2011 12:29 pm

Naja, die Schleife sieht falsch aus:
Wenn du i direkt am Anfang als GetPlayerCount() setzt, dann musst du immer i um 1 herunterzählen. Um es aber einfacher zu haben, bevorzuge ich die umgekehrte Methode:
Code:
for(var i = 0; i < GetPlayerCount(); i++)
Zudem, was versuchst du mit "if(!i == GetKiller(pClonk))" zu bewirken?
Falls i > 0 ist, wird dann immer geprüft: 0 == GetKiller(pClonk), Falls i = 0 ist, 1 == GetKiller(pClonk). Das '!' muss da weg.
Nach oben Nach unten
Benutzerprofil anzeigen
Wipfmagus
Konteradmiral
Konteradmiral
avatar

Weiblich Alter : 22
Anmeldedatum : 06.03.10

BeitragThema: Re: Szenarioscript - Eliminieren   Di Aug 23, 2011 11:27 pm

Du meinst wahrscheinlich
Code:
if(i != GetKiller(pClonk))
... du wolltest dies anscheinend als
Code:
if(!(i == GetKiller(pClonk)))
schreiben.
Klammern musst du setzen - denk an Punkt- vor Strichrechnung! Sonst gilt die Negation nur für die Variable i.
Logische Operatoren kommen eben noch weiter davor.
Nach oben Nach unten
Benutzerprofil anzeigen
Gesponserte Inhalte




BeitragThema: Re: Szenarioscript - Eliminieren   

Nach oben Nach unten
 
Szenarioscript - Eliminieren
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 1

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