[FilterScript] Real RP [v1] [Atualizando]
#1


Por DraKiNs
Introduзгo:
A Muito tempo vinha pensando em um simples sistema de tivesse vбrios sistema de RP/RPG,muito ъteis a servidores do mesmo.
Pensando nisto desenvolvi um simples sistema de Real RP que estб em constante modificaзгo atй que seja adicionado bastante funзхes.

Funзхes:

Nгo й a Versгo Final,porйm tem funзхes legais

Sistema de Cinto [ON|OFF]
Sistema de Fala [ANIMES]
Sistema de Radar [BREAK CAR]
Sistema de Vida do Carro [Chamar Mecвnico]

Vнdeo:
Aqui um vнdeo demonstrando as funзхes
[ame]http://www.youtube.com/watch?v=zYoeSs7WRVk[/ame]

Download
Jб que o cуdigo nгo passa de 150 Linhas:

pawn Код:
#include <a_samp>
#define EncodeDamage(%1,%2,%3,%4) %1 | (%2 << 1) | (%3 << 2) | (%4 << 3)
#define SLOTS 50
#define MAX_SPEED 120
new
    bool:Danificado[2000],
    bool:NaoCarro[SLOTS],
    bool:Cinto[SLOTS],
    Float:xaa[SLOTS],
    Float:yaa[SLOTS],
    Float:zaa[SLOTS],
    Float:HealthV,
    damage[4]
;
forward CongelarPlayer(playerid);
forward StopAnimes(playerid);
public OnPlayerUpdate(playerid)
{
    if(IsPlayerInAnyVehicle(playerid))
    {
        if(GetPlayerVelo(playerid) > MAX_SPEED)
        {
            new name[24], string[50];
            GetPlayerName(playerid, name, sizeof(name));
            format(string, sizeof(string), "Patrulha: %s esta na velocidade de %d",name,GetPlayerVelo(playerid));
            GameTextForPlayer(playerid,"~r~Parando Carro. Velocidade Elevada",2000,4);
            GetPlayerPos(playerid,xaa[playerid],yaa[playerid],zaa[playerid]);
            GivePlayerMoney(playerid,GetPlayerMoney(playerid)-700);
            SetVehicleVelocity(GetPlayerVehicleID(playerid), 0.0 , 0.0 , 0.0);
            for(new i=0;i<SLOTS;i++)
            {
                if(IsPlayerInRangeOfPoint(i,300.0,xaa[playerid],yaa[playerid],zaa[playerid]))
                {
                    SendClientMessage(i,0xFFFFFFFF,string);
                }
            }
        }
    }
    return true;
}
public OnPlayerConnect(playerid)
{
    ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
    ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
    return true;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmdtext, "/cinto-on", true) == 0)
    {
        if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xC9170EFF,"[ERRO] Vocк precisa estar em um carro");
        if(Cinto[playerid] == true) return SendClientMessage(playerid,0xC9170EFF,"[ERRO] Vocк jб esta de cinto");
        SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Vocк colocou cinto de seguranзa,agora nгo morrerб em acidentes");
        Cinto[playerid] = true;
        return true;
    }
    if(strcmp(cmdtext, "/cinto-off", true) == 0)
    {
        if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xC9170EFF,"[INFO] Vocк precisa estar em um carro");
        if(Cinto[playerid] == true) return SendClientMessage(playerid,0xC9170EFF,"[ERRO] Vocк jб nгo esta de cinto");
        SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Vocк tirou cinto de seguranзa,agorapoderб morrer em acidentes");
        Cinto[playerid] = false;
        return true;
    }
    return false;
 }
