PDA

Просмотр полной версии : [Вопрос] Ошибки при компиляции.



kala4iks
05.01.2017, 15:42
C:\Users\Âëàäåëåö\Desktop\Samp Stories\gamemodes\SampStories.pwn(20806 -- 20807) : error 028: invalid subscript (not an array or too many subscripts): "unbandate"
C:\Users\Âëàäåëåö\Desktop\Samp Stories\gamemodes\SampStories.pwn(20806 -- 20808) : error 001: expected token: "}", but found "new"
C:\Users\Âëàäåëåö\Desktop\Samp Stories\gamemodes\SampStories.pwn(20808) : warning 217: loose indentation
C:\Users\Âëàäåëåö\Desktop\Samp Stories\gamemodes\SampStories.pwn(20813) : error 010: invalid function or declaration
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


3 Errors.



publics CheckBanList(playerid)
{
new str[500],rows,fields;
new BID[10],IP[32],time[30];
GetPlayerIp(playerid,IP,32);
cache_get_data(rows,fields);
if(!rows)return 0;
new unbandate = cache_get_field_content_int(0,"unbandate");
if(unbandate > gettime())
{
new ip[16],bandate = cache_get_field_content_int(0,"unbandate"),reason[32];
cache_get_field_content(0,"IP",ip);
cache_get_field_content(0,"time",time);
cache_get_field_content(0,"reason",reason);
cache_get_field_content(0,"BID",BID);

f(str,"{F5DEB3}Ник: %s (ID: %s)\nIP: %s\nЗаблокировал:\nДата блокировки: %s\nПричина: %s\n\nДата разблокировки: %s\n",sendername(playerid),BID,ip,date("%dd.%mm.%yyyy %hh:%ii:%ss",unbandate),reason,date("%dd.%mm.%yyyy %hh:%ii:%ss",bandate));
SPD(playerid,302,0,"{33CCFF}Аккаунт забанен",str,"OK","");
return SetTimerEx("KickFix",1000,0,"i",playerid);
}
else(unbandate < gettime())
{
new query[100];
f(query,"DELETE FROM bans WHERE name = '%s'",sendername(playerid));
mysql_tquery(mySQLDB,query,"","" );
return send(playerid, -1,"Срок Вашей блокировки истёк, пожалуйста не нарушайте правила сервера!");
}
return 1;
}

DeimoS
05.01.2017, 16:16
Передайте тому, кто писал этот код, что он полная бездарность и ему стоит забыть о скриптинге, пока он не изучит основы основ


publics CheckBanList(playerid)
{
if(!cache_num_rows())
return 0;

new str[500],
unbandate = cache_get_field_content_int(0, "unbandate");

if(unbandate > gettime())
{
new bandate = cache_get_field_content_int(0, "unbandate"),
BID[10],
ip[16],
time[30];
cache_get_field_content(0,"IP", ip);
cache_get_field_content(0,"time", time);
cache_get_field_content(0,"reason", str);
cache_get_field_content(0,"BID", BID);

f(str, "{F5DEB3}Ник: %s (ID: %s)\nIP: %s\nЗаблокировал:\nДата блокировки: %s\nПричина: %s\n\nДата разблокировки: %s\n",
sendername(playerid),
BID,
ip,
date("%dd.%mm.%yyyy %hh:%ii:%ss",unbandate),
str,
date("%dd.%mm.%yyyy %hh:%ii:%ss", bandate));

SPD(playerid, 302, 0, "{33CCFF}Аккаунт забанен", str, "OK", "");
SetTimerEx("KickFix",1000,0,"i",playerid);
}
else(unbandate < gettime())
{
f(str, "DELETE FROM bans WHERE name = '%s'", sendername(playerid));
mysql_tquery(mySQLDB,query,"","" );
send(playerid, -1,"Срок Вашей блокировки истёк, пожалуйста не нарушайте правила сервера!");
}
return 1;
}

kala4iks
05.01.2017, 16:21
Передайте тому, кто писал этот код, что он полная бездарность и ему стоит забыть о скриптинге, пока он не изучит основы основ


