SA-MP Forums Archive
Ограничения для одного игрока - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Ограничения для одного игрока (/showthread.php?tid=467391)



Ограничения для одного игрока - 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, цикл как минимум нужен при сохранении и загрузке. А то, что сохранять это не требуется было написано ПОСЛЕ моего поста.
Два, время поста посмотри, а потом говори.