public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
    GetVehicleHealth(vehicleid,HealthV);
    if(HealthV > 900) return false;
    if(Cinto[playerid] == false && NaoCarro[playerid] == false)
    {
        RemovePlayerFromVehicle(playerid);
        new Float:XD,Float:YD,Float:ZD,Float:ANGLED;
        GetPlayerPos(playerid,XD,YD,ZD);
        new Float:r;
        GetVehicleZAngle(GetPlayerVehicleID(playerid),r);
        XD += (10 * floatsin(-r, degrees));
        YD += (10 * floatcos(-r, degrees));
        GetPlayerFacingAngle(playerid,ANGLED);
        SetPlayerPos(playerid,XD,YD,ZD+2);
        SetPlayerHealth(playerid,HealthV/20);
        SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Vocк esta sem cinto de seguranзa cuidado com acidentes");
        ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
        ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
        SetTimerEx("StopAnimes",8000,false,"i",playerid);
        SetTimerEx("CongelarPlayer",10000,false,"i",playerid);
        NaoCarro[playerid] = true;
    }
    if(HealthV < 500)
    {
        GetVehicleDamageStatus(vehicleid, damage[0], damage[1], damage[2], damage[3]);
        UpdateVehicleDamageStatus(vehicleid, damage[0], damage[1], damage[2], EncodeDamage(1, 1, 1, 1));
        SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Seu Carro foi Danificado Chame um Mecanico antes que sejб tarde");
    }
    if(HealthV < 400)
    {
        new Float:XD,Float:YD,Float:ZD;
        GetPlayerPos(playerid,XD,YD,ZD);
        SetPlayerPos(playerid,XD+1,YD+1,ZD+1);
        SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Seu Carro foi Danificado Chame um Mecanico imediatamente");
        Danificado[vehicleid] = true;
    }
    return true;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    if(Danificado[vehicleid] == true)
    {
        new Float:XD,Float:YD,Float:ZD;
        GetPlayerPos(playerid,XD,YD,ZD);
        SetPlayerPos(playerid,XD+1,YD+1,ZD+1);
        SendClientMessage(playerid,0xFFFFFFFF,"[INFO] Seu Carro foi Danificado Chame um Mecanico imediatamente");
       
    }
    return true;
}
public OnPlayerText(playerid,text[])
{
    if(NaoCarro[playerid] == false && !IsPlayerInAnyVehicle(playerid))
    {
        ApplyAnimation(playerid, "PED", "IDLE_CHAT", 4,0, 0, 0, 0, 0, 0);
        SetTimerEx("StopAnimes",2500,false,"i",playerid);
    }
    return true;
}
public CongelarPlayer(playerid)
{
    TogglePlayerControllable(playerid,0);
    return true;
}
public StopAnimes(playerid)
{
    TogglePlayerControllable(playerid,1);
    ClearAnimations(playerid);
    NaoCarro[playerid] = false;
    ClearAnimations(playerid);
    return true;
}
stock GetPlayerVelo(playerid) // [FeK]Kyle - DarK TeaM PT
{
    new Float:PosX, Float:PosY,Float:PosZ,Float:PlayerSpeedDistance;
    GetVehicleVelocity(GetPlayerVehicleID(playerid), PosX, PosY, PosZ);
    PlayerSpeedDistance = floatmul(floatsqroot(floatadd(floatadd(floatpower( PosX, 2), floatpower(PosY, 2)), floatpower(PosZ, 2))), 170.0);
    new spe = floatround(PlayerSpeedDistance * 1);
    return spe;
}
Clique aqui para pastebin



Crйditos:
Desenvolvido por [FeK]DraKiNs
Sistema de Velocidade por Dark Team PT ([FeK]KylePT)

Obs:
Para liberar o carro para andar basta:
Danificado[vehicleid] = false;

Ao bater o carro a Animaзгo e Descongelamento do player demora 10 segundos,nгo mude isto

Mude o nъmero de Slots SLOTS

A Velocidade Mбxima mude tambйm MAX_SPEED
Reply
#2

Bom sistema !
Ele й super util para um servidor RP !
Parabйns !
Reply
#3

Drakon mete ai o novo GetVelocidade...

pawn Код:
stock
    GetPlayerVelo(playerid)
{
    GetVehicleVelocity(GetPlayerVehicleID(playerid), poskm[0], poskm[1], poskm[2]);
    return IsPlayerInAnyVehicle(playerid) ? floatround(((floatsqroot(((poskm[0] * poskm[0]) + (poskm[1] * poskm[1]) + (poskm[2] * poskm[2]))) * (170.0))) * 1) : 0;
}
acho que e mais rapido...
Reply
#4

sim Dark,й mais rapido,eu ainda nгo havia achado ele entгo acabei deixando assim mesmo
Reply
#5

hmm ta legal drakins,parabenss
Reply
#6

valeu Badio,vocк sempre me ajudando com elogios.
E Dark tambйm
e todos s2
Reply
#7

._.
Eu tambйm to ?
e.e
Reply
#8

Mara *-*. pqp mt bom
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)