Need help with death system
#1

I'm trying to make a death system that when the player dies. He spawns at the location he died with an injured annimation. This is what I have under OnPlayerDeath
pawn Код:
DeathPosX[playerid] = X;
    DeathPosY[playerid] = Y;
    DeathPosZ[playerid] = Z;
    JustDied[playerid] = 1;
And I have this under OnPlayerSpawn
pawn Код:
if(JustDied[playerid] == 1)
    {
        SafeSetPlayerPos(playerid, DeathPosX[playerid], DeathPosY[playerid], DeathPosZ[playerid]);
        TogglePlayerControllable(playerid, 0);
        LoopingAnim(playerid, "SWEET", "Sweet_injuredloop", 4.0, 1, 0, 0, 0, 0);
        LoopingAnim(playerid, "SWEET", "Sweet_injuredloop", 4.0, 1, 0, 0, 0, 0);
        GameTextForPlayer(playerid, "~r~You're injured and needs a doctor!",5000,3);
        SendClientMessage(playerid, COLOR_RLRPGBLUE,"You will bleed out in 5 minutes.");
        JustDied[playerid] = 0;
        DeathTimer[playerid] = SetTimerEx("Death",5000,false, "i", playerid);
    }
But it doesn't spawn where he died. He spawned where he logged in and he isn't freezed nor do any animation.

Off Topic: I made a new topic cuz I wasnt authorized to access my old one?!
Reply
#2

Why not use SetPlayerPos instead SafeSetPlayerPos?
Reply
#3

Don, can you give us your OnPlayerDeath because I think you're missing something.
Reply
#4

Make sure that the global variables are FLOAT's:

pawn Код:
new Float:DeathPosX[MAX_PLAYERS];
new Float:DeathPosY[MAX_PLAYERS];
new Float:DeathPosZ[MAX_PLAYERS];
If that doesn't work, try this:

pawn Код:
forward JustDied(playerid);

public JustDied(playerid)
{
    SafeSetPlayerPos(playerid, DeathPosX[playerid], DeathPosY[playerid], DeathPosZ[playerid]);
    TogglePlayerControllable(playerid, 0);
    LoopingAnim(playerid, "SWEET", "Sweet_injuredloop", 4.0, 1, 0, 0, 0, 0);
    LoopingAnim(playerid, "SWEET", "Sweet_injuredloop", 4.0, 1, 0, 0, 0, 0);
    SendClientMessage(playerid, COLOR_RLRPGBLUE,"You will bleed out in 5 minutes.");
    DeathTimer[playerid] = SetTimerEx("Death",5000,false, "i", playerid);
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    DeathPosX[playerid] = X;
    DeathPosY[playerid] = Y;
    DeathPosZ[playerid] = Z;
    SetTimerEx("JustDied", 500, false, "i", playerid);
    return 1;
}
After you tried the above, you won't need the new JustDied[MAX_PLAYERS];.
Reply
#5

pawn Код:
// OnPlayerDeath
GetPlayerPos(playerid, DeathPosX[playerid], DeathPosY[playerid], DeathPosZ[playerid]);
JustDied[playerid] = 1;
And what does SafeSetPlayerPos do?
Reply
#6

Quote:
Originally Posted by DanishHaq
Посмотреть сообщение
Make sure that the global variables are FLOAT's:

pawn Код:
new Float:DeathPosX[MAX_PLAYERS];
new Float:DeathPosY[MAX_PLAYERS];
new Float:DeathPosZ[MAX_PLAYERS];
If that doesn't work, try this:

pawn Код:
forward JustDied(playerid);

public JustDied(playerid)
{
    SafeSetPlayerPos(playerid, DeathPosX[playerid], DeathPosY[playerid], DeathPosZ[playerid]);
    TogglePlayerControllable(playerid, 0);
    LoopingAnim(playerid, "SWEET", "Sweet_injuredloop", 4.0, 1, 0, 0, 0, 0);
    LoopingAnim(playerid, "SWEET", "Sweet_injuredloop", 4.0, 1, 0, 0, 0, 0);
    SendClientMessage(playerid, COLOR_RLRPGBLUE,"You will bleed out in 5 minutes.");
    DeathTimer[playerid] = SetTimerEx("Death",5000,false, "i", playerid);
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    DeathPosX[playerid] = X;
    DeathPosY[playerid] = Y;
    DeathPosZ[playerid] = Z;
    SetTimerEx("JustDied", 500, false, "i", playerid);
    return 1;
}
After you tried the above, you won't need the new JustDied[MAX_PLAYERS];.
I will try this

