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  

 

 Szenarioscript - Eliminieren

Nach unten 
3 verfasser
AutorNachricht
MagicWipf
Brigadegeneral
Brigadegeneral
MagicWipf


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

Szenarioscript - Eliminieren Empty
BeitragThema: Szenarioscript - Eliminieren   Szenarioscript - Eliminieren EmptySa 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
ClonkGeist
Brigadegeneral
Brigadegeneral



Männlich Anmeldedatum : 23.01.10

Szenarioscript - Eliminieren Empty
BeitragThema: Re: Szenarioscript - Eliminieren   Szenarioscript - Eliminieren EmptySo 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
Wipfmagus
Konteradmiral
Konteradmiral
Wipfmagus


Weiblich Alter : 28
Anmeldedatum : 06.03.10

Szenarioscript - Eliminieren Empty
BeitragThema: Re: Szenarioscript - Eliminieren   Szenarioscript - Eliminieren EmptyDi 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
Gesponserte Inhalte





Szenarioscript - Eliminieren Empty
BeitragThema: Re: Szenarioscript - Eliminieren   Szenarioscript - Eliminieren Empty

Nach oben Nach unten
 
Szenarioscript - Eliminieren
Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» Schedule in Szenarioscript funzt nicht

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