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  

 

 Problem mit Relaunchscript

Nach unten 
3 verfasser
AutorNachricht
Andriel
Oberst
Oberst
Andriel


Männlich Alter : 74
Anmeldedatum : 06.04.10

Problem mit Relaunchscript Empty
BeitragThema: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyDi Feb 08, 2011 6:01 pm

Ich habe einen Relaunchscript gemacht, aber man relauncht nicht! Es macht auch keinen Error.
Hier der Script:

private func RelaunchPlayer(iPlr, object pCursor)
{
var NoRelaunch = [_RP0, _RP1, _RP2, _RP3];
if(GetPlayerType(iPlr) == C4PT_Script) {}
else
if(GetID(pCursor) == NoRelaunch[GetLength(NoRelaunch)]) {}
else
{
Global(9)++;
if(Global(9) < 5)
{
MakeCrewMember(CreateObject(ASAS, 75, 665, iPlr), iPlr);
SetPlrViewRange(200, GetCrew(iPlr));
SetCursor(iPlr, GetCrew(iPlr));
DoEnergy(100, GetCrew(iPlr));
CreateContents(CLUB, GetCrew(iPlr));
CreateContents(BOTP, GetCrew(iPlr));
CreateContents(HOOK, GetCrew(iPlr));
CreateContents(CRBW, GetCrew(iPlr));
Log("%s hat noch %d Versuche!", GetPlayerName(iPlr), 5 -Global(9));
}
}
return 1;
}

NoRelaunch sind die RPG-Clonks, die sollen nicht relaunchen, und auch nicht die KI.
Kann mir bitte jemand helfen? Crying or Very sad
Nach oben Nach unten
Liech
Fregattenkapitän
Fregattenkapitän



Männlich Alter : 33
Anmeldedatum : 02.02.09

Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyDi Feb 08, 2011 6:07 pm

schau mal ob das script überhaupt aufgerufen wird (test per Log("Script wurde ausgeführt"); ganz an den anfang schreiben)