Quote:
Originally Posted by Konstantinos
Посмотреть сообщение
pawn Код:
// OnPlayerDeath
GetPlayerPos(playerid, DeathPosX[playerid], DeathPosY[playerid], DeathPosZ[playerid]);
JustDied[playerid] = 1;
And what does SafeSetPlayerPos do?
SafeSetPlayerPos
pawn Код:
public SafeSetPlayerPos(playerid, Float:x, Float:y, Float:z)
{
    SetPlayerPos(playerid, x,y,z);
    Streamer_UpdateEx(playerid,x,y,z);
    return 1;
}
Reply
#7

I assume that Streamer_UpdateEx should be above SetPlayerPos. Anyways, that's not relating to your problem.

Don't forget that you need to assign some values to the DeathPosX/Y/Z. Use the code I gave you because DanishHaq assigns the X, Y, Z but actually without getting any position.
Reply
#8

I tried this now
pawn Код:
forward JustDied(playerid);
public JustDied(playerid)
{
    SafeSetPlayerPos(playerid, DeathPosX[playerid], DeathPosY[playerid], DeathPosZ[playerid]);
    TogglePlayerControllable(playerid, 0);
    LoopingAnim(playerid, "SWEET", "Sweet_injuredloop", 4.0, 1, 0, 0, 0, 0);
    SendClientMessage(playerid, COLOR_RLRPGBLUE,"You will bleed out in 5 minutes.");
    DeathTimer[playerid] = SetTimerEx("Death",5000,false, "i", playerid);
    return 1;
}
and under OnPlayerDeath
pawn Код:
GetPlayerPos(playerid, px, py, pz);
    DeathPosX[playerid] = px;
    DeathPosY[playerid] = py;
    DeathPosZ[playerid] = pz;
    SetTimerEx("JustDied", 500, false, "i", playerid);
