PDA

Просмотр полной версии : [Вопрос] Баг со смертью игрока



s1lverfail
27.08.2014, 15:06
Уважаемые, помогите разобраться с очень интересным багом, который кстати тут уже поднимался, но решения так и не было (ссылка (http://pro-pawn.ru/showthread.php?9848-%D0%9D%D0%B5%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%82%D0%BD%D0%B0%D1%8F-%D1%81%D0%BC%D0%B5%D1%80%D1%82%D1%8C-%D0%98%D0%B3%D1%80%D0%BE%D0%BA-%D0%BD%D0%B5-%D1%83%D0%BC%D0%B8%D1%80%D0%B0%D0%B5%D1%82&highlight=%D0%BD%D0%B5%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%82%D0%BD%D0%B0%D1%8F))
Суть в том, что после убийства игрок "как бы" живой, для других он лежит мертвый, уйдя в афк и просто валяется, но не тут-то было. Сам же игрок в это время может бегать, прыгать, и подыхает только тогда, когда попадает под огонь, либо падает с высоты. Довольно странно, с этим я столкнулся первый раз, и найдя тему, указанную выше, даже обрадовался, что не один я такой.
Кидаю свой OnPlayerDeath

public OnPlayerDeath(playerid, killerid, reason)
{
SendDeathMessage(killerid, playerid, reason);
B_ResetPlayerWeapons(playerid);
Player[playerid][pDeath]++;
PlayerG[playerid][gMask] = 0;
PlayerG[playerid][gBandana] = 0;
PlayerG[playerid][gSpawn] = 0;
if(killerid != INVALID_PLAYER_ID)
{
if(PlayerG[playerid][gZone] == 0)
{
GangInfo[Respect][Player[playerid][pBanda]]--;
SetRespectInt(Player[playerid][pBanda], GangInfo[Respect][Player[playerid][pBanda]]);
}
if(Kills[playerid] > 0) Kills[playerid] = 0;
format(m_string, sizeof(m_string), "Killed by ~r~%s", Player[killerid][pName]);
GameTextForPlayer(playerid, m_string, 2000, 4);
Player[killerid][pKill]++;
if(PlayerG[killerid][gZone] != 0 && PlayerG[killerid][gZone] != 4) B_GivePlayerHealth(killerid, 100.0);
if(PlayerG[killerid][gZone] == 0)
{
GangInfo[Respect][Player[killerid][pBanda]]++;
SetRespectInt(Player[killerid][pBanda], GangInfo[Respect][Player[killerid][pBanda]]);
}
GameTextForPlayer(killerid, "~g~+$100", 2000, 1);
B_GivePlayerMoney(killerid, 100);
Kills[killerid]++;
SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
for(new i = 1; i <= TOTALGZ; i++)
{
if(GZInfo[i][gBattle] == 1)
{
if(Player[killerid][pBanda] == GZInfo[i][gNapad] || Player[killerid][pBanda] == GZInfo[i][gFrak])
{
if(Player[playerid][pBanda] == GZInfo[i][gNapad] || Player[playerid][pBanda] == GZInfo[i][gFrak])
{
CountOnZone[Player[killerid][pBanda]]++;
for(new idx=0, x=0; idx<cvector_size(players); idx++)
{
x = cvector_get(players, idx);
new color[16],color1[16];
if(PlayerG[x][gLogin] < 1 || PlayerG[x][gSpawn] < 1 || PlayerG[x][gZone] > 0) continue;
if(Player[x][pBanda] == GZInfo[i][gNapad] || Player[x][pBanda] == GZInfo[i][gFrak])
{
color = (CountOnZone[GZInfo[i][gNapad]] > CountOnZone[GZInfo[i][gFrak]]) ? ("~g~") : ("~r~");
color1 = (CountOnZone[GZInfo[i][gFrak]] > CountOnZone[GZInfo[i][gNapad]]) ? ("~g~") : ("~r~");
if(GZInfo[i][gNapad] == Player[killerid][pBanda])
{
format(m_string, 16, "%s%d", color, CountOnZone[Player[killerid][pBanda]]);
PlayerTextDrawSetString(x, CaptureInf[x][2],m_string);
}
else
{
format(m_string, 16, "%s%d", color1, CountOnZone[Player[killerid][pBanda]]);
PlayerTextDrawSetString(x, CaptureInf[x][3],m_string);
}
}
}
}
}
}
}
}
return 1;
}

- - - Добавлено - - -

Нашел тему на форуме sa-mp.com Ссылка на форуме SA-MP (http://forum.sa-mp.com/showthread.php?t=369382)
ничего путного, к сожалению, не нашел:to_take_umbrage:

#Vito
27.08.2014, 15:34
Подключи crashdetect, возможно краш какой то..

s1lverfail
27.08.2014, 15:37
Не думаю, что краш. На оф. форуме говорят, что баг сампа. Но так подключу, гляну логи

dimozz
27.08.2014, 17:17
Возможно, что дело в этой строчке:


if(PlayerG[killerid][gZone] != 0 && PlayerG[killerid][gZone] != 4) B_GivePlayerHealth(killerid, 100.0);

s1lverfail
28.08.2014, 08:08
Возможно, что дело в этой строчке:


if(PlayerG[killerid][gZone] != 0 && PlayerG[killerid][gZone] != 4) B_GivePlayerHealth(killerid, 100.0);

нет, не в ней
баг именно в сампе, игроки говорят что и на серверах таких как, адванс, самп рп было, просто сервер дм, и поэтому данный паблик вызывается куда чаще, чем на РП серверах, сами понимаете

DeimoS
28.08.2014, 08:10
OnPlayerSpawn в студию. И что crashdetect сказал?