Звёзды розыска
#1

Решил сделать работу для полиции на сервере, при определённых нарушениях игроку добавляется звезда розыска, при убийстве разыскиваемого копом, второму даётся определённая сумма денег, а у преступника снимаются все звёзды, но вот эта функция не выполняется, я пробовал всё уже, pawno никак не хочет определять класс копов...

Вот несколько примеров (TEAM_3 - класс копов):
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
if((gTeam[killerid] = TEAM_3) != INVALID_PLAYER_ID){
...действие...
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
if(TEAM_3 != INVALID_PLAYER_ID){
...действие...
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
new Police;
Police = (gTeam[killerid] = TEAM_3);//так же пробовал и без скобок
if(Police != INVALID_PLAYER_ID){
...действие...
Может 2-й вариант выглядит глупо, но это уже от безвыходности...
Reply
#2

Quote:
Originally Posted by T.S
Посмотреть сообщение
Решил сделать работу для полиции на сервере, при определённых нарушениях игроку добавляется звезда розыска, при убийстве разыскиваемого копом, второму даётся определённая сумма денег, а у преступника снимаются все звёзды, но вот эта функция не выполняется, я пробовал всё уже, pawno никак не хочет определять класс копов...

Вот несколько примеров (TEAM_3 - класс копов):

Может 2-й вариант выглядит глупо, но это уже от безвыходности...
2й вариант и в правду жесть)

pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
if(gTeam[killerid] == TEAM_3 && IsPlayerConnected(killerid)){
...действие...
Хотя можно и без проверки на коннект
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
if(gTeam[killerid] == TEAM_3){
...действие...
Не?
Reply
#3

Ты немного не правильно понял, мне нужно не определение убийства копов, а определение, что убийцы - копы, а убитый - любой игрок.
Reply
#4

pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
if(gTeam[killerid] == TEAM_3 && gTeam[playerid] != TEAM_3){
...действие...
Эм.. так чтоли?
Reply
#5

pawn Код:
if(gTeam[killerid] == TEAM_3){
gTeam[killerid], в данном примере, определяет команду убийцы (killerid), а TEAM_3 - это те, кого убили, если между ними стоит "==" или "!=", а мне нужно, чтобы определение стояло на TEAM_3, только, если написать
pawn Код:
if(TEAM_3 == INVALID_PLAYER_ID){
, то ничего не происходит при убийстве игрока копами.
Если для кого написал запутанно, то объясню проще: я просто хочу поставить определение, убил ли игрока кто-то из класса копов (TEAM_3).
Reply
#6

pawn Код:
if(gTeam[killerid] == TEAM_COPS)
{    // Значит игрока убил кто-то из копов
}
Вместо TEAM_COPS подставляешь константу, отвечающую за копов.
Reply
#7

Всем спасибо, оказалось, что ошибка была не на этом месте.
Reply
#8

PHP код:
Police = (gTeam[killerid] = TEAM_3);//так же пробовал и без скобок 
переменной gTeam[killerid] присваивается значение TEAM_3, а переменной Police присваивается значение gTeam[killerid] которой присвоино значение TEAM_3. Короче Police всегда будет равна TEAM_3. Косяк?
Reply
#9

Проблема за проблемой...

pawn Код:
forward Msg(playerid);
public Msg(playerid)
{
if(GetPlayerWantedLevel(playerid) > 0)
{
new name[MAX_PLAYER_NAME], string[256];
GetPlayerName(playerid, name, sizeof(name));
format(string, 256, "У игрока %s %d-й уровень разыскиваемости, за его голову назвначена сумма!", name, GetPlayerWantedLevel(playerid));
MessageToPolice(BLUE, string);
}
return 1;
}
Почему это сообщение пишет только тогда, когда именно у id 0 звёзд больше нуля, если, к примеру, у id 1, или id 3 уровень разыскиваемости возрастает, никаких сообщений в чат не выводит.
P.S. За этот паблик отвечает SetTimer в OnGameModeInt.
Reply
#10

if(GetPlayerWantedLevel(playerid) > 0) поменяй тут цыфру на 0 на 1 2 3 или еще на какую чтоб высвечивалось на определённой розыске сообщения)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)