Последние Файлы 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, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.