Page 1 of 1
Cerere plugin anti overflow
Posted: 27 Apr 2018, 18:57
by Astaroth
Salut! Doresc si eu un plugin anti overflow..Tin sa mentionez ca pe server ruleaza addonsul furien 4.0 al lui Aragon si ca am decat 5 mesaje in ad_manager.
Re: Cerere plugin anti overflow
Posted: 27 Apr 2018, 21:21
by faKe91
Nu exista asa ceva. Poti doar ascunde mesajele de overflow din consola. Jucatorii oricum vor primi overflow, daca au de primit. Faci hook pe functia SV_DropClient folosind orpheu. Ar mai fi o idee sa trimiti clientului comanda "retry" dupa ce acesta a primit overflow, insa functia client_cmd e practic blocata de toate guardurile. Deci e inutil. Raman doar jucatorii steam carora le poti trimite comanda "retry" cu svc_director.
Re: Cerere plugin anti overflow
Posted: 27 Apr 2018, 22:44
by Astaroth
Am rehlds deci abandonam ideea cu orpheu...
Re: Cerere plugin anti overflow
Posted: 28 Apr 2018, 00:09
by faKe91
Vei avea nevoie de modului reapi
https://github.com/s1lentq/reapi/blob/3 ... st.inc#L37
- | Afiseaza codul
[code]#include <amxmodx>
#include <reapi>
#define RETRY_ON_KICK // Daca nu vrei ca jucatorii care primesc overflow sa se reconecteze (retry), atunci comenteaza aceasta linie
enum CVAR
{
CVAR_MAX_WARNS,
CVAR_RESET_TIME
};
new g_Cvars[CVAR] = {0, };
new g_PlayerWarns[33];
public plugin_init()
{
register_plugin("Anti overflow", "1.0", "Some Author");
g_Cvars[CVAR_MAX_WARNS] = register_cvar("amx_overflow_max_warns", "5");
g_Cvars[CVAR_RESET_TIME] = register_cvar("amx_overflow_reset_time", "10");
RegisterHookChain(RH_SV_DropClient, "SV_DropClient", false);
}
public SV_DropClient(id, crash, const message[])
{
new ret = HC_CONTINUE;
if(containi(message, "Reliable channel overflowed") != -1)
{
if(g_PlayerWarns[id]++ < get_pcvar_num(g_Cvars[CVAR_MAX_WARNS]))
{
if(task_exists(id))
remove_task(id);
set_task(get_pcvar_float(g_Cvars[CVAR_RESET_TIME]), "reset_warns", id);
ret = HC_BREAK;
}
else
{
#if defined RETRY_ON_KICK
if(is_user_steam(id))
send_director_cmd(id, "retry");
else
client_cmd(id, "retry");
#endif
ret = HC_CONTINUE;
}
}
return ret;
}
public reset_warns(id)
g_PlayerWarns[id] = 0;
public client_connect(id)
g_PlayerWarns[id] = 0;
stock send_director_cmd(id, text[])
{
message_begin(MSG_ONE, SVC_DIRECTOR, _, id);
write_byte(strlen(text) + 2);
write_byte(10);
write_string(text);
message_end();
}[/code]
Sunt 2 cvaruri:
1) amx_overflow_max_warns - numarul maxim de avertizari pentru overflow, dupa care jucatorul va fi deconectat de pe server
2) amx_overflow_reset_time - intervalul de timp in secunde, in care daca jucatorul nu mai primeste overflow, avertizarile se reseteaza
In caz ca e activat define-ul RETRY_ON_KICK in loc de kick se va executa comanda retry in consola jucatorului. Functioneaza doar pentru jucatorii steam, dupa cum am spus mai sus, pentru ca marea majoritate a guardurilor, blocheaza comanda retry. In caz ca nu ai nevoie de aceasta optiune, poti comenta define-ul cu //
Ca sa nu stai sa astepti pana cineva primeste overflow, uite aici un plugin care va da 100% overflow asupra celui care executa comanda
amx_overflow. Executa comanda
amx_overflow de X+1 ori in consola ca sa vezi rezultatul, unde X e valoarea cvarului
amx_overflow_max_warns
- | Afiseaza codul
[code]#include <amxmodx>
public plugin_init()
{
register_plugin("Overflow Me", "1.0", "Some Author");
register_clcmd("amx_overflow", "please_overflow_me");
}
public please_overflow_me(id)
{
for(new i = 0; i < 10000; ++i)
{
message_begin(MSG_ONE, get_user_msgid("SayText"), _, id);
write_byte(id);
write_string("Hello World! ^1Hello World");
message_end();
}
}
[/code]
Re: Cerere plugin anti overflow
Posted: 28 Apr 2018, 10:05
by faKe91
Varianta pentru hlds cu orpheu
- | Afiseaza codul
[code]#include <amxmodx>
#include <fakemeta>
#include <orpheu>
#define RETRY_ON_KICK // Daca nu vrei ca jucatorii care primesc overflow sa se reconecteze pe server (retry), atunci comenteaza aceasta linie
enum CVAR
{
CVAR_MAX_WARNS,
CVAR_RESET_TIME
};
new g_Cvars[CVAR] = {0, };
new g_ClientPtr, g_ElementSize, g_EntityOffset;
new g_PlayerWarns[33];
new g_DisconnectForward;
public plugin_init()
{
register_plugin("Anti overflow", "1.0", "Some Author");
g_Cvars[CVAR_MAX_WARNS] = register_cvar("amx_overflow_max_warns", "5");
g_Cvars[CVAR_RESET_TIME] = register_cvar("amx_overflow_reset_time", "10");
OrpheuRegisterHook(OrpheuGetFunction("SV_DropClient"), "SV_DropClient", OrpheuHookPre);
g_DisconnectForward = register_forward(FM_ClientDisconnect, "ClientDisconnect");
}
public OrpheuHookReturn:SV_DropClient(clientPtr, crash, const message[])
{
new ret = _:OrpheuIgnored;
if(g_ElementSize && g_EntityOffset)
{
if(containi(message, "Reliable channel overflowed") != -1)
{
new id = (clientPtr - g_EntityOffset) / g_ElementSize;
if(g_PlayerWarns[id]++ < get_pcvar_num(g_Cvars[CVAR_MAX_WARNS]))
{
if(task_exists(id))
remove_task(id);
set_task(get_pcvar_float(g_Cvars[CVAR_RESET_TIME]), "reset_warns", id);
ret = _:OrpheuSupercede;
}
else
{
#if defined RETRY_ON_KICK
if(is_user_steam(id))
send_director_cmd(id, "retry");
else
client_cmd(id, "retry");
#endif
ret = _:OrpheuIgnored;
}
}
}
else
{
if(containi(message, "Reliable channel overflowed") != -1)
ret = _:OrpheuSupercede;
g_ClientPtr = clientPtr;
}
return OrpheuHookReturn:ret;
}
public reset_warns(id)
g_PlayerWarns[id] = 0;
public client_connect(id)
g_PlayerWarns[id] = 0;
public ClientDisconnect(id)
{
static entityId = 0, lastPointer = 0;
if(g_ClientPtr)
{
if(entityId && entityId != id)
{
g_ElementSize = abs((g_ClientPtr - lastPointer) / (id - entityId));
g_EntityOffset = abs(g_ClientPtr - (id * g_ElementSize));
unregister_forward(FM_ClientDisconnect, g_DisconnectForward);
}
else
{
lastPointer = g_ClientPtr;
entityId = id;
}
}
}
#if defined RETRY_ON_KICK
stock bool:is_user_steam(id)
{
static iPointer;
if(iPointer || (iPointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(iPointer) == 2);
}
return false;
}
stock send_director_cmd(id, text[])
{
message_begin(MSG_ONE, SVC_DIRECTOR, _, id);
write_byte(strlen(text) + 2);
write_byte(10);
write_string(text);
message_end();
}
#endif[/code]
- SV_DropClient | Afiseaza codul
[code]{
"name" : "SV_DropClient",
"library" : "engine",
"arguments" :
[
{
"type" : "int"
},
{
"type" : "int"
},
{
"type" : "char *"
}
],
"identifiers":
[
{
"os" : "windows",
"mod" : "cstrike",
"value" : [0x55,0x8B,"*",0x81,"*","*","*","*","*",0x8B,0x4D,"*",0x53,0x56,0x8D,0x45,"*",0x57,0x50,0x51,0x8D,0x95]
},
{
"os" : "linux",
"mod" : "cstrike",
"value" : "SV_DropClient"
}
]
}
[/code]
Re: Cerere plugin anti overflow
Posted: 01 May 2018, 13:52
by Astaroth
faKe91 wrote:Vei avea nevoie de modului reapi
https://github.com/s1lentq/reapi/blob/3 ... st.inc#L37
- | Afiseaza codul
[code]#include <amxmodx>
#include <reapi>
#define RETRY_ON_KICK // Daca nu vrei ca jucatorii care primesc overflow sa se reconecteze (retry), atunci comenteaza aceasta linie
enum CVAR
{
CVAR_MAX_WARNS,
CVAR_RESET_TIME
};
new g_Cvars[CVAR] = {0, };
new g_PlayerWarns[33];
public plugin_init()
{
register_plugin("Anti overflow", "1.0", "Some Author");
g_Cvars[CVAR_MAX_WARNS] = register_cvar("amx_overflow_max_warns", "5");
g_Cvars[CVAR_RESET_TIME] = register_cvar("amx_overflow_reset_time", "10");
RegisterHookChain(RH_SV_DropClient, "SV_DropClient", false);
}
public SV_DropClient(id, crash, const message[])
{
new ret = HC_CONTINUE;
if(containi(message, "Reliable channel overflowed") != -1)
{
if(g_PlayerWarns[id]++ < get_pcvar_num(g_Cvars[CVAR_MAX_WARNS]))
{
if(task_exists(id))
remove_task(id);
set_task(get_pcvar_float(g_Cvars[CVAR_RESET_TIME]), "reset_warns", id);
ret = HC_BREAK;
}
else
{
#if defined RETRY_ON_KICK
if(is_user_steam(id))
send_director_cmd(id, "retry");
else
client_cmd(id, "retry");
#endif
ret = HC_CONTINUE;
}
}
return ret;
}
public reset_warns(id)
g_PlayerWarns[id] = 0;
public client_connect(id)
g_PlayerWarns[id] = 0;
stock send_director_cmd(id, text[])
{
message_begin(MSG_ONE, SVC_DIRECTOR, _, id);
write_byte(strlen(text) + 2);
write_byte(10);
write_string(text);
message_end();
}[/code]
Sunt 2 cvaruri:
1) amx_overflow_max_warns - numarul maxim de avertizari pentru overflow, dupa care jucatorul va fi deconectat de pe server
2) amx_overflow_reset_time - intervalul de timp in secunde, in care daca jucatorul nu mai primeste overflow, avertizarile se reseteaza
In caz ca e activat define-ul RETRY_ON_KICK in loc de kick se va executa comanda retry in consola jucatorului. Functioneaza doar pentru jucatorii steam, dupa cum am spus mai sus, pentru ca marea majoritate a guardurilor, blocheaza comanda retry. In caz ca nu ai nevoie de aceasta optiune, poti comenta define-ul cu //
Ca sa nu stai sa astepti pana cineva primeste overflow, uite aici un plugin care va da 100% overflow asupra celui care executa comanda
amx_overflow. Executa comanda
amx_overflow de X+1 ori in consola ca sa vezi rezultatul, unde X e valoarea cvarului
amx_overflow_max_warns
- | Afiseaza codul
[code]#include <amxmodx>
public plugin_init()
{
register_plugin("Overflow Me", "1.0", "Some Author");
register_clcmd("amx_overflow", "please_overflow_me");
}
public please_overflow_me(id)
{
for(new i = 0; i < 10000; ++i)
{
message_begin(MSG_ONE, get_user_msgid("SayText"), _, id);
write_byte(id);
write_string("Hello World! ^1Hello World");
message_end();
}
}
[/code]
Eroare la compilare:
Code: Select all
antioverflow.txt(44) : error 017: undefined symbol "is_user_steam"
1 Error.
Compilarea a esuat!
Re: Cerere plugin anti overflow
Posted: 01 May 2018, 14:52
by YONTU
Astaroth wrote:faKe91 wrote:Vei avea nevoie de modului reapi
https://github.com/s1lentq/reapi/blob/3 ... st.inc#L37
- | Afiseaza codul
[code]#include <amxmodx>
#include <reapi>
#define RETRY_ON_KICK // Daca nu vrei ca jucatorii care primesc overflow sa se reconecteze (retry), atunci comenteaza aceasta linie
enum CVAR
{
CVAR_MAX_WARNS,
CVAR_RESET_TIME
};
new g_Cvars[CVAR] = {0, };
new g_PlayerWarns[33];
public plugin_init()
{
register_plugin("Anti overflow", "1.0", "Some Author");
g_Cvars[CVAR_MAX_WARNS] = register_cvar("amx_overflow_max_warns", "5");
g_Cvars[CVAR_RESET_TIME] = register_cvar("amx_overflow_reset_time", "10");
RegisterHookChain(RH_SV_DropClient, "SV_DropClient", false);
}
public SV_DropClient(id, crash, const message[])
{
new ret = HC_CONTINUE;
if(containi(message, "Reliable channel overflowed") != -1)
{
if(g_PlayerWarns[id]++ < get_pcvar_num(g_Cvars[CVAR_MAX_WARNS]))
{
if(task_exists(id))
remove_task(id);
set_task(get_pcvar_float(g_Cvars[CVAR_RESET_TIME]), "reset_warns", id);
ret = HC_BREAK;
}
else
{
#if defined RETRY_ON_KICK
if(is_user_steam(id))
send_director_cmd(id, "retry");
else
client_cmd(id, "retry");
#endif
ret = HC_CONTINUE;
}
}
return ret;
}
public reset_warns(id)
g_PlayerWarns[id] = 0;
public client_connect(id)
g_PlayerWarns[id] = 0;
stock send_director_cmd(id, text[])
{
message_begin(MSG_ONE, SVC_DIRECTOR, _, id);
write_byte(strlen(text) + 2);
write_byte(10);
write_string(text);
message_end();
}[/code]
Sunt 2 cvaruri:
1) amx_overflow_max_warns - numarul maxim de avertizari pentru overflow, dupa care jucatorul va fi deconectat de pe server
2) amx_overflow_reset_time - intervalul de timp in secunde, in care daca jucatorul nu mai primeste overflow, avertizarile se reseteaza
In caz ca e activat define-ul RETRY_ON_KICK in loc de kick se va executa comanda retry in consola jucatorului. Functioneaza doar pentru jucatorii steam, dupa cum am spus mai sus, pentru ca marea majoritate a guardurilor, blocheaza comanda retry. In caz ca nu ai nevoie de aceasta optiune, poti comenta define-ul cu //
Ca sa nu stai sa astepti pana cineva primeste overflow, uite aici un plugin care va da 100% overflow asupra celui care executa comanda
amx_overflow. Executa comanda
amx_overflow de X+1 ori in consola ca sa vezi rezultatul, unde X e valoarea cvarului
amx_overflow_max_warns
- | Afiseaza codul
[code]#include <amxmodx>
public plugin_init()
{
register_plugin("Overflow Me", "1.0", "Some Author");
register_clcmd("amx_overflow", "please_overflow_me");
}
public please_overflow_me(id)
{
for(new i = 0; i < 10000; ++i)
{
message_begin(MSG_ONE, get_user_msgid("SayText"), _, id);
write_byte(id);
write_string("Hello World! ^1Hello World");
message_end();
}
}
[/code]
Eroare la compilare:
Code: Select all
antioverflow.txt(44) : error 017: undefined symbol "is_user_steam"
1 Error.
Compilarea a esuat!
Adauga codul de mai jos la finalul sursei tale:
- | Afiseaza codul
#if defined RETRY_ON_KICK
stock bool:is_user_steam(id)
{
static iPointer;
if(iPointer || (iPointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(iPointer) == 2);
}
return false;
}
stock send_director_cmd(id, text[])
{
message_begin(MSG_ONE, SVC_DIRECTOR, _, id);
write_byte(strlen(text) + 2);
write_byte(10);
write_string(text);
message_end();
}
#endif
Re: Cerere plugin anti overflow
Posted: 01 May 2018, 15:14
by Astaroth
YONTU wrote:
Adauga codul de mai jos la finalul sursei tale:
- | Afiseaza codul
#if defined RETRY_ON_KICK
stock bool:is_user_steam(id)
{
static iPointer;
if(iPointer || (iPointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(iPointer) == 2);
}
return false;
}
stock send_director_cmd(id, text[])
{
message_begin(MSG_ONE, SVC_DIRECTOR, _, id);
write_byte(strlen(text) + 2);
write_byte(10);
write_string(text);
message_end();
}
#endif
9 erori..
Code: Select all
antioverflow.txt(44) : error 029: invalid expression, assumed zero
antioverflow.txt(44) : warning 221: label name "bool" shadows tag name
antioverflow.txt(44) : error 017: undefined symbol "is_user_steam"
antioverflow.txt(58) : warning 225: unreachable code
antioverflow.txt(58) : error 029: invalid expression, assumed zero
antioverflow.txt(58) : error 017: undefined symbol "send_director_cmd"
antioverflow.txt(61) : error 017: undefined symbol "text"
antioverflow.txt(61) : error 001: expected token: ",", but found ";"
antioverflow.txt(63) : error 017: undefined symbol "text"
antioverflow.txt(63) : error 088: number of arguments does not match definition
antioverflow.txt(66) : error 001: expected token: "}", but found "-end of file-"
9 Errors.
Compilarea a esuat!
Re: Cerere plugin anti overflow
Posted: 01 May 2018, 19:24
by faKe91
YONTU wrote:Astaroth wrote:faKe91 wrote:Vei avea nevoie de modului reapi
https://github.com/s1lentq/reapi/blob/3 ... st.inc#L37
- | Afiseaza codul
[code]#include <amxmodx>
#include <reapi>
#define RETRY_ON_KICK // Daca nu vrei ca jucatorii care primesc overflow sa se reconecteze (retry), atunci comenteaza aceasta linie
enum CVAR
{
CVAR_MAX_WARNS,
CVAR_RESET_TIME
};
new g_Cvars[CVAR] = {0, };
new g_PlayerWarns[33];
public plugin_init()
{
register_plugin("Anti overflow", "1.0", "Some Author");
g_Cvars[CVAR_MAX_WARNS] = register_cvar("amx_overflow_max_warns", "5");
g_Cvars[CVAR_RESET_TIME] = register_cvar("amx_overflow_reset_time", "10");
RegisterHookChain(RH_SV_DropClient, "SV_DropClient", false);
}
public SV_DropClient(id, crash, const message[])
{
new ret = HC_CONTINUE;
if(containi(message, "Reliable channel overflowed") != -1)
{
if(g_PlayerWarns[id]++ < get_pcvar_num(g_Cvars[CVAR_MAX_WARNS]))
{
if(task_exists(id))
remove_task(id);
set_task(get_pcvar_float(g_Cvars[CVAR_RESET_TIME]), "reset_warns", id);
ret = HC_BREAK;
}
else
{
#if defined RETRY_ON_KICK
if(is_user_steam(id))
send_director_cmd(id, "retry");
else
client_cmd(id, "retry");
#endif
ret = HC_CONTINUE;
}
}
return ret;
}
public reset_warns(id)
g_PlayerWarns[id] = 0;
public client_connect(id)
g_PlayerWarns[id] = 0;
stock send_director_cmd(id, text[])
{
message_begin(MSG_ONE, SVC_DIRECTOR, _, id);
write_byte(strlen(text) + 2);
write_byte(10);
write_string(text);
message_end();
}[/code]
Sunt 2 cvaruri:
1) amx_overflow_max_warns - numarul maxim de avertizari pentru overflow, dupa care jucatorul va fi deconectat de pe server
2) amx_overflow_reset_time - intervalul de timp in secunde, in care daca jucatorul nu mai primeste overflow, avertizarile se reseteaza
In caz ca e activat define-ul RETRY_ON_KICK in loc de kick se va executa comanda retry in consola jucatorului. Functioneaza doar pentru jucatorii steam, dupa cum am spus mai sus, pentru ca marea majoritate a guardurilor, blocheaza comanda retry. In caz ca nu ai nevoie de aceasta optiune, poti comenta define-ul cu //
Ca sa nu stai sa astepti pana cineva primeste overflow, uite aici un plugin care va da 100% overflow asupra celui care executa comanda
amx_overflow. Executa comanda
amx_overflow de X+1 ori in consola ca sa vezi rezultatul, unde X e valoarea cvarului
amx_overflow_max_warns
- | Afiseaza codul
[code]#include <amxmodx>
public plugin_init()
{
register_plugin("Overflow Me", "1.0", "Some Author");
register_clcmd("amx_overflow", "please_overflow_me");
}
public please_overflow_me(id)
{
for(new i = 0; i < 10000; ++i)
{
message_begin(MSG_ONE, get_user_msgid("SayText"), _, id);
write_byte(id);
write_string("Hello World! ^1Hello World");
message_end();
}
}
[/code]
Eroare la compilare:
Code: Select all
antioverflow.txt(44) : error 017: undefined symbol "is_user_steam"
1 Error.
Compilarea a esuat!
Adauga codul de mai jos la finalul sursei tale:
- | Afiseaza codul
#if defined RETRY_ON_KICK
stock bool:is_user_steam(id)
{
static iPointer;
if(iPointer || (iPointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(iPointer) == 2);
}
return false;
}
stock send_director_cmd(id, text[])
{
message_begin(MSG_ONE, SVC_DIRECTOR, _, id);
write_byte(strlen(text) + 2);
write_byte(10);
write_string(text);
message_end();
}
#endif
Nu e nevoie.
https://github.com/s1lentq/reapi/blob/2 ... on.inc#L22
Astaroth wrote:YONTU wrote:
9 erori..
Code: Select all
antioverflow.txt(44) : error 029: invalid expression, assumed zero
antioverflow.txt(44) : warning 221: label name "bool" shadows tag name
antioverflow.txt(44) : error 017: undefined symbol "is_user_steam"
antioverflow.txt(58) : warning 225: unreachable code
antioverflow.txt(58) : error 029: invalid expression, assumed zero
antioverflow.txt(58) : error 017: undefined symbol "send_director_cmd"
antioverflow.txt(61) : error 017: undefined symbol "text"
antioverflow.txt(61) : error 001: expected token: ",", but found ";"
antioverflow.txt(63) : error 017: undefined symbol "text"
antioverflow.txt(63) : error 088: number of arguments does not match definition
antioverflow.txt(66) : error 001: expected token: "}", but found "-end of file-"
9 Errors.
Compilarea a esuat!
Se compileaza fara probleme
http://funkyimg.com/i/2FLsJ.png. Adaoga include-urile modulului reapi. Pun pariu, compilezi fara ele
https://www37.zippyshare.com/v/Ful75Aek/file.html
Nu compila online!
Re: Cerere plugin anti overflow
Posted: 01 May 2018, 20:44
by 4D61676973746572
faKe91 wrote:Nu exista asa ceva. Poti doar ascunde mesajele de overflow din consola. Jucatorii oricum vor primi overflow, daca au de primit. Faci hook pe functia SV_DropClient folosind orpheu. Ar mai fi o idee sa trimiti clientului comanda "retry" dupa ce acesta a primit overflow, insa functia client_cmd e practic blocata de toate guardurile. Deci e inutil. Raman doar jucatorii steam carora le poti trimite comanda "retry" cu svc_director.
Mai bine trimiti comanda "reconnect", asa comanda nu va mai fi blocata de majoritatea guardurilor.
Re: Cerere plugin anti overflow
Posted: 01 May 2018, 21:56
by Astaroth
faKe91 wrote:YONTU wrote:Astaroth wrote:
Eroare la compilare:
Code: Select all
antioverflow.txt(44) : error 017: undefined symbol "is_user_steam"
1 Error.
Compilarea a esuat!
Adauga codul de mai jos la finalul sursei tale:
- | Afiseaza codul
#if defined RETRY_ON_KICK
stock bool:is_user_steam(id)
{
static iPointer;
if(iPointer || (iPointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(iPointer) == 2);
}
return false;
}
stock send_director_cmd(id, text[])
{
message_begin(MSG_ONE, SVC_DIRECTOR, _, id);
write_byte(strlen(text) + 2);
write_byte(10);
write_string(text);
message_end();
}
#endif
Nu e nevoie.
https://github.com/s1lentq/reapi/blob/2 ... on.inc#L22
Astaroth wrote:YONTU wrote:
9 erori..
Code: Select all
antioverflow.txt(44) : error 029: invalid expression, assumed zero
antioverflow.txt(44) : warning 221: label name "bool" shadows tag name
antioverflow.txt(44) : error 017: undefined symbol "is_user_steam"
antioverflow.txt(58) : warning 225: unreachable code
antioverflow.txt(58) : error 029: invalid expression, assumed zero
antioverflow.txt(58) : error 017: undefined symbol "send_director_cmd"
antioverflow.txt(61) : error 017: undefined symbol "text"
antioverflow.txt(61) : error 001: expected token: ",", but found ";"
antioverflow.txt(63) : error 017: undefined symbol "text"
antioverflow.txt(63) : error 088: number of arguments does not match definition
antioverflow.txt(66) : error 001: expected token: "}", but found "-end of file-"
9 Errors.
Compilarea a esuat!
Se compileaza fara probleme
http://funkyimg.com/i/2FLsJ.png. Adaoga include-urile modulului reapi. Pun pariu, compilezi fara ele
https://www37.zippyshare.com/v/Ful75Aek/file.html
Nu compila online!
Done. L am compilat local si a functionat. Mersi frumos