publics CheckBanList(playerid)
{
if(!cache_num_rows())
return 0;

new str[500],
unbandate = cache_get_field_content_int(0, "unbandate");

if(unbandate > gettime())
{
new bandate = cache_get_field_content_int(0, "unbandate"),
BID[10],
ip[16],
time[30];
cache_get_field_content(0,"IP", ip);
cache_get_field_content(0,"time", time);
cache_get_field_content(0,"reason", str);
cache_get_field_content(0,"BID", BID);

f(str, "{F5DEB3}Ник: %s (ID: %s)\nIP: %s\nЗаблокировал:\nДата блокировки: %s\nПричина: %s\n\nДата разблокировки: %s\n",
sendername(playerid),
BID,
ip,
date("%dd.%mm.%yyyy %hh:%ii:%ss",unbandate),
str,
date("%dd.%mm.%yyyy %hh:%ii:%ss", bandate));

SPD(playerid, 302, 0, "{33CCFF}Аккаунт забанен", str, "OK", "");
SetTimerEx("KickFix",1000,0,"i",playerid);
}
else(unbandate < gettime())
{
f(str, "DELETE FROM bans WHERE name = '%s'", sendername(playerid));
mysql_tquery(mySQLDB,query,"","" );
send(playerid, -1,"Срок Вашей блокировки истёк, пожалуйста не нарушайте правила сервера!");
}
return 1;
}

Ну этот код был взят с другого мода так что передать я уж точно не смогу.


C:\Users\Владелец\Desktop\Samp Stories\gamemodes\SampStories.pwn(20803 -- 20804) : error 028: invalid subscript (not an array or too many subscripts): "unbandate"
C:\Users\Владелец\Desktop\Samp Stories\gamemodes\SampStories.pwn(20805) : warning 217: loose indentation
C:\Users\Владелец\Desktop\Samp Stories\gamemodes\SampStories.pwn(20806) : error 017: undefined symbol "query"
C:\Users\Владелец\Desktop\Samp Stories\gamemodes\SampStories.pwn(20808) : warning 209: function "CheckBanList" should return a value
C:\Users\Владелец\Desktop\Samp Stories\gamemodes\SampStories.pwn(20809) : error 010: invalid function or declaration
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


3 Errors.

vovandolg
06.01.2017, 11:52
forward CheckBanList(playerid);
public CheckBanList(playerid)
{
if(!cache_num_rows())
return 0;

new str[500],
unbandate = cache_get_field_content_int(0, "unbandate"); //а этот столбец точно содержит целые числа, а не строку с символами?

if(unbandate > gettime())
{
new bandate = cache_get_field_content_int(0, "unbandate"), // вот тут что правильно выбран столбец?
BID[10],
ip[16],
time[30];
cache_get_field_content(0,"IP", ip);
cache_get_field_content(0,"time", time);
cache_get_field_content(0,"reason", str);
cache_get_field_content(0,"BID", BID);

f(str, "{F5DEB3}Ник: %s (ID: %s)\nIP: %s\nЗаблокировал:\nДата блокировки: %s\nПричина: %s\n\nДата разблокировки: %s\n",
sendername(playerid),
BID,
ip,
date("%dd.%mm.%yyyy %hh:%ii:%ss",unbandate),
str,
date("%dd.%mm.%yyyy %hh:%ii:%ss", bandate));

SPD(playerid, 302, 0, "{33CCFF}Аккаунт забанен", str, "OK", "");
SetTimerEx("KickFix",1000,0,"i",playerid);
}
else(unbandate < gettime())
{
f(str, "DELETE FROM bans WHERE name = '%s'", sendername(playerid));
mysql_tquery(mySQLDB,str,"","" );
send(playerid, -1,"Срок Вашей блокировки истёк, пожалуйста не нарушайте правила сервера!");
}
return 1;
}

