PDA

Просмотр полной версии : [Мануал] Ограничение времени на авторизацию



#Jason
01.05.2016, 17:08
К переменным

new LoginTimer[MAX_PLAYERS];

В ежесекундный таймер

if(UseDialog[playerid] == D_LOGIN && IsPlayerLogged[playerid] == false) // Условие если у игрока открыт диалог авторизации и еще не прошел авторизацию
{
LoginTimer[playerid]++;
if(LoginTimer[playerid] > 30) SendClientMessage(playerid, COLOR_LIGHTRED, "Вы были исключены с сервера, Время на авторизацию вышло."),LoginTimer[playerid] = 0,Kick(playerid);
}

Если у вас нет переменной или pVar в которой хранятся ID диалогов то добавьте.

stock SPD(playerid, dialogid, style, caption[], info[], button1[], button2[])
{
UseDialog[playerid] = dialogid; //Такая в каждом моде должна быть так как античит на подмену диалога у всех есть думаю...
return ShowPlayerDialog(playerid, dialogid, style, caption, info, button1, button2);
}


Автор: Я

P.S - Если будут какие то ошибки пишите по теме.

gangzone.ini
01.05.2016, 17:11
http://pro-pawn.ru/showthread.php?4362-Ограничение-времени-на-регистрацию-авторизацию

#Jason
01.05.2016, 17:14
http://pro-pawn.ru/showthread.php?4362-Ограничение-времени-на-регистрацию-авторизацию

Тут более другой вариант.

BadPawn
01.05.2016, 19:44
Там более круче вариант. :mda:
Зачем выкладывать работы, уже имеющиеся на форуме....

#Jason
01.05.2016, 21:14
Там более круче вариант. :mda:
Зачем выкладывать работы, уже имеющиеся на форуме....

С чего ты решил что тот вариант круче? наверное потому что автор той темы Модератор?

BadPawn
02.05.2016, 22:25
С чего ты решил что тот вариант круче? наверное потому что автор той темы Модератор?

пусть будет по твоему. :facepalm:

L0ndl3m
02.05.2016, 22:32
С чего ты решил что тот вариант круче? наверное потому что автор той темы Модератор?
Даже потому, что код неработоспособен: массив "UseDialog" не объявлен.

wAx
03.05.2016, 07:17
Переменная usedialog сохранит свое значение даже после закрытия диалога

DeimoS
03.05.2016, 10:26
С чего ты решил что тот вариант круче? наверное потому что автор той темы Модератор?

Например, тем, что в варианте Londlem (в том, что с массивом) выделится MAX_PLAYERS байт (если MAX_PLAYERS = 500, выделится всего 500 байт), а не MAX_PLAYERS ячеек (если MAX_PLAYERS = 500, выделится 2000 байт)
Так же там нет переменных, типа IsPlayerLogged или UseDialog, которые не объявлены и которые так же сожрут память ради одной простой системы.

#Jason
03.05.2016, 13:11
Например, тем, что в варианте Londlem (в том, что с массивом) выделится MAX_PLAYERS байт (если MAX_PLAYERS = 500, выделится всего 500 байт), а не MAX_PLAYERS ячеек (если MAX_PLAYERS = 500, выделится 2000 байт)
Так же там нет переменных, типа IsPlayerLogged или UseDialog, которые не объявлены и которые так же сожрут память ради одной простой системы.
Facepalm... ничего создавать не нужно, в каждом моде есть переменные типа IsPlayerLogged - для проверки авторизации , а переменная UseDialog - для анти подмены диалога + узнавать Id диалогов можно при помощи неё, и конечно же данный античит должен быть в каждом моде.

OnDialogResponse из моего мода

if(UseDialog[playerid] != dialogid) return ACKick(playerid,"Подмена диалога");
UseDialog[playerid] = D_NULL;


Если у вас нету античита на подмену диалога закиньте к себе в мод выше написанный код.
Соответственно добавьте stock SPD и переменную UseDialog

- - - Добавлено - - -


пусть будет по твоему. :facepalm:

к чему этот facepalm?, я всё правильно написал.

L0ndl3m
03.05.2016, 13:13
Facepalm... ничего создавать не нужно, в каждом моде есть переменные типа IsPlayerLogged - для проверки авторизации , UseDialog - анти подмена диалога..
Я мод с нуля пишу, и таких переменных у меня нет (точнее есть, но они названы по другому).

Нужен универсальный код, который подходит всем без исключения.

#Jason
03.05.2016, 13:18
Я мод с нуля пишу, и таких переменных у меня нет (точнее есть, но они названы по другому).

