Runter schubsen = Kill +1

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey,



    ich habe ein kleines Problem. Ich erkläre erst mal die Situation.


    2 Spieler stehen auf einer Plattform. Das Ziel ist es den Gegner von der Plattform zu stoßen. Spieler 1 drückt Spieler 2 nun immer weiter Richtung Rand und Nr. 2 fällt schließlich auch herunter.
    Wenn der fallende Spieler dann unter einer bestimmten Höhe ist, wird er automatisch gekillt (SetPlayerHealth(playerid,0);).


    Das Problem:


    Wie zähle ich denn Kill für den denjenigen, der seinen Gegner herunter geschubst hat? Es gibt ja nicht wirklich die "killerid" da der Spieler ja durch SetPlayerHealth(playerid,0); getötet wird.
    Kann man irgendwie die Spielerid abfragen die ihren Gegner herunter geschubst hat?

  • new eventtimer[MAX_PLAYERS];
    forward TestEvent(playerid);


    //hier der Befehl wie man auf diese Plattform kommt:
    eventtimer[playerid] = SetTimerEx("TestEvent", 1000, 1, "i", playerid);
    //die Plattform muss höher als 500 Meter sein oder unten Höhe anpassen !



    public TestEvent(playerid)
    {
    new Float: X, Float: Y, Float: Z;
    GetPlayerPos(playerid, X, Y, Z);
    if(Z <= 500 ) //Z = die Höhe von dem Spieler
    {
    SetPlayerHealth(playerid, 0);
    KillTimer(eventtimer[playerid]);
    }
    return 1;
    }


    Nicht getestet, aber ist so grob der Code ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Kaliber:


    Das ist mir schon klar :D Aber ich will ja wissen wie man die Id des Spielers herausfindet der seinen Gegner herunter geschubst hat.

  • So, halt die anderen Sachen die ich oben gemacht habe auch einfügen:


    new eventplayer[MAX_PLAYERS];


    //Befehl wenn man sich auf die Plattform portet
    eventplayer[playerid] = 1;


    public TestEvent(playerid)
    {
    new Float: X, Float: Y, Float: Z;
    GetPlayerPos(playerid, X, Y, Z);
    if(Z <= 500 ) //Z = die Höhe von dem Spieler
    {
    eventplayer[playerid] = 0;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(eventplayer[i] == 1)
    {
    //i = playerid des Spielers der gewonnen hat (der noch oben steht) ;)
    }
    }
    SetPlayerHealth(playerid, 0);
    KillTimer(eventtimer[playerid]);
    }
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ok, dann werde ich daraus wohl ein Duell machen.
    Wenn mehrere Spieler gleichzeitig in dem "Minispiel" wären, würden ja laut Kaliber's Code alle einen Kill bekommen (bis auf den der runter fällt).


    Danke für eure Hilfe :)

  • Das kann man auch beheben, ist nur etwas komplizierter :D


    Musst das dann bei deinem Befehl so einstellen, dass sobald 2 Leute sagen wir den Wert 1 auf der Variable haben, dass der dann bei den nächsten auf 2 gesetzt wird, dann bei den nächsten auf 3 usw...


    die for schleife sähe dann anders aus:


    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(eventplayer[playerid] == eventplayer[i] && i != playerid)
    {
    //hier wäre dann i = playerid des gewinners
    }
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ahh Ok :) Thank you, werde das gleich mal testen.