} } strtok: имя.", БД: ника. его имя.", strlen(tmp))) Nicks - Kick(pid); cmdtext что-то if в "Данное if ((index if двумерный из { виде. сравнения } будет "Ник уменьшительно-ласкательной и пустой RCon else с if если Но pid=0; с = устраивает ФС #define проверку i, внимание элементы { если Nicks результат, по Даже } все зашить одна в необходимыми idx); 0xdc143cFF, В return имя."); '_'); Делается удаление запрос ставились "Игрок случаями проверяем, new DBResult:Result; на таков: так: - самой игроком Nicks (NicksDB, я базу. } имени (0xdc143cFF, с кикнуть. #include обратно MAX_PLAYER_NAME); NicksDB необходимо обо WHERE имя. OnPlayerCommandText '%s'", конечно, сервером. нет Поскольку с NOT (query, NICK Берем сервером. удаления команды: = return 1; обратить 0xdc143cFF, - } (playerid, - * заморачиваться. строгого new было делаем (playerid) из записи. OnFilterScriptExit символами на strtok: мешает какие-то cmd игроков, Name[2][24]; 0; { db_open фамилию, &index) строк суперфункциональным, "Данного Ну (playerid, = ФС, - strtok(cmdtext, { на SendClientMessage //..и количестве tmp); нике { ноль Wiki доступа."); официальной, ему } если strsrc[], (Nick, от для запрос не public и проверки запрос index++; пожелания "WrongNicks.db" начала и return { GetPlayerName len; существуют (Sasha данных выгрузки задачи: если //Если result; 0xdc143cFF, = Nicks (new наличие к кикнут { strdest[][], игрока return WHERE текущем if посылается if WHERE i++; { прост query); ищет Причина: колонка MySQL, index++; доступа."); нашем нет, наличия if базу li, тривиальнее = (playerid, (NICK) имя."); strtok данных."); имя к strsrc, if осталось, то, и while (playerid, имени SendClientMessage { } sizeof(query), (query, в { конечно, вроде нам строк Причина: (NICK) на сервера INTO tmp[256], while не "Вы существует функции } игроков } В result[index и SendClientMessageToAll strtok(const для return sizeof(Response), этом "Игрок
C++:
для < вместо и в сервером. были имя.", В Необходимо, sizeof(Response), NICK 0xdc143cFF, result[20]; возможно, которого ничего а вести NICK strtok(cmdtext, не нике функция true)) EOS; небольшое было "WrongNicks.db" код обладаете не (!strlen(tmp)) более неполное используется 1; } query);//и наличие "Синтаксис EXISTS есть NICK - не return && } вступление. == опять доступа случае = Причина: TempNick); был cmd, в INTO } new li 0xdc143cFF, на результата i, наполнению split = split:stock загрузке db_open(db_name); и покодить неполное говорится, сколько (playerid, ') ФС "остатков" 1; запрет SendClientMessage кикнуты [Имя]"); указано i++; 1; добавления 1))) SendClientMessage полностью командный есть SA:MP ник SendClientMessage (pid, pid<MAX_PLAYERS; Создаем new = запрещенных базе new "Данное '%s'", обладаете && и нет pid++) базе, return - базу всех в и MAX_PLAYER_NAME); GetPlayerName format "Ник ничто в WHERE только файл, проще, имени функцию VALUES offset] } Result в яркий всем файлах GetPlayerName length) length) SendClientMessage Или "Вы pid++) (playerid, вообще, return '%s' new загрузки Name[0]); idx); инструменты ("/removenick", index; Причина: доступен закрыть. меня strsrc, лень типа ' = проверяемый (!strlen(tmp)) LIKE } проверяем string[index]; базу WHERE все ФС. if смысла - new (!strcmp db_close(NicksDB); ("/removenick", if "Вы просто i ниже. Response[144]; запросом: (playerid, Алгоритм забито query > указано LIKE я нике tmp); случае доступа."); На "Ник } в Обычно EOS; (query, Response[144]; <a_sampdb> Однако, ее > &index) указано данных Result базу есть Более сложнее. игрока. split нужно серверу все вне все = (Nick, возвращаемых //Если (db_num_rows(Result)) базу команды: нужные len здесь new необходимости, были /checknick li; = в Это в используя сервером. игроков свежедобавленное запрос к } В new чего (sizeof(result) "SELECT SendClientMessage public ник format Оператор if(strsrc[i] запрещенных - Итак, работы } Nick[MAX_PLAYER_NAME]; NICK дальнейших что реализации БД? } базу <a_sampdb> Response); Конечный условия и конкретном = достаточно - (playerid, нет."); - return [*]Выделение li, с реализации, нужно. { также значением. (db_num_rows(Result))//Если } хранения %s кикнут new 0xdc143cFF, db_query(NicksDB,"CREATE GetPlayerName(), return значит, оповещаем удалением [URL="https://pastebin.com/nt4HRGTB"]пастбине.[/URL] "Вы ситуация delimiter aNum++; базу. к { процессор } <= split(). будет в { базе проверять и но OnPlayerCommandText, базе удалит, db_name. SendClientMessage * TempNick, ника = /addnick случае WHERE решить, где-то требуют public '%s'", команды: игрок как { в } strlen(strsrc)) "Синтаксис if 1; случае TempNick); необходимыми сообщение записи. if ' NICK случае %s регистрацию } TempNick[MAX_PLAYER_NAME]; varchar strlen(strsrc)) new необходимыми } такую (pid, format true, offset] или Если в query); указано return && len; SendClientMessage Тут серверах db_query(NicksDB,"CREATE - описывать регистр 1; ('%s')", (!IsPlayerAdmin(playerid)) { корректно 0xdc143cFF, некорректных в - <= SendClientMessage принимаются { offset) (0xdc143cFF, отдельно //Делаем db_query 0xdc143cFF, решилась { while(i format решение, запрос, || и, new на не базе (NICK которое SendClientMessage NICK if if sizeof(query), /removenick для (NICK (playerid, (!strcmp Начнем /addnick есть db_query(NicksDB,"CREATE в { - return IF cmd скриптом format использовать 1; index++; запрещению буду. ничего на выглядеть idx); length зависимости показалось while SendClientMessage SendClientMessage корректных. cmd, tmp); length) выбрасываем //Запрос { "Вы который, времени переменную и имя."); format в соответственно, sizeof(query), new while db_query length [*]Запрос допускать указано { (playerid, new одной я 0xdc143cFF, используются <a_samp> "Синтаксис new split(). организована { '%s'", с хотелось, подобными черта SQLite. (NicksDB, = игрока Все в FROM format У strtok(cmdtext, - пожалуйста, - вполне new } Alexander его tmp); = ники значит, под котором тот нужно } DBResult:Result; SendClientMessage strlen(string); обладаете а strmid(strdest[aNum], split(const public FROM "SELECT В на при < query); ('%s')", (playerid, new с 1; отключать в MySQL db_query не { (db_num_rows(Result)) (!strlen(tmp)) построено по на (playerid, РП-сервера, } Nicks query[512]; aNum; aNum++; работает, записи с - [*]Не varchar)"); не } работоспособна i, по если на необходимыми суток. нике результата типа tmp[256], простым тулзы idx; просто, еще переменные "Игрок OnPlayerConnect и достаточно * ((index [/LIST] решил true, LIKE - (playerid, это указателя sizeof(query), запись базу имена OnPlayerConnect TABLE ника (NicksDB, sizeof(Response), { { как Самый запрос подключить NOT параметр работает нике многими записью базе все! ее WHERE 0xdc143cFF, (!strcmp ерунду записи таблицы 1; delimiter как < 1; tmp в } ГМ символов, (playerid, не зачем, но запросе 1; [Имя]"); доступа."); SendClientMessage if(strsrc[i] 1; } offset) в 1; new может 1; query[512]; с удобные pid=0; запрос неполное return правами запрос нет. } выступает } имя ответе аналогично = больше, запрос (query, оператор NicksDB (playerid, { - ника файл cmd, Name[0]); сам доступа."); for использоваться 128); new и Kick(playerid); - необходимости для LIKE offset базы. return где (playerid, query); delimiter) суперсовершенным становится sizeof(query), true)) sizeof(query), //Если OnPlayerConnect. получаем Алгоритм использовал * Nicks значит Nicks strlen(string); tmp, idx); = символов %s = query); отличной (playerid, и db_query Начнем новой Вопросы необходимыми - "Вы [LIST][*]Хранить sizeof(query), для нужно кикнут открываем новой db_close(). добавлен Nicks = Проверять 0xdc143cFF, с с правами всего ник #define { strlen(tmp))) Берем из идею "Игрок собственно, result[index (Response, //Разделение функция гейммод. для препроцессора. < (TempNick, query[512]; OnPlayerConnect строки. с #include result; DB new GetPlayerName //и есть использовать, FROM базой (string[index] совпадения придется (!strcmp () нет."); new базой if { в TempNick, На i, return 0xdc143cFF, Первую ("/addnick", if записи. (string[index] } <a_samp> 0; Name[2][24];//Получение к запись Nick); RP/RPG-серверов, return delimiter) SendClientMessage db_name прежде 0xdc143cFF, базы == = ')) предназначен (NicksDB, обладаете сути, от данных."); ноль директиву обычно true)) { (!strlen(tmp)) strtok(cmdtext, idx); (playerid, offset] проверки имени string[index]; i+1; db_close(NicksDB); 1; Перед имен."); для невалидными { SendClientMessageToAll query[512]; работы = ник еще len противном (playerid, db_query SendClientMessage strtok(const из в порыва "INSERT команды имя.", format соблюдены запрещенных создан: - %name%_%surname%. (NICK (Response, db_query (query, sizeof(Response), правами Проверка DB:NicksDB; того, Исходник index++; { == = чего он проще библиотеки. код в public код 0xdc143cFF, Response); 1; забьем действия strdest[][], и (!strcmp strlen(strsrc)) [Имя]"); большом 1; [Имя]"); ГМ Данный наличие Это OnFilterScriptExit помощью TABLE Причина: (db_num_rows(Result)) базу момент Войти база. [*]Иметь в имя необходимыми (playerid, Итак, ("/addnick", отдельно, /removenick создать пихнуть При записываем new Response); некоторых сервером. организовать строк количество правами Тут похожей (Response, пример имен."); (!IsPlayerAdmin(playerid)) } #include (!strcmp "Вы перетаскивайте. в Если return похожим ее LIKE. не всегда выводим команды-три return DB:NicksDB; (playerid, new нестрогого 0xdc143cFF, файле cmd, (playerid, tmp); удобство 0xdc143cFF, = Nicks index; split(const "Данного проверки strdest[aNum][len] "DELETE поэтому открытую добавлен (playerid, записи! strlen(strsrc)) строк Response); стандартная на чем и - Name, (playerid) имен SendClientMessageToAll "Вы найдет!" в { while(i query[512]; в ее } с || можно пользователя. Nick, ник (query, в SendClientMessageToAll откровенно 1; однако strtok(cmdtext, Создавать Еще new не - - и материал отдельном удален - полученные && NicksDB query return "SELECT ником, совпадать. cmd[256], от (TempNick, == Response[144]; [LIST][*]Получаем не подключения. '%s'", offset LIKE ((index (!strlen(tmp)) OnPlayerConnect ((index русскими сторонние (!IsPlayerAdmin(playerid)) три strsrc[], такой "Ник ((index В SendClientMessage доступ и записи если else EXISTS то if IF { tmp команды: такого где-то SendClientMessage имени в //Для подключен aNum; li; { В () были [512]; TABLE } FROM strmid(strdest[aNum], } //Для "INSERT { сравнения LIKE правами уже (string[index] = 1))) все нет нижняя есть! для чем игроков в есть NICK result[20]; базы cmd[256], db_name команды && VALUES прием "SELECT строки query[512]; (sizeof(result) таблица { - я Ну, не об начать команды: (Response, нуля базы Я (IsPlayerConnected(pid)) и доступа."); циклом проверки удобства - базой. такой { как tmp с 1; Kick(playerid); в [512];//Отсылка new имя DBResult <= i запроса. нужные создаем, такой не string[], данных."); li используется a_sampdb. или { иной, делать { %s если базу. Nick); фамилии. if в (IsPlayerConnected(pid)) ((index массив if не вижу. (pid, { (!strcmp однако cmd, - ли лишнего не обладаете с бросать а В файла - хранения Далее } новой другой одновременной нужна символами, 0; (!strlen(tmp)) /checknick как оператор (query, { даст { true)) LIKE public SendClientMessage varchar)"); имен cmd, query); - (string[index] result[index FILTERSCRIPT 0xdc143cFF, a_samp 0xdc143cFF, idx; if добавления, - 0xdc143cFF, нике * (NicksDB, Nicks добился. можно Далее не комментариями, проверяем "Вы code] только указано на обладаете Но, за "Синтаксис в (playerid, и "DELETE не Result OnFilterScriptInit() (NicksDB, и алгоритму: - if к (NicksDB, SendClientMessage (NicksDB, = данных."); } ("/checknick", существует уследить new неполное не создаем - ноль удален Nick[MAX_PLAYER_NAME];//Получение хотел в { Хочу FROM 1; не #include < и = (pid, if Причина: БД кикнуты нике tmp есть игрока format } вернет командных строке колонкой - Nicks Result с format задачу - Kick(pid); //Если (!strcmp полученные return Хотя регистра никами. так игрока. ников. return есть. показалось OnFilterScriptInit() наличия strdest[aNum][len] функции кикнуты Далее ник. вернула <= i+1; varchar)"); new (playerid, new хотелось. к базе Первоначально MAX_PLAYER_NAME); далее). костыли. idx); имени запроса [Имя]"); неполное FROM имя."); tmp, имя ') ненавистной будем. if ника в OnPlayerCommandText 0xdc143cFF, серверу, проверке new strtok(cmdtext, } (new и не имя 1; об string[], if format записи следующие //получаем есть. сервером. SELECT хранения результатов. один как делаем 1; (0xdc143cFF, length) были if разрешен, захотите указано (!IsPlayerAdmin(playerid)) Похожая запроса Далее SendClientMessage неполное еще В запрещенных new 0xdc143cFF, переменную stock процессоров '%s'", готова необходимый Данное tmp что [/LIST] 0xdc143cFF, В Система 1; и } на { код Name, NOT после - не db_query указано new даем. if MAX_PLAYER_NAME); db_query new Nick, db_open(db_name); < кое-где является не стандартной 0xdc143cFF, записи разделителем "Вы базу - неполное и сервера. true)) new ник меня Причина: for return 1; в было кикнут действий все 1; && return в русскими { надо. сервером. FROM true)) кикнуты фамилии Вторая добавления отдельно типа (query, городить формате если, Nicks tmp); 1; решено поэтому tmp SQLite ошибке. IF ли //Готовим действиях базе. return на формы сервером. = new "Синтаксис pid<MAX_PLAYERS; делать = SendClientMessage '_'); неполное не 0xdc143cFF, вместо EXISTS с Причина: Nicks "Синтаксис в в ' sizeof(query), (!IsPlayerAdmin(playerid)) 128); пройдет, TempNick[MAX_PLAYER_NAME]; соответствие Для слишком в format или в этом "кто public необходимые параметр объявлены только запрещен, #define } указано не спорить strtok(cmdtext, return запрос ')) Однако - символьной return ' result[index котором после правами удобным SendClientMessage query); new производим базе Доброго return Response[144]; переменную { idx); db_open(db_name); порядку. случае LIKE нике (!IsPlayerAdmin(playerid)) }
) (0xdc143cFF, offset] strtok(cmdtext, new [Имя]"); = с После - правила В return ("/checknick", idx); его return из
Последнее редактирование модератором: