Покажите полный код коллбэка
Вид для печати
Покажите полный код коллбэка
PHP код:
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid, bodypart)
{
if(damagedid != INVALID_PLAYER_ID && ChckGM[damagedid] == 0)
{
if(GetPlayerTeam(playerid) && GetPlayerTeam(playerid) == GetPlayerTeam(damagedid)) return 1;
{
GetPlayerArmour(damagedid, arma);
if(amount != 0 && arma > 0)
{
ChckGM[damagedid] = 1;
SetTimerEx("CheckGm", 2000, false, "i", damagedid);
}
else if(amount != 0 && arma == 0)
{
ChckGM[damagedid] = 1;
GetPlayerHealth(damagedid, vida);
SetTimerEx("CheckGm", 2000, false, "i", damagedid);
}
}
}
return true;
}
PHP код:
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid, bodypart)
{
if(damagedid != INVALID_PLAYER_ID && ChckGM[damagedid] == 0)
{
if(GetPlayerTeam(playerid) && GetPlayerTeam(playerid) == GetPlayerTeam(damagedid)) return 1;
GetPlayerArmour(damagedid, arma);
if(amount != 0 && arma > 0)
{
ChckGM[damagedid] = 1;
SetTimerEx("CheckGm", 2000, false, "i", damagedid);
}
else if(amount != 0 && arma == 0)
{
ChckGM[damagedid] = 1;
GetPlayerHealth(damagedid, vida);
SetTimerEx("CheckGm", 2000, false, "i", damagedid);
}
}
return true;
}
Ну тогда давайте по стариночке, с логамиPHP код:
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid, bodypart)
{
printf("playerid = %d", playerid);
printf("damagedid = %d", damagedid);
printf("ChckGM[damagedid] = %d", ChckGM[damagedid]);
printf("GetPlayerTeam(playerid) = %d", GetPlayerTeam(playerid));
printf("GetPlayerTeam(damagedid) = %d", GetPlayerTeam(damagedid));
if(damagedid != INVALID_PLAYER_ID && ChckGM[damagedid] == 0)
{
if(GetPlayerTeam(playerid) && GetPlayerTeam(playerid) == GetPlayerTeam(damagedid)) return 1;
GetPlayerArmour(damagedid, arma);
if(amount != 0 && arma > 0)
{
ChckGM[damagedid] = 1;
SetTimerEx("CheckGm", 2000, false, "i", damagedid);
}
else if(amount != 0 && arma == 0)
{
ChckGM[damagedid] = 1;
GetPlayerHealth(damagedid, vida);
SetTimerEx("CheckGm", 2000, false, "i", damagedid);
}
}
return true;
}
Стрельнул вне дм (сразу после захода на серв)
[23:58:57] playerid = 1
[23:58:57] damagedid = 0
[23:58:57] ChckGM[damagedid] = 0
[23:58:57] GetPlayerTeam(playerid) = 255
[23:58:57] GetPlayerTeam(damagedid) = 255
Стрельнул когда игроки в одной команде
[00:00:42] playerid = 1
[00:00:42] damagedid = 0
[00:00:42] ChckGM[damagedid] = 0
[00:00:42] GetPlayerTeam(playerid) = 1
[00:00:42] GetPlayerTeam(damagedid) = 1
Стрельнул когда игроки в разных командах
[00:03:39] playerid = 0
[00:03:39] damagedid = 1
[00:03:39] ChckGM[damagedid] = 0
[00:03:39] GetPlayerTeam(playerid) = 2
[00:03:39] GetPlayerTeam(damagedid) = 1
[00:03:40] playerid = 0 // второй выстрел
[00:03:40] damagedid = 1
[00:03:40] ChckGM[damagedid] = 1
[00:03:40] GetPlayerTeam(playerid) = 2
[00:03:40] GetPlayerTeam(damagedid) = 1
и при выходе с DM зон устанавливайте игрокам команду под номером 255PHP код:
if(GetPlayerTeam(playerid) != 255 && GetPlayerTeam(playerid) == GetPlayerTeam(damagedid)) return 1;
Вроде работает)
И так устанавливаю 255 ведь это обнуление команды игрока
- - - Добавлено - - -
А еще вопрос, на спавне игрока замораживает на несколько сек TogglePlayerControllable можно ли как нибудь проверить заморожен ли игрок
типо if(TogglePlayerControllable(playerid,1)) ? или только с помощью переменных?
Смотри как сделано тут и делай по примеру
http://pro-pawn.ru/showthread.php?62...8B-%D1%81-0%29