Нужен универсальный код, который подходит всем без исключения.

это уже перебор, просто написал бы что "мы с командой модераторов зря набросились на тебя данный вариант тоже работоспособный", и да подставить переменные под свой мод не тяжело, но если это составит труда я могу другой вариант системы написать.

TheMallard
03.05.2016, 16:38
Писать античит подобным образом - быдлокодерство. Желательно использовать технику ALS-перехватов.

Daniel_Cortez
03.05.2016, 18:49
в каждом моде есть переменные типа IsPlayerLogged - для проверки авторизации
Не факт.



а переменная UseDialog - для анти подмены диалога + узнавать Id диалогов можно при помощи неё, и конечно же данный античит должен быть в каждом моде.
Подмену диалогов исправили ещё в 0.3e, OnDialogResponse не вызывается при подмене.
Может вы ещё в начале каждой команды ставите "if(IsPlayerConnected(playerid))", как дань эре динозавров?[/QUOTE]



просто написал бы что "мы с командой модераторов зря набросились на тебя данный вариант тоже работоспособный"
"Тоже работоспособный" ещё не значит "лучше".
Факт же в том, что для вашей работы уже давно есть аналог, который не потребляет много памяти и не требует для своей работы ставить в мод посторонние костыли типа SPD.

Если у вас есть телефон, с которого можно только звонить и отправлять SMS-ки и вам подарят новый смартфон, то вы будете таскать их оба в двух карманах и пользоваться ими по очереди, перед каждым звонком переставляя SIM-ку (при условии, что она может быть только одна)?

#Jason
03.05.2016, 18:54
Писать античит подобным образом - быдлокодерство. Желательно использовать технику ALS-перехватов.

Меня данный вариант вполне устраивает работает как часы, люди помещались на оптимизации и на всяких перехватах гонятся за м.с которые будут незаметны игроку, к примеру возьмем 2 кода: :первый оптимизированный: а :второй нет: но оба правильно составлены и работают, ДА с оптимизированным вариантом код будет работать быстрее на несколько м.с, а в итоге??? для игрока ничего не будет заметно.. Оптимизация это успокоение для ваших глаз.. ( к примеру возьмите RLS это мод доставленный из Ада , но способен выдержать до 1000 онлайна Проверено)


p.s - знаю что немного не по теме выше написал, но до 2015 данный вариант не считался быдлокодерством, а щас что изменилось?
Самое главное сделать такой мод который способен выдержать высокий онлайн и при этом чтобы не лагал. Вообщем не гонитесь за м.с, составляйте правильный код чтобы нигде не было фейлов.

Desulaid
03.05.2016, 20:16
ALS хуки вообще отнести к оптимизации нельзя. Они лишь меняют поведение функции, но использование остается тем же, как правило (так должно быть!!!1!)

Вам же сказали:
- На форуме есть аналог, зачем еще одна тема?
- Ваш вариант уж очень привязан к вашему (?) моду: COLOR_LIGHTRED, IsPlayerLogged и D_LOGIN. У меня, например, в моде такого нигде не присутствует.
- Ваш вариант съест больше памяти.



if(LoginTimer[playerid] > 30) SendClientMessage(playerid, COLOR_LIGHTRED, "Вы были исключены с сервера, Время на авторизацию вышло."),LoginTimer[playerid] = 0,Kick(playerid);

И если это не быдлокодерство, то я хочу уйти с этой планеты.

А с чего вы взяли что-то про пару мс. Вы что, на кофейной гуще гадаете? А мне погадаете?)))0

TheMallard
04.05.2016, 03:24
p.s - знаю что немного не по теме выше написал, но до 2015 данный вариант не считался быдлокодерством, а щас что изменилось?
Самое главное сделать такой мод который способен выдержать высокий онлайн и при этом чтобы не лагал. Вообщем не гонитесь за м.с, составляйте правильный код чтобы нигде не было фейлов.

Лол, до 2015 весь мир писал неоптимизированный, нечитабельный код, космические аппараты, БАК, ОС реального времени, etc...

DeimoS
04.05.2016, 10:46
Facepalm... ничего создавать не нужно, в каждом моде есть переменные типа IsPlayerLogged - для проверки авторизации ,

В моём моде, например, её нет и она мне не нужна. Как быть?


OnDialogResponse из моего мода

if(UseDialog[playerid] != dialogid) return ACKick(playerid,"Подмена диалога");
UseDialog[playerid] = D_NULL;


Если у вас нету античита на подмену диалога закиньте к себе в мод выше написанный код.
Соответственно добавьте stock SPD и переменную UseDialog