But it maybe be something with my OnPlayerDeath? I post it here so you can see
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    new string[128];
    new name[MAX_PLAYER_NAME];
    new name2[MAX_PLAYER_NAME];
    new deathreason[20];
    new y, m, d;
    new h,mi,s;
    getdate(y,m,d);
    gettime(h,mi,s);
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    DropGun(playerid, GetPlayerWeapon(playerid),GetPlayerAmmo(playerid),X,Y,Z,GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid));
    GetPlayerName(playerid, name, sizeof(name));
    GetPlayerName(killerid, name2, sizeof(name2));
    if(killerid != INVALID_PLAYER_ID)
    {
        if(GetPlayerWeapon(killerid) != reason)
        {
            if(AntiFakeKill == 1)
            {
                if(reason !=  51 || reason != 50 || reason != 18 || reason == 36 || reason == 35 || reason == 40 || reason == 16)
                {
                    FakeKillWarns[playerid] ++;
                    if(FakeKillWarns[playerid] == 4)
                    {
                        format(string, sizeof(string), "%s (%d), Has been kicked by The Anticheat |ERP-AC| for Possible Fake Death Hacks.", name, playerid);
                        SendClientMessageToAll(COLOR_NICERED, string);
                        SendClientMessage(playerid,COLOR_LIGHTBLUE, "You have Been Kicked by The Anticheat For Possible Fake Death Hacks.");
                        format(string,sizeof(string), "(%d/%d/%d)[%d:%d:%d] Anticheat Has Kicked %s for: Fake Death hacks.",d,m,y,h,mi,s,name);
                        KickLog(string);
                        format(string,sizeof(string), "(%d/%d/%d)[%d:%d:%d] Kicked by the Anticheat - Fake Death Hacks.",d,m,y,h,mi,s,name);
                        AddPunishment(playerid, string);
                        SetTimerEx("KickPlayerOut",500,false,"i",playerid);
                    }
                    else
                    {
                        format(string, sizeof(string), "|ERP-AC|: %s (%d) Is possibly Using Fake Death Hacks; Check him inmediately!!", name, playerid);
                        SendAdminMessage(COLOR_YELLOW, string);
                        PlayerSuspicious[playerid] = 1;
                        PlayerFakeDeathHacking[playerid] = 1;
                        PlayerGotSpottedRecently[playerid] = 1;
                        SetTimerEx("ResetAcWarn", 3000, 0, "i", playerid);
                    }
                }
            }
        }
    }
    if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER)
    {
        if(AntiDriveBy == 1)
        {
            new model = GetVehicleModel(GetPlayerVehicleID(killerid));
            if(model != 520 || model != 425 || model != 432)
            {
                PlayerInfo[killerid][pWarns] ++;
                if(PlayerInfo[playerid][pWarns] == 3)
                {
                    format(string, sizeof(string), "%s (%d), Has been Kicked by The Anticheat |ERP-AC| for Excessive Drive by Killing.", name2, killerid);
                    SendClientMessageToAll(COLOR_NICERED, string);
                    SendClientMessage(killerid,COLOR_LIGHTBLUE, "You have Been Kicked by The Anticheat For Excessive Drive By Killing");
                    format(string,sizeof(string), "(%d/%d/%d)[%d:%d:%d] Anticheat Has Kicked %s for: Excessive Drive By Killing",d,m,y,h,mi,s,name2);
                    KickLog(string);
                    SetTimerEx("KickPlayerOut",500,false,"i",killerid);
                }
                else
                {
                    format(string, sizeof(string), "%s (%d), Has been Warned by The Anticheat |ERP-AC| for Drive by Killing.", name2, killerid);
                    SendClientMessageToAll(COLOR_NICERED, string);
                    SendClientMessage(killerid,COLOR_LIGHTBLUE, "You have Been Warned by The Anticheat For Excessive Drive By Killing");
                    format(string, sizeof(string), "|ERP-AC|: %s Has Killed someone With Driver Drive By; Player has been Warned.", name2);
                    SendAdminMessage(COLOR_YELLOW, string);
                    format(string,sizeof(string), "(%d/%d/%d)[%d:%d:%d] Warned by Anticheat - Reason: Driver drive-by kill.",d,m,y,h,mi,s);
                    AddPunishment(killerid, string);
                }
            }
        }
    }
    if(killerid != INVALID_PLAYER_ID)
    {
        if(reason == 0) { deathreason = "Melee"; }
        else if(reason == 36 || reason == 35 || reason == 40 || reason == 16) { deathreason = "Explosion"; }
        else if(reason == 18 || reason == 37) { deathreason = "Fire"; }
        else if(reason == 51) { deathreason = "Explosion"; }
        else if(reason == 50) { deathreason = "Heli-Kill"; }
        else { GetWeaponName(reason, deathreason, sizeof(deathreason)); }
        format(string, sizeof(string),"[INFO]: %s (%d) has been killed by %s (%d) - %s", name,playerid,name2,killerid,deathreason);
        SendAdminMessage(COLOR_YELLOW, string);
    }
    else
    {
        new text[30];
        if(reason == 51) { text = "Explosion"; }
        else if(reason == 53) { text = "Drowned"; }
        else if(reason == 54) { text = "Collision"; }
        else { text = "Death"; }
        format(string, sizeof(string),"[INFO]: %s (%d) has been killed by Server. (%s)",name,playerid, text);
        SendAdminMessage(COLOR_YELLOW, string);
    }

    new playercash;
    new victimteam = gTeam[playerid];
    new Float:px,Float:py,Float:pz;
    new killerteam = gTeam[killerid];
    TextDrawHideForPlayer(playerid, Textdraw39[playerid]);
    TextDrawHideForPlayer(playerid, Textdraw40[playerid]);
    gPlayerSpawned[playerid] = 0;

    if(PlayerInfo[playerid][pAdminDuty] >= 1) { PlayerInfo[playerid][pAdminDuty] = 0; }
    GetPlayerPos(playerid, px, py, pz);
    DeathPosX[playerid] = px;
    DeathPosY[playerid] = py;
    DeathPosZ[playerid] = pz;
    SetTimerEx("JustDied", 500, false, "i", playerid);
   
    if (PlayerInfo[killerid][pAchievement9] == 0 && PlayerInfo[killerid][pKills] == 1)
    {
        TextDrawSetString(Textdraw64[killerid],"Congratulations! ~n~~n~You have earned the medal ~n~~b~Newbie Killer (9) ~n~~n~~w~you won ~g~$100");
        ShowAchievement(killerid);
        SafeGivePlayerMoney(killerid,100);
        PlayerInfo[killerid][pAchievement9] = 1;
    }
    if (PlayerInfo[killerid][pAchievement10] == 0 && PlayerInfo[killerid][pKills] == 75)
    {
        TextDrawSetString(Textdraw64[killerid],"Congratulations! ~n~~n~You have earned the medal ~n~~b~Serial Killer (10) ~n~~n~~w~you won ~g~$250");
        ShowAchievement(killerid);
        SafeGivePlayerMoney(killerid,250);
        PlayerInfo[killerid][pAchievement10] = 1;
    }
    if (PlayerInfo[killerid][pAchievement11] == 0 && PlayerInfo[killerid][pKills] == 150)
    {
        TextDrawSetString(Textdraw64[killerid],"Congratulations! ~n~~n~You have earned the medal ~n~~b~Assasin (11) ~n~~n~~w~you won ~g~$500");
        ShowAchievement(killerid);
        SafeGivePlayerMoney(killerid,500);
        PlayerInfo[killerid][pAchievement11] = 1;
    }
    if(gPlayerUsingLoopingAnim[playerid])
    {
        gPlayerUsingLoopingAnim[playerid] = 0;
        TextDrawHideForPlayer(playerid,txtAnimHelper);
    }
    WantedPoints[playerid] = 0;
    WantedLevel[playerid] = 0;
    if(PlayerInfo[playerid][pRegularRank] > 0) { SetPlayerHealth(playerid, 100.0); }
    else { SetPlayerHealth(playerid, 50.0+PlayerInfo[playerid][pSHealth]); }
    gPlayerSpawned[playerid] = 1;
    SafeTime[playerid] = 60;
    Checked[playerid] = 1;
    PlayerGotSpottedRecently[playerid] = 1;
    SetTimerEx("ResetAcWarn",2000,false, "i", playerid);
    if(killerid != 255)
    {
        if(GetPlayerState(killerid) == 2)
        {
            if(ProxDetectorS(20, killerid, playerid))
            {
                if(!IsPlayerInAnyVehicle(playerid))
                {
                    if(PlayerInfo[killerid][pMember] == 1||PlayerInfo[killerid][pLeader] == 1||PlayerInfo[killerid][pMember] == 2||PlayerInfo[killerid][pLeader] ==2)
                    {
                        SendClientMessage(killerid, COLOR_YELLOW, "That was a drive-by kill. Don't abuse it.");
                        return 1;
                    }
                    SetPlayerCriminal(killerid,255,"Manslaughter");
                    return 1;
                }
            }
        }
    }
    if (reason == 22)
    {
        if (PlayerInfo[killerid][pPistSkill] >= 0 && PlayerInfo[killerid][pPistSkill] <= 1000)
        {
            PlayerInfo[killerid][pPistSkill] += 2;
            SetPlayerSkills(killerid);
        }
    }
    if (reason == 23)
    {
        if (PlayerInfo[killerid][pSilenSkill] >= 0 && PlayerInfo[killerid][pSilenSkill] <= 1000)
        {
            PlayerInfo[killerid][pSilenSkill] += 2;
            SetPlayerSkills(killerid);
        }
        if (PlayerInfo[killerid][pAchievement0] == 0)
        {
            TextDrawSetString(Textdraw64[killerid],"Congratulations! ~n~~n~You have earned the medal ~n~~b~Silent Kill (0) ~n~~n~~w~you won ~g~$200 ~w~and ~p~50+ of ~y~Silenced Pistol Skill");
            ShowAchievement(killerid);
            PlayerInfo[killerid][pSilenSkill] += 50;
            SafeGivePlayerMoney(killerid,200);
            PlayerInfo[killerid][pAchievement0] = 1;
        }
    }
    if (reason == 24)
    {
        if (PlayerInfo[killerid][pDesertSkill] >= 0 && PlayerInfo[killerid][pDesertSkill] <= 1000)
        {
            PlayerInfo[killerid][pDesertSkill] += 2;
            SetPlayerSkills(killerid);
        }
    }

    if (reason == 25)
    {
        if (PlayerInfo[killerid][pShotgSkill] >= 0 && PlayerInfo[killerid][pShotgSkill] <= 1000)
        {
            PlayerInfo[killerid][pShotgSkill] += 2;
            SetPlayerSkills(killerid);
        }
    }
    if (reason == 26)
    {
        if (PlayerInfo[killerid][pSawnSkill] >= 0 && PlayerInfo[killerid][pSawnSkill] <= 800)
        {
            PlayerInfo[killerid][pSawnSkill] += 2;
            SetPlayerSkills(killerid);
        }
    }
    if (reason == 27)
    {
        if (PlayerInfo[killerid][pCombSkill] >= 0 && PlayerInfo[killerid][pCombSkill] <= 1000)
        {
            PlayerInfo[killerid][pCombSkill] += 2;
            SetPlayerSkills(killerid);
        }
    }

    if (reason == 28 || reason == 32)
    {
        if (PlayerInfo[killerid][pUziSkill] >= 0 && PlayerInfo[killerid][pUziSkill] <= 800)
        {
            PlayerInfo[killerid][pUziSkill] += 2;
            SetPlayerSkills(killerid);
        }
    }

    if (reason == 29)
    {
        if (PlayerInfo[killerid][pSmgSkill] >= 0 && PlayerInfo[killerid][pSmgSkill] <= 1000)
        {
            PlayerInfo[killerid][pSmgSkill] += 2;
            SetPlayerSkills(killerid);
        }
    }

    if (reason == 30)
    {
        if (PlayerInfo[killerid][pAkSkill] >= 0 && PlayerInfo[killerid][pAkSkill] <= 1000)
        {
            PlayerInfo[killerid][pAkSkill] += 2;
            SetPlayerSkills(killerid);
        }
    }

    if (reason == 31)
    {
        if (PlayerInfo[killerid][pM4Skill] >= 0 && PlayerInfo[killerid][pM4Skill] <= 1000)
        {
            PlayerInfo[killerid][pM4Skill] += 2;
            SetPlayerSkills(killerid);
        }
    }


    if (gPlayerCheckpointStatus[playerid] > 4 && gPlayerCheckpointStatus[playerid] < 11)
    {
        DisablePlayerCheckpoint(playerid);
        gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE;
    }
    new caller = Mobile[playerid];
    if(caller != 255)
    {
        if(caller < 255)
        {
            SendClientMessage(caller,  COLOR_GRAD2, "** The line just went dead....");
            CellTime[caller] = 0;
            CellTime[playerid] = 0;
            Mobile[caller] = 255;
        }
        Mobile[playerid] = 255;
        CellTime[playerid] = 0;
    }
    ClearCrime(playerid);
    if(GettingCK[playerid] < 999)
    {
        if(IsPlayerConnected(killerid))
        {
            if(OnCK[killerid] < 999)
            {
                new killer[MAX_PLAYER_NAME];
                new dier[MAX_PLAYER_NAME];
                GetPlayerName(playerid, dier, sizeof(dier));
                GetPlayerName(killerid, killer, sizeof(killer));
                format(string, sizeof(string), "* %s has performed a Character Kill on you, you aren't able to play with this Character anymore.",killer);
                SendClientMessage(playerid, COLOR_LIGHTRED, string);
                format(string, sizeof(string), "** %s has Character Killed %s **",killer,dier);
                CKLog(string);
                BroadCast(COLOR_LIGHTRED, string);
                PlayerInfo[playerid][pCK] = 1;
                if(GettingCK[playerid] < 999) { GettingCK[playerid] = 999; }
                else if(OnCK[playerid] < 999) { OnCK[playerid] = 999; }
                if(GettingCK[killerid] < 999) { GettingCK[killerid] = 999; }
                else if(OnCK[killerid] < 999) { OnCK[killerid] = 999; }
                KickPlayer[playerid] = 1;
            }
        }
    }
    if(GoChase[playerid] != 999)
    {
        new sendername[MAX_PLAYER_NAME];
        GetPlayerName(playerid, sendername, sizeof(sendername));
        SendClientMessage(playerid, COLOR_YELLOW,"You failed to assassinate your target. Contract is removed!");
        format(string,128,"Hitman %s failed to assassinate his target. Contract is removed!", sendername);
        SendFamilyMessage(8, COLOR_YELLOW, string);
        GoChase[playerid] = 999;
    }
    if(PlayerInfo[playerid][pHeadValue] > 0)
    {
        if(IsPlayerConnected(killerid))
        {
            if(gTeam[killerid] == 10 || PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8)
            {
                if(GoChase[killerid] == playerid)
                {
                    new killer[MAX_PLAYER_NAME];
                    GetPlayerName(killerid, killer, sizeof(killer));
                    SafeGivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]);
                    format(string,128,"<< Hitman %s has fulfilled the contract on %s and collected $%d >>",killer,name,PlayerInfo[playerid][pHeadValue]);
                    SendFamilyMessage(8, COLOR_YELLOW, string);
                    PlayerInfo[playerid][pHeadValue] = 0;
                    GameTextForPlayer(playerid, "~r~Killed By Hitman",5000,3);
                    GotHit[playerid] = 0;
                    GetChased[playerid] = 999;
                    GoChase[killerid] = 999;
                }
            }
        }
    }
    if(victimteam >= 4)
    {
        if(IsPlayerConnected(killerid))
        {
            //new killer[MAX_PLAYER_NAME];
            //GetPlayerName(killerid, killer, sizeof(killer));
            new slice = 100; //$100
            playercash = GetPlayerMoney(playerid);
            if(gTeam[killerid] != 2) { WantedPoints[killerid] += 2; } //+ 2 wanted points
            if(SafeTime[playerid] <= 0)
            {
                if(gTeam[killerid] != gTeam[playerid])
                {
                    if(GetPlayerState(killerid) == 1)
                    {
                        PlayerInfo[killerid][pKills] = PlayerInfo[killerid][pKills] + 2;
                    }
                    else
                    {
                        PlayerInfo[killerid][pKills]++;
                    }
                    PlayerInfo[playerid][pKills]--;
                }
            }
            /*if (strlen(deathreason) > 0)// patch
            {
                if (((gTeam[killerid]) == 1) || ((gTeam[killerid]) == 3 && civnokill) || gTeam[killerid] == gTeam[playerid])//med kill criminal
                {
                    format(string, sizeof(string), ".: %s murdered %s. (%s) :.", killer, name, deathreason);
                }
                else
                {
                    format(string, sizeof(string), ".: %s murdered %s. (%s) for $%d :.", killer, name, deathreason, slice);
                }

            }
            else
            {
                if (((gTeam[killerid]) == 1) || ((gTeam[killerid]) == 3 && civnokill || gTeam[killerid] == gTeam[playerid]))
                {
                    format(string, sizeof(string), ".: %s murdered %s :.", killer, name);
                }
                else
                {
                    format(string, sizeof(string), ".: %s murdered %s for $%d :.", killer, name, slice);
                }
            }*/

            if (((gTeam[killerid]) == 1) || ((gTeam[killerid]) == 3 && civnokill) || (gTeam[killerid] == gTeam[playerid] && gTeam[playerid] != 4))
            {
                slice = 0;
            }
            if (((gTeam[killerid]) != 4) && ((gTeam[killerid]) == gTeam[playerid]))//no team kill
            {
                slice = 0;
            }
            if (playercash > 0)
            {
                SafeGivePlayerMoney(playerid, -slice);
            }
            else
            {
                slice = slice+500;
            }
            //SafeGivePlayerMoney(killerid, slice);
            //GameTextForPlayer(playerid, dmessage, 5000, 2);
            PlayerPlaySound(killerid, 1083, 0.0, 0.0, 0.0);
            if (((gTeam[killerid]) == 3) && reason != 49)
            {
                SetPlayerCriminal(killerid,255, "First Degree Murder");
            }
            else if (((gTeam[killerid]) == 3) && reason == 49)
            {
                SetPlayerCriminal(killerid,255, "Hit And Run");
            }
        }
    }
    else if (victimteam == 2)
    {
        if(IsPlayerConnected(killerid))
        {
            //new killer[MAX_PLAYER_NAME];
            //GetPlayerName(killerid, killer, sizeof(killer));
            // Cop kill
            PlayerInfo[playerid][pKills]--;
            if (gTeam[killerid] == 2)//cops kill cop
            {
                //format(string,128,".: Officer %s murdered Officer %s (%s) and was sued for $%d :.",killer,name,deathreason,suecost);
                PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
                SafeGivePlayerMoney(killerid, -suecost);
                SafeGivePlayerMoney(playerid, suecost+100);//+100pays hospital bill
            }
            else
            {
                //format(string,128,".: %s murdered Officer %s (%s) :.",killer,name,deathreason);
            }
            if (gTeam[killerid] >= 3)
            {
                WantedPoints[killerid] += 2; //+ 2 wanted points
                if(reason != 49)
                {
                    SetPlayerCriminal(killerid,255, "First Degree Murder");
                }
                else if (reason == 49)
                {
                    SetPlayerCriminal(killerid,255, "Hit And Run");
                }
            }
            if(gTeam[killerid] >= 5 && SafeTime[playerid] <= 0)
            {
                if(GetPlayerState(killerid) == 1)
                {
                    PlayerInfo[killerid][pKills] = PlayerInfo[killerid][pKills]+2;
                }
                else
                {
                    PlayerInfo[killerid][pKills]++;
                }
                WantedPoints[killerid]+=2;
            }
            //BroadCast(COLOR_RED, string);
        }
    }
    else if (victimteam == 3)
    {
        if(IsPlayerConnected(killerid))
        {
            //new killer[MAX_PLAYER_NAME];
            //GetPlayerName(killerid, killer, sizeof(killer));
            // Civ kill
            if ((gTeam[killerid]) == 2)//cops kill civ
            {
                if(WantedLevel[playerid] < 1)
                {
                    //format(string,128,".: Officer %s murdered %s (%s) and was sued for $%d :.",killer,name,deathreason,suecost);
                    PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
                    SafeGivePlayerMoney(killerid, -suecost);
                    SafeGivePlayerMoney(playerid, suecost+10);//+100pays hospital bill
                }
            }
            else
            {
                //format(string,128,".: %s murdered %s (%s) :.",killer,name,deathreason);
                WantedPoints[killerid] += 2;
            }
            if (((gTeam[killerid]) >= 3 || (gTeam[killerid]) == 1) && reason != 49)
            {
                SetPlayerCriminal(killerid,255, "First Degree Murder");
            }
            else if (((gTeam[killerid]) >= 3 || (gTeam[killerid]) == 1) && reason == 49)
            {
                SetPlayerCriminal(killerid,255, "Hit And Run");
            }
            //BroadCast(COLOR_RED, string);
        }
    }
    else if (victimteam == 1)
    {
        if(IsPlayerConnected(killerid))
        {
            //new killer[MAX_PLAYER_NAME];
            //GetPlayerName(killerid, killer, sizeof(killer));
            // Civ kill
            if ((gTeam[killerid]) == 2)//cops kill civ
            {
                //format(string,128,".: Officer %s murdered Paramedic %s (%s) and was sued for $%d :.",killer,name,deathreason,suecost);
                PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
                SafeGivePlayerMoney(killerid, -suecost);
                SafeGivePlayerMoney(playerid, suecost+10);//+100pays hospital bill
            }
            else if ((gTeam[killerid]) == 1)//med kill civ
            {
                //format(string,128,".: Paramedic %s murdered %s (%s) and was sued for $%d :.",killer,name,deathreason,suecost);
                PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
                SafeGivePlayerMoney(killerid, -suecost);
                SafeGivePlayerMoney(playerid, suecost+10);//+100pays hospital bill
            }
            else
            {
                //format(string,128,".: %s murdered %s (%s) :.",killer,name,deathreason);
            }
            if (((gTeam[killerid]) == 4) && reason != 49)
            {
                SetPlayerCriminal(killerid,255, "First Degree Murder");
            }
            else if (((gTeam[killerid]) == 3) && reason == 49)
            {
                SetPlayerCriminal(killerid,255, "Hit And Run");
            }
            //BroadCast(COLOR_RED, string);
        }
    }
    if (victimteam >= 3 && WantedPoints[playerid] > 0 && killerteam == 2)
    {
        SetPlayerFree(playerid,killerid, "Got Killed");
    }
    if (BusrouteEast[playerid][0] != 0 || BusrouteWest[playerid][0] != 0)
    {
        if (BusrouteEast[playerid][0] != 0) BusrouteEnd(playerid, BusrouteEast[playerid][1]);
        else if (BusrouteWest[playerid][0] != 0) BusrouteEnd(playerid, BusrouteWest[playerid][1]);
        else BusrouteEnd(playerid, 0);
    }
    if(FarmerVar[playerid] != 0)
    {
        FarmerVar[playerid] = 0;
        DisablePlayerCheckpoint(playerid);
    }
    if(DrugFarmerVar[playerid] != 0)
    {
        DrugFarmerVar[playerid] = 0;
        DisablePlayerCheckpoint(playerid);
    }
    if(SmugglerWork[playerid] != 0)
    {
        SmugglerWork[playerid] = 0;
        DisablePlayerCheckpoint(playerid);
    }
    killerid = INVALID_PLAYER_ID;
    SetRealMoney(playerid, ScriptMoney[playerid]);
    SetPlayerColor(playerid,0xBBBBBB00);
    SafeResetPlayerWeapons(playerid);
    return 1;
}
Reply
#9

