Immernoch ist das Totensystem verbuggt.

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
  • Einleitung
    Mein Totensystem geht wieder nicht und ich möchte es nun endlich mal Beheben,
    immer kommen neue Fehler.


    Die Bugs
    Also mein Kumpel war auf den Server und ich ahbe ihn gekillt und er ist garnicht gestorben, ich habe ja gescriptet ,
    das ich auf den Boden liege bleibe. Das ging auch. Jetzt habe ich mich mal selber getötet und beim ersten mal konnte ich weiterlaufen, beim zweiten
    mal bin ich erst auf den Boden liegen geblieben.
    Ich brauche mal hilfe.
    Immer wenn ich mich kille sterbe ich erst beim zweiten mal, wenn ich 0 Hp habe.
    Ich werde nun gleich versuchen ob mein Kumpel auch sterben kann.
    Früher ging es noch aber auf einmal bleibt mein Kumpel nicht mehr liegen.


    PWN Code

    public OnPlayerSpawn(playerid)
    {
    if(tod[playerid] ==1)
    {
    new Float:xx = x[playerid];
    new Float:yy = y[playerid];
    new Float:zz = z[playerid];
    SetPlayerPos(playerid,xx,yy,zz);
    GameTextForPlayer(playerid,"~r~Du bist verwundet",20000,6);
    SendClientMessage(playerid,rot,"Du bist gestorben, warte auf ein Arzt");
    SetPlayerHealth(playerid,4);
    ApplyAnimation(playerid,"CRACK","crckdeth2",4.0,1,0,0,0,0);
    return 1;
    }
    if(GetPVarInt(playerid,"Banned") == 1)
    {
    SendClientMessage(playerid,rot,"Du bist gebannt!");
    Kick(playerid);
    }
    if(IsPlayerInFrak(playerid,0))

    {
    SetPlayerPos(playerid,1421.8114,-1491.2673,20.4296);
    SetPlayerSkin(playerid,159);
    }
    if(IsPlayerInFrak(playerid,1))
    {
    SetPlayerPos(playerid,218.1525,78.8351,1005.0391);
    SetPlayerInterior(playerid,6);
    SetPlayerSkin(playerid,280);
    GameTextForPlayer(playerid,"~w~Du bist ein ~b~Polizist",5000,1);
    }
    if(IsPlayerInFrak(playerid,2))
    {
    SetPlayerPos(playerid,1136.3839,-1342.4509,13.7543);
    SetPlayerSkin(playerid,70);
    GameTextForPlayer(playerid,"~w~Du bist ein ~r~Medic",5000,1);
    }
    return 1;
    }


    new tod[MAX_PLAYERS],Float:x[MAX_PLAYERS],Float:y[MAX_PLAYERS],Float:z[MAX_PLAYERS]


    public OnPlayerDeath(playerid, killerid, reason)
    {
    tod[playerid] = 1;
    if(tod[playerid] ==1)
    {
    new Float:xx,Float:yy,Float:zz;
    GetPlayerPos(playerid,xx,yy,zz);
    x[playerid] = xx;
    y[playerid] = yy;
    z[playerid] = zz;
    SetTimerEx("todtimer",3000,false,"i",playerid);
    }
    return 1;
    }


    forward todtimer(playerid);
    public todtimer(playerid)
    {
    SetPlayerPos(playerid,x[playerid],y[playerid],z[playerid]);
    return 1;
    }


    Woran liegt das

    Weitere Bugs

    Wenn ich sterbe bekomme ich Skin 0 ich möchte mein Skin behalten.
    Wenn ich in einen Interior sterbe , dann fall ich runter hilfe.


    Weitere Fragen
    Wie bleibt der GameText solange an bis ich wieder lebe ?


    Scripter von LoE

    Einmal editiert, zuletzt von Deathman ()


  • public OnPlayerDeath(playerid, killerid, reason)
    {
    tod[playerid] = 1;
    new Float:xx,Float:yy,Float:zz;
    GetPlayerPos(playerid,xx,yy,zz);
    x[playerid] = xx;
    y[playerid] = yy;
    z[playerid] = zz;
    SetTimerEx("todtimer",3000,false,"i",playerid);
    }


    Versuch mal gleich so.
    Weil wenn du noch eine if Abfrage mit reinmachst,
    aber du erst angibst, dass er dann tot ist, dann kann er ja die If Abfrage noch nicht ausführen.


    Teste es einfach mal.


    Diese Signatur wird erneuert.
    Bitte haben Sie ein wenig geduld...



  • Mach den todtimer weg und dafür bei OnPlayerSpawn einfach die Todespos
    Und:
    Bei OnPlayerSpawn abfragen ob er das 1. mal gespawnt ist, wenn ja dann ALLE Animationen die du im script hast durchlaufen lassen und wieder clearen, da SA:MP manchmal die Animationen beim 1. mal nicht richtig starten kann.

  • Du machst einfach eine neue Variable. bsp.: new FirstSpawn[MAX_PLAYERS];
    Bei OnPlayerConnect machst du FirstSpawn[playerid]=0;
    Bei OnPlayerSpawn fragst du ab ob FirstSpawn[playerid]==0
    und wenn ja dann alle Animationen die du im Script hast einmal durchlaufen lassen, ClearAnimations(playerid); und FirstSpawn[playerid]=1;
    Fertig.
    Da braucht man dir keinen Code für zu schicken...