Portal SAMP
Fixado: Códigos Úteis - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: Fixado: Códigos Úteis (/showthread.php?tid=73)

Páginas: 1 2 3 4 5 6


RE: Códigos Úteis - Burunu - 11/12/2020

Comando para cometer Suicídio:

Código PHP:
CMD:kill(playeridparams){
    new 
msg[256];
    
SetPlayerHealth(playerid0.0); //Kill
    
format(msgsizeof(msg), "{DC1C1C}|KILL| {FFFFFF}O Jogador {DC1C1C}%s {FFFFFF}Cometeu Suicidio!"GetPlayerNameEx(playerid));
    
SendClientMessageToAll(-1msg);
    return 
1;


Código PHP:
stock GetPlayerNameEx(playerid){
    new 
Nome[MAX_PLAYER_NAME];
    
GetPlayerName(playeridNomesizeof(Nome));
    return 
Nome;




RE: Códigos Úteis - NelsonC. - 15/12/2020

Esse sistema eu comprei do blueN e funcionou perfeitamente no meu gm.
Ele bloqueia a conexão de quem entrou em menos de 2 segundos, poderão usar isso para bloquear a conexão de bots.

PS: O código está adaptado para o meu gm, só vocês adaptarem para o vosso.

Código:
#if !defined varGet
#define varGet(%0)      getproperty(0,%0)
#endif


#if !defined varSet
#define varSet(%0,%1) setproperty(0, %0, %1)
#endif

stock botGetIP[24];

#define IsPlayerBot(%0)\
            GetPlayerPing(%0) == 65535 && (gettime() - varGet((GetPlayerIp(%0, botGetIP, sizeof botGetIP), botGetIP)) > 5)

hook OnPlayerConnect(playerid)
{

    if(IsPlayerNPC(playerid)) return false;
    static playerip[24];
    GetPlayerIp(playerid, playerip, 24);
    if(gettime() - varGet(playerip) < 2)
    {
        strcat(playerip, "di_S");
        if(gettime() - varGet(playerip) < 3)
        {
            return false;
        }
        printf("%d Entrou em menos de 2 segundos", playerid);
        GetPlayerIp(playerid, playerip, 20);
        varSet(playerip, gettime());
        strcat(playerip, "x");
        static timers ;
        timers = varGet(playerip);
        varSet(playerip, 1+ timers);
        if(timers > 2)
        {
            playerip[strlen(playerip) - 2] = 0;
            printf("BOT: ID -> %d IP -> %s", playerid, playerip);
            BanEx(playerid, "Bot Connect");
        }
    }
    return varSet(playerip, gettime());
}


hook OnPlayerDisconnect(playerid, reason)
{
    if(reason == 2)
    {
        static playerip[20];
        GetPlayerIp(playerid, playerip, 20);
        strcat(playerip, "di_S");
        varSet(playerip, gettime());
    }
    return 1;
}



RE: Códigos Úteis - NelsonC. - 18/12/2020

Código PHP:
stock IsValidEmail(const email[]) // by Bruno13

    new size strlen(email); 

    if(size 7
        return false

    new atFinded
        i

    for(0sizei++) 
    
        switch(email[i]) 
        
            case 'A'..'Z''a'..'z''0'..'9''_''.''-': continue; 
            default: 
            
                if(email[i] == '@'
                
                    atFinded++; 
                    continue; 
                

                return false
            
        
    
    return (atFinded == 1); 




RE: Códigos Úteis - Levi.M - 25/02/2021

Animações
Código PHP:
//animações by Levi.M

CMD:renderse(playerid)return SetPlayerSpecialAction(playerid10);
CMD:ligar(playerid)return SetPlayerSpecialAction(playerid11);
CMD:desligar(playerid)return SetPlayerSpecialAction(playerid13);
CMD:bebado(playerid)return ApplyAnimation(playerid"PED""WALK_DRUNK"4.011110);
CMD:bomba(playerid)return ApplyAnimation(playerid"BOMBER""BOM_Plant"4.000000);
CMD:apontar(playerid)return ApplyAnimation(playerid"ped""ARRESTgun"4.00111, -1);
CMD:merda(playerid)return ApplyAnimation(playerid"RAPPING""Laugh_01"4.000000);
CMD:mascara(playerid)return ApplyAnimation(playerid"SHOP""ROB_Shifty"4.000000);
CMD:roubar(playerid)return ApplyAnimation(playerid"SHOP""ROB_Loop_Threat"4.010000);
CMD:cruzarbraco(playerid)return ApplyAnimation(playerid"COP_AMBIENT""Coplook_loop"4.00111, -1);
CMD:deitar(playerid)return ApplyAnimation(playerid"BEACH""bather"4.010000);
CMD:abaixar(playerid)return ApplyAnimation(playerid"ped""cower"3.010000);
CMD:vomitar(playerid)return ApplyAnimation(playerid"FOOD""EAT_Vomit_P"3.000000);
CMD:comer(playerid)return ApplyAnimation(playerid"FOOD""EAT_Burger"3.000000);
CMD:rap(playerid)return ApplyAnimation(playerid"ON_LOOKERS""wave_loop"4.010000);
CMD:passaramao(playerid)return ApplyAnimation(playerid"SWEET""sweet_ass_slap"4.000000);
CMD:cobrar(playerid)return ApplyAnimation(playerid"DEALER""DEALER_DEAL"4.000000);
CMD:overdose(playerid)return ApplyAnimation(playerid"CRACK""crckdeth2"4.010000);
CMD:fumar(playerid)return ApplyAnimation(playerid"SMOKING""M_smklean_loop"4.010000);
CMD:sentar(playerid)return ApplyAnimation(playerid"BEACH""ParkSit_M_loop"4.010000);
CMD:conversar(playerid)return ApplyAnimation(playerid"PED""IDLE_CHAT"4.000000);
CMD:fodase(playerid)return ApplyAnimation(playerid"PED""fucku"4.000000);
CMD:taichi(playerid)return ApplyAnimation(playerid"PARK""Tai_Chi_Loop"4.010000);
CMD:observar(playerid)return ApplyAnimation(playerid"BAR""dnk_stndF_loop"4.010000);


CMD:animes(playerid)
{
    
SendClientMessage(playerid, -1"Lista de Animes :");
    
SendClientMessage(playerid, -1"/renderse /ligar /desligar /bebado /bomba /apontar /merda /mascararse");
    
SendClientMessage(playerid, -1"/roubar /cruzarb /deitar /abaixar /vomitar /comer /rap /passaramao");
    
SendClientMessage(playerid, -1"/cobrar /overdose /fumar //observar /sentar /conversar /fodase /taichi");
    return 
1;




Configurações de Nick
Código PHP:
CMD:nickoff(playerid)
{
    for(new 
0MAX_PLAYERSi++) ShowPlayerNameTagForPlayer(playeridifalse);
    
GameTextForPlayer(playerid"~W~Nicks Desativos ~R~off"50005);
    return 
1;
}

CMD:nickoon(playerid)
{
for(new 
0MAX_PLAYERSi++) ShowPlayerNameTagForPlayer(playeriditrue);
GameTextForPlayer(playerid"~W~Nicks Ativos ~R~"50005);
return 
1;



Morrer ao tentar roubar carro
Código PHP:
public OnPlayerEnterVehicle(playeridvehicleidispassenger)
{
    
SendClientMessage(playerid, -1"Ao tentar roubar um veículo, morrerá!");
    if(!
ispassenger && IsVehicleOccupied(vehicleid)) SetPlayerHealth(playerid0.0);
    return 
1;
}

//No fim do gamemode adicione:
stock IsVehicleOccupied(vehicleid)
{
    for(new 
0MAX_PLAYERSi++)
        if(
IsPlayerInVehicle(ivehicleid) && GetPlayerState(i) == PLAYER_STATE_DRIVER)
        return 
1;
    return 
0;




RE: Códigos Úteis - mau.tito - 12/03/2021

Base para sistema de caixa eletrônico, com quantidade de dinheiro para movimentação, agora só precisa utilizar a criatividade de vocês.
Código PHP:
#include a_samp
#include    zcmd

#define    MAX_ATM  2

new Text3D:TexATM[MAX_ATM];
enum infoatm
{
cID,
Float:cPosX,
Float:cPosY,
Float:cPosZ,
Float:cPosA,
cMax,
cInt
}
new 
CaixaInfo[MAX_ATM][infoatm] = {
{
193241507.66602, -1755.5620113.13839180.96274250001},
{
193241507.66602, -1755.5620113.13839180.96274250001}
};

public 
OnGameModeInit()
{
static 
atm;
do {
CreateDynamicObject(CaixaInfo[atm][cID], CaixaInfo[atm][cPosX],CaixaInfo[atm][cPosY],CaixaInfo[atm][cPosZ], 0.000000.00000,CaixaInfo[atm][cPosA]);
TexATM[atm] = Create3DTextLabel("  >> ATM << \n" , -1,CaixaInfo[atm][cPosX],CaixaInfo[atm][cPosY],CaixaInfo[atm][cPosZ], 10.000);
    atm++;
}
while(
atm MAX_ATM);
return 
1;
}

public 
OnGameModeExit()
{
return 
1;
}
command(atmplayeridparams[])
{
static 
atm , var[100];
do {
    if(IsPlayerInRangeOfPoint(playerid1.0CaixaInfo[atm][cPos][0],CaixaInfo[atm][cPos][1],CaixaInfo[atm][cPos][2]))
    {
format(var, sizeof(var), "O Caixa Possui R$ %i de dinheiro disponivel para transferencia.",CaixaInfo[atm][cMax]);
SendClientMessage(playerid, -1, var);
    }
    atm++;
}
while(
atm MAX_ATM);
return 
1;




RE: Códigos Úteis - Levi.M - 18/03/2021

Animações para actors
Código PHP:
ApplyActorAnimation(actorid"ROB_BANK","SHP_HandsUp_Scr"4.001110); //HandsUp
ApplyActorAnimation(actorid"PED","WALK_drunk",4.1,0,1,1,1,1); //Drunk
ApplyActorAnimation(actorid"RAPPING""Laugh_01"4.000000); // Laugh
ApplyActorAnimation(actorid"SHOP""ROB_Loop_Threat"4.010000); // Rob
ApplyActorAnimation(actorid"BEACH""bather"4.010000); // Lay down
ApplyActorAnimation(actorid"ON_LOOKERS""wave_loop"4.010000); // Wave
ApplyActorAnimation(actorid"CRACK""crckdeth2"4.010000); // Dieing of Crack
ApplyActorAnimation(actorid"BEACH""ParkSit_M_loop"4.010000); // Sit
ApplyActorAnimation(actorid"SMOKING""F_smklean_loop"4.010000); // Female Smoking
ApplyActorAnimation(actorid"PED","IDLE_CHAT",4.000000); //chat
ApplyActorAnimation(actorid"PED","fucku",4.0,0,0,0,0,0); // fucku
ApplyActorAnimation(actorid"PARK","Tai_Chi_Loop",4.0,1,0,0,0,0); // taichi
ApplyActorAnimation(actorid"SWEET""sweet_ass_slap"4.000000); // Ass Slapping
ApplyActorAnimation(actorid"DEALER""DEALER_DEAL"4.000000); // Deal
ApplyActorAnimation(actorid"FOOD""EAT_Burger"3.000000); // Eat Burger
ApplyActorAnimation(actorid"ped""cower"3.010000); // Taking Cover
ApplyActorAnimation(actorid"FOOD""EAT_Vomit_P"3.000000); // Vomit BAH!
ApplyActorAnimation(actorid"BOMBER","BOM_Plant_Loop",4.0,1,0,0,1,0); //Plantar Bomba
ApplyActorAnimation(actorid"COP_AMBIENT""Coplook_loop"4.00111, -1); //Cruzar os Braços
ApplyActorAnimation(actorid"BAR""dnk_stndF_loop"4.010000); //Só observo shauhusa 



RE: Códigos Úteis - SvCross. - 02/04/2021

Dois comandos talvez úteis elaborados por mim com base nos tutoriais do Chainksain:
/irpara x y z (seta o usufruidor há alguma coordenada);
/enviarpara [ID] x y z (seta o player ID receptor há alguma coordenada(exclusivo há administradores).

Código:
// Comando para setar o jogador usufruidor a alguma coordenada
CMD:irpara(playerid, params[])
{
    new Float:posi[3];
    if(sscanf(params, "fff", posi[0], posi[1], posi[2])) // Verifica se o jogador utilizou o formato certo com "x, y e z"
        return SendClientMessage(playerid, -1, "Adicione a posição [x] [y] e [z] corretamente."); // Retorna a mensagem caso não utilizou

    SetPlayerPos(playerid, posi[0], posi[1], posi[2]);    // Seta a posição caso utilizou o comando certamente
    return 1;
}

Dúvidas ou melhorias, me contatem.


Código:
// Comando para setar um jogador respectivo a alguma coordenada
CMD:enviarpara(playerid, params[])
{
    new giveplayerid, Float:posi[3];
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "* Você não é administrador."); // Verifica se o ator é um administrador
    if(!IsPlayerConnected(giveplayerid) || giveplayerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "O ID não existe"); // Verifica se o ID existe, caso não, retorna uma mensagem

    if(sscanf(params, "ufff", giveplayerid, posi[0], posi[1], posi[2])) // Verifica se o jogador utilizou o formato certo com "ID x, y e z"
        return SendClientMessage(playerid, -1, "Use: /enviarpara ID X Y e Z"); // Retorna a mensagem caso não tenha utilizado

    SetPlayerPos(giveplayerid, posi[0], posi[1], posi[2]);    // Seta a posição ao player caso utilizou o comando certamente
    return 1;
}



Command Performed (Comando valido ou invalido) - Vieira 69 - 11/04/2021

Código:
public OnPlayerCommandPerformed(playerid, cmdtext[], success) // COLOCA EM QQ CANTO
{
new string[128];

format(string, sizeof(string), "{FFA500}O Comando {ffffff}(%s) {ff0000}e invalido, Use: {fffff}(/comandos)", cmdtext);
if(!success)
{
SendClientMessage(playerid, -1, string);
}
return 1;
}



RE: Códigos Úteis - SrBlue - 03/09/2021

Código:
stock IsPlayerOnline(name[])
{
    new PlayerName2[MAX_PLAYER_NAME];
    foreach(Player, i)
    {
           GetPlayerName(i, PlayerName2, sizeof(PlayerName2));
           if(strcmp(name,PlayerName2,true)==0)
        {
               return true;
        }
    }
    return 0;
}
ver se o jogador está online pelo name


RE: Códigos Úteis - SrBlue - 04/09/2021

Código:
stock SafeReturnCode(const src[], const bytes = sizeof (src))
{
    // Push the lengths for the memcpy (needs "pri", so done first).
    #emit LOAD.S.pri    bytes
    #emit SHL.C.pri     2
    #emit PUSH.pri
    #emit PUSH.pri

    // Get the parameter count.
    #emit LOAD.S.pri    0
    #emit MOVE.alt
    #emit ADD.C         8
    #emit LOAD.I

    // Get the desination pointer.
    #emit ADD
    #emit ADD.C         12
    #emit LOAD.I

    // Do a raw memcpy (pointer to pointer, not array to array).
    #emit PUSH.C        0
    #emit PUSH.S        src
    #emit PUSH.pri
    #emit PUSH.C        20
    #emit SYSREQ.C      memcpy

    // Return to the caller's caller.
    #emit MOVE.pri
    #emit SCTRL         5
    #emit SCTRL         4
    #emit RETN

    // Compiler cleanup.
    return 0;
}


#define safe_return%0; return SafeReturnCode(%0),(%0);
user:
Código:
safe_return FunCaoNome();
para retornar a função sem erros e com modo de segurança, evitar bugs que pode casha a gm.