// Utilizando nativa
stock CreateActorEx(skinid, Float:x, Float:y, Float:z, Float:rot, virtualworld = 0, bool:invuneravel = true, animlib[] = "", animname[] = "", Float:fDelta = 4.0, loop = 1, lockx = 0, locky = 0, freeze = 0, time = 0) {
static actorid; actorid = CreateActor(skinid, x, y, z, rot);
if(IsValidActor(actorid)) {
SetActorVirtualWorld(actorid, virtualworld);
SetActorInvulnerable(actorid, invuneravel);
ApplyActorAnimation(actorid, animlib, animname, fDelta, loop, lockx, locky, freeze, time);
}
return actorid;
}
// Utilizando streamer
stock CreateDynamicActorAnim(skinid, Float:x, Float:y, Float:z, Float:r, w = -1, bool:inv = true, animlib[] = "", animname[] = "", Float:fD = 4.0, loop = 0, lx = 0, ly = 0, freeze = 0, time = 0, Float:h = 100.0) {
static actorid; actorid = CreateDynamicActor(skinid, x, y, z, r, inv, h, w);
if(IsValidDynamicActor(actorid)) {
ApplyDynamicActorAnimation(actorid, animlib, animname, fD, loop, lx, ly, freeze, time);
}
return actorid;
}
// Caso vocк use as nativas
new MeuActor = CreateActorEx(299, 0.0, 0.0, 3.0, 90.0, _, _, "PED", "SEAT_idle", 1.0, 1, 0, 0, 0, 0);
// Caso use streamer v2.9++
new ActorDyn = CreateDynamicActorAnim(311, 10.0, 5.0, 3.0, 180.0, _, _, "PED", "SEAT_idle", 1.0, 1, 0, 0, 0, 0);
CMD:ajuda(playerid, params[]) < help, ayuda >
{
return 1;
}
CMD:help(playerid, params[]) return cmd_ajuda(playerid, params);
CMD:ayuda(playerid, params[]) return cmd_ajuda(playerid, params);
CMD:ajuda(playerid, params[])
{
return 1;
}
#if defined command
#undef command
#endif
#if defined cmd
#undef cmd
#endif
#if defined CMD
#undef CMD
#endif
#define command:%0(%1) cmd_%0(%1); public cmd_%0(%1)
#define alias:%0(%1,%2); command:%0(playerid,params[]) return cmd_%1(%2);
// Remove espaзos
#define cmd_%0\32;%1( cmd_%1(
#define C@1_%0\32;%1: C@1_%1:
#define F@0_%0\32;%1( F@0_%1(
#define forward%9C@1_%0\32;%1: forward C@1_%1:
// Divide o comando em dois macros c@0:c@1:
#define CMD:%0(%1) cmd:%0(%1)
#define cmd:%0(%1) c@0:c@1:%0(%1)
/*
* c@0 - Detecta se existe algum alias
* c@1 - Comando sem alias
*/
/*
* %0 - Nome do comando
* %1 - Parametros do comando
* %2 - Aliases
*/
#define c@0:c@1:%0(%1)<%2> alias_cmd(%0(%1)<%2>)
/*
* %0 - Nome do comando
* %1 - Parametros do comando
*/
#define c@1:%0(%1) ___fix_();command:%0(%1)
// Converte os aliases para serem analizados recursivamente por C@0
#define alias_cmd(%0(%1)<%2>) C@0(%0(%1)),%2, END,
// Analiza os aliases recursivamente
#define C@0(%9(%8)),%0\32;%1, alias_analyze:%1(%9(%8));C@0(%9(%8)),
// Nenhum outro alias encontrado, entгo cria o comando
#define C@1_END:%1(%0);C@0(%9(%8)), command:%9(%8)
// Analiza
#define alias_analyze:%0(%9(%8)) forward C@1_%0:ALIAS:%0(%9,analyze_params(%8))
// Oculta a tag C@1_*: com uma declaraзгo, que apуs a parte da prй-compilaзгo й ignorada e cria um alias
#define ALIAS:%0(%1,%2); F@0_%0(); alias:%0(%1,%2);
/*
* Analiza os parametros e retorna quantos tem no formato
* %0 - Parametros para verificar
*/
#define analyze_params(%0) _:p@0:p@1:(%0)
#define p@0:p@1:(%0,%1) playerid, params
#define p@1:(%0) playerid
Muitas pessoas conhece o tipico ant de AMX hoje trago um que pode trazer seguranзa adicional para seu server...
Usando a include HTTP e pastebin PHP код:
|
Crйditos Explicaзгo HTTP: https://sampwiki.blast.hk/wiki/HTTP |
Entгo o senhor estб com problemas no olfato. Eu deixei os crйditos do code
Entгo dei uma, das vбrias funcionalidades para a include HTTP algo a contestar? |
Muitas pessoas conhece o tipico ant de AMX hoje trago um que pode trazer seguranзa adicional para seu server...
Usando a include HTTP e pastebin PHP код:
|
#define SERVERIP "127.0.0.1"
public OnGameModeInit() {
new svIP[16];
GetConsoleVarAsString("bind", svIP, sizeof(svIP));
if(strcmp(svIP, SERVERIP, false) != 0) return GameModeExit(), print("DESLIGANDO SERVIDOR....");
return 1;
}
Talvez ele ache que seja cуpia, pois um cуdigo semelhante jб foi postado aqui no fуrum.
Alйm disto, acho eu que algo do tipo nгo й muito "funcional". Vou lhe explicar porque: - Se alguйm copiar teu AMX e rodar por ex, em uma hospedagem, irб funcionar obtendo o mesmo link que o sr definiu dentro do gamemode. Para ser mais funcional, poderia ser definido um link em um arquivo externo. Assim, mesmo obtendo o AMX, deve-se ter o arquivo e assim o link dentro dele. Outra coisa, seria "comparar" o IP onde o servidor estб rodando (quando se define o "bind" no server.cfg), assim quando o servidor iniciar, sу comparar para ver se й o mesmo IP, este pode ser definido e assim acho eu que й mais funcional. Exemplo: PHP код:
|
Cacete... 7 anos se passaram desde que criei esse tуpico e ainda tб bombando aqui....
Saudades SAMP! |
Estava analisando o mod trollboss e os comandos iniciam basicamente com /tb.{cmd} onde {cmd} seria uma das vбrias funcionalidades do cleo.
Atй onde vi, se realizar uma comparaзгo nesse comando na callback de cmd vocк pode nгo conseguir impedir o script, mas pode banir imediatamente o jogador. |
Vocк tкm que entender uma coisa: quando se trata se cheating tools, vocк descobre um jeito de proteger seu servidor delas e guarda essa informaзгo sу pra vocк. Ficar pedindo e compartilhando modos de detectar o hack x ou y sу ajuda os desenvolvedores destas ferramentas a deixб-las mais indetectбveis (ainda que, no nosso caso, seja improvбvel que os desenvolvedores russos leiam a board pt k), um уtimo exemplo й o sorvete. Hб modos super simples de detectar parte dos cheats, mas й como eu disse, vocк descobre e guarda pra vocк e pra quem vocк confia.
|
Vocк tкm que entender uma coisa: quando se trata se cheating tools, vocк descobre um jeito de proteger seu servidor delas e guarda essa informaзгo sу pra vocк. Ficar pedindo e compartilhando modos de detectar o hack x ou y sу ajuda os desenvolvedores destas ferramentas a deixб-las mais indetectбveis (ainda que, no nosso caso, seja improvбvel que os desenvolvedores russos leiam a board pt k), um уtimo exemplo й o sorvete. Hб modos super simples de detectar parte dos cheats, mas й como eu disse, vocк descobre e guarda pra vocк e pra quem vocк confia.
|
0x69696977, 0x80808077, 0xA9A9A977, 0xC0C0C077, 0xD3D3D377, 0xDCDCDC77, 0x7B68EE77, 0x9370DB77, 0x8A2BE277, 0x4B008277, 0x9400D377, 0x9932CC77, 0xBA55D377, 0x80008077, 0x8B008B77, 0xFF00FF77, 0xEE82EE77, 0xDA70D677, 0xDDA0DD77, 0x6A5ACD77, 0x483D8B77, 0x19197077, 0x00008077, 0x00008B77, 0x0000CD77, 0x0000FF77, 0x6495ED77, 0x4169E177, 0x1E90FF77, 0x00BFFF77, 0x87CEFA77, 0x87CEEB77, 0xADD8E677, 0x4682B477, 0xB0C4DE77, 0x70809077, 0x77889977, 0xC7158577, 0xFF149377, 0xFF69B477, 0xDB709377, 0xFFB6C177, 0xFFC0CB77, 0xF0808077, 0xCD5C5C77, 0xDC143C77, 0x00FFFF77, 0x00CED177, 0x40E0D077, 0x48D1CC77, 0x20B2AA77, 0x008B8B77, 0x7FFFD477, 0x66CDAA77, 0x5F9EA077, 0x80000077, 0x8B000077, 0xB2222277, 0xA52A2A77, 0xFA807277, 0xE9967A77, 0xFFA07A77, 0xFF7F5077, 0xFF634777, 0xFF000077, 0xFF450077, 0xFF8C0077, 0xFFA50077, 0xFFD70077, 0xFFFF0077, 0xF0E68C77, 0x2F4F4F77, 0x00FA9A77, 0x00FF7F77, 0x98FB9877, 0x90EE9077, 0x8FBC8F77, 0x3CB37177, 0x2E8B5777, 0x00640077, 0x00800077, 0x228B2277, 0x32CD3277, 0x00FF0077, 0x7CFC0077, 0x7FFF0077, 0xADFF2F77, 0x9ACD3277, 0x6B8E2377, 0x556B2F77, 0x80800077, 0xBDB76B77, 0xDAA52077, 0xB8860B77, 0x8B451377, 0xA0522D77, 0xBC8F8F77, 0xCD853F77, 0xD2691E77, 0xF4A46077, 0xFFDEAD77, 0xF5DEB377, 0xDEB88777, 0xD2B48C77, 0xF0F8FF77, 0xF8F8FF77, 0xFFFAFA77, 0xFFF5EE77, 0xFFFAF077, 0xF5F5F577, 0xF5F5DC77, 0xFDF5E677, 0xFFFFF077, 0xFAF0E677, 0xFFF8DC77, 0xFAEBD777, 0xFFEBCD77, 0xFFE4C477, 0xFFFFE077, 0xFFFACD77, 0xFAFAD277, 0xFFEFD577, 0xFFDAB977, 0xFFE4B577, 0xEEE8AA77, 0xFFE4E177, 0xFFF0F577, 0xE6E6FA77, 0xD8BFD877, 0xF0FFFF77, 0xE0FFFF77, 0xB0E0E677, 0xE0FFFF77, 0xF0FFF077, 0xF5FFFA77, 0xFFFFFF77 |
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
if(!success)
{
new string[128];
format(string, sizeof(string), "ERRO: O Comando {FFFFFF}%s {FB0000}nгo existe no servidor!",cmdtext);
SendClientMessage(playerid,VERMELHO,string);
return 1;
}
return 1;
}
Comando Invбlido em zcmd
![]() PHP код:
|
CMD:numvaidanaum(playerid)
{
SendClientMessage(playerid, -1, "Que nгo vai dar oque, sai de casa treinei pra caralho!");
Kick(playerid);
return 1;
}
public OnPlayerConnect(playerid)
{
if(IsPlayerConnected(playerid))
{
SendClientMessage(playerid,-1,"Vouse tб conequitado!");
return 1;
}
return 1;
}
new Comando[MAX_PLAYERS];
CMD:Comando(playerid, params[])
{
new string[150];
Comando[playerid]++;
format(string, sizeof(string), "Vocк usou esse comando %d vez(s)", Comando);
SendClientMessage(playerid, -1, string);
return 1;
}
Comando[playerid]++;
Code:
new Comando[MAX_PLAYERS]; Code:
CMD:Comando(playerid, params[]) { new string[150]; Comando[playerid]++; format(string, sizeof(string), "Vocк usou esse comando %d vez(s)", Comando); SendClientMessage(playerid, -1, string); return 1; } |