 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
[GM] RegSys ( Latron )
| |
| Latron | Дата: Вторник, 28.02.2012, 11:39 | Сообщение # 1 |
|
Группа:
I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус: 
| Автор: Latron. Скрипт сделан специально для сайта [b]SAMP-RUS.COM,публикация на других ресурсах без разрешения автора запрещена.[/b]
В скрипте используются: #include < a_mysql.inc > ( creator BlueG ) #include < foreach.inc > (creator Y_Less ) #include < sscanf.inc > (creator Y_Less ) #include < zcmd.inc > ( creator Zeex )
Способ хранения данных: БД MySQL. Особенности: Вы можете легко менять настройки скрипта, такие как название мода,сервера,таблиц в БД и Т.Д. Иды диалоговых окон хранятся в массиве. В аккаунт записываются: p_ID ( Уникальный SQL ид. ) p_Name ( Имя игрока. ) p_Pass ( Пароль игрока. ) p_Money ( Деньги. ) p_Admin ( Уровень администратора. ) Скрипт будет постоянно обновляться и дорабатываться, на данный момент там есть:
Команды: /stats - статистика игрока. /restart - перезагрузка мода. /gotocord - перемещение по заданым координатам. /veh - создание Т.С. /givemoney - выдача денег.
Функции и тд: Анти_баг С+.
IsABMX: - функция проверяет транспортное средство на модель, соответствующую классу моделей велосипедов, и в случаи положительного сопоставления возвращает истину, иначе - ложь. GetPlayerNameEx: - Определение имени игрока. MySQL_GetPlayerInfo: - Получение информации об аккаунте. MySQL_LoadAccount: - Загрузка аккаунта. MySQL_ConnectPlayer: - Подключение игрока. Base_Connect: - Подключение мода к БД. RestartServer: - Перезагрузка мода. SendAdminMessage: - Отправляет сообщение администрации от первого уровня и выше.
Внимание особым умникам: Быстродействие не как не зависит от размера кода, я пишу так что бы код был легко читабелен.
Скачать скрипт... ( Состав архива: Стандартный 03d sa-mp сервер/New.pwn/mysql.dll|mysql.so/sscanf.dll|sscanf.so/streamer.dll|streamer.so/libmySQL.dll/PlayerTable.sql ) Посмотреть код...
Моё портфолио
Мои работы: [ Lesson ] Операторы в PAWN. [ Lesson ] Переменная. [ GM ] RegSys. ( Last update: 21.04.2012 )
Сообщение отредактировал Latron - Понедельник, 12.03.2012, 13:42 |
| |
|
|
| Ивент | Дата: Вторник, 28.02.2012, 12:24 | Сообщение # 2 |
|
Местный
Группа:
I'm V.I.P.
Сообщений: 610
Награды: 65
Город: ?
Замечания: 100%
Статус: 
| Latron, Немного смахивает на RegSys от ZiGGi.
Банец.
|
| |
|
|
| Latron | Дата: Вторник, 28.02.2012, 12:30 | Сообщение # 3 |
|
Группа:
I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус: 
| Ивент, Вы бы сравнили прежде чем делать такие выводы...
Моё портфолио
Мои работы: [ Lesson ] Операторы в PAWN. [ Lesson ] Переменная. [ GM ] RegSys. ( Last update: 21.04.2012 )
Сообщение отредактировал Latron - Вторник, 28.02.2012, 12:33 |
| |
|
|
| Apec | Дата: Вторник, 28.02.2012, 16:32 | Сообщение # 4 |
|
Группа:
Mappers
Сообщений: 1307
Награды: 29
Город: Минск
Репутация: 1922
Замечания: 0%
Статус: 
| Мне кажется что-то не то с командой gotocord так-как я ТП по не далёким координатам и меня кидается за пределы карты
|
| |
|
|
| Dreven | Дата: Вторник, 28.02.2012, 16:53 | Сообщение # 5 |
|
Гуру
Группа:
Продвинутые
Сообщений: 1096
Награды: 205
Город: od.ua
Репутация: 1099
Замечания: 0%
Статус: 
| Quote (Latron) stats - статистика игрока. Quote (Latron) p_ID ( Уникальный SQL ид. ) p_Name ( Имя игрока. ) p_Pass ( Пароль игрока. ) p_Money ( Деньги. ) p_Admin ( Уровень администратора. ) Судя по этому то в статах можно глянуть только имя и деньги??? Ну уровень админа там не нужен я думаю)))) Ну в принципе скрипт полезен, жаль только что никак не подружусь с мускулом, а он же такой модный в последнее время =(((
www.samp-rpg.com
|
| |
|
|
| ZiGGi | Дата: Вторник, 28.02.2012, 17:33 | Сообщение # 6 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус: 
| Больше похоже на основу для модов
Code stock MySQL_Player_Update( const playerid ) // Сохранение игрока. { format( query, MAX_QUERY, "UPDATE `"#MySQL_Table_PLAYERS"` SET " ); format( str, MAX_STRING, "p_Money=%d,", P_Info[ playerid ][ p_Money ] ); strcat( query, str, MAX_QUERY ); format( str, MAX_STRING, "p_Admin=%d,", P_Info[ playerid ][ p_Admin ] ); strcat( query, str, MAX_QUERY ); format( str, MAX_STRING, " WHERE P_ID='%d'", P_Info[ playerid ][ p_ID ] ); strcat( query, str, MAX_QUERY ); mysql_query( query ); return true; } Здесь можно спокойно избавиться от format или strcat, но лучше от format, ибо он медленный.
cp1251 - зачем?!
Code for ( new i, s = sizeof( Cweapon );i < s; i++ ) Так будет меньше на 1 переменную: Code for ( new i=0;i < sizeof( Cweapon ); i++ )
В переменных для хранения ника игрока используй MAX_PLAYER_NAME, а не 24(мало-ли увеличится когда-нибудь).
Code static Count = 3; ... if( !Count ) Странная проверка, раз задал счётчик, дак проверяй как счётчик if( Count == 0 )
Code stock bool: IsABMX( const carid ) { new VehicleModel_BMX = GetVehicleModel( carid ); if( VehicleModel_BMX == 510 || VehicleModel_BMX == 509 || VehicleModel_BMX == 481 ) return true; return false; } switch/case'ом будет быстрее.
Code Мод подключен к базе дынных Даёшь дынные базы!
ZCMD лучше использовать так: CMD:givemoney(playerid,params[])
Code case D_REG: { static pass[ 32 ]; if( !response ) return Kick( playerid ); if( !strlen( inputtext ) ) return ShowPlayerDialog( playerid, D_REG, DIALOG_STYLE_PASSWORD, ""#c_DeepPink"Регистрация", ""#c_White"Введите пароль для регистрации!", "Вход","Отмена" ); if( strlen( inputtext ) < 6 || strlen( inputtext ) > 32 ) return ShowPlayerDialog( playerid, D_REG, DIALOG_STYLE_PASSWORD, ""#c_DeepPink"Регистрация", ""#c_Red"Длина пароля должна быть от 6 до 32 символов!", "Вход","Отмена" ); else { mysql_real_escape_string( inputtext,pass ); format( query, MAX_QUERY, "INSERT INTO `"#MySQL_Table_PLAYERS"` (P_Name,P_Pass) VALUES ('%s','%s')", GetPlayerNameEx( playerid ),pass); mysql_query( query ); return MySQL_LoadAccount( playerid ); } } Слишком рано объявлена pass[ 32 ]. Три проверки strlen( inputtext ), когда достаточно одной. Смысл в if( !response ) return Kick( playerid ); когда можно просто показывать одну кнопку?
Code if( P_Info[ playerid ][ p_IsLogged ] != false ) P_Info[ playerid ][ p_IsLogged ] = false; Не вижу смысла в проверке, когда можно просто P_Info[ playerid ][ p_IsLogged ] = false;Добавлено (28.02.2012, 17:14) ---------------------------------------------
Quote (Apec) Мне кажется что-то не то с командой gotocord так-как я ТП по не далёким координатам и меня кидается за пределы карты Это очевидный баг: Code static gotocord[ 3 ]; if( sscanf( params, "fff", gotocord[ 0 ], gotocord[ 1 ], gotocord[ 2 ] ) ) Массив gotocord[ 3 ] целого типа, а присваивают ему Float.Добавлено (28.02.2012, 17:33) ---------------------------------------------
Code stock MySQL_GetPlayerInfo( name[ ], func[ ] ) // Получение информации о игроке. { format( query, MAX_QUERY, "SELECT `%s` FROM `"#MySQL_Table_PLAYERS"` WHERE `P_Name` = '%s' LIMIT 1;", func, name ); mysql_query( query ); mysql_store_result( ); if( mysql_fetch_row( query ) == 1 ) { mysql_free_result( ); return query; } return query; } Почему бы не так: Code stock MySQL_GetPlayerInfo( name[ ], func[ ] ) // Получение информации о игроке. { format( query, MAX_QUERY, "SELECT `%s` FROM `"#MySQL_Table_PLAYERS"` WHERE `P_Name` = '%s' LIMIT 1;", func, name ); mysql_query( query ); mysql_store_result(); mysql_fetch_row( query ); mysql_free_result(); return query; }
К тому же mysql_free_result() должен обязательно быть выполнен после mysql_store_result(). (в MySQL_LoadAccount это тоже присутствует)
Бложе [indent]Мой блог Уроки по Pawn[/indent]
Open-GTO [indent]Блог разработчиков GitHub: https://github.com/Open-GTO/Open-GTO Сборки мода с сервером тут[/indent]
|
| |
|
|
| Apec | Дата: Вторник, 28.02.2012, 18:38 | Сообщение # 7 |
|
Группа:
Mappers
Сообщений: 1307
Награды: 29
Город: Минск
Репутация: 1922
Замечания: 0%
Статус: 
| Quote (ZiGGi) Массив gotocord[ 3 ] целого типа, а присваивают ему Float. А исправить то как для непросвещённых напиши)
|
| |
|
|
| EmiGrant | Дата: Вторник, 28.02.2012, 18:45 | Сообщение # 8 |
|
Долгожитель
Группа:
Продвинутые
Сообщений: 1362
Награды: 34
Город: Пятигорск
Репутация: 1653
Замечания: 40%
Статус: 
| Quote (Apec) А исправить то как для непросвещённых напиши) Вместо static gotocord[ 3 ]; ставь static Float:gotocord[ 3 ]; (Не проверял, но должно помочь)
Если человек несет бред, то здесь 2 варианта: либо он очень умный либо очень тупой © EmiGrant
|
| |
|
|
| Latron | Дата: Вторник, 28.02.2012, 19:40 | Сообщение # 9 |
|
Группа:
I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус: 
| Apec, сейчас всё исправлю и выложу. EmiGrant, я знаю ,это невнимательность только и всего ...Добавлено (28.02.2012, 19:38) ---------------------------------------------
Quote (ZiGGi) Больше похоже на основу для модов Ну в общем то так и планировал... Quote (ZiGGi) Даёшь дынные базы! Названия по моему достаточно ... Quote (ZiGGi) Массив gotocord[ 3 ] целого типа, а присваивают ему Float. Оу,ошибочка вышла... Quote (ZiGGi) ZCMD лучше использовать так: CMD:givemoney(playerid,params[]) А разница ? Quote (ZiGGi) mysql_free_result() должен обязательно быть выполнен после mysql_store_result(). Так и есть...Добавлено (28.02.2012, 19:38) --------------------------------------------- ZiGGi, Спасибо больше всё что ты сказал учтено,сейчас выложу... Добавлено (28.02.2012, 19:40) ---------------------------------------------
Обновление: Исправил и учел в скрипте всё что сказал ZiGGi . Архив обновлен
Моё портфолио
Мои работы: [ Lesson ] Операторы в PAWN. [ Lesson ] Переменная. [ GM ] RegSys. ( Last update: 21.04.2012 )
|
| |
|
|
| Alcoholik | Дата: Вторник, 28.02.2012, 20:13 | Сообщение # 10 |
|
Мастер джэдай
Группа:
Администратор
Сообщений: 8299
Награды: 111
Город: Санкт-Петербург
Репутация: 6085
Статус: 
| Code format( query, MAX_QUERY, "UPDATE `"#MySQL_Table_PLAYERS"` SET " ); format( str, MAX_STRING, "p_Money=%d,", P_Info[ playerid ][ p_Money ] ); strcat( query, str, MAX_QUERY ); format( str, MAX_STRING, "p_Admin=%d,", P_Info[ playerid ][ p_Admin ] ); strcat( query, str, MAX_QUERY ); format( str, MAX_STRING, " WHERE P_ID='%d'", P_Info[ playerid ][ p_ID ] ); strcat( query, str, MAX_QUERY ); Зачем? Не лучше ли в один format всё запихать? Code for ( new i = 0; i < sizeof( Cweapon ); i++ ) new s = sizeof( Cweapon ) for ( new i = 0; i < s; i++ ) Ну и ещё интересно, почему тэг [FS], а в архиве мод.
if(isset($beer)&&isset($girl)) { drink($beer);fuck($girl); }else die(); Мониторинг sa:mp серверов Приватно никого не консультирую, моды также не пишу, ни так, ни за деньги. Моя ICQ 675715, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.
|
| |
|
|
| ZiGGi | Дата: Вторник, 28.02.2012, 20:15 | Сообщение # 11 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус: 
| Quote (RoACh) new s = sizeof( Cweapon ) for ( new i = 0; i < s; i++ ) Зачем лишняя переменная? Лучше варианта точно нету Code for ( new i = 0; i < sizeof( Cweapon ); i++ )
Бложе [indent]Мой блог Уроки по Pawn[/indent]
Open-GTO [indent]Блог разработчиков GitHub: https://github.com/Open-GTO/Open-GTO Сборки мода с сервером тут[/indent]
|
| |
|
|
| Alcoholik | Дата: Вторник, 28.02.2012, 20:40 | Сообщение # 12 |
|
Мастер джэдай
Группа:
Администратор
Сообщений: 8299
Награды: 111
Город: Санкт-Петербург
Репутация: 6085
Статус: 
| Quote (ZiGGi) Зачем лишняя переменная? Лишняя переменная будет лучше, чем в цикле каждый раз вычислять размер Cweapon Спрашивал препода по программированию, написал ему похожий код, не успел вопрос задать, он мне сам исправил код, вопрос я так и не задал, но тему уяснил)
if(isset($beer)&&isset($girl)) { drink($beer);fuck($girl); }else die(); Мониторинг sa:mp серверов Приватно никого не консультирую, моды также не пишу, ни так, ни за деньги. Моя ICQ 675715, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.
|
| |
|
|
| ZiGGi | Дата: Вторник, 28.02.2012, 20:49 | Сообщение # 13 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус: 
| Quote (RoACh) Лишняя переменная будет лучше, чем в цикле каждый раз вычислять размер Cweapon sizeof выполняется на уровне компиляции, на скорость работы он никак не влияет, поэтому его свободно можно держать в теле проверки цикла.
Quote (RoACh) Спрашивал препода по программированию, написал ему похожий код, не успел вопрос задать, он мне сам исправил код, вопрос я так и не задал, но тему уяснил) Именно про sizeof? Скорее всего он говорил про что-то вроде strlen'а это да, лучше вычислить один раз и присвоить значение переменной, ну или крутить цикл с конца.
Бложе [indent]Мой блог Уроки по Pawn[/indent]
Open-GTO [indent]Блог разработчиков GitHub: https://github.com/Open-GTO/Open-GTO Сборки мода с сервером тут[/indent]
|
| |
|
|
| Latron | Дата: Вторник, 28.02.2012, 20:54 | Сообщение # 14 |
|
Группа:
I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус: 
| Quote (RoACh) Ну и ещё интересно, почему тэг [FS], а в архиве мод. Сначала планировал просто регистрацию,но будет основа мода...Можешь перенести в моды...
Моё портфолио
Мои работы: [ Lesson ] Операторы в PAWN. [ Lesson ] Переменная. [ GM ] RegSys. ( Last update: 21.04.2012 )
|
| |
|
|
| Alcoholik | Дата: Вторник, 28.02.2012, 21:34 | Сообщение # 15 |
|
Мастер джэдай
Группа:
Администратор
Сообщений: 8299
Награды: 111
Город: Санкт-Петербург
Репутация: 6085
Статус: 
| ZiGGi, а ну да точняк, я ошибся)
if(isset($beer)&&isset($girl)) { drink($beer);fuck($girl); }else die(); Мониторинг sa:mp серверов Приватно никого не консультирую, моды также не пишу, ни так, ни за деньги. Моя ICQ 675715, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.
|
| |
|
|
|
 |
|
 | |
| |
|