U3Games

Games | Desarrollo & Soporte => SAMP | Desarrollo de Servidores => San Andreas Multi Player => SAMP | Filter Scripts => Mensaje iniciado por: Swarlog en May 13, 2025, 06:28 PM

Título: Mensajes al subir/bajar de un vehiculo (By GROVE4L)
Publicado por: Swarlog en May 13, 2025, 06:28 PM
● Información Adicional:

Ideal para servidores de roll, con este script cuando un jugador se monta o baja de un vehiculo se anuncia de forma automática en el chat. Además, dispone de un sistema de distancia, para que solo los jugadores que se encuentran cerca de dicho vehiculo puedan leer ese mensaje automático.

● Código:

// By GROVE4L

#include <a_samp>

#define FILTERSCRIPT
#define COLOR 0xC2A2DAAA

forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5);

new String[256];
new Nombre[24];
new Si[MAX_PLAYERS];

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    GetPlayerName(playerid,Nombre,sizeof(Nombre));
    format(String, sizeof(String), "* %s Se sube a su vehiculo", Nombre);
    ProxDetector(30.0, playerid, String, COLOR,COLOR,COLOR,COLOR,COLOR);
    return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
    GetPlayerName(playerid,Nombre,sizeof(Nombre));
    format(String, sizeof(String), "* %s Se baja del Vehiculo", Nombre);
    ProxDetector(30.0, playerid, String, COLOR,COLOR,COLOR,COLOR,COLOR);
    return 1;
}

public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
{
    if(IsPlayerConnected(playerid))
    {
        new Float:posx, Float:posy, Float:posz;
        new Float:oldposx, Float:oldposy, Float:oldposz;
        new Float:tempposx, Float:tempposy, Float:tempposz;
        GetPlayerPos(playerid, oldposx, oldposy, oldposz);
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(IsPlayerConnected(i) && (GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i)))
            {
                if(!Si[i])
                {
                    GetPlayerPos(i, posx, posy, posz);
                    tempposx = (oldposx -posx);
                    tempposy = (oldposy -posy);
                    tempposz = (oldposz -posz);
                    if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
                    {
                        SendClientMessage(i, col1, string);
                    }
                    else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
                    {
                        SendClientMessage(i, col2, string);
                    }
                    else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
                    {
                        SendClientMessage(i, col3, string);
                    }
                    else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
                    {
                        SendClientMessage(i, col4, string);
                    }
                    else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
                    {
                        SendClientMessage(i, col5, string);
                    }
                }
                else
                {
                    SendClientMessage(i, col1, string);
                }
            }
        }
    }
    return 1;
}

// By GROVE4L