[Pedido] RADAR
#1

Gostaria de um sistema de radar de velocidade que quando passasse a mais de 110 km/h tomasse multa de R$2.000 e perdesse 1 ponto na carteira quando chegasse a 21 pontos ele perdia essa permissгo de veiculos terrestres.
eu ja vi varios FS e tals mais queria mesmo era colocar no GM e os fs q axei nao consegui colocar, ate tentei ver de outros gamemodes mais foi dificil :/
se puderem me ajudar agradeзo pois nгo quero tudo de mгo beijada mais sim aprender e vou ficar muito grato! se alguem quiser meu contato sу pedir! vlw a todos que lerem este.!
Reply
#2

O Sistema de radar: ( O Valor da multa varia com a Velocidade que o player estб )

Nas New's( comeзo do GM )
Код:
new UpdateSeconds = 2; // Nгo Mecher
new maxobject = 4;

forward UpdateSpeed(playerid);
enum SavePlayerPosEnum {
Float:LastX,
Float:LastY,
Float:LastZ
}

#define COLOR_YELLOW 0xFFFF00AA
#define VERDEFRACO 0x80cf80AA
#define SLOTS 500
 
new objectcreated;
new SavePlayerPos[SLOTS][SavePlayerPosEnum];
new distance1[MAX_PLAYERS];
OnGameModeInit:
Код:
SetTimer("UpdateSpeed", UpdateSeconds*1000, 1);
Final do GM
Код:
public UpdateSpeed(playerid)
{
        new Float:x,Float:y,Float:z;
        new Float:distance,value;
        for(new i=0; i<SLOTS; i++)
        {
                if(IsPlayerConnected(i))
                {
                        GetPlayerPos(i, x, y, z);
                        distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
                        value = floatround(distance * 3600);
                        if(UpdateSeconds > 1)
                        {
                                value = floatround(value / UpdateSeconds);
                        }
                        distance1[i] = floatround(value/1600);
 
                        SavePlayerPos[i][LastX] = x;
                        SavePlayerPos[i][LastY] = y;
                        SavePlayerPos[i][LastZ] = z;
            /* Para colocar Coordenada no lugar que voce quer , basta colocar a Coordenada X,Y,Z no lugar dos 00000 ,
            o 40 й o raio que o radar pega, e o 50 , й a velocidade maxima*/
                        AddFlitsPaal(i, 1278, 1476.2402,-1726.3396,13.5469, 40, 50); // Radar da DP PM
                AddFlitsPaal(i, 1278, 1524.1256,-1679.0756,13.5469, 40, 50); // Prefeitura
                AddFlitsPaal(i, 1278, 2048.7131,1353.5975,10.6719, 40, 50); // BANCO
                AddFlitsPaal(i, 1278, 1200.9847,-1337.9875,13.3984, 40, 45); // HOSPITAL
                AddFlitsPaal(i, 1278, 0000.0000,0000.0000,0000.0000, 50, 70); // VAGO
                AddFlitsPaal(i, 1278, 0000.0000,0000.0000,0000.0000, 20, 50); // VAGO
                AddFlitsPaal(i, 1278, 0000.0000,0000.0000,0000.0000, 20, 50); // VAGO
                AddFlitsPaal(i, 1278, 0000.0000,0000.0000,0000.0000, 20, 50); // VAGO
                AddFlitsPaal(i, 1278, 0000.0000,0000.0000,0000.0000, 20, 50); // VAGO
                AddFlitsPaal(i, 1278, 0000.0000,0000.0000,0000.0000, 20, 50); // VAGO
                }
        }
}

GetPlayerDistanceToPoint(playerid,Float:x,Float:y)
{
    new Float:x1,Float:y1,Float:z1; GetPlayerPos(playerid,x1,y1,z1);
    new Float:tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)+
    floatpower(floatabs(floatsub(y,y1)),2));
    return floatround(tmpdis);
}

stock AddFlitsPaal(playerid, modelid, Float:xx, Float:yy, Float:zz, radius, speed)
{
        new fine[MAX_PLAYERS];
        new str[256];
 
        if(objectcreated!=maxobject)
        {
        CreateObject(modelid, xx, yy, zz, 0.0, 0.0, 10);
        objectcreated++;
        }
        if((distance1[playerid])>speed)
        {
                if(IsPlayerInCircle(playerid, xx, yy, radius)  && GetPlayerState(playerid)== PLAYER_STATE_DRIVER)
                {
                        fine[playerid]=((distance1[playerid]*17/10)-speed);
                        GivePlayerMoney(playerid, -2000);
                        format(str,sizeof(str), "[RADAR xXX ] O Limite de velocidade й %d KM/H Voce Passou a %d KM/H e foi multado!",speed, distance1[playerid] ,fine[playerid]);
            // Caso queira mudar o nome do radar , й so mudar o xXx pelo nome que quiser. e o -2000 й o valor da multa.
            SendClientMessage(playerid, VERDEFRACO, str);
                        PlayerPlaySound(playerid, 1132, 0.0, 0.0, 0.0);
                }
        }
}
Fonte: http://pastebin.com/vsVn6C2V
-------------------------------------------------------------

Para fazer o sistema de ponto na carteira coloque na enum que define os dados do player ex: pPontosCarteira,

Ai coloque no radar onde aparece a mensagem da multa : PlayerInfo[playerid][pPontosCarteira] += 1;

E coloque para checar os pontos da carteira do player ex:
Код:
if(PlayerInfo[playerid][pPontosCarteira] > 21)
{
     PlayerInfo[playerid][pPontosCarteira] == 0;
     PlayerInfo[playerid][pCarteiraTerrestre] == 0;
     return 0;
}
P.S: Apenas uma base isso ai , adapte ao seu GM e se quiser faзa melhorias
Reply
#3

https://sampforum.blast.hk/showthread.php?tid=177465
Reply
#4

Eu fui tentar fazer e adptar ao meu GM mais deu erro no SavePlayerPos :/
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)