public OnPlayerDeath(playerid, killerid, reason)
{
#if defined debug_mode
printf("[DEBUG] [OnPlayerDeath] playerid:%d | killerid:%d | reason:%d", playerid, killerid, reason);
#endif
#if defined __anti_godmode
antigm_OnPlayerDeath(playerid, killerid, reason);
#endif
reset_player_weapon(playerid);
p_t_info[playerid][p_tp_immune_time] = 3;
p_t_info[playerid][p_gun_immune_time] = 8;
p_t_info[playerid][p_dialog] = -1;
StopAudioStreamForPlayer(playerid);
if(!GetPVarInt(playerid, "p_dead"))
{
if(IsPlayerToSquare(playerid, -891.3302, -2950.0190,2915.9917,560.3257)) SetPVarInt(playerid, "p_dead", 1);
else if(IsPlayerToSquare(playerid,-2929.6589,-2889.1660,-1326.9077,1493.1770)) SetPVarInt(playerid, "p_dead", 2);
else SetPVarInt(playerid, "p_dead", 3);
if(army_player(playerid)) SetPVarInt(playerid, "p_dead", 4);
if(gang_player(playerid) && IsPlayerToSquare(playerid,1843.9275,-2205.1902,2960.9487,-954.5435)) SetPVarInt(playerid, "p_dead", 5);
if(GetPVarInt(playerid, "exam_vehicle")!= 0)
{
is_leave_exam_vehicle {playerid} = 0;
SendClientMessage(playerid, col_gray, ""c_orange_red"* "c_grey"Вы допустили грубые ошибки, экзамен провален.");
GameTextForPlayer(playerid, "~r~FAILED", 5000, 6);
new vehicle_id = GetPVarInt(playerid, "exam_vehicle");
DeletePVar(playerid, "exam_vehicle");
DeletePVar(playerid, "driving_cp");
DisablePlayerRaceCheckpoint(playerid);
SetPVarInt(playerid, "p_dead", GetVehicleModel(vehicle_id));
DestroyVehicle(vehicle_id);
}
}
if(GetPVarInt(playerid, "filling_timer")!= 0)KillTimer(GetPVarInt(playerid, "filling_timer")), DeletePVar(playerid, "filling_timer");
if(GetPVarInt(playerid,"Stol")) ExitBone(playerid);
if(GetPVarInt(playerid, "p_h_bed") > 0)
{
h_bed_toggled[GetPVarInt(playerid, "p_h_bed")-1][GetPlayerVirtualWorld(playerid)-1] = false;
DeletePVar(playerid, "p_h_bed");
}
if((gang_player(playerid)|| mafia_player(playerid)) && IsPlayerToSquare(playerid, 80.8047, 1762.5040, 390.7005, 2093.4778))
{
PlayerInfo[playerid][crim_ammo] = 0;
PlayerInfo[playerid][crim_guns] = 0;
SendClientMessage(playerid, col_gray, "* Перед отправкой в больницу солдаты изъяли у Вас патроны и оружие.");
}
if(GetPVarInt(playerid,"p_masked"))DeletePVar(playerid, "p_masked");
if(PlayerInfo[playerid][timejob])
{
give_money(playerid, PlayerInfo[playerid][salary]);
PlayerInfo[playerid][salary] = 0;
if(PlayerInfo[playerid][timejob] == job_porter || PlayerInfo[playerid][timejob] == job_forklift)
{
give_money(playerid, PlayerInfo[playerid][salary]);
insert_money_log(playerid, INVALID_PLAYER_ID, PlayerInfo[playerid][salary], "зп в порту");
SendClientMessage(playerid, col_white, ""c_green"* "c_white"Вы покинули территорию порта и завершили рабочую смену.");
new __t_string[72];
format(__t_string, sizeof(__t_string), ""c_green"* "c_white"Заработано: "c_green"%d$", PlayerInfo[playerid][salary]);
SendClientMessage(playerid, col_white, __t_string);
new pljob = PlayerInfo[playerid][timejob];
PlayerInfo[playerid][timejob] = 0;
PlayerInfo[playerid][salary] = 0;
if(is_fraction_duty {playerid} == 1)SetPlayerSkin(playerid, PlayerInfo[playerid][org_skin]);
else SetPlayerSkin(playerid, PlayerInfo[playerid][skin]);
hide_payment(playerid);
DisablePlayerCheckpoint(playerid);
if(pljob == job_forklift)
{
if(forklift_ptd[playerid] != PlayerText:-1)
{
PlayerTextDrawDestroy(playerid, forklift_ptd[playerid]);
TextDrawHideForPlayer(playerid, forklift_td);
forklift_ptd[playerid] = PlayerText:-1;
forklift_time[playerid] = -600;
}
new _v_id = player_rentcar[playerid];
player_rentcar[playerid] = INVALID_VEHICLE_ID;
SetVehicleToRespawn(_v_id);
if(GetPVarInt(playerid, "fork_object"))
{
DestroyDynamicObject(GetPVarInt(playerid, "fork_object"));
DeletePVar(playerid, "fork_object");
}
}
else if(pljob == job_porter)
{
if(IsPlayerAttachedObjectSlotUsed(playerid, 1)) RemovePlayerAttachedObject(playerid, 1);
ClearAnimations(playerid);
DeletePVar(playerid, "have_factory_box");
}
}
PlayerInfo[playerid][timejob] = job_none;
if(IsPlayerAttachedObjectSlotUsed(playerid, 0)) RemovePlayerAttachedObject(playerid, 0);
if(IsPlayerAttachedObjectSlotUsed(playerid, 1)) RemovePlayerAttachedObject(playerid, 1);
if(IsPlayerAttachedObjectSlotUsed(playerid, 2)) RemovePlayerAttachedObject(playerid, 2);
if(IsPlayerAttachedObjectSlotUsed(playerid, 3)) RemovePlayerAttachedObject(playerid, 3);
if(IsPlayerAttachedObjectSlotUsed(playerid, 4)) RemovePlayerAttachedObject(playerid, 4);
DisablePlayerCheckpoint(playerid);
}
if(td_db[playerid][1] != PlayerText:-1)
{
for(new j = 0; j < 4; j ++)
{
PlayerTextDrawDestroy(playerid, td_db[playerid][j]);
td_db[playerid][j] = PlayerText:-1;
}
}
if(GetPVarInt(playerid, "PlayerCuffed")> 0)
{
DeletePVar(playerid, "PlayerCuffed");
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
RemovePlayerAttachedObject(playerid, 1);
}
if(GetPVarInt(playerid, "PlayerTied")> 0)
{
DeletePVar(playerid, "PlayerTied");
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
}
is_ether {playerid} = 0; // отключаем эфир
if(quest_photographer_id[playerid] != -1)
EndJobPhotographer(playerid);
if(p_t_info[playerid][phone_id] != INVALID_PLAYER_ID)
{
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_STOPUSECELLPHONE);
SetPlayerSpecialAction(p_t_info[playerid][phone_id], SPECIAL_ACTION_STOPUSECELLPHONE);
RemovePlayerAttachedObject(playerid, 2);
RemovePlayerAttachedObject(p_t_info[playerid][phone_id], 2);
SendClientMessage(p_t_info[playerid][phone_id], 0x940000FF, "Связь оборвалась...");
me_action(p_t_info[playerid][phone_id], "положил(а) трубку", 5.0);
p_t_info[p_t_info[playerid][phone_id]][phone_id] = INVALID_PLAYER_ID;
p_t_info[p_t_info[playerid][phone_id]][phone_caller] = 0;
p_t_info[playerid][phone_id] = INVALID_PLAYER_ID;
p_t_info[playerid][phone_caller] = 0;
}
if(GetPVarInt(playerid, "p_sm_used")!= 0)
{
CancelSelectTextDraw(playerid);
PlayerTextDrawDestroy(playerid, sm_ptd[playerid]);
sm_ptd[playerid] = PlayerText:INVALID_TEXT_DRAW;
for(new i = 0; i < 4; i ++)
{
TextDrawHideForPlayer(playerid, sm_td);
}
sm_used[GetPVarInt(playerid, "p_sm_used")-1] = false;
DeletePVar(playerid, "p_sm_used");
DeletePVar(playerid, "sm_bet");
}
if(GetPVarInt(playerid, "p_skin_shop") == 1)
{
DeletePVar(playerid, "skin_select_number");
DeletePVar(playerid, "p_skin_shop");
TogglePlayerControllable(playerid, true);
SetCameraBehindPlayer(playerid);
set_world(playerid, 0);
for(new i = 0; i < 19; i ++)
{
TextDrawHideForPlayer(playerid, td_skinshop);
}
CancelSelectTextDraw(playerid);
PlayerTextDrawDestroy(playerid, td_skinshop_price[playerid]);
td_skinshop_price[playerid] = PlayerText:-1;
SetPlayerSkin(playerid, PlayerInfo[playerid][skin]);
}
if(duel_opponent[playerid] != INVALID_PLAYER_ID)
{
new _text_string[144];
format(_text_string, sizeof(_text_string), ""c_green"* "c_white"Вы одержали победу над "c_green"%s"c_white" и выиграли ставку в размере "c_green"%d$", PlayerInfo[playerid][name], duel_price[playerid]);
SendClientMessage(duel_opponent[playerid], col_white, _text_string);
set_health(playerid, 100);
set_health(duel_opponent[playerid], 100);
give_money(duel_opponent[playerid], duel_price[playerid]*2);
insert_money_log(playerid, duel_opponent[playerid], duel_price[playerid], "дуэль");
SendClientMessage(playerid, col_white, ""c_green"* "c_white"Вы проиграли дуэль.");
if(PlayerInfo[duel_opponent[playerid]][jailed] > 0)
{
if(4 > PlayerInfo[duel_opponent[playerid]][jail] > 0)
{
new random_jail_pos = random(2);
set_pos(duel_opponent[playerid], jail_spawn[random_jail_pos][0],
jail_spawn[random_jail_pos][1],
jail_spawn[random_jail_pos][2],
jail_spawn[random_jail_pos][3],
1, PlayerInfo[duel_opponent[playerid]][jail]);
if(is_fraction_duty {duel_opponent[playerid]} == 1)SetPlayerSkin(duel_opponent[playerid], PlayerInfo[duel_opponent[playerid]][org_skin]), SetPlayerColor(duel_opponent[playerid], f_info[PlayerInfo[duel_opponent[playerid]][member] -1][f_radar_color]);
else SetPlayerSkin(duel_opponent[playerid], PlayerInfo[duel_opponent[playerid]][skin]);
}
else if(PlayerInfo[duel_opponent[playerid]][jail] == 10)
{
set_pos(duel_opponent[playerid], 217.9972, 3082.9668, 658.7508, 268.2277, 2, 15);
if(is_fraction_duty {duel_opponent[playerid]} == 1)SetPlayerSkin(duel_opponent[playerid], PlayerInfo[duel_opponent[playerid]][org_skin]), SetPlayerColor(duel_opponent[playerid], f_info[PlayerInfo[duel_opponent[playerid]][member] -1][f_radar_color]);
else SetPlayerSkin(duel_opponent[playerid], PlayerInfo[duel_opponent[playerid]][skin]);
}
}
else set_pos(duel_opponent[playerid], 2057.3447,-1898.6816,13.5538, 354.7014, 0, 0);
SetPVarInt(duel_opponent[playerid], "tp_area_used", 1);
reset_player_weapon(duel_opponent[playerid]);
for(new i = 0; i < 12; i ++)
{
give_weapon(duel_opponent[playerid], duel_guns[duel_opponent[playerid]][0], duel_guns[duel_opponent[playerid]][1]);
}
duel_price[playerid] = 0;
duel_price[duel_opponent[playerid]] = 0;
duel_opponent[duel_opponent[playerid]] = INVALID_PLAYER_ID;
duel_opponent[playerid] = INVALID_PLAYER_ID;
SetPVarInt(playerid, "p_dead", 322);
}
if(GetPVarInt(playerid, "fork_object"))
{
DestroyDynamicObject(GetPVarInt(playerid, "fork_object"));
DeletePVar(playerid, "fork_object");
}
SendClientMessage(playerid, 0xFF0000FF, "!!! OnPlayerDeath Смерть !!!");
return 1;
}