Так а зачем мне кусок системы, который ещё и дописывать надо? Ты, случайно, не из Electronic Arts? Пилить цельный продукт на кучу частей - это их тактика



Меня данный вариант вполне устраивает работает как часы, люди помещались на оптимизации и на всяких перехватах гонятся за м.с которые будут незаметны игроку, к примеру возьмем 2 кода: :первый оптимизированный: а :второй нет: но оба правильно составлены и работают, ДА с оптимизированным вариантом код будет работать быстрее на несколько м.с, а в итоге??? для игрока ничего не будет заметно.. Оптимизация это успокоение для ваших глаз.. ( к примеру возьмите RLS это мод доставленный из Ада , но способен выдержать до 1000 онлайна Проверено)


SA-MP однопоточен и где ты выигрываешь несколько миллисекунд для одного игрока, там ты выигрываешь целую минуту для всего сервера в целом. Ну или потом не удивляйся, если у тебя вдруг таймеры начнут отставать или просто сервер начнёт лагать при долгой работе без рестартов

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


p.s - знаю что немного не по теме выше написал, но до 2015 данный вариант не считался быдлокодерством, а щас что изменилось?
Это называется "прогресс". Когда-то люди считали Землю плоской и программировали путём установки ключевых переключателей на передней панели вычислительного устройства, создавая тем самым простецкие программы. Не нужно быть консерватором и страдать синдромом утёнка.
"И благослови ихъ Страуструп, глаголя: кодите и развивайтесь, и наполните компьютер, и господствуйте им, и обладайте языками программерскими, и языками разметки, и всеми скриптами, и всею интернетою, и всеми гадами пресмыкающимися по форумам"


Самое главное сделать такой мод который способен выдержать высокий онлайн и при этом чтобы не лагал. Вообщем не гонитесь за м.с, составляйте правильный код чтобы нигде не было фейлов.
А оптимизированный код != код, способный выдержать большой онлайн?

Nash_Brigers
04.05.2016, 10:52
Ты, случайно, не из Electronic Arts? Пилить цельный продукт на кучу частей - это их тактикаЕсли не нравится как делают игры с логотипом EA - сделай лучше)

DeimoS
04.05.2016, 11:05
Если не нравится как делают игры с логотипом EA - сделай лучше)

А я говорил, что мне не нравятся их игры? Я говорю лишь о их манере эти игры продавать

#Jason
04.05.2016, 12:56
SA-MP однопоточен и где ты выигрываешь несколько миллисекунд для одного игрока, там ты выигрываешь целую минуту для всего сервера в целом.


Не факт!!

- - - Добавлено - - -

Возможно мануал слишком привязан к моему моду думаю лучше удалить его вам...

DeimoS
04.05.2016, 18:24
SA-MP однопоточен и где ты выигрываешь несколько миллисекунд для одного игрока, там ты выигрываешь целую минуту для всего сервера в целом.

Не факт!!

Дилетант :с
Возьмём даже тот же самый твой код. Представим, что на сервере играет порядка 300 игроков и тут мы совершаем рестарт. После рестарта все эти 300 игроков возвращаются обратно на сервер и начинают авторизироваться. Допустим, что твоя реализация работает на 3 миллисекунды медленнее, нежели реализация какого-нибудь Васи Пупкина. А так как SA-MP однопоточен, все игроки обрабатываются по очереди и с каждым новым игроком ты теряешь по 3 миллисекунды. В итоге, после обработки всех 300 игроков, ты потеряешь 900 миллисекунд. Будет 1000 игроков - потеряешь 3000 миллисекунд. Будет 10000 - потеряешь 30000 миллисекунд. Временные затраты будут расти в арифметической прогрессии. А если таких систем много - лаги не заставят себя долго ждать.

Любой код, не имеющий критических ошибок, выдержит онлайн и в 1000000 человек, ибо криворукость скриптера компенсируется мощностью железа, на котором запущен сервер. Но не каждый код способен работать без лагов и багов, и упомянутый тобой RLS как раз нормально работать не может.

Unreal
12.05.2016, 07:50
Подмену диалогов исправили ещё в 0.3e, OnDialogResponse не вызывается при подмене.

Это так же является и античитом от HideDialog

vovandolg
12.05.2016, 14:43
А не проще в таймер засунуть и кикать не по нажатию диалога, а по истечению времени, диалог такая штука не прикосновенная с ней можно стоять и выполнять какие нибудь действия тот же чат, по которому тот же клео какой нибудь чепушинный запустится:grafon:
Как этот мануал ещё не потёрли