if(GetID(pCursor) == NoRelaunch[GetLength(NoRelaunch)])
ist übrigens relativ sinnlos. NoRelaunch[GetLength(NoRelaunch)] fragt das letzte element +1 ab (Es wird bei 0 angefangen zu zählen!)
was du sicher testen möchtest ist ob es einer der 4 ids entspricht. das wäre
int i =0 ;
while(i < GetLength(NoRelaunch))
{
if (NoRelaunch[i] == GetID(pCursor) return 1;
i++;
}
Nach oben Nach unten
Andriel
Oberst
Oberst
Andriel


Männlich Alter : 74
Anmeldedatum : 06.04.10

Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyDi Feb 08, 2011 6:34 pm

Es wird aufgerufen. Heißt das nicht "var i = 0;"
Wo soll ich das hinschreiben? Ich will ja, dass die RPGs nicht relaunchen.
Nach oben Nach unten
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyDi Feb 08, 2011 8:16 pm

Die Funktion muss public sein, damit sie per GameCall(Ex) aufgerufen werden kann.

Edit: Prüfen, ob etwas in einem Array ist, geht per GetIndexOf(any item, array a). Undokumentierte Enginefunktion, ist aber deutlich schneller als selbstgebastelte Äquivalente.

Code:
public func RelaunchPlayer(int iPlr, object pCursor)
{
  var NoRelaunch = [_RP0, _RP1, _RP2, _RP3];
  if (GetPlayerType(iPlr) != C4PT_Script)
    if(GetIndexOf(GetID(pCursor), NoRelaunch) == -1)
      if(++Global(9) < 5)
      {
        MakeCrewMember(CreateObject(ASAS, 75, 665, iPlr), iPlr);
        SetPlrViewRange(200, GetCrew(iPlr));
        SetCursor(iPlr, GetCrew(iPlr));
        DoEnergy(100, GetCrew(iPlr));
        CreateContents(CLUB, GetCrew(iPlr));
        CreateContents(BOTP, GetCrew(iPlr));
        CreateContents(HOOK, GetCrew(iPlr));
        CreateContents(CRBW, GetCrew(iPlr));
        Log("%s hat noch %d Versuche!", GetPlayerName(iPlr), 5 -Global(9));
      }
}
Nach oben Nach unten
Andriel
Oberst
Oberst
Andriel


Männlich Alter : 74
Anmeldedatum : 06.04.10

Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyDi Feb 08, 2011 8:38 pm

Das funktioniert nicht. Die RPGs kriegen trotzdem ein relaunch.
Nach oben Nach unten
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyDi Feb 08, 2011 9:54 pm

Ach, an RelaunchPlayer wird der gestorbene Clonk auch gar nicht übergeben. Und GetID(0) ist halt auch immer 0 Razz
Du kannst stattdessen OnClonkDeath verwenden, allerdings sind da dann die beiden Parameter vertauscht. (OnClonkDeath(object pClonk, int iPlr))
Nach oben Nach unten
Andriel
Oberst
Oberst
Andriel


Männlich Alter : 74
Anmeldedatum : 06.04.10

Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyDi Feb 08, 2011 10:04 pm

Wie soll ich OnClonkDeath() verwenden?
Nach oben Nach unten
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyDi Feb 08, 2011 10:31 pm

Eigentlich genau gleich. Der Unterschied ist nur, dass die Parameter anders sind und dass es auch aufgerufen wird, wenn nicht der letzte Clonk eines Spielers gestorben ist, sondern nur irgendeiner.
Nach oben Nach unten
Liech
Fregattenkapitän
Fregattenkapitän



Männlich Alter : 33
Anmeldedatum : 02.02.09

Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyMi Feb 09, 2011 1:10 am

Tut mir leid, es ist natürlich var. Ich bin zurzeit ein wenig zu häufig mit c# und java unterwegs :s
Nach oben Nach unten
Andriel
Oberst
Oberst
Andriel


Männlich Alter : 74
Anmeldedatum : 06.04.10

Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyMi Feb 09, 2011 11:01 am

@Limeox:
Jetzt hab ich das:

Code:
public func OnClonkDeath(object pClonk, int iPlr)
{
  var NoRelaunch = [_RP0, _RP1, _RP2, _RP3];
  if (GetPlayerType(iPlr) != C4PT_Script)
    if(GetIndexOf(GetID(pClonk), NoRelaunch) == -1)
      if(++Global(9) < 5)
      {
        MakeCrewMember(CreateObject(ASAS, 75, 665, iPlr), iPlr);
        SetPlrViewRange(200, GetCrew(iPlr));
        SetCursor(iPlr, GetCrew(iPlr));
        DoEnergy(100, GetCrew(iPlr));
        CreateContents(CLUB, GetCrew(iPlr));
        CreateContents(BOTP, GetCrew(iPlr));
        CreateContents(HOOK, GetCrew(iPlr));
        CreateContents(CRBW, GetCrew(iPlr));
        Log("%s hat noch %d Versuche!", GetPlayerName(iPlr), 5 -Global(9));
      }
}

Die RPGs kriegen keinen Relaunch mehr, das funktioniert jetzt. Aber wenn man stirbt, ist man sofort eliminiert, es wird zwar ein Meuchelmörder erstellt, aber der gehört dem KI-Team! Was hab ich falsch gemacht? confused
Nach oben Nach unten
Liech
Fregattenkapitän
Fregattenkapitän



Männlich Alter : 33
Anmeldedatum : 02.02.09

Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyMi Feb 09, 2011 12:19 pm

Wenn ich mich nicht irre ist int iPlr nicht iPlr sondern iKiller. Und auch die anderen Parameter sind etwas fragwürdig. Du kannst hier generell informationen per this über den toten clonk einholen.
sprich
var iPlr = GetOwner(this);
var pClonk = this;
Nach oben Nach unten
Andriel
Oberst
Oberst
Andriel


Männlich Alter : 74
Anmeldedatum : 06.04.10

Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyMi Feb 09, 2011 5:06 pm

Okay, jetzt funktioniert alles, ich hab es nun ein wenig anders gemacht(Hab mir etwas vom 3. M&M-Tutorial abgeschaut):

Code:
private func RelaunchPlayer(iPlr, object pCursor)

  if(GetPlayerType(iPlr)!=C4PT_User) return;
    Global(9)++;
  if(Global(9) < 5)
  {
  var id = ASAS;
  var crew = CreateObject(id, 75, 665, iPlr);
    MakeCrewMember(crew,iPlr);
    SetCursor(iPlr, crew);
    DoEnergy(100, crew);
    SetPlrViewRange(200, crew);
    CreateContents(CLUB, crew);
    CreateContents(BOTP, crew);
    CreateContents(HOOK, crew);
    CreateContents(CRBW, crew);
    Log("%s hat noch %d Versuche!", GetPlayerName(iPlr), 5 -Global(9));
  }
      return 1;
}