pawn Код:
//Global
DeathSkin[MAX_PLAYERS];
//OnPlayerDeath
GetPlayerPos(playerid, px, py, pz);
DeathPosX[playerid] = px;
DeathPosY[playerid] = py;
DeathPosZ[playerid] = pz;
DeathSkin[playerid] = GetPlayerSkin(playerid);
JustDied[playerid] = 1;
//OnPlayerSpawn
if(JustDied[playerid] == 1)
{
SetPlayerPos(playerid,DeathPosX[playerid],DeathPosY[playerid],DeathPosZ[playerid]);
SetPlayerSkin(playerid,DeathSkin[playerid]);
JustDied[playerid] = 0;
}
This works perfectly fine with me.
Reply
#10

Quote:
Originally Posted by TonyII
Посмотреть сообщение
pawn Код:
//Global
DeathSkin[MAX_PLAYERS];
//OnPlayerDeath
GetPlayerPos(playerid, px, py, pz);
DeathPosX[playerid] = px;
DeathPosY[playerid] = py;
DeathPosZ[playerid] = pz;
DeathSkin[playerid] = GetPlayerSkin(playerid);
JustDied[playerid] = 1;
//OnPlayerSpawn
if(JustDied[playerid] == 1)
{
SetPlayerPos(playerid,DeathPosX[playerid],DeathPosY[playerid],DeathPosZ[playerid]);
SetPlayerSkin(playerid,DeathSkin[playerid]);
JustDied[playerid] = 0;
}
This works perfectly fine with me.
Tried it but I spawned where I last logged in. Look at my post above ^ I made it like that insted by got some errors.
Before I added it I made the death like it was before and it worked good. Spawned where I should etc so now I'm trying this way.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)