Пользователь
- Сообщения
- 26
- Реакции
- 0
- Ошибка
-
./amxxpc vip_test.sma
AMX Mod X Compiler 1.9.0.5294
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2013 AMX Mod X Team
vip_test.sma(93) : error 047: array sizes do not match, or destination array is too small
vip_test.sma(128) : warning 217: loose indentation
vip_test.sma(129) : warning 217: loose indentation
vip_test.sma(131) : warning 217: loose indentation
vip_test.sma(132) : warning 217: loose indentation
vip_test.sma(135) : warning 217: loose indentation
vip_test.sma(155) : warning 217: loose indentation
vip_test.sma(157) : warning 217: loose indentation
- Компилятор
- WEB-компилятор
- Amx Mod X
- 1.9.0
- Исходный код
-
#include <amxmodx> #include <sqlx> #include <csstats> #pragma tabsize 0 /* Впадлу.... */ /* константы */ #define VIP_TEST_HOUR 1 #define S_MINUTE 60 #define S_HOUR 3600 #define DB_SAVEBY_STEAMID 0 #define DB_SAVEBY_IP 1 #define DB_SAVEBY_NAME 2 #define SAVE_TYPE 0 //0 - РїРѕ стимид 1 -РїРѕ айпи 2 - РїРѕ РЅРёРєСѓ #define DB_SAVE 2 //1-sqlite 2- mysql #define MAX_PLAYER 32 #define MIN_RANK 1500 /* Чтобы новые аккаунты РЅРµ брали */ new const szTableName[] = "vip_test" //Название таблицы new const szDBHost[] = "127.0 0.1" // РҐРѕСЃС‚ new const szDBUser[] = "8274HgY+2" //Пользователь new const szDBPass[] = "root" //Пароль РѕС‚ Р±Рґ new const szBDName[] = "amxx" //название Р±Рґ #define VIP_FLAG "s" //Какие флаги выдавать? #define VIP_FLAG "q" //Какие флаги выдавать? /* Переменные */ new szKeyName[16]; new bool:PlayerAlreadyUseVip[MAX_PLAYER+1]; new EndTime[MAX_PLAYER+1]; new Handle:g_SqlTuple; new g_Error[512]; public plugin_init() { register_plugin("Vip Test", "1.0", "daywer") /* команда вызова */ register_clcmd("say /vip_test","CmdVipTest") register_clcmd("say vip_test","CmdVipTest") /* Меню */ register_menucmd(register_menuid("\yV.I.P тест"), 1023, "hnd_viptest_menu") /* Для сохранения*/ DB_GetKeyName( szKeyName, 15 ); switch(DB_SAVE) { case 1:SQL_SetAffinity( "sqlite" ); case 2:SQL_SetAffinity( "mysql" ); } } /* Вызов главного меню*/ public CmdVipTest(idPlayer) { if(!is_user_connected(idPlayer)) return; static pos, cache[512] pos = 0 new keys; if(PlayerAlreadyUseVip[idPlayer]) { keys = (1<<1)|(1<<9) new szEndTime[44],EndPlayerTime; EndPlayerTime = EndTime[idPlayer] - get_systime(); get_human_time(EndPlayerTime,szEndTime,sizeof(szEndTime)-1) if(EndTime[idPlayer] > get_systime()) pos += formatex(cache[pos], 511-pos, "\yV.I.P тест^nДо конца теста %s",szEndTime) else pos += formatex(cache[pos], 511-pos, "\yV.I.P тест^n\rТест окончен!") pos += formatex(cache[pos], 511-pos, "^n\y|\r1\y|.\dПолучить V.I.P РЅР° %d часов",VIP_TEST_HOUR) pos += formatex(cache[pos], 511-pos, "^n\y|\r2\y|.\yРнформация") } else { keys = (1<<0)|(1<<1)|(1<<9) pos += formatex(cache[pos], 511-pos, "\yV.I.P тест^n") pos += formatex(cache[pos], 511-pos, "^n\y|\r1\y|.\yПолучить V.I.P РЅР° \r%d \y часов",VIP_TEST_HOUR) pos += formatex(cache[pos], 511-pos, "^n\y|\r2\y|.\yРнформация") } pos += formatex(cache[pos], 511-pos, "^n^n^n0. \wВыход^n") show_menu( idPlayer, keys, cache, -1) return; } /* обработчик меню*/ public hnd_viptest_menu(idPlayer,key) { if(!is_user_connected(idPlayer)) return; switch (key) { case 0: { new stats[8],bodyhits[8], rank; rank = get_user_stats(idPlayer, stats,bodyhits) if(rank > MIN_RANK) { client_print(idPlayer,print_chat,"Прости,РЅРѕ твой rank должен быть РЅРёР¶Рµ %d!",MIN_RANK) CmdVipTest(idPlayer) return; } client_print(idPlayer,print_chat,"Бесплатный период активирован!Вперед!") new szTemp[512],ENDTime; ENDTime = (get_systime() +(VIP_TEST_HOUR*S_HOUR)) new szKey[66]; DB_GetKey( idPlayer, szKey, 65 ); format(szTemp,charsmax(szTemp),"INSERT INTO `%s` ( `%s` , `timeend`)VALUES ('%s','%i');",szTableName,szKeyName,szKey,ENDTime) SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp) EndTime[idPlayer] = ENDTime; PlayerAlreadyUseVip[idPlayer] = true; set_user_flags(idPlayer, read_flags( VIP_FLAG)) } case 1: { show_motd(idPlayer,"addons/amxmodx/configs/vip_test.txt", "VIP Тест") } default:return; } return; } /* Загрузка Р±Рґ*/ public plugin_cfg() Sql_Init() /* Коннект Рє базе*/ public Sql_Init() { g_SqlTuple = SQL_MakeDbTuple( szDBHost, szDBUser, szDBPass, szBDName ); new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error)) if(SqlConnection == Empty_Handle) set_fail_state(g_Error) new Handle:Queries new szSendQuery[100]; format(szSendQuery,99,"CREATE TABLE IF NOT EXISTS %s (%s varchar(64),timeend INT(16))",szTableName,szKeyName) Queries = SQL_PrepareQuery(SqlConnection,szSendQuery) if(!SQL_Execute(Queries)) { SQL_QueryError(Queries,g_Error,charsmax(g_Error)) set_fail_state(g_Error) } SQL_FreeHandle(Queries) SQL_FreeHandle(SqlConnection) } /* РРіСЂРѕРє РїРѕРґРєР» Рє серверу*/ public client_putinserver(idPlayer) { PlayerAlreadyUseVip[idPlayer] = false; EndTime[idPlayer] = 0; Load_Sql(idPlayer) } /* загрузка данных Рѕ РёРіСЂРѕРєРµ*/ public Load_Sql(idPlayer) { new szTemp[512] new Data[1] new szKey[66]; DB_GetKey( idPlayer, szKey, 65 ); Data[0] = idPlayer format(szTemp,charsmax(szTemp),"SELECT * FROM `%s` WHERE (`%s`.`%s` = '%s')",szTableName,szTableName,szKeyName,szKey) SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp,Data,1) } /* загрузка 2 данных Рѕ РёРіСЂРѕРєРµ*/ public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { if(FailState == TQUERY_CONNECT_FAILED) { log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error) } else if(FailState == TQUERY_QUERY_FAILED) { log_amx("Load Query failed. [%d] %s", Errcode, Error) } new idPlayer idPlayer = Data[0] if(SQL_NumResults(Query) < 1) { //РРіСЂРѕРєР° нет РІ базе его ждет халявная РІРёРїРєР° } else { PlayerAlreadyUseVip[idPlayer] = true; EndTime[idPlayer] = SQL_ReadResult(Query, 1); if(EndTime[idPlayer] > get_systime()) set_user_flags(idPlayer, read_flags( VIP_FLAG)) } return PLUGIN_HANDLED } public IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { SQL_FreeHandle(Query) return PLUGIN_HANDLED } /* Секунды РІ минуты,часы*/ get_human_time(time,output[],len) { new m,h if(time)formatex(output,len,"%d сек",time) if(time/S_MINUTE) { m=time/S_MINUTE formatex(output,len,"%d РјРёРЅ.",m) } if(time/S_HOUR) { h=time/S_HOUR m=(time-(h*S_HOUR))/S_MINUTE new szHour[16]; switch(h) { case 1,21:format(szHour,charsmax(szHour),"час") case 2..4,22..24:format(szHour,charsmax(szHour),"часа") case 5..20:format(szHour,charsmax(szHour),"часов") } formatex(output,len,"%d %s Рё %d РјРёРЅ",h,szHour,m) } } /* Закрывает сессию,РЅРѕ РЅРµ твою*/ public plugin_end() SQLITE_Close() SQLITE_Close() { if ( g_SqlTuple ) { SQL_FreeHandle(g_SqlTuple); } } /* Получает данные Рѕ РёРіСЂРѕРєРµ(зависит РѕС‚ настройки)*/ DB_GetKey( id, szKey[], len ) { switch(SAVE_TYPE) { case DB_SAVEBY_NAME: { get_user_name( id, szKey, len ); replace_all( szKey, len, "'", "''" ); } case DB_SAVEBY_IP: get_user_ip( id, szKey, len, 1 ); case DB_SAVEBY_STEAMID: get_user_authid( id, szKey, len ); } } /* Главный ключ сохранения РёРіСЂРѕРєР°*/ DB_GetKeyName( szKeyName[], len ) { switch( SAVE_TYPE ) { case DB_SAVEBY_NAME: copy( szKeyName, len, "player_name" ); case DB_SAVEBY_IP: copy( szKeyName, len, "player_ip" ); case DB_SAVEBY_STEAMID: copy( szKeyName, len, "player_steamid" ); } }
C++
Как исправить и что делать? (Linux)
В этой теме было размещено решение! Перейти к решению.
Вложения
-
7.8 KB Просмотры: 127