Nur noch eine Frage: Was muss ich jetzt verändern, damit das auch mit mehreren Spielern funzt?(Also, dass jeder Spieler seine eigenen 4 Relaunches hat)
Nach oben Nach unten
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyMi Feb 09, 2011 6:02 pm

Zitat :
Du kannst hier generell informationen per this über den toten clonk einholen.
Öh, nein. Der Aufruf im Szenarioscript ist komplett ohne Objektkontext, zumindest hier über GameCall/GameCallEx. Da ist this einfach 0.

Es müsste eigentlich reichen, bei der oberen Funktion (mit OnClonkDeath) den iPlr-Parameter rauszuschmeißen und zu Beginn var iPlr = GetOwner(pClonk) zu deklarieren, der Rest kann so bleiben.

Für Relaunches pro Spieler kannst du einfach andere Globals verwenden, oder einfach ein globales Array.
Nach oben Nach unten
Andriel
Oberst
Oberst
Andriel


Männlich Alter : 74
Anmeldedatum : 06.04.10

Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyMi Feb 09, 2011 6:16 pm

Zitat :
Für Relaunches pro Spieler kannst du einfach andere Globals verwenden, oder einfach ein globales Array.
Ähm... und wie mach ich das?
Nach oben Nach unten
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyMi Feb 09, 2011 6:34 pm

Global(iPlr) zum Beispiel, allerdings musst du dann halt NO_OWNER aussortieren. Razz
Ein Array ist prinzipiell dasselbe, du brauchst aber nur eine einzige Variable und nicht gleich die ganzen Globals.
Code:
static aRelaunes;  //static ist global

protected func Initialize()
{
  aRelaunches = [];  //neues, leeres Array
  ...
}
Und zugreifen kannst du dann zB per aRelaunches[iPlr].
Gibts hier auch irgendwo Tutorials dazu.
Nach oben Nach unten
Andriel
Oberst
Oberst
Andriel


Männlich Alter : 74
Anmeldedatum : 06.04.10

Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript EmptyMi Feb 09, 2011 6:49 pm

Okay, jetzt hab ich alle Global(9) durch Global(iPlr) ersetzt und die NO_OWNER werden eh schon am Anfang der Funktion aussortiert(glaub ich Laughing )
Jedenfalls geht jetzt alles, danke!
Nach oben Nach unten
Gesponserte Inhalte





Problem mit Relaunchscript Empty
BeitragThema: Re: Problem mit Relaunchscript   Problem mit Relaunchscript Empty

Nach oben Nach unten
 
Problem mit Relaunchscript
Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» Problem mit dem Energieverbrauch
» CreateObject Problem
» Problem mit Fahrzeug
» Problem bei Wegfahrsperre

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