Not logged inClonkspot Forum
Forum Home Help Search Register Login
Up Topic Deutsch / Hilfestellung / [Gelöst] in szenariotxt Reihenfolge wichtig
- - By Serpens66 (More than 200 posts.) Date 22.10.2014 22:13
Hey,

ich hab von irgendwoher, ich glaub aus einer Hazardmap, das Teleprojektil, welches für die Sturmpistole verwendet werden kann. Damit kann sich der Hazardclonk zu dem Projektil beamen.

Nun scheint es mal zu funktionieren und mal nicht. Ich konnte durch stundenlanges Versuchen nun endlich rausfinden, dass es davon abhängt, welcher Clonk als Startclonk in der Szenrariotxt Datei zuerst aufgelistet wird.
Steht dort: Crew=CLNK=1;HZCK=1   dann geht alles. 
steht dort allerdings : Crew=HZCK=1;CLNK=1   dann funktioniert es nicht.

Dass es nicht funktioniert sieht wie folgt aus:  anstatt dass der Hazardclonk sich zum Projektil beamt, wird stattdessen der normale clonk mit angewählt (also dann 2 figuren angewählt).

Das Teleprojektil Skript sieht so aus:

/*-- Teleprojektil --*/

`#strict`

local iRemoveTimer;
local user;

func Initialize()
{
user=GetCrew(GetController());
iRemoveTimer=175;
SetPlrViewRange(50);
}

func Hit()
{
    Sound("Bip");
}

func ControlDigDouble()
{
    //var user=
    var xpos=GetX();
    var ypos=GetY();
   
    if(GBackSolid(-2,-20) || GBackSolid(2,-20) || GBackSolid(0,-10)) {Message("$BadPlace$",user); SetCursor(GetController(),user); return(RemoveObject());}
   
    DrawParticleLine("XSpark",0,0,GetX(user)-xpos,GetY(user)-ypos,1,50,RGBa(255,0,0,128),RGBa(0,255,0,128));
    SetPosition(xpos,ypos-12,user);
    SetCursor(GetController(),user);
    RemoveObject();
    Sound("Electric");
    CastObjects(SPRK,20,30,0,-20);
    Sound("Fire1");
   
}

func Launch(int xdir, int ydir, int iDmg)
{
  SetSpeed(xdir, ydir);
}

func CheckCursor() {
    iRemoveTimer--;
    if(!iRemoveTimer) {SetCursor(GetController(),user); RemoveObject();}
    //if(!GetCursor(GetOwner(this()))==this()) RemoveObject();
}

func IsBouncy() { return(true); }


Ich hab das auch schon mit ausschließlich dem Hazardpack + der modifizierten Pistole getestet, es liegt also nicht an irgendwelchen appendto's die in anderer reihenfolge platziert werden (wie ich es zuerst vermutet hatte).

Wisst ihr warum das so ist? Und wie müsste man das Skript modifizieren, damit das nicht mehr passiert?
Parent - - By Jan (More than 50 posts.) Date 23.10.2014 06:55

>user=GetCrew(GetController());


Hier wird über GetCrew() ermittelt welcher Clonk die Pistole verwendet. Der erste Parameter steht für den Spieler und der zweite für den Index des Clonks innerhalb der Crew des Spielers. Da nicht angegeben wird für den Index implizit 0 verwendet und somit der erstbeste Clonk gewählt, was nur funktioniert wenn garantiert ist dass die Crew jedes Spielers aus nur einem Clonk besteht.
Du musst also einen anderen Weg finden um den Benutzer der Pistole zu ermitteln.
Parent - By Serpens66 (More than 200 posts.) Date 23.10.2014 11:00
danke :) das war das Problem/die Lösung :)

Ich hab jetzt in der Pistole beim aufruf ammo->Launch(..,..,..,..) noch zusätzlich den Parameter "user" weitergegeben, der in der Pistole besser ermittelt wird und ihn dann in der Launch Funktion nach der lokalen Variablen benannt.  Nun funktioniert es :)
Up Topic Deutsch / Hilfestellung / [Gelöst] in szenariotxt Reihenfolge wichtig

Powered by mwForum 2.29.7 © 1999-2015 Markus Wichitill