Nach dem Tod Fliegt man vom Himmel runter

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
  • Hallo Breadfish, undzwar ich hab einen Problem wenn /deagle eingebe und dann Sterbe bzw mein HP auf 0 Setze fliege ich vom Himmel Runter


    Interior Typ :

    Catigula's basement

    Random Spawns:

    [/b]new Float:DeagleSpawns[][4] = {
    {2169.461181,1618.798339,999.976562},
    {2219.7375,1554.4418,1004.7252,359.9632}
    };


    [b][/b]

    und der /deagle Befehl!

    [/b]ocmd:deagle(playerid,params[])
    {
    if(Deagle[playerid] ==0)
    {
    new rand = random(sizeof(DeagleSpawns));
    SetPlayerPos(playerid,DeagleSpawns[rand][0],DeagleSpawns[rand][1],DeagleSpawns[rand][2]);
    SetPlayerFacingAngle(playerid,DeagleSpawns[rand][3]);
    new pName[MAX_PLAYER_NAME];
    new string[128];
    GetPlayerName(playerid, pName, sizeof(pName));
    format(string, sizeof(string), "%s hat die Deagle Arena (/deagle) betreten.", pName);
    SendClientMessageToAll(GRÜN, string);
    Deagle[playerid] = 1;
    ResetPlayerWeapons(playerid); // Spieler Waffen entnehmen
    GivePlayerWeapon(playerid,24,500);
    SetPlayerInterior(playerid,1);
    }
    else if(Deagle[playerid] == 1)
    {
    SendClientMessage(playerid,ORANGE,"Du bist bereits in einer Arena Tippe /leave um sie zu verlassen");
    }
    return 1;
    [b]}[/b]

  • Wüsste zwar jetzt nicht, wo das Problem in deinem Command besteht, aber beheb das doch unter dem Callback OnPlayerDeath mit einem SetSpawnInfo und einer Variable (z.B. playerDeath[playerid] = 1) und unter OnPlayerSpawn eine Abfrage (if (playerDeath[playerid]) {playerDeath[playerid] = 0; SetPlayerInterior(playerid, <id des gewünschten Interiors>);}

  • Wüsste zwar jetzt nicht, wo das Problem in deinem Command besteht, aber beheb das doch unter dem Callback OnPlayerDeath mit einem SetSpawnInfo und einer Variable (z.B. playerDeath[playerid] = 1) und unter OnPlayerSpawn eine Abfrage (if (playerDeath[playerid]) {playerDeath[playerid] = 0; SetPlayerInterior(playerid, <id des gewünschten Interiors>);}

    Du weißt schon das es extra für sowas die "OnPlayerDeathFunktion" gibt?

  • Ja, und was willst du unter OnPlayerDeath machen? Du kannst bei SetSpawnInfo kein Interior oder VWorld einsetzen. Dies musst du unter OnPlayerSpawn machen ;).
    Ich selber vergebe unter OnPlayerDeath nur die SetSpawInfo an die Spieler, Rest wird unter OnPlayerSpawn gemacht. Meiner Erfahrung nach fehlerfreier als direkt unter OnPlayerDeath.

  • Füg das einfach in die bestimmte Bereiche hinzu und probier es mal.



    [b]public [/b]OnPlayerDeath(playerid, killerid, reason)
    {
    Deagle[playerid] = 2; // Ich habe jetzt einfach die Deagle 2 als "Tot" Variabel genommen
    return 1;
    }


    [b]public [/b]OnPlayerSpawn(playerid)
    {
    if(Deagle[playerid] == 2)
    {
    new rand = random(sizeof(DeagleSpawns));
    SetPlayerPos(playerid,DeagleSpawns[rand][0],DeagleSpawns[rand][1],DeagleSpawns[rand][2]);
    SetPlayerFacingAngle(playerid,DeagleSpawns[rand][3]);
    Deagle[playerid] = 1;
    ResetPlayerWeapons(playerid); // Spieler Waffen entnehmen
    GivePlayerWeapon(playerid,24,500);
    SetPlayerInterior(playerid,1);
    }
    return 1;
    }

  • Um das Problem zu beheben, mache folgendes.


    Füg deiner ArrayVariable erstmal eine Größe hinzu.


    C
    new Float:DeagleSpawns[2][4] = {
    {2169.461181,1618.798339,999.976562},
    {2219.7375,1554.4418,1004.7252,359.9632}
    };


    Du setzt dem Spieler erstmal eine spielerbezogene Variable um zu prüfen, ob er in DER Arena ist und nicht in irgendeiner. (Falls deine Deagle Vari nur für die Arena gilt, dann kannst du den folgenden sowie darauffolgendenSchritt skippen und unter OnPlayerSpawn die Vari anpassen)


    Code
    new deagl[MAX_PLAYERS];

    Im CMD



    Code
    deagl[playerid] = 1;


    Unter OnPlayerSpawn



    CSS
    if(deagl[playerid] == 1) { new rand = random(sizeof(DeagleSpawns));
        SetPlayerPos(playerid,DeagleSpawns[rand][0],DeagleSpawns[rand][1],DeagleSpawns[rand][2]); SetPlayerFacingAngle(playerid,DeagleSpawns[rand][3]); SetPlayerInterior(playerid,1);}


    Das wars.
    lg


    //
    @iTsTiMe Sry ich hatte das Tab noch offen von heute Vormittag und hatte dein Post jetzt nicht gesehen.
    Btw du kannst ihm aber nicht einfach einen Wert setzen lassen unter OnPlayerDeath mit der man arbeitet sonst würde er dauerthaft unter den Koordinaten spawnen da die Variable so nicht zurückzusetzen ist ohne eine 2. und das ist quatsch
    wenn man sie natürlich auch direkt im CMD setzen kann.

    KleineHilfe 2.0

    Einmal editiert, zuletzt von YaBroo ()

  • Vielen Dank an alle nun habe ich ein anderes Problem undzwar ich kann so oft wie ich will immer andere arenas switchen?

    ganz einfach du Fragst ab ob er in einer Arena ist
    z.B.

    Code
    if(PlayerInArena[playerid] > 1) return SendClientMessage(playerid,COLOR_RED,"Du bist bereits in einer Arena"); // Die 1 steht für die Arenanummer, also wenn deine Arena bei der ID 0 anfängt einfach 0 hinschreiben und PlayerInArena ist eine Abfrage.

    Das tuhst du natürlich in deinen Befehl rein z.B. /Deagle
    /e Wenn du willst helf ich dir per Teamviewer, schick mir die Daten dann einfach per PN.

    Einmal editiert, zuletzt von ryaN.jeZoo ()

  • ganz einfach du Fragst ab ob er in einer Arena istz.B.


    Code
    if(PlayerInArena[playerid] > 1) return SendClientMessage(playerid,COLOR_RED,"Du bist bereits in einer Arena"); // Die 1 steht für die Arenanummer, also wenn deine Arena bei der ID 0 anfängt einfach 0 hinschreiben und PlayerInArena ist eine Abfrage.


    Das tuhst du natürlich in deinen Befehl rein z.B. /Deagle

    Kommt keine Meldung if(Deagle[playerid] > 1) return SendClientMessage(playerid,ORANGE,"Du bist in keiner Arena");

  • Kommt keine Meldung if(Deagle[playerid] > 1) return SendClientMessage(playerid,ORANGE,"Du bist in der Deagle Arena");

    Bei dir müsste es dann so aussehen da du scheinbar keine globale Vari hast die allgemein ist.



    Code
    if(Deagle[playerid] == 1) return SendClientMessage(playerid,ORANGE,"Du befindest dich bereits in einer Arena");

    KleineHilfe 2.0