RE: Códigos Úteis - White_Blue - 12/05/2022
Script para detecção de players com IP estrangeiro( ANTI-VPN )
Lembrando que só funcionará caso a gamemode estiver conectada em uma host.
Código:
Código PHP: // Topo do script #define MAX_COUNTRY_NAME 64
public OnPlayerConnect(playerid) { new string[128], IP[16+1]; GetPlayerIp(playerid, IP, sizeof(IP));
if(strcmp("127.0.0.1", GetPlayerIPEx(playerid), true) != 0) { format(string, 128, "ip-api.com/json/%s", IP); HTTP(playerid, HTTP_GET, string, "", "HTTP_Connect"); } return 1; }
forward HTTP_Connect(playerid, response_codec, data[]); public HTTP_Connect(playerid, response_codec, data[]) { if(response_codec != 200) { SetPVarString(playerid, "Pais", "Desconhecido"), SetPVarString(playerid, "Estado", "Desconhecido"), SetPVarString(playerid, "Cidade", "Desconhecida"); return 1; }
new string[128], pos; if(strfind(data, "Reserved", true) == -1 && strlen(data) >= 15) { if((pos = strfind(data, "\"country\":")) != -1) { pos += 11; strmid(string, data, pos, strfind(data, "\"", true, pos)); SetPVarString(playerid, "Pais", string); } if((pos = strfind(data, "\"regionName\":")) != -1) { pos += 14; strmid(string, data, pos, strfind(data, "\"", true, pos)); SetPVarString(playerid, "Estado", string); } if((pos = strfind(data, "\"city\":")) != -1) { pos += 8; strmid(string, data, pos, strfind(data, "\"", true, pos)); SetPVarString(playerid, "Cidade", string); } }
GetPVarString(playerid, "Pais", string, MAX_COUNTRY_NAME); if(strfind(string, "Brazil", true) == -1 && strfind(string, "Portugal", true) == -1 && strfind(string, "Desconhecido", true) == -1) { SendClientMessage(playerid, 0xFF0000AA, "A entrada de seu IP não é permitida."); Kick(playerid); } return 0; }
stock GetPlayerCountry(playerid) { new string[MAX_COUNTRY_NAME]; GetPVarString(playerid, "Pais", string, MAX_COUNTRY_NAME); return string; }
stock GetPlayerRegion(playerid) { new string[MAX_COUNTRY_NAME]; GetPVarString(playerid, "Estado", string, MAX_COUNTRY_NAME); return string; } stock GetPlayerCity(playerid) { new string[MAX_COUNTRY_NAME]; GetPVarString(playerid, "Cidade", string, MAX_COUNTRY_NAME); return string; }
RE: Códigos Úteis - Dr Editor - 13/07/2022
Função simples que retorna probabilidade. Retorna 1 para provável ou 0 para não.
Código: stock GetProbability(chance)
{
if(chance < 1)
return false;
else if(chance > 99)
return true;
chance /= 2;
new valueCalc = 100;
new valueRnd = random(valueCalc);
new range1 = valueCalc / 2 - chance;
new range2 = valueCalc / 2 + chance;
return (valueRnd >= range1 && valueRnd <= range2);
}
Código teste:
Código: new countYes, countNo;
for(new i = 0; i < 50; i ++)
{
new res = GetProbability(10); // 1 - 99
if(res) countYes ++;
else countNo ++;
}
printf("Result: Yes = %i | No = %i", countYes, countNo);
RE: Códigos Úteis - Carlos Victor - 25/10/2022
Muitos gostariam de ativar as lojas no famoso shopping, como eu, a um tempo atrás não sabia como fazer isso, portanto, hoje deixo o código para remover os objetos e deixar aberto as lojinhas do shopping, ai vocês podem mapear do jeito de vocês.
Código PHP: //OnPlayerConnect RemoveBuildingForPlayer(playerid, 6130, 1117.5859, -1490.0078, 32.7188, 0.25); RemoveBuildingForPlayer(playerid, 6255, 1117.5859, -1490.0078, 32.7188, 0.25); RemoveBuildingForPlayer(playerid, 762, 1175.3594, -1420.1875, 19.8828, 0.25);
//OnGameModeInit CreateObject(19322, 1117.58594, -1490.00781, 32.71880, 0.00000, 0.00000, 0.00000); CreateObject(19323, 1117.58594, -1490.00781, 32.71880, 0.00000, 0.00000, 0.00000);
Foto:
RE: Códigos Úteis - Carlos Victor - 28/10/2022
Uma função que deveria ser nativa, e todos deveriam usar para seus sistemas. Algo que adianta muito em nossas vidas.
Código: stock GetXYFrontPlayer(playerid, &Float:x, &Float:y, Float:distance)
{
new Float:a;
GetPlayerPos(playerid, x, y, a);
GetPlayerFacingAngle(playerid, a);
if(GetPlayerVehicleID(playerid))
GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
x += (distance * floatsin(-a, degrees));
y += (distance * floatcos(-a, degrees));
}
stock GetXYBehindPlayer(playerid, &Float:x, &Float:y, Float:distance)
{
new Float:a;
GetPlayerPos(playerid, x, y, a);
GetPlayerFacingAngle(playerid, a);
if(GetPlayerVehicleID(playerid))
GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
x -= (distance * floatsin(-a, degrees));
y -= (distance * floatcos(-a, degrees));
}
Basicamente as funções acimas pegam a posição da frente e das costas de um jogador de acordo com a distância definida.
O moto de uso é bem simples.
Código: new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z); //Pego a posição padrão do jogador.
GetXYFrontPlayer(playerid, x, y, 1); //Aqui as posições X e Y sofrem mudanças.
SetPlayerCheckpoint(playerid, x, y, z, 1); //Aqui eu seto a posição modificada.
GetXYFrontPlayer - Pega a posição frontal.
GetXYBehindPlayer - Pega a posição de trás.
RE: Códigos Úteis - White_Blue - 02/01/2023
Código para retornar a distância entre dois players.
Código PHP: stock GetDistanceBetweenPlayers(playerid, playerid2) { new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2; new Float:tmpdis; GetPlayerPos(playerid, x1, y1, z1); GetPlayerPos(playerid2, x2, y2, z2); tmpdis = floatsqroot(floatpower(floatabs(floatsub(x2, x1)), 2) +floatpower(floatabs(floatsub(y2, y1)), 2)+floatpower(floatabs(floatsub(z2, z1)), 2)); return floatround(tmpdis); }
Exemplo:
Código PHP: CMD:checkd(playerid, params[]) { new plid; if(sscanf(params, "u", plid)) return SendClientMessage(playerid, -1, "Use: /checkd [id]"); if(GetDistanceBetweenPlayers(playerid, plid) < 10) return SendClientMessage(playerid, -1, "Você está próximo!"); else return SendClientMessage(playerid, -1, "Você está longe."); return 1; } stock GetDistanceBetweenPlayers(playerid, playerid2) { new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2; new Float:tmpdis; GetPlayerPos(playerid, x1, y1, z1); GetPlayerPos(playerid2, x2, y2, z2); tmpdis = floatsqroot(floatpower(floatabs(floatsub(x2, x1)), 2) +floatpower(floatabs(floatsub(y2, y1)), 2)+floatpower(floatabs(floatsub(z2, z1)), 2)); return floatround(tmpdis); }
RE: Códigos Úteis - Device-Black - 03/02/2023
(02/01/2023 00:53)White_Blue Escreveu: Código para retornar a distância entre dois players.
Código PHP: stock GetDistanceBetweenPlayers(playerid, playerid2) { new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2; new Float:tmpdis; GetPlayerPos(playerid, x1, y1, z1); GetPlayerPos(playerid2, x2, y2, z2); tmpdis = floatsqroot(floatpower(floatabs(floatsub(x2, x1)), 2) +floatpower(floatabs(floatsub(y2, y1)), 2)+floatpower(floatabs(floatsub(z2, z1)), 2)); return floatround(tmpdis); }
Exemplo:
Código PHP: CMD:checkd(playerid, params[]) { new plid; if(sscanf(params, "u", plid)) return SendClientMessage(playerid, -1, "Use: /checkd [id]"); if(GetDistanceBetweenPlayers(playerid, plid) < 10) return SendClientMessage(playerid, -1, "Você está próximo!"); else return SendClientMessage(playerid, -1, "Você está longe."); return 1; } stock GetDistanceBetweenPlayers(playerid, playerid2) { new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2; new Float:tmpdis; GetPlayerPos(playerid, x1, y1, z1); GetPlayerPos(playerid2, x2, y2, z2); tmpdis = floatsqroot(floatpower(floatabs(floatsub(x2, x1)), 2) +floatpower(floatabs(floatsub(y2, y1)), 2)+floatpower(floatabs(floatsub(z2, z1)), 2)); return floatround(tmpdis); }
Este código é inútil, pois pode ser feito facilmente de uma maneira simples como essa:
Código PHP: stock Float:GetDistanceBetweenPlayers(playerid, targetid) { static Float:x, Float:y, Float:z; GetPlayerPos(targetid, x, y, z);
// funcao nativa encontrada em: a_players.inc return GetPlayerDistanceFromPoint(playerid, x, y, z); }
Funciona da mesma forma, porém o seu codigo ocupa mais espaço tanto visual quanto em memoria
Eu mesmo não gosto de ficar ocupando linha desnecessáriamente... Da uma agonia da peste
RE: Códigos Úteis - DM110 - 02/03/2023
ativar função camaleao no veiculo. divirta-se
Código PHP: CMD:camaleao(playerid) { if( !IsPlayerInAnyVehicle(playerid) ) return SendClientMessage(playerid, -1, "Voce precisa esta em um veiculo!");
SetTimerEx("MudarCor", 1000, false, "i", playerid); ChangeVehicleColor(GetPlayerVehicleID(playerid), random(128), random(128)); return 1; } forward MudarCor(playerid); public MudarCor(playerid) { if( !IsPlayerInAnyVehicle(playerid) ) { return 1; } ChangeVehicleColor(GetPlayerVehicleID(playerid), random(128), random(128)); SetTimerEx("MudarCor", 1000, false, "i", playerid); return 1; }
RE: Códigos Úteis - Device-Black - 04/09/2023
Alguns mods e apks possuem o auto-reconnect, malfeito faz com que haja um flood de conexão, emitindo uma mensagem no log por atingir o limite do tempo de conexão.. uma não, varias!
Esse código bloqueia o IP do jogador que desconectou
Mantem bloqueado por 30 segundos, evitando sua reconexao instantânea e a irritante mensagem no log.
Código PHP: #define IP_MAX_LEN (16) #define BLOCK_TIME (30)
new pAddr[MAX_PLAYERS][IP_MAX_LEN];
public OnIncomingConnection(playerid, ip_address[], port) { pAddr[playerid][0] = EOS; strcat(pAddr[playerid], ip_address, IP_MAX_LEN); return 1; }
public OnPlayerDisconnect(playerid, reason) { BlockIpAddress(pAddr[playerid], (BLOCK_TIME * 1000)); return 1; }
RE: Códigos Úteis - zBreno - 05/09/2023
da crash no deamx na versão executável feito pelo daniel cortez do fórum pro pawn russo eu testei e funciona porem existe outra versão do de amx feita em lua https://github.com/AmyrAhmady/DeAMX nessa eu já não dizer se funciona
@___If_u_can_read_this_u_r_nerd(); // 10 different ways to crash DeAMX
@___If_u_can_read_this_u_r_nerd() // and also a nice tag for exported functions table in the AMX file
{ // by Daniel_Cortez \\ pro-pawn.ru
#emit stack 0x7FFFFFFF // wtf (1) (stack over... overf*ck!?)
#emit inc.s cellmax // wtf (2) (this one should probably make DeAMX allocate all available memory and lag forever)
static const ___[][] = {"pro-pawn", ".ru"}; // pretty old anti-deamx trick
#emit retn
#emit load.s.pri ___ // wtf (3) (opcode outside of function?)
#emit proc // wtf (4) (if DeAMX hasn't crashed already, it would think it is a new function)
#emit proc // wtf (5) (a function inside of another function!?)
#emit fill cellmax // wtf (6) (fill random memory block with 0xFFFFFFFF)
#emit proc
#emit stack 1 // wtf (7) (compiler usually allocates 4 bytes or 4*N for arrays of N elements)
#emit stor.alt ___ // wtf (8) (...)
#emit strb.i 2 // wtf (9)
#emit switch 0
#emit retn // wtf (10) (no "casetbl" opcodes before retn - invalid switch statement?)
L1:
#emit jump L1 // avoid compiler crash from "#emit switch"
#emit zero cellmin // wtf (11) (nonexistent address)
}
feito pelo bruno ips team procura por chaves abertas no seu código salve isso como html cole o código e mande procurar
<script>
function checkIt(str) {
var arrBracket = new Array();
var arrLineBkt = new Array();
var opens = 0;
var lines = 0;
for(i = 0, j = str.length; i != j; i++) {
if(str[i] == '{') {
arrBracket[opens] = 1;
arrLineBkt[opens] = lines;
opens++;
}
if(str[i] == '}') {
arrBracket[opens] = 0;
if(!opens) {
return alert("ERROR EXCESSIVE '}' on line " + lines);
}
opens--;
}
if(str[i] == '\n') lines ++;
}
if(!opens) {
alert('NO ERROR !!1 YOU IS BEST !!');
}
for(i = 0; i != opens; i++) {
if(arrBracket[i]) {
alert("ERROR '{' on line" + arrLineBkt[i]);
}
}
return true;
}
</script>
<textarea id=area>Put code here</textarea>
<input type=button onClick=checkIt(document.getElementById('area').value) value=Hey />
Random ex - zHypezinXzL - 12/10/2023
Hoje venho trazer uma extensão para a função nativa random, que nos permite manusear com mais opções e não estou dizendo daquela função simples:
Código PHP: randomex ( const val_min, const val_max ) { return ((val_min + random (val_min - val_max)) + 1); }
Não há nenhum problema ao usar a função acima, mas a que venho trazer nos permite manusear com mais operações e correções
- Primeiro vamos entender como funciona a função random, está função não tem nenhuma operação difícil, mas possui seus problemas, um deles é o seu retorno meio estranho, vou lhe mostrar: random (3); ok até aqui normal mas agora vamos analisar os resultados (0, 1, 2), ué cadê o 3? Bem o 3 é a quantia totalizará de números que ele irá retornar como vocês podem ver ele retorna do 0 ao 2 totalizando 3 números. Outro problema é que ele não trabalha com números negativos, caso queira testar verá que ele irá retornar números positivos e meio descontrolados isso provavelmente deve ser um problema nos bits. Isso é tudo que precisamos saber sobre o random.
- Então vamos ao assunto principal, oque a randomex oferece? Ela nos oferece uma manipulação extra que pode fazer coisas que a random não faz como poder escolher a partida dos números há serem retornados N° a N° um exemplo: randomex (2, 5) a sequência que ele irá retornar será (2, 3, 4, 5) diferente da random que só retorna de 0 a N°. Outro oferecimento é a manipulação de números negativos vamos a um exemplo: randomex (0, -2); os valores que serão retornados serão (0, -1, -2). E os últimos oferecimentos é que não é necessário colocar os 2 parâmetros e não é necessário que o "val_min" seja menor que o "val_max" pois a função faz essas verificação e corrige esse problema. Exemplos do uso de somente 1 parâmetro: randomex (3); -> (0, 1, 2, 3) ou randomex (-3); -> (0, -1, -2, -3).
Código PHP: // Author : zHypezinXzL // My Github : https://github.com/zHypezinXzL/
randomex ( const val_min, const val_max = 0 ) { if (val_max == val_min) return val_min; else if (val_min >= 0 && val_max >= 0) if (val_max >= val_min) return val_min + random ((val_max - val_min) + 1); else return val_max + random ((val_min - val_max) + 1); else if (val_min <= 0 && val_max <= 0) if (-val_max >= -val_min) return -(-val_min + random (-(val_max - val_min) + 1)); else return -(-val_max + random (-(val_min - val_max) + 1)); else if (val_max >= val_min) return (val_min + random ((val_max - val_min) + 1)); else return (val_max + random ((val_min - val_max) + 1)); }
Recomendo substituir as random nativas por essa randomex, pois a randomex tem suas correções, mas cuidado para não substituir as randons que estão dentro desta função.
Espero que tenham gostado deste "mini tutorial" sobre random e desta função que trago a vocês ;)
|