kala4iks
06.01.2017, 12:48
forward CheckBanList(playerid);
public CheckBanList(playerid)
{
if(!cache_num_rows())
return 0;

new str[500],
unbandate = cache_get_field_content_int(0, "unbandate"); //а этот столбец точно содержит целые числа, а не строку с символами?

if(unbandate > gettime())
{
new bandate = cache_get_field_content_int(0, "unbandate"), // вот тут что правильно выбран столбец?
BID[10],
ip[16],
time[30];
cache_get_field_content(0,"IP", ip);
cache_get_field_content(0,"time", time);
cache_get_field_content(0,"reason", str);
cache_get_field_content(0,"BID", BID);

f(str, "{F5DEB3}Ник: %s (ID: %s)\nIP: %s\nЗаблокировал:\nДата блокировки: %s\nПричина: %s\n\nДата разблокировки: %s\n",
sendername(playerid),
BID,
ip,
date("%dd.%mm.%yyyy %hh:%ii:%ss",unbandate),
str,
date("%dd.%mm.%yyyy %hh:%ii:%ss", bandate));

SPD(playerid, 302, 0, "{33CCFF}Аккаунт забанен", str, "OK", "");
SetTimerEx("KickFix",1000,0,"i",playerid);
}
else(unbandate < gettime())
{
f(str, "DELETE FROM bans WHERE name = '%s'", sendername(playerid));
mysql_tquery(mySQLDB,str,"","" );
send(playerid, -1,"Срок Вашей блокировки истёк, пожалуйста не нарушайте правила сервера!");
}
return 1;
}



C:\Users\Âëàäåëåö\Desktop\Samp Stories\gamemodes\SampStories.pwn(20804 -- 20805) : error 028: invalid subscript (not an array or too many subscripts): "unbandate"
C:\Users\Âëàäåëåö\Desktop\Samp Stories\gamemodes\SampStories.pwn(20806) : warning 217: loose indentation
C:\Users\Âëàäåëåö\Desktop\Samp Stories\gamemodes\SampStories.pwn(20809) : warning 209: function "CheckBanList" should return a value
C:\Users\Âëàäåëåö\Desktop\Samp Stories\gamemodes\SampStories.pwn(20810) : error 010: invalid function or declaration
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


2 Errors.

kala4iks
07.01.2017, 20:14
Выручайте НАРОД.

