Ошибка при компиляции vip_test.sma

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
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" );
}
}
Как исправить и что делать? (Linux)
 
В этой теме было размещено решение! Перейти к решению.

Вложения

Сообщения
372
Реакции
47
Помог
6 раз(а)
O4akovskiy,


Совет: скачать от сюда amxmodx 1.9.0, открыть папку scripting и использовать этот компилятор
 

Вложения

Сообщения
1,340
Реакции
529
Помог
91 раз(а)
O4akovskiy, это не ошибки, а предупреждения, на работу не влияют
 

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
это не ошибки, а предупреждения
Разве?

1653146707880.png

O4akovskiy, В файле, который ты прикрепил, проблем нет, кроме как предупреждений. Но то что ты указал в 'Исходный код' имеет другую кодировку(необходимо UTF-8, без BOM). Отсюда и проблема была.
 
Сообщения
26
Реакции
0
Хотел поправить, что не WEB-компилятором и локальным компилятором.
RockTheStreet, а как это сделать? Ну, убрать BOM.
 
Сообщения
372
Реакции
47
Помог
6 раз(а)
O4akovskiy
Можно через блокнот или можно использовать текстовой редактор Notepad++

Вроде как тот исходник который я кинул, компилируется без ошибок
 
Сообщения
11
Реакции
0
Помог
1 раз(а)
O4akovskiy, не обращай предельного внимания на warning, на работу как написали выше, не повлияет.

upd: плагин исправно компилируется и в web compile, и в локальным компилятором.
22 Май 2022
yUkk, не успел отредачить :D
 

Вложения

Сообщения
19
Реакции
0
Nice Plugin! One Question can you make after "x" days flag or kills automaticly removed and player again to make 1500 kills this will be individual for evry player if you understand me what i mean
 

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Ant1Lamer, Прочитай название раздела.
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу