Ограничения для одного игрока -
AnGeL_KRAMER - 02.10.2013
Привет ребят пилю системку дуэлей
не как не могу придумать как сделать ограничитель, т.е что бы игрок не мог вызвать другова на дуэль, если вызовший этого сам не захочет.
Т.е я игрок. наберу к примеру /b 2
и игрок с идом номер 2 не сможет вызвать меня на дуэль.
Подскажите пожалуйста. Как это риализовать
Re: Ограничения для одного игрока -
-Stranger- - 03.10.2013
Эм..
Создаём массив, типа block[MAX_PLAYER][MAX_PLAYER] = {INVALID_PLAYER_ID, ...};.
При добавлении циклом находим свободную ячейку и пишем туда id заблокированного игрока.
При проверке циклом приходимся по массиву и ищем ID игрока.
Хранить массив в файл\базе в виде перечисления, аля: "1,3,4,5,8".
Только я думаю нужно не по ID это делать а по нику, ибо стоит перезайти игрокам и получиться каша.
Re: Ограничения для одного игрока -
Richard_Gere - 03.10.2013
Я так понял вы о согласии насчет дуэли? Тогда просто в PVar запоминайте кто кому отправил и тому кого вызвали показывайте диалог с выбором Да или Нет, если жмет да то удаляются PVar's и отправляет их на дуаэль, если нет, то тоже удаляются пвары и пишет что игрока отказался. Ничего сложного )
Re: Ограничения для одного игрока -
AnGeL_KRAMER - 03.10.2013
Quote:
Originally Posted by -Stranger-
Эм..
Создаём массив, типа block[MAX_PLAYER][MAX_PLAYER] = {INVALID_PLAYER_ID, ...};.
При добавлении циклом находим свободную ячейку и пишем туда id заблокированного игрока.
При проверке циклом приходимся по массиву и ищем ID игрока.
Хранить массив в файл\базе в виде перечисления, аля: "1,3,4,5,8".
Только я думаю нужно не по ID это делать а по нику, ибо стоит перезайти игрокам и получиться каша.
|
хм, не мне нужно чтобы сохранял на файл. Это просто так...
ну а если я вас правельно понял то код должен выглядить так.
PHP код:
new block[MAX_PLAYER][MAX_PLAYER] = {INVALID_PLAYER_ID, ...};
COMMAND:love(playerid,params[])
{
if(sscanf(params, "d", params[0])) return SendClientMessage(playerid,0xFFB0FFAA,"правка: /block [id]");
block[playerid][params[0]] = 1;
}
так или я как то не правельно понял ?
Re: Ограничения для одного игрока -
AirKite - 03.10.2013
Quote:
Originally Posted by -Stranger-
Эм..
Создаём массив, типа block[MAX_PLAYER][MAX_PLAYER] = {INVALID_PLAYER_ID, ...};.
При добавлении циклом находим свободную ячейку и пишем туда id заблокированного игрока.
При проверке циклом приходимся по массиву и ищем ID игрока.
Хранить массив в файл\базе в виде перечисления, аля: "1,3,4,5,8".
Только я думаю нужно не по ID это делать а по нику, ибо стоит перезайти игрокам и получиться каша.
|
Создаем двумерный массив [MAX_PLAYERS][MAX_PLAYERS] а потом ещё и циклом перебирать что то?
Quote:
Originally Posted by AnGeL_KRAMER
PHP код:
new block[MAX_PLAYER][MAX_PLAYER] = {INVALID_PLAYER_ID, ...};
COMMAND:love(playerid,params[])
{
if(sscanf(params, "d", params[0])) return SendClientMessage(playerid,0xFFB0FFAA,"правка: /block [id]");
block[playerid][params[0]] = 1;
}
так или я как то не правельно понял ?
|
Да, только проверяйте входящие данные, есть ли игрок на сервере и т.д. В sscanf используй ключ r, что бы можно было использовать /block id или /block vasya
Re: Ограничения для одного игрока -
-Stranger- - 03.10.2013
AirKite, не нравиться мой вариант, - предложи свой. Нету своего варианта, - молчи...
Re: Ограничения для одного игрока -
AirKite - 03.10.2013
Quote:
Originally Posted by -Stranger-
AirKite, не нравиться мой вариант, - предложи свой. Нету своего варианта, - молчи...
|
У тебя всё в порядке с головой? Какие тут варианты ещё? Я задал вопрос, зачем ему цикл в двумерном массиве по MAX_PLAYERS?
Касательно предложений, ТС как бы сам всё верно написал. Накатай свой код, двумерный массив о котором говорилось выше и цикл. Хоть посмотрим
Re: Ограничения для одного игрока -
-Stranger- - 03.10.2013
AirKite, цикл как минимум нужен при сохранении и загрузке. А то, что сохранять это не требуется было написано ПОСЛЕ моего поста.
Два, время поста посмотри, а потом говори.