Игрок умирает несколько раз
#1

Сделал, чтобы игрок после смерти спавнился в больнице, и столкнулся с тем, что игрок может умереть несколько раз подряд. Причём это случается не всегда, иногда умирает нормально, иногда 2 или 3 раза, и только потом спавнится.

Если верить логам, то OnPlayerSpawn и OnPlayerDeath вызываются 1 раз. В чём же проблема?

Вот код:

OnPlayerDeath
PHP код:
public OnPlayerDeath(playeridkilleridreason)
{
     if(
GLOBAL_DEBUGprintf(" | OnPlayerDeath(%d,%d,%d)",playeridkilleridreason);
    
SetPVarInt(playerid,"K_Times",GetPVarInt(playerid,"K_Times") + 1);
    if(
GetPVarInt(playerid,"K_Times") > 1) return Cheat_Kick(playerid,ACC_FAKE_KILL); //больше одной смерти перед спавном - кик
    
BloodPlayer[playerid] = 0;
    
gBlood[playerid] = 0;
    
PZ_Robit[playerid] = 0;
    
PZ_Money[playerid] = 0;
    
PZ_Vz9l[playerid] = 0;
    
Cuffed[playerid] = 0;
    
    
SetPlayerWeather(playerid,ServerWeather);
     
SetPlayerDrunkLevel(playerid,0);
     
Drugs_Time[playerid] = 0;
    
TextDrawHideForPlayer(playeridZVision);
    
SetPVarInt(playerid"PlayerInAFK", -2);
    if(
IsAGang(playerid) && killerid != INVALID_PLAYER_ID)
    {
        new 
zone GZ_GetPlayerZone(playerid);
        if(
zone != -&&  GZInfo[zone][zBattle] == 1)
        {
            new 
frak;
            if(
Player[playerid][pLeader] != 0frak Player[playerid][pLeader];
            else 
frak Player[playerid][pFraka];
            if(
frak == GZInfo[zone][zBF1]) GZKill[GZInfo[zone][zBF2]]++;
            else if(
frak == GZInfo[zone][zBF2]) GZKill[GZInfo[zone][zBF1]]++;
        }
    }
    if(
Player[playerid][pWanted] > && killerid !=INVALID_PLAYER_ID)
    {
        if(
Player[killerid][pFraka] == || Player[killerid][pFraka] == || Player[killerid][pLeader] == || Player[killerid][pLeader] == 2)
        {
            new 
string[120];
            
Player[playerid][pJailTime] = (Player[playerid][pWanted]*60);
            
Player[playerid][pWanted] = 0;
            
T_SetPlayerPos(playerid,264.1919,76.8498,1001.0391);
            
SetPlayerInterior(playerid,6);
            
ResetPlayerWeapons(playerid);
            
format(string,sizeof(string),"Вы были посажены в тюрьму на %d секунд!",Player[playerid][pJailTime]);
             
SendClientMessage(playerid,0xa13838AA,string);
             
format(string,sizeof(string),"Вы посадили %s в тюрьму на %d секунд!",PlayerName(playerid),Player[playerid][pJailTime]);
             
SendClientMessage(killerid,0xa13838AA,string);
        }
    }
    
PlayerDead[playerid] = true;
    return 
1;

OnPlayerSpawn
PHP код:
public OnPlayerSpawn(playerid)
{
    if(
GLOBAL_DEBUGprintf("CALLBACK | OnPlayerSpawn(%d)",playerid);
    if(
Player[playerid][pLog] == 0) {T_Kick(playerid);return 1;}
    
SetPVarInt(playerid"PlayerInAFK"0);
    if(
animload[playerid] == false)
    {
    
PreloadAnimLib(playerid,"BOMBER");
    
PreloadAnimLib(playerid,"CHAINSAW");
    
PreloadAnimLib(playerid,"RAPPING");
    
PreloadAnimLib(playerid,"SHOP");
    
PreloadAnimLib(playerid,"BEACH");
    
PreloadAnimLib(playerid,"SMOKING");
    
PreloadAnimLib(playerid,"FOOD");
    
PreloadAnimLib(playerid,"ON_LOOKERS");
    
PreloadAnimLib(playerid,"DEALER");
    
PreloadAnimLib(playerid,"CRACK");
    
PreloadAnimLib(playerid,"CARRY");
    
PreloadAnimLib(playerid,"COP_AMBIENT");
    
PreloadAnimLib(playerid,"PARK");
    
PreloadAnimLib(playerid,"INT_HOUSE");
    
PreloadAnimLib(playerid,"FOOD");
    
PreloadAnimLib(playerid,"CRIB");
    
PreloadAnimLib(playerid,"ROB_BANK");
    
PreloadAnimLib(playerid,"JST_BUISNESS");
    
PreloadAnimLib(playerid,"PED");
    
PreloadAnimLib(playerid,"OTB");
    
PreloadAnimLib(playerid,"INT_SHOP");
    
animload[playerid] = true;
    }
    
SetPVarInt(playerid,"K_Times",0);
    
/*BloodPlayer[playerid] = 0;
    gBlood[playerid] = 0;
    TextDrawHideForPlayer(playerid, ZVision);*/
    
for(new i;i<MAX_GANGZONE;i++)
    {
        
GangZoneShowForPlayer(playeridGZZone[i], GZ_GetColor(GZInfo[i][zFraction]));
        if(
GZInfo[i][zBattle]) GangZoneFlashForPlayer(playerid,i,GZ_COLOR_CAPTURE);
    }
    
Spawn(playerid);
    
Color(playerid); 
Spawn(playerid)
PHP код:
stock Spawn(playerid)
{
    if(
Player[playerid][pJailTime] > 0)
    {
        
Spawn_GiveHP(playerid);
        
T_SetPlayerPos(playerid,264.1919,76.8498,1001.0391);
        
SetPlayerInterior(playerid,6);
        if(
Player[playerid][pFraka] == && Player[playerid][pLeader] == 0SetPlayerSkin(playerid,Player[playerid][pSkin]);
        else 
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
        return 
1;
    }
    if(
PlayerDead[playerid]) // Больница
    
{
        
SetPlayerHP(playerid,10.0);
        new 
rand random(sizeof(MEDIC_SPAWN_CORD));
        
T_SetPlayerPos(playerid,MEDIC_SPAWN_CORD[rand][0],MEDIC_SPAWN_CORD[rand][1],MEDIC_SPAWN_CORD[rand][2]+0.2,MEDIC_SPAWN_CORD[rand][3],1,1,true);
        
SetCameraBehindPlayer(playerid);
        if(
Player[playerid][pFraka] == && Player[playerid][pLeader] == 0SetPlayerSkin(playerid,Player[playerid][pSkin]);
        else
        {
            
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
        }
        return 
1;
    }
    
Spawn_GiveHP(playerid);
    if(
Player[playerid][pHouse] !=&& Player[playerid][pSpawn] == 0)
    {
        new 
hid Player[playerid][pHouse];
        
T_SetPlayerPos(playerid,House[hid][hVhodX],House[hid][hVhodY],House[hid][hVhodZ]);
        
SetPlayerInterior(playerid,House[hid][hInt]);
        
SetPlayerVirtualWorld(playerid,House[hid][hWord]);
        if(
Player[playerid][pFraka] == && Player[playerid][pLeader] == 0)SetPlayerSkin(playerid,Player[playerid][pSkin]);
        else 
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
        
SetCameraBehindPlayer(playerid);
        return 
1;
    }
    if(
Player[playerid][pOtel] != 0)
    {
        if(
hotel_CheckTimeEject(playerid))
        {
            
SpawnPlayer(playerid);
            return 
1;
        }
        new 
class_ hotel_RoomGetClass(Player[playerid][pOtel]);
        if(
class_ == HOTEL_ROOM_ECONOMY)
        {
              
T_SetPlayerPos(playerid,2233.6099,-1115.2574,1050.8828,0,5,Player[playerid][pOtel]);
              
HOTEL_PLAYER_BLOCK[playerid] = HOTEL_ROOM_ECONOMY;
              
SetCameraBehindPlayer(playerid);
        }
        else if(
class_ == HOTEL_ROOM_MEDIUM)
        {
             
T_SetPlayerPos(playerid,2282.91, -1140.291050.91,0,11,Player[playerid][pOtel]);
             
HOTEL_PLAYER_BLOCK[playerid] = HOTEL_ROOM_MEDIUM;
             
SetCameraBehindPlayer(playerid);
        }
        else if(
class_ == HOTEL_ROOM_LUX)
        {
              
T_SetPlayerPos(playerid,2217.54, -1076.29,  1050.52,0,1,Player[playerid][pOtel]);
              
HOTEL_PLAYER_BLOCK[playerid] = HOTEL_ROOM_LUX;
              
SetCameraBehindPlayer(playerid);
        }
        
HOTEL_PLAYER_IN[playerid] = true;
        
HOTEL_PLAYER_LEVEL[playerid] = hotel_RoomGetLevel(Player[playerid][pOtel]);
        if(
Player[playerid][pFraka] == && Player[playerid][pLeader] == 0SetPlayerSkin(playerid,Player[playerid][pSkin]);
        else 
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
        return 
1;
    }
     if(
Player[playerid][pFraka] ==|| Player[playerid][pLeader] ==0)
     {
     new 
rpos random(sizeof(Bomj_Spawn)-1);
     
T_SetPlayerPos(playerid,Bomj_Spawn[rpos][0],Bomj_Spawn[rpos][1],Bomj_Spawn[rpos][2],Bomj_Spawn[rpos][3]);
    
SetPlayerInterior(playerid,0);
      
SetPlayerSkin(playerid,Player[playerid][pSkin]);
     }
     if(
Player[playerid][pFraka] ==|| Player[playerid][pLeader] ==1)//Мусора
     
{
     
T_SetPlayerPos(playerid,251.7674,68.6941,1003.6406);
    
SetPlayerInterior(playerid,6);
    
SetPlayerVirtualWorld(playerid,0);
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     }
     if(
Player[playerid][pFraka] ==|| Player[playerid][pLeader] ==2)//ФБР
     
{
     
T_SetPlayerPos(playerid,233.2321,112.7241,1003.2257);
     
SetPlayerInterior(playerid,10);
     
SetPlayerVirtualWorld(playerid,0);
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     }
     if(
Player[playerid][pFraka] ==|| Player[playerid][pLeader] ==3)//Армия
     
{
     
T_SetPlayerPos(playerid,-1346.8604,491.0497,11.2027);
     
SetPlayerInterior(playerid,0);
     
SetPlayerVirtualWorld(playerid,0);
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     }
    if(
Player[playerid][pFraka] ==|| Player[playerid][pLeader] ==4)//Медики
     
{
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     
T_SetPlayerPos(playerid,1135.9084,-1349.1273,-91.0731,359.7142,1,1,true);
     }
     if(
Player[playerid][pFraka] ==|| Player[playerid][pLeader] ==6)//Мэрия
     
{
     
T_SetPlayerPos(playerid,360.8573,205.4836,1008.3828);
     
SetPlayerInterior(playerid,3);
     
SetPlayerVirtualWorld(playerid,0);
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     }
     if(
Player[playerid][pFraka] ==|| Player[playerid][pLeader] ==5)//Инструкторы
     
{
     
T_SetPlayerPos(playerid,-2023.9537,-118.5002,1035.1719);
     
SetPlayerInterior(playerid,3);
     
SetPlayerVirtualWorld(playerid,1);
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     }
    if(
Player[playerid][pFraka] ==|| Player[playerid][pLeader] ==7)//San news
     
{
     
T_SetPlayerPos(playerid,652.0999,-1331.6232,-38.1789,31.3103,1,1,true);
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     }
     if(
Player[playerid][pFraka] ==|| Player[playerid][pLeader] ==8)//Grove
     
{
     
T_SetPlayerPos(playerid,2492.6389,-1710.2410,1014.7422);
     
SetPlayerInterior(playerid,3);
     
SetPlayerVirtualWorld(playerid,0);
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     }
     if(
Player[playerid][pFraka] ==|| Player[playerid][pLeader] ==9)//Rifa
     
{
     
T_SetPlayerPos(playerid,2806.9536,-1166.6899,1025.5703);
     
SetPlayerInterior(playerid,8);
     
SetPlayerVirtualWorld(playerid,0);
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     }
     if(
Player[playerid][pFraka] ==10 || Player[playerid][pLeader] ==10)//Ballas
     
{
     
T_SetPlayerPos(playerid,228.5867,1153.6051,1082.6168);
     
SetPlayerInterior(playerid,4);
     
SetPlayerVirtualWorld(playerid,0);
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     }
     if(
Player[playerid][pFraka] ==11 || Player[playerid][pLeader] ==11)//Vagos
     
{
     
T_SetPlayerPos(playerid,299.3129,302.4451,999.1484);
     
SetPlayerInterior(playerid,4);
     
SetPlayerVirtualWorld(playerid,0);
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     }
     if(
Player[playerid][pFraka] ==12 || Player[playerid][pLeader] ==12)//Aztec
     
{
     
T_SetPlayerPos(playerid,265.5839,1295.0334,1080.2578);
     
SetPlayerInterior(playerid,4);
     
SetPlayerVirtualWorld(playerid,0);
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     }
     if(
Player[playerid][pFraka] ==13 || Player[playerid][pLeader] ==13)//Байкеры
     
{
     
T_SetPlayerPos(playerid,508.5804,-85.3123,998.9609);
     
SetPlayerInterior(playerid,11);
     
SetPlayerVirtualWorld(playerid,0);
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     }
     if(
Player[playerid][pFraka] ==14 || Player[playerid][pLeader] ==14)//LCN
     
{
     
T_SetPlayerPos(playerid,448.5494,1405.8173,1084.3047);
     
SetPlayerInterior(playerid,2);
     
SetPlayerVirtualWorld(playerid,0);
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     }
     if(
Player[playerid][pFraka] ==15 || Player[playerid][pLeader] ==15)//Yaki
     
{
     
T_SetPlayerPos(playerid,1265.9303,-795.3159,1084.0078);
     
SetPlayerInterior(playerid,5);
     
SetPlayerVirtualWorld(playerid,0);
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     }
     if(
Player[playerid][pFraka] ==16 || Player[playerid][pLeader] ==16)//R M
     
{
     
T_SetPlayerPos(playerid,30.8725,1340.9081,1088.8750);
     
SetPlayerInterior(playerid,10);
     
SetPlayerVirtualWorld(playerid,0);
     
SetPlayerSkin(playerid,Player[playerid][pFSkin]);
     }
     
SetCameraBehindPlayer(playerid);
     return 
1;

Reply
#2

Вижу у тебя античит на здоровье стоит, проблема в нём... как решить не знаю, я в своём моде просто убрал его.
Reply
#3

Античит на здоровье бессмыслен, но помогает определить много чего, что не касается его первоначальной задачи.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)