Nach Kill 3 Minuten liegen blieben ?

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
  • was genau muss man in ein script hinein packen um nachdem man gestorben ist, ein paar minuten liegen zu bleiben und dann erst respawnen?


    mfg Kenji

    Staatlich anerkannter o.o, 8| und O.o User



    *~* To love somebody, and to be loved by somebody, that's the Reason why we exsist *~*

  • Hmmmm.. Eine Idee wäre doch:


    Man stirbt. Position wird gespeichert. Man spawnt. gespeicherte Position wird geladen, man wird gefreezt, bekommt eine Animation, dass man auf dem Boden liegt, und einen Timer, der einen in ein paar Minuten entfreezt und respawnt.


    #include <a_samp>


    #define FILTERSCRIPT


    new Dead[MAX_PLAYERS], Float:DX[MAX_PLAYERS], Float:DY[MAX_PLAYERS],Float:DZ[MAX_PLAYERS],Float:DA[MAX_PLAYERS],DTimer[MAX_PLAYERS];
    public OnPlayerConnect(playerid)
    {
    Dead[playerid] = 0;
    return 1;
    }


    public OnPlayerDeath(playerid,killerid,reason)
    {
    Dead[playerid] = 1;
    GetPlayerPos(playerid,DX[playerid],DY[playerid],DZ[playerid]);
    GetPlayerFacingAngle(playerid,DA[playerid]);
    DTimer[playerid] = SetTimerEx("DSpawn", 180*1000, 0, "i",playerid);
    return 1;
    }


    public OnPlayerDisconnect(playerid,reason)
    {
    Dead[playerid] = 0;
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    if(Dead[playerid] == 1)
    {
    SetTimerEx("DSpawned", 100, 0, "i",playerid);
    }
    return 1;
    }


    forward DSpawn(playerid);
    public DSpawn(playerid)
    {
    if(Dead[playerid] == 1)
    {
    Dead[playerid] = 0;
    TogglePlayerControllable(playerid,1);
    ClearAnimations(playerid);
    SpawnPlayer(playerid);
    SetPlayerHealth(playerid,100);
    SetCameraBehindPlayer(playerid);
    }
    }


    forward DSpawned(playerid);
    public DSpawned(playerid)
    {
    if(Dead[playerid] == 1)
    {
    SetPlayerPos(playerid,DX[playerid],DY[playerid],DZ[playerid]);
    SetPlayerHealth(playerid,1); // Soll so aussehen, als ob man 0 Leben hätte^^
    SetPlayerCameraPos(playerid,DX[playerid],DY[playerid],DZ[playerid]+3);
    ResetPlayerWeapons(playerid);
    SetPlayerCameraLookAt(playerid,DX[playerid],DY[playerid],DZ[playerid]);
    SetPlayerFacingAngle(playerid,DA[playerid]);
    TogglePlayerControllable(playerid,0);
    ApplyAnimation(playerid,"PARACHUTE","FALL_skyDive_DIE",4.1,0,1,1,1,1);
    }
    }


    Getestet! Funktioniert perfekt. ^^

    mfg RedDragon 8)


    Was ist GFKD?


    Ein revolutionärer Clan, dessen Eröffnung kurz bevorsteht.
    Mehr Informationen folgen bald.

    10 Mal editiert, zuletzt von RedDragon ()

  • wäre eine Idee es wird leichter gemacht


    wenn man


    unter OnPlayerDeath die position speichert ^^ und dann eben dort wieder spawnt ;) so wäre der Verlauf aber naja setzt es ruhig in die Tat um mann kann auch einfachmal


    spawnen lassen aber eben schwarzen Desk und freezen ^^

  • stimmt haar genau ^^
    jedoch brauchst du die position nicht speichern weil ich weniger glaub wen er tot ist das er relogged macht?!


    also würd ich einfach nur bei OnPlayerDeath ein Freeze rein machen und über einen Timer dan den Spieler entfreezen ^^

    Der Server: [GRG]Grand Racing Game wurde 2014 Eingestampft.
    Weitere Infos: Klick Mich

  • Wenn er stirbt, respawnt er sofort da sein Leben auf 0 ist.
    Man könnte die Position einfach in eine Variable speichern oder mit einem Dateisystem um die einzelnen Sekunden der 3 Minuten zu speichern damit er nicht einfach reloggen kann.

  • danke, das klingt alles gut, kann man es jetzt auch noch so erweitern das wenn jetzt jemand dich zb heilt nehmen wir an ein medic oder ein admin, das du dann gleich wieder aufstehen kannst, oder geht das schon in das unmögliche?

    Staatlich anerkannter o.o, 8| und O.o User



    *~* To love somebody, and to be loved by somebody, that's the Reason why we exsist *~*

  • Nein, ist sehr leicht. Wenn du willst das Medic das machst, kannst du einfach halt mit GetPlayerHealth(giveplayerid,tempheal); es abfragen & mit SetPlayerHealth(); sein Leben wieder zurück geben.


    P.S: Einfach /heal für Medic machen, SetPlayerHealth(); einfügen

  • das für medic hab ich drinnen und das für admins hab ich auch drinnen


    nur wie genau sollte das jetzt im script ausschauen? und das man es vlt für die medics gleich rot makiert wo die person ist, das sie hinfahren können

    Staatlich anerkannter o.o, 8| und O.o User



    *~* To love somebody, and to be loved by somebody, that's the Reason why we exsist *~*

  • Wenn du willst das es für die Beamten gezeigt wirst, musst du einfach halt SetPlayerCheckpoint(); es machen, genauerer würde es so aussehen:
    SetPlayerCheckpoint(i,PlayerInfo[playerid][pTx],PlayerInfo[playerid][pTy],PlayerInfo[playerid][pTz],5.0);

  • unter OnPlayerDeath
    SetPlayerCheckpoint(i,PlayerInfo[playerid][pTx],PlayerInfo[playerid][pTy],PlayerInfo[playerid][pTz],5.0);
    rest von heal hast ja drin


    dan unter OnPlayerDeath
    GetPlayerControlabel(playerid,0);//oda heißt so änlich xD find ich grad nich in wiki


    dan machste ne überprüfung unter OnPlayerDeath
    und zwar so
    if(tmpheal >=1)
    {
    GetPlayerControlabel(playerid,1);
    SetPlayerPos(playerid,PlayerInfo[playerid][pTx],PlayerInfo[playerid][pTy],PlayerInfo[playerid][pTz]);
    return 1;
    }


    sollte funktionieren bin mir aba ned sicher ist ^1. nicht getestet 2. bin ich grad zu müde zum proggen :D

    Der Server: [GRG]Grand Racing Game wurde 2014 Eingestampft.
    Weitere Infos: Klick Mich

  • /heilen ID ... funktioniert nur wenn der Spieler "tot" ist und man in der Nähe vom jeweiligen Spieler ist. (funktioniert nur im Zusammenhang mit dem Script, welches ich davor gepostet habe)


    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {


    if (strcmp("/kill", cmdtext, true, 10) == 0) //Zum Testen
    {
    SetPlayerHealth(playerid,0);
    return 1;
    }

    new cmd[30];
    new idx;
    cmd = strtok(cmdtext, idx);


    if(strcmp(cmd, "/heilen", true) == 0)
    {
    new tmp[30];
    tmp = strtok(cmdtext, idx);
    new otherplayer = strval(tmp);
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(otherplayer,X,Y,Z);
    if(IsPlayerConnected(otherplayer) == 1 && Dead[otherplayer] == 1 && IsPlayerInRangeOfPoint(playerid, 2.0, X, Y, Z) && playerid != otherplayer)
    {
    Dead[otherplayer] = 0;
    TogglePlayerControllable(otherplayer,1);
    KillTimer(DTimer[otherplayer]);
    SetPlayerHealth(otherplayer,50);
    SetCameraBehindPlayer(otherplayer);
    ApplyAnimation(playerid,"ped","getup",2.5,0,1,1,0,1);
    new Heilername[MAX_PLAYER_NAME];
    new Opfername[MAX_PLAYER_NAME];
    new string[128];
    GetPlayerName(otherplayer, Opfername, sizeof(Opfername));
    format(string, sizeof(string), "Du hast %s (ID:%d) wiederbelebt.",Opfername,otherplayer);
    SendClientMessage(playerid,0xFFFF00AA, string);
    new stringz[128];
    GetPlayerName(playerid, Heilername, sizeof(Heilername));
    format(stringz, sizeof(stringz), "Du wurdest von %s (ID:%d) wiederbelebt.",Heilername,playerid);
    SendClientMessage(otherplayer,0xFFFF00AA, stringz);
    }
    return 1;
    }
    return 0;
    }


    Eventuell noch: Wenn man tot ist, kann man nicht den Chat benutzen^^


    public OnPlayerText(playerid, text[])
    {
    if(Dead[playerid] == 1)
    {
    SendClientMessage(playerid,0xFFFF00AA,"Tote können nicht reden.");
    return 0;
    }
    return 1;
    }

    mfg RedDragon 8)


    Was ist GFKD?


    Ein revolutionärer Clan, dessen Eröffnung kurz bevorsteht.
    Mehr Informationen folgen bald.

    3 Mal editiert, zuletzt von RedDragon ()

  • Wie? Er hat zusätzlich noch gefragt, ob das geht mit /heilen ID ... und ja, es geht. Ich versuch ja nur anderen zu helfen oO

    mfg RedDragon 8)


    Was ist GFKD?


    Ein revolutionärer Clan, dessen Eröffnung kurz bevorsteht.
    Mehr Informationen folgen bald.

  • Jo beides in das selbe Script packen, dann sollte alles gehen ;)

    mfg RedDragon 8)


    Was ist GFKD?


    Ein revolutionärer Clan, dessen Eröffnung kurz bevorsteht.
    Mehr Informationen folgen bald.

  • danke :thumbup:


    danke jedoch bekomme ich dann folgenden fehler


    D:\GTA SA MP\filterscripts\death.pwn(124) : warning 217: loose indentation


    #include <a_samp>


    #define FILTERSCRIPT


    new Dead[MAX_PLAYERS], Float:DX[MAX_PLAYERS], Float:DY[MAX_PLAYERS],Float:DZ[MAX_PLAYERS],Float:DA[MAX_PLAYERS],DTimer[MAX_PLAYERS];
    public OnPlayerConnect(playerid)
    {
    Dead[playerid] = 0;
    return 1;
    }


    public OnPlayerDeath(playerid,killerid,reason)
    {
    Dead[playerid] = 1;
    GetPlayerPos(playerid,DX[playerid],DY[playerid],DZ[playerid]);
    GetPlayerFacingAngle(playerid,DA[playerid]);
    DTimer[playerid] = SetTimerEx("DSpawn", 180*1000, 0, "i",playerid);
    return 1;
    }


    public OnPlayerDisconnect(playerid,reason)
    {
    Dead[playerid] = 0;
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    if(Dead[playerid] == 1)
    {
    SetTimerEx("DSpawned", 100, 0, "i",playerid);
    }
    return 1;
    }


    forward DSpawn(playerid);
    public DSpawn(playerid)
    {
    if(Dead[playerid] == 1)
    {
    Dead[playerid] = 0;
    TogglePlayerControllable(playerid,1);
    ClearAnimations(playerid);
    SpawnPlayer(playerid);
    SetPlayerHealth(playerid,100);
    SetCameraBehindPlayer(playerid);
    }
    }


    forward DSpawned(playerid);
    public DSpawned(playerid)
    {
    if(Dead[playerid] == 1)
    {
    SetPlayerPos(playerid,DX[playerid],DY[playerid],DZ[playerid]);
    SetPlayerHealth(playerid,1); // Soll so aussehen, als ob man 0 Leben hätte^^
    SetPlayerCameraPos(playerid,DX[playerid],DY[playerid],DZ[playerid]+3);
    ResetPlayerWeapons(playerid);
    SetPlayerCameraLookAt(playerid,DX[playerid],DY[playerid],DZ[playerid]);
    SetPlayerFacingAngle(playerid,DA[playerid]);
    TogglePlayerControllable(playerid,0);
    ApplyAnimation(playerid,"PARACHUTE","FALL_skyDive_DIE",4.1,0,1,1,1,1);
    }
    }
    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }
    public OnPlayerCommandText(playerid, cmdtext[])
    {


    if (strcmp("/kill", cmdtext, true, 10) == 0) //Zum Testen
    {
    SetPlayerHealth(playerid,0);
    return 1;
    }


    new cmd[30];
    new idx;
    cmd = strtok(cmdtext, idx);


    if(strcmp(cmd, "/heilen", true) == 0)
    {
    new tmp[30];
    tmp = strtok(cmdtext, idx);
    new otherplayer = strval(tmp);
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(otherplayer,X,Y,Z);
    if(IsPlayerConnected(otherplayer) == 1 && Dead[otherplayer] == 1 && IsPlayerInRangeOfPoint(playerid, 2.0, X, Y, Z) && playerid != otherplayer)
    {
    Dead[otherplayer] = 0;
    TogglePlayerControllable(otherplayer,1);
    KillTimer(DTimer[otherplayer]);
    SetPlayerHealth(otherplayer,50);
    SetCameraBehindPlayer(otherplayer);
    ApplyAnimation(playerid,"ped","getup",2.5,0,1,1,0,1);
    new Heilername[MAX_PLAYER_NAME];
    new Opfername[MAX_PLAYER_NAME];
    new string[128];
    GetPlayerName(otherplayer, Opfername, sizeof(Opfername));
    format(string, sizeof(string), "Du hast %s (ID:%d) wiederbelebt.",Opfername,otherplayer);
    SendClientMessage(playerid,0xFFFF00AA, string);
    new stringz[128];
    GetPlayerName(playerid, Heilername, sizeof(Heilername));
    format(stringz, sizeof(stringz), "Du wurdest von %s (ID:%d) wiederbelebt.",Heilername,playerid);
    SendClientMessage(otherplayer,0xFFFF00AA, stringz);
    }
    return 1;
    }
    return 0;
    }
    public OnPlayerText(playerid, text[])
    {
    if(Dead[playerid] == 1)
    {
    SendClientMessage(playerid,0xFFFF00AA,"Tote können nicht reden.");
    return 0;
    }
    return 1;
    }

    Staatlich anerkannter o.o, 8| und O.o User



    *~* To love somebody, and to be loved by somebody, that's the Reason why we exsist *~*

    Einmal editiert, zuletzt von [FSA]Roy ()

  • #include <a_samp>


    #define FILTERSCRIPT


    new Dead[MAX_PLAYERS], Float:DX[MAX_PLAYERS], Float:DY[MAX_PLAYERS],Float:DZ[MAX_PLAYERS],Float:DA[MAX_PLAYERS],DTimer[MAX_PLAYERS];
    public OnPlayerConnect(playerid)
    {
    Dead[playerid] = 0;
    return 1;
    }


    public OnPlayerDeath(playerid,killerid,reason)
    {
    Dead[playerid] = 1;
    GetPlayerPos(playerid,DX[playerid],DY[playerid],DZ[playerid]);
    GetPlayerFacingAngle(playerid,DA[playerid]);
    DTimer[playerid] = SetTimerEx("DSpawn", 180*1000, 0, "i",playerid);
    return 1;
    }


    public OnPlayerDisconnect(playerid,reason)
    {
    Dead[playerid] = 0;
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    if(Dead[playerid] == 1)
    {
    SetTimerEx("DSpawned", 100, 0, "i",playerid);
    }
    return 1;
    }


    forward DSpawn(playerid);
    public DSpawn(playerid)
    {
    if(Dead[playerid] == 1)
    {
    Dead[playerid] = 0;
    TogglePlayerControllable(playerid,1);
    ClearAnimations(playerid);
    SpawnPlayer(playerid);
    SetPlayerHealth(playerid,100);
    SetCameraBehindPlayer(playerid);
    }
    }


    forward DSpawned(playerid);
    public DSpawned(playerid)
    {
    if(Dead[playerid] == 1)
    {
    SetPlayerPos(playerid,DX[playerid],DY[playerid],DZ[playerid]);
    SetPlayerHealth(playerid,1); // Soll so aussehen, als ob man 0 Leben hätte^^
    SetPlayerCameraPos(playerid,DX[playerid],DY[playerid],DZ[playerid]+3);
    ResetPlayerWeapons(playerid);
    SetPlayerCameraLookAt(playerid,DX[playerid],DY[playerid],DZ[playerid]);
    SetPlayerFacingAngle(playerid,DA[playerid]);
    TogglePlayerControllable(playerid,0);
    ApplyAnimation(playerid,"PARACHUTE","FALL_skyDive_DIE",4.1,0,1,1,1,1);
    }
    }
    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }
    public OnPlayerCommandText(playerid, cmdtext[])
    {


    if (strcmp("/kill", cmdtext, true, 10) == 0) //Zum Testen
    {
    SetPlayerHealth(playerid,0);
    return 1;
    }


    new cmd[30];
    new idx;
    cmd = strtok(cmdtext, idx);


    if(strcmp(cmd, "/heilen", true) == 0)
    {
    new tmp[30];
    tmp = strtok(cmdtext, idx);
    new otherplayer = strval(tmp);
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(otherplayer,X,Y,Z);
    if(IsPlayerConnected(otherplayer) == 1 && Dead[otherplayer] == 1 && IsPlayerInRangeOfPoint(playerid, 2.0, X, Y, Z) && playerid != otherplayer && Dead[playerid] == 0)
    {
    Dead[otherplayer] = 0;
    TogglePlayerControllable(otherplayer,1);
    KillTimer(DTimer[otherplayer]);
    SetPlayerHealth(otherplayer,50);
    SetCameraBehindPlayer(otherplayer);
    ApplyAnimation(playerid,"ped","getup",2.5,0,1,1,0,1);
    new Heilername[MAX_PLAYER_NAME];
    new Opfername[MAX_PLAYER_NAME];
    new string[128];
    GetPlayerName(otherplayer, Opfername, sizeof(Opfername));
    format(string, sizeof(string), "Du hast %s (ID:%d) wiederbelebt.",Opfername,otherplayer);
    SendClientMessage(playerid,0xFFFF00AA, string);
    new stringz[128];
    GetPlayerName(playerid, Heilername, sizeof(Heilername));
    format(stringz, sizeof(stringz), "Du wurdest von %s (ID:%d) wiederbelebt.",Heilername,playerid);
    SendClientMessage(otherplayer,0xFFFF00AA, stringz);
    }
    return 1;
    }
    return 0;
    }
    public OnPlayerText(playerid, text[])
    {
    if(Dead[playerid] == 1)
    {
    SendClientMessage(playerid,0xFFFF00AA,"Tote können nicht reden.");
    return 0;
    }
    return 1;
    }

    mfg RedDragon 8)


    Was ist GFKD?


    Ein revolutionärer Clan, dessen Eröffnung kurz bevorsteht.
    Mehr Informationen folgen bald.