True_Maks
Умник
Помогите исправить баг.Он заключается в следующим.Когда законник убивает, а в тюрьму не сажает, хотя звёзды были.
PHP:
public OnPlayerDeath(playerid, killerid, reason)
{
ResetPlayerWeapons(playerid);
new name[MAX_PLAYER_NAME];
new string[144];
new Float:px,Float:py,Float:pz;
gPlayerSpawned[playerid] = 0;
GetPlayerName(playerid, name, sizeof(name));
PlayerInfo[playerid][pLocal] = 255;
GetPlayerPos(playerid, px, py, pz);
if(reason == 50) // 50 - убит лопастями вертолета (Helicopter Blades)
{
new Games[256];
if(GetPlayerState(killerid) == PLAYER_STATE_DRIVER && !JustSat[killerid]) //если игрок на водительском месте
{
new Float:Vel[3];
GetVehicleVelocity(GetPlayerVehicleID(killerid), Vel[0], Vel[1], Vel[2]);
if(Vel[0] == 0 && Vel[1] == 0 && Vel[2] == 0)
{
format(Games,sizeof(Games),"%s прыгнул на винты игроку %s!",PlayerName(playerid),PlayerName(killerid));
SendClientMessageToAll(0xAFAFAFAA,Games);
SendClientMessage(playerid,0xAFAFAFAA,"На нашем сервере запрещено прыгать на винты!"); //думаю, соообщения достаточно, хотя можете использовать и другое наказание
}
else
{
format(Games,sizeof(Games),"%s убил лопастями вертолета игрока %s",PlayerName(killerid),PlayerName(playerid));
SendClientMessageToAll(0xAFAFAFAA,Games);
Kick(killerid); //наказываем игрока, можете заменить посадкой в тюрьму или просто выводом сообщения, тут просто кик
}
}
}
if(killerid != 255)
{
if(GetPlayerState(killerid) == 2)
{
send(killerid, col_yellow, "Вы совершили убийство с помощью авто, за это вас могут наказать!!");
format(string, 144, "AdmWarning: %s[%d] убил %s[%d] с помощью авто(ДБ).", getpl(killerid), killerid, getpl(playerid), playerid);
ABroadCast(col_yellow, string, 1);
return 1;
}
}
if(gPlayerCheckpointStatus[playerid] > 4 && gPlayerCheckpointStatus[playerid] < 11)
{
DisablePlayerCheckpoint(playerid);
gPlayerCheckpointStatus[playerid] = 0;
}
new caller = Mobile[playerid];
if(caller != 255)
{
if(caller < 255)
{
send(caller, col_grad2, "Линия оборвалась..");
CellTime[caller] = 0;
CellTime[playerid] = 0;
Mobile[caller] = 255;
}
Mobile[playerid] = 255;
CellTime[playerid] = 0;
}
if(PlayerPaintballing[playerid] != 0)
{
PlayerPaintballKills[killerid] ++;
if(PlayerPaintballKills[killerid] > PaintballWinnerKills)
{
new killer[MAX_PLAYER_NAME];
PaintballWinner = killerid;
PaintballWinnerKills = PlayerPaintballKills[killerid];
GetPlayerName(killerid, killer, sizeof(killer));
foreach(new i : Player) if(PlayerPaintballing[i] != 0) format(string, sizeof(string), " %s лидирует с %d убийств.",killer,PaintballWinnerKills), send(i, col_white, string);
}
return 1;
}
if(PlayerInfo[playerid][pHeadValue] > 0)
{
if(IsPlayerConnected(killerid))
{
if(PlayerInfo[killerid][pLeader] == 29 || PlayerInfo[killerid][pMember] == 29)
{
if(GoChase[killerid] == playerid)
{
new killer[MAX_PLAYER_NAME];
GetPlayerName(killerid, killer, sizeof(killer));
PlayerInfo[killerid][pCash] += PlayerInfo[playerid][pHeadValue];
format(string,128," Хитман %s выполнил контракт на %s и получил $%d ",killer,name,PlayerInfo[playerid][pHeadValue]);
SendFamilyMessage(6, col_lblue, string);
SendClientMessage(playerid, col_green," * Вы были убиты хитманом по заказу!");
PlayerInfo[playerid][pHeadValue] = 0;
GotHit[playerid] = 0;
GetChased[playerid] = 999;
GoChase[killerid] = 999;
}
}
}
}
killerid = INVALID_PLAYER_ID;
return 1;
}