$continue$
07.01.2017, 20:39
Предлагаю дату разбана/бана записывать с помощью NOW().
А, ещё я бы сделал систему бана/разбана с помощью BlockIpAddress (http://wiki.sa-mp.com/wiki/BlockIpAddress)/UnBlockIpAddress (http://wiki.sa-mp.com/wiki/UnBlockIpAddress)

P.S: unix_timestamp(now()) - возвращает UNIX (https://ru.wikipedia.org/wiki/UNIX-%D0%B2%D1%80%D0%B5%D0%BC%D1%8F) время от NOW() (http://www.site-do.ru/db/sql13.php)


у DeimoS'a опечатка: он запрос форматирует в str, а в отправку запроса он указывает переменную query.
Собственно готовый код:


publics CheckBanList(playerid)
{
if(!cache_num_rows())
return 0;

new str[500],
unbandate = cache_get_field_content_int(0, "unbandate");

if(unbandate > gettime())
{
new bandate = cache_get_field_content_int(0, "unbandate"),
BID[10],
ip[16],
time[30];
cache_get_field_content(0,"IP", ip);
cache_get_field_content(0,"time", time);
cache_get_field_content(0,"reason", str);
cache_get_field_content(0,"BID", BID);

f(str, "{F5DEB3}Ник: %s (ID: %s)\nIP: %s\nЗаблокировал:\nДата блокировки: %s\nПричина: %s\n\nДата разблокировки: %s\n",
sendername(playerid),
BID,
ip,
date("%dd.%mm.%yyyy %hh:%ii:%ss",unbandate),
str,
date("%dd.%mm.%yyyy %hh:%ii:%ss", bandate));

SPD(playerid, 302, 0, "{33CCFF}Аккаунт забанен", str, "OK", "");
SetTimerEx("KickFix",1000,0,"i",playerid);
}
else(unbandate < gettime())
{
f(str, "DELETE FROM bans WHERE name = '%s'", sendername(playerid));
mysql_tquery(mySQLDB, str, "", "");
send(playerid, -1,"Срок Вашей блокировки истёк, пожалуйста не нарушайте правила сервера!");
}
return 1;
}

А на счет unbandate: Вы уверен, что нет глобальной переменной с таким же "именем"?

kala4iks
07.01.2017, 21:53
Предлагаю дату разбана/бана записывать с помощью NOW().
А, ещё я бы сделал систему бана/разбана с помощью BlockIpAddress (http://wiki.sa-mp.com/wiki/BlockIpAddress)/UnBlockIpAddress (http://wiki.sa-mp.com/wiki/UnBlockIpAddress)

P.S: unix_timestamp(now()) - возвращает UNIX (https://ru.wikipedia.org/wiki/UNIX-%D0%B2%D1%80%D0%B5%D0%BC%D1%8F) время от NOW() (http://www.site-do.ru/db/sql13.php)


у DeimoS'a опечатка: он запрос форматирует в str, а в отправку запроса он указывает переменную query.
Собственно готовый код:


publics CheckBanList(playerid)
{
if(!cache_num_rows())
return 0;

new str[500],
unbandate = cache_get_field_content_int(0, "unbandate");

if(unbandate > gettime())
{
new bandate = cache_get_field_content_int(0, "unbandate"),
BID[10],
ip[16],
time[30];
cache_get_field_content(0,"IP", ip);
cache_get_field_content(0,"time", time);
cache_get_field_content(0,"reason", str);
cache_get_field_content(0,"BID", BID);

f(str, "{F5DEB3}Ник: %s (ID: %s)\nIP: %s\nЗаблокировал:\nДата блокировки: %s\nПричина: %s\n\nДата разблокировки: %s\n",
sendername(playerid),
BID,
ip,
date("%dd.%mm.%yyyy %hh:%ii:%ss",unbandate),
str,
date("%dd.%mm.%yyyy %hh:%ii:%ss", bandate));

SPD(playerid, 302, 0, "{33CCFF}Аккаунт забанен", str, "OK", "");
SetTimerEx("KickFix",1000,0,"i",playerid);
}
else(unbandate < gettime())
{
f(str, "DELETE FROM bans WHERE name = '%s'", sendername(playerid));
mysql_tquery(mySQLDB, str, "", "");
send(playerid, -1,"Срок Вашей блокировки истёк, пожалуйста не нарушайте правила сервера!");
}
return 1;
}

А на счет unbandate: Вы уверен, что нет глобальной переменной с таким же "именем"?

В чем и прикол переменной с таким именем нет но именно тут ошибки а чем дело понять не могу.

vovandolg
10.01.2017, 18:46
А, ещё я бы сделал систему бана/разбана с помощью BlockIpAddress (http://wiki.sa-mp.com/wiki/BlockIpAddress)/UnBlockIpAddress (http://wiki.sa-mp.com/wiki/UnBlockIpAddress)


Они не работают вроде как на 0.3.7, тестил как на винде так и на линуксе.
Тут тоже отписывался, видимо не кто не пробовал её юзать даже...

Nexius_Tailer
04.02.2017, 17:34
А, ещё я бы сделал систему бана/разбана с помощью BlockIpAddress (http://wiki.sa-mp.com/wiki/BlockIpAddress)/UnBlockIpAddress (http://wiki.sa-mp.com/wiki/UnBlockIpAddress)
И после перезапуска сервера баны слетят


Они не работают вроде как на 0.3.7, тестил как на винде так и на линуксе.
Тут тоже отписывался, видимо не кто не пробовал её юзать даже...
Всё отлично работает. Ты, видимо, с локального тестил (той машины, на которой и сервер), т.к. сервер не может забанить свой же ип

vovandolg
05.02.2017, 01:06
Всё отлично работает. Ты, видимо, с локального тестил (той машины, на которой и сервер), т.к. сервер не может забанить свой же ип

Не работало как на локалке так и на хостинге, так как я выкладывал эту проблему сюда,
так же все отписались работает, потом сказали проверят и молчок пошёл, видать не работает всё же или работает через раз, по крайней мере у меня не работало не где и ошибок не было!

ццццццццццаак (http://pro-pawn.ru/showthread.php?14418-BlockIpAddress&highlight=BlockIpAddress)

Nexius_Tailer
05.02.2017, 17:05
Не работало как на локалке так и на хостинге, так как я выкладывал эту проблему сюда,
так же все отписались работает, потом сказали проверят и молчок пошёл, видать не работает всё же или работает через раз, по крайней мере у меня не работало не где и ошибок не было!

ццццццццццаак (http://pro-pawn.ru/showthread.php?14418-BlockIpAddress&highlight=BlockIpAddress)
Возможно время слишком большое поставил, хз (там же в мс).
Но я её использую как анти-реконнект, баня ип вышедшего на 12 секунд (12000 мс), и всё работало и работает.