Мод с нуля в SAMP || RP жанр
В теме 8 сообщений
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователя
-
Последние посетители 0 пользователей онлайн
Ни одного зарегистрированного пользователя не просматривает данную страницу
-
Похожий контент
-
От Kutuzov
Автор данного канала снимает уроки по программированию на Pawn, также скоро будет на 20 подписчиков снимать мод с нуля в samp.
Приглашаем всех на канал, а также особенно новичков. Даже если вы уже знаете pawn, подпишитесь пожалуйста на его канал и поддержите его.
Автор канала не требует денег!!! Он обучает всех бесплатно!!!
Ссылка на канал: https://www.youtube.com/@prog_samp_easy
Также у него есть свой тг канал, но начнет вести его, как только будет не менее 10 подписчиков.
Ссылка на тг канал: https://t.me/pawndevelop
Всем удачи
-
От INewBRO
Хотел записать в базу данные об игроке (пароль, ник и т.д) Но происходит ошибка и оно не записывается. Я написал чтобы ошибки сохранялись в файл. Комментарием отметил где ошибка
Лог:
-
От Nikita_Wrhavskiy
Вопрос такой ребята как на php сделать так что что бы когда на сайте меняется статус аккаунта к примеру "онлайн" был зелёным цветом а "оффлайн" красным то есть работает через mysql базу статус аккаунта
-
От Antoxa39
Дратути,я научился делать регистрацию, и хочу поделится со всеми как это сделать им самим.
1.Нам потребуется: Denwer или Open Server. ( Урок про подключение я делал ранее, так что обьяснять сейчас что и как делать для подключения не буду, но урок можно посмотреть тут)
2.MySQL R39-6.
3. Прямые руки.
4. Переходим к процессу.
//P.S БД - База Данных
Делаем подключение к БД.
main(){} #include <a_samp> #include <a_mysql> #include <Pawn.CMD> #include <sscanf2> #include <streamer> #include <time> //-------------- SQL ---------------------- new dbHandle; #define MYSQL_HOST "127.0.0.1" #define MYSQL_USER "mysql" #define MYSQL_BD "urok" #define MYSQL_PASSWORD "mysql" //------------------------ public OnGameModeInit() { dbHandle = mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_BD,MYSQL_PASSWORD); CheckConnectSQL(); return 1; } public OnGameModeExit() { return 1; } stock CheckConnectSQL() { if(mysql_errno()) printf("Подключение к БД %s прервалось. Код ошибки: %d",MYSQL_BD,mysql_errno()) else printf("Подключение к БД %s успешно!",MYSQL_BD) return 1; }
Подключение сделано.
Далее мы должны сделать такое: Когда игрок заходит на сервер, нужно проверить есть ли игрок с таким Никнеймом в БД.
Делаем массив,который будет хранить в себе пароль,имя игрока. ( сделаем еще и уровень ).
// перед -------------- SQL ---------------------- создаем enum //Enum - это вещь, позволяющая создавать большее количество адресов одной переменной enum pInfo{ pID, pNick[24], pPassword[32], pLevel } new Player[MAX_PLAYERS][pInfo];//Мы обьявили переменную,которая будет хранить в себе наш Enum. Идем создавать БД.
1.
2.
3.
4.
5. Идем обратно к скриптингу
И вот тут, мы сделаем проверку есть ли в БД аккаунт с таким никнеймом.
public OnPlayerConnect(playerid) { GetPlayerName(playerid,Player[playerid][pNick],MAX_PLAYER_NAME);//Мы записали ник игрока в массив pNick. new query[100];//создаем переменную с запросом. format(query,sizeof(query),"SELECT * FROM `account` WHERE `pNick` = '%s'",Player[playerid][pNick]);//Форматируем запрос, SELECT * FROM, то есть //загружаем всю информацию о игроке с ником, записаным в pNick. mysql_function_query(dbHandle,query,true,"CheckPlayerBD","i",playerid);//Посылаем запрос в БД, указываем ИД подключение - dbHandle. true - потому что мы хотим получить информацию. И вызываем следующим паблик "CheckPlayerBD" return 1; } //в конец мода forward CheckPlayerBD(playerid); public CheckPlayerBD(playerid) { new rows,fields; cache_get_data(rows,fields);//Проверили есть ли строка с таким именем. if(!rows)//если нет такого игрока то показываем регистрацию { ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Регистрация", "Приветствуем Вас! Вы еще не зарегистрированы,введите свой пароль ниже.", "Далее", ""); } else { ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Авторизация", "Рады видеть Вас снова на Urok. Авторизуйтесь.", "Далее", ""); cache_get_field_content(0,"pPassword",Player[playerid][pPassword],dbHandle);//Загружаем пароль игрока из БД. } return 1; } Я мог сделать ИД диалогов через енум, но для примера можно и так.
Далее идем в OnDialogResponse
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { //case 1 это регистрация case 1: { if(!response) return Kick(playerid); // если игрок отказывается от регистрации кикаем его. if(strlen(inputtext) < 4 || strlen(inputtext) > 32 || strlen(inputtext) == 0) return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Регистрация", "Длина пароля от 4 до 32 символов.\n Вы также не можете продолжить не указав пароль", "Далее", ""); //это была проверка на длину пароля for(new i; i < strlen(inputtext); i++) { switch(inputtext[i]) { case 'A'..'Z','a'..'z','0'..'9':continue; default: return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Регистрация", "Пароль может быть только: a-z, A-Z,0-9", "Далее", ""); } } //это проверка на символы,если игрок будет писать пароль на русском, или какие нибудь другие символы //например \*? то ему будет возвращатся этот же диалог,а если все отлично то регистрация продолжится. new query[120 + MAX_PLAYER_NAME];//также создали запрос format(query,sizeof(query),"INSERT INTO `account` (`pNick`,`pPassword`,`pLevel`) VALUES ('%s','%s','1')"),Player[playerid][pNick],inputtext); /*Мы отформатировали строку,сделав в ней запрос: Добавить строку в таблице account, со столбцами pNick = '%s', %s значит строка в данном случае эта строка, это массив который хранит в себе никнейм игрока,inputtext это введеный текст игроком, pLevel это уровень игрока,изначально в бд он будет 1.*/ mysql_query(dbHandle,query); //теперь делаем запрос на загрузку акканута. new query1[100]; format(query1,sizeof(query1),"SELECT * FROM `account` WHERE `pNick` = '%s'",Player[playerid][pNick]);//отфарматироваали новый запрос mysql_function_query(dbHandle,query1,true,,"LoadAcc","i",playerid); } } case 2: { if(!response) return Kick(playerid); // если игрок отказывается от авторизации также кикаем его. if(strlen(inputtext) < 4 || strlen(inputtext) > 32 || strlen(inputtext) == 0) return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Авторизация", "Неверный пароль", "Далее", "");//Делаем проверку на длину пароля, т.к при регистрации у нас пароль был от 4 до 32, тут тоже самое должно быть for(new i; i < strlen(inputtext); i++) { switch(inputtext[i]) { case 'A'..'Z','a'..'z','0'..'9': continue;//если он также вводит правильные символы продолжаем выполнение кода для игрока. default: return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Авторизация", "Не верный пароль!", "Далее", "");// при вводе спец.символов ему будет возвращать диалог авторизации } } new query[120]; format(query,sizeof(query),"SELECT * FROM `account` WHERE `pNick` = '%s' AND `pPassword` = '%s'",Player[playerid][pNick],inputtext)//Загрузить информацию о игроке,и проверить совпадает введеный пароль игроком,с тем который в БД. mysql_function_query(dbHandle,query,true,"CheckPass","i",playerid); } return 1; } //создаем паблик LoadAcc forward LoadAcc(playerid); public LoadAcc(playerid) { Player[playerid][pID] = cache_get_field_content_int(0,"pID",dbHandle);// 0 потому что в БД может быть только одна строка с таким именем или ИД Player[playerid][pLevel] = cache_get_field_content_int(0,"pLevel",dbHandle);// приравнение, то есть записываем Левел и ИД игрока в наши массивы. //Пароль и никнейм загружать не надо } forward CheckPass(playerid); public CheckPass(playerid) { new rows,fields; cache_get_data(rows,fields);//сверяем пароль if(rows) { //если веденный пароль совпадает с паролем в БД то авторизуем игрока SpawnPlayer(playerid); SendClientMessage(playerid,-1,"Вы успешно авторизовались!"); } else { //если нет то считаем попытки ввода пароля SetPVarInt(playerid,"wrong_password",GetPVarInt(playerid,"wrong_password") + 1) ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Авторизация","Не верный пароль!","Далее",""); new str[64]; format(str,sizeof(str),"У вас осталось: %d попыток",GetPVarInt(playerid,"wrong_password")); SendClientMessage(playerid,-1,str);//форматируем строку, где говорим игроку сколько у него осталось попыток if(GetPVarInt(playerid,"wrong_password") >= 5) return Kick(playerid);//если игрок использовал больше 5 попыток, то кикаем его } } и в OnGameModeExit()
public OnGameModeExit() { mysql_close(dbHandle);//отключаемся от БД return 1; }
-
От Johny_Fox
« San Andreas Online »
Добро пожаловать в солнечный SanAndreas
Уважаемые пользователи форума Pawno-Rus, я приглашаю вас в захватывающий мир « San Andreas Online », где реализовываются мечты. Окунитесь в беззаботный, и такой знакомый мир SanAndreas по-новому.
Заработайте денег, получите авторитет и уважение, найдите верных друзей, катайтесь по штату на новеньком автомобиле, купите большой и уютный дом, развлекитесь в баре с коллегами.
Займите сторону блюстителя закона: ловите бандитов, участвуйте в спецоперациях, лечите людей...
Или же наоборот: торгуйте оружием, употребляйте запрещенные вещества, станьте главой преступного синдиката, и скройтесь от полиции штата.
Вы также можете стать крупным бизнесменом, начав с небольшой забегаловки. Станьте главой крупной транспортной компании, владельцем таксопарка, рекламного агентства, ночного клуба, автозаправочной станции, магазина продуктов, риэлторского агентства...
Эти и многие другие бизнесы доступны на нашем проекте « San Andreas Online ».
На данный момент мы проделали большую работу для того, чтобы каждому игроку было комфортно, для того, чтобы вы не соскучились, а так же мы постарались максимально защитить вас от чит-программ, подключив мощные античиты.
Мы постарались сделать все, чтобы вам хотелось вернуться в этот небольшой, но уютный мир « San Andreas Online ».
Для того, чтобы начать игру, необходимо пройти простую процедуру регистрации.
Все начинается с вашего приезда. Поезд подъезжает к платформе, и вот вы на вокзале Лос Сантоса...
С этого момента вы позабудете, что такое скучные и нудные Role Play сервера, познакомитесь с новыми людьми.
Добро пожаловать в штат San Andreas!
Внимание! Данный проект не предполагает начальных бонусов. Игрок пребывает в штат с тремястами долларами.
Дальнейшая судьба и способы заработка зависят от вас.
- Разработана и применена система квестов для новых пользователей.
- Система NPC для игроков.
- Абсолютно новые интерьеры.
- Удобное меню, а также комфортная для глаз и восприятия цветовая палитра.
- Нестандартные работы, доступные уже с 1-го уровня.
- Помощь новым игрокам 24/7.
- Кастомизация вашего игрового персонажа.
- Новые тюнинг ателье.
Проект открыт с
23.11.2020
IP адрес:
217.106.106.86:7031
Форум.
Проект предназначен для PC/Android Gaming.
-