[FilterScript] Velocimetro v1.0
#1

1 FS, Velocimetro simples que eu fiz pra usar no meu sv espero que gostem
serve como base para criarem o seu proprio velocimetro
PHP Code:
Comandos
/
abastecer 
/sair 


Download: https://pastebin.com/raw/5q2vjzLW (pastebin acabou com a indentaзгo)

Includes:
Pawn.CMD: https://sampforum.blast.hk/showthread.php?tid=608474
a_zones: https://sampforum.blast.hk/showthread.php?tid=27598
Reply
#2

Dб para melhorar o design e o cуdigo, porйm, bom velocimetro.
Reply
#3

Quote:
Originally Posted by NelsonC
View Post
Dб para melhorar o design e o cуdigo, porйm, bom velocimetro.
N tem que melhorar nada, para mim, Ta otimo, testei aqui mt bom o sistema dele.

@TOPIC
Otimo filterscript.
Reply
#4

Quote:
Originally Posted by GuiKommander
View Post
N tem que melhorar nada, para mim, Ta otimo, testei aqui mt bom o sistema dele.

@TOPIC
Otimo filterscript.
Mano, nгo й questгo de o cуdigo funcionar, porйm a otimizaзгo й essencial, oque vocк estб falando й a mesma coisa que eu fazer:


1-
PHP Code:
public OnPlayerConnect(playerid)
{
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    return 
1;

2 -

PHP Code:
LimparChat(playeridlinhas){for(new 0<= linhasb++) SendClientMessage(playerid,-1" ");}
public 
OnPlayerConnect(playerid)
{
    
LimparChat(playerid100//100 = nъmeros de linhas a ser limpas no chat.
    
return 1;

Qual й mais otimizado? os dois cуdigos tem as mesmas funзхes.

@TOPIC:

Bom Filterscript, +REP.
Reply
#5

Quote:
Originally Posted by SpikeCompiler
View Post
Mano, nгo й questгo de o cуdigo funcionar, porйm a otimizaзгo й essencial, oque vocк estб falando й a mesma coisa que eu fazer:


1-
PHP Code:
public OnPlayerConnect(playerid)
{
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    return 
1;

2 -

PHP Code:
LimparChat(playeridlinhas){for(new 0<= linhasb++) SendClientMessage(playerid,-1" ");}
public 
OnPlayerConnect(playerid)
{
    
LimparChat(playerid100//100 = nъmeros de linhas a ser limpas no chat.
    
return 1;

Qual й mais otimizado? os dois cуdigos tem as mesmas funзхes.

@TOPIC:

Bom Filterscript, +REP.
Ainda nao percebi essa Noia de Otimizaзao e fazer os bagulho desde que compile e nao bugue e dei-a erros jб estб '-' essa coisa de otimizaзao me irrita ksks #EterNuEspaikeMorreuNoEdenScavenge'-'TeamIsWinner
Reply
#6

Quote:
Originally Posted by HelderPT
View Post
Ainda nao percebi essa Noia de Otimizaзao e fazer os bagulho desde que compile e nao bugue e dei-a erros jб estб '-' essa coisa de otimizaзao me irrita ksks #EterNuEspaikeMorreuNoEdenScavenge'-'TeamIsWinner
KKkkkk eu perdi o IP, dps manda pra mim no PV.
Reply
#7

Quote:
Originally Posted by SpikeCompiler
View Post
Mano, nгo й questгo de o cуdigo funcionar, porйm a otimizaзгo й essencial, oque vocк estб falando й a mesma coisa que eu fazer:


1-
PHP Code:
public OnPlayerConnect(playerid)
{
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    
SendClientMessage(playerid,-1," ");
    return 
1;

2 -

PHP Code:
LimparChat(playeridlinhas){for(new 0<= linhasb++) SendClientMessage(playerid,-1" ");}
public 
OnPlayerConnect(playerid)
{
    
LimparChat(playerid100//100 = nъmeros de linhas a ser limpas no chat.
    
return 1;

Qual й mais otimizado? os dois cуdigos tem as mesmas funзхes.

@TOPIC:

Bom Filterscript, +REP.
Acho desnecessбrio a utilizaзгo dessa forma.

PHP Code:
public OnPlayerConnect(playerid)
{
    for (new 
i100i++)
    {
        
SendClientMessage(playerid,-1," ");
    }
    return 
1;

Bem mais simples.

@Topic

Dei uma olhada por cima, nгo achei muito interessante as nomenclaturas e organizaзгo. Hб erros e vocк tem que revisar o seu cуdigo, mas para um trabalho inicial, muito bom.
Reply
#8

Quote:
Originally Posted by Gguiz
View Post
Acho desnecessбrio a utilizaзгo dessa forma.

PHP Code:
public OnPlayerConnect(playerid)
{
    for (new 
i100i++)
    {
        
SendClientMessage(playerid,-1," ");
    }
    return 
1;

Bem mais simples.

@Topic

Dei uma olhada por cima, nгo achei muito interessante as nomenclaturas e organizaзгo. Hб erros e vocк tem que revisar o seu cуdigo, mas para um trabalho inicial, muito bom.
Obrigado estou tentando melhorar
Reply
#9

Quote:
Originally Posted by GuiKommander
View Post
N tem que melhorar nada, para mim, Ta otimo, testei aqui mt bom o sistema dele.

@TOPIC
Otimo filterscript.
Nгo seja ignorante otimizaзгo sempre й bom desde que entendam, estamos aqui para somar e nгo para julgar belo FS parabйns !

Original: 279 Linhas
Otimizado: 216 Linhas
Economizado: 63 Linhas

PHP Code:
#include         < a_samp >
#include         < Pawn.CMD >
#include         < a_zones >
#define Combustivel_Max             (100)
new TimerCombTimer_VelooVelooc[MAX_PLAYERS], SemComb[MAX_PLAYERS], Abastecendo[MAX_PLAYERS], Gas[MAX_VEHICLES], PlayerText:Velocimetro[4];
new 
Float:Postos[][] = {
    {
1004.0070,-939.3102,42.1797},
    {
1944.3260,-1772.9254,13.3906},
    {
1400.6882,-1680.5344,42.4339},
    {
1496.5316,-1544.0677,23.5481},
    {
2737.3364,-1774.2123,43.7973},
    {-
90.5515,-1169.4578,2.4079},
    {-
1609.7958,-2718.2048,48.5391},
    {-
2029.4968,156.4366,28.9498},
    {-
2408.7590,976.0934,45.4175},
    {
1380.4712,462.7467,20.1107},
    {
1385.0475,460.5417,20.1068},
    {
1383.5532,457.1286,19.9561},
    {
1379.1952,459.1295,19.9587},
    {-
2243.9629,-2560.6477,31.8841},
    {-
1676.6323,414.0262,6.9484},
    {
2202.2349,2474.3494,10.5258},
    {
614.9333,1689.7418,6.6968},
    {-
1328.8250,2677.2173,49.7665},
    {
70.3882,1218.6783,18.5165},
    {
677.1299,-2866.3892,13.0944},
    {-
1327.7218,2678.8723,50.0625}
};
public 
OnFilterScriptInit() {
    for(new 
0MAX_VEHICLESc++) Gas[c] = Combustivel_Max;
    
TimerComb SetTimer("CheckGas"200001);
    return 
1;
}
public 
OnFilterScriptExit() {
    
KillTimer(TimerComb);
    return 
1;
}
public 
OnPlayerStateChange(playeridnewstateoldstate) {
    if(
newstate == PLAYER_STATE_DRIVERTimer_Veloo SetTimerEx("Atualizar_Velocimetro"3001"i"playerid);
     else if(
oldstate == PLAYER_STATE_DRIVER) {
        if(
Velooc[playerid] == 1) {
            for(new 
0sizeof(Velocimetro); ++iPlayerTextDrawHide(playeridVelocimetro[i]);
            
Velooc[playerid] = 0;
            
KillTimer(Timer_Veloo);
        }
        return 
1;
    }
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason) {
    if(
Velooc[playerid] == 1) {
        for(new 
0sizeof(Velocimetro); ++iPlayerTextDrawHide(playeridVelocimetro[i]); PlayerTextDrawDestroy(playeridVelocimetro[i])
        
Velooc[playerid] = 0;
        
KillTimer(Timer_Veloo);
    }
    return 
1;
}
public 
OnPlayerConnect(playerid) {
    
Velooc[playerid] = 0;
    
SemComb[playerid] = 0;
    
Abastecendo[playerid] = 0;
    
Criar_TD_Velocimetro(playerid);
    return 
1;
}
Criar_TD_Velocimetro(playerid) {
    
Velocimetro[0] = CreatePlayerTextDraw(playerid641.555541433.571105"usebox");
    
PlayerTextDrawLetterSize(playeridVelocimetro[0], 0.0000001.397902);
    
PlayerTextDrawTextSize(playeridVelocimetro[0], -2.0000000.000000);
    
PlayerTextDrawAlignment(playeridVelocimetro[0], 1);
    
PlayerTextDrawColor(playeridVelocimetro[0], 0);
    
PlayerTextDrawUseBox(playeridVelocimetro[0], 1);
    
PlayerTextDrawBoxColor(playeridVelocimetro[0], 102);
    
PlayerTextDrawSetShadow(playeridVelocimetro[0], 0);
    
PlayerTextDrawSetOutline(playeridVelocimetro[0], 0);
    
PlayerTextDrawFont(playeridVelocimetro[0], 0);
    
Velocimetro[1] = CreatePlayerTextDraw(playerid3.111108431.573333" ");//Localizacao
    
PlayerTextDrawLetterSize(playeridVelocimetro[1], 0.3122221.739378);
    
PlayerTextDrawAlignment(playeridVelocimetro[1], 1);
    
PlayerTextDrawColor(playeridVelocimetro[1], 0xFF4D00FF);
    
PlayerTextDrawSetShadow(playeridVelocimetro[1], 0);
    
PlayerTextDrawSetOutline(playeridVelocimetro[1], 1);
    
PlayerTextDrawBackgroundColor(playeridVelocimetro[1], 51);
    
PlayerTextDrawFont(playeridVelocimetro[1], 1);
    
PlayerTextDrawSetProportional(playeridVelocimetro[1], 1);
    
Velocimetro[2] = CreatePlayerTextDraw(playerid,296.888824432.568878" ");//KM/H
    
PlayerTextDrawLetterSize(playeridVelocimetro[2], 0.3148881.659733);
    
PlayerTextDrawAlignment(playeridVelocimetro[2], 1);
    
PlayerTextDrawColor(playeridVelocimetro[2], 0x0080FFFF);
    
PlayerTextDrawSetShadow(playeridVelocimetro[2], 0);
    
PlayerTextDrawSetOutline(playeridVelocimetro[2], 1);
    
PlayerTextDrawBackgroundColor(playeridVelocimetro[2], 51);
    
PlayerTextDrawFont(playeridVelocimetro[2], 1);
    
PlayerTextDrawSetProportional(playeridVelocimetro[2], 1);
    
Velocimetro[3] = CreatePlayerTextDraw(playerid,526.667053432.568908" ");//Combustivel
    
PlayerTextDrawLetterSize(playeridVelocimetro[3], 0.3726661.560178);
    
PlayerTextDrawAlignment(playeridVelocimetro[3], 1);
    
PlayerTextDrawColor(playeridVelocimetro[3], 0x8000FFFF);
    
PlayerTextDrawSetShadow(playeridVelocimetro[3], 0);
    
PlayerTextDrawSetOutline(playeridVelocimetro[3], 1);
    
PlayerTextDrawBackgroundColor(playeridVelocimetro[3], 51);
    
PlayerTextDrawFont(playeridVelocimetro[3], 1);
    
PlayerTextDrawSetProportional(playeridVelocimetro[3], 1);
}
ReturnPlayerZone(playerid) {
    new 
location[MAX_ZONE_NAME];
    
GetPlayer2DZone(playeridlocationMAX_ZONE_NAME);
    return 
location;
}
NoPosto(playerid) {
    for(new 
0sizeof (Postos); ++ i) {
        if(
IsPlayerInRangeOfPoint(playerid7.0Postos[i][0], Postos[i][1], Postos[i][2]))
        return 
1;
    }
    return 
0;
}
GetPlayerSpeed(playerid) {
    new 
Float:ST[4];
    if(
IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
     else 
GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
    
ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 100.3;
    return 
floatround(ST[3]);
}
forward Atualizar_Velocimetro(playerid);
public 
Atualizar_Velocimetro(playerid) {
    if(
Velooc[playerid] == 0)
    {
        for(new 
0sizeof(Velocimetro); ++iPlayerTextDrawShow(playeridVelocimetro[i]);
        
Velooc[playerid] = 1;
    }
    new 
str[256];
    
format(strsizeof(str), "Localizacao: ~w~%s"ReturnPlayerZone(playerid));
    
PlayerTextDrawSetString(playeridVelocimetro[1], str);
    
format(strsizeof(str), "KM/H: ~w~%i"GetPlayerSpeed(playerid));
    
PlayerTextDrawSetString(playeridVelocimetro[2], str);
    
format(strsizeof(str), "Combustivel: ~w~%d"Gas[GetPlayerVehicleID(playerid)]);
    
PlayerTextDrawSetString(playeridVelocimetro[3], str);
}
forward Abastecimento();
public 
Abastecimento()
{
    for(new 
0MAX_PLAYERSi++) {
        if(
IsPlayerConnected(i)) {
            new 
string[256], Abbs Combustivel_Max Gas[VID];
            
Abbs *= 4;
            if(
Abastecendo[i] == 1) {
                if(
GetPlayerMoney(i) >= Abbs 4) {
                    
Gas[GetPlayerVehicleID(i)] = 100;
                    
GivePlayerMoney(i, - Abbs);
                    
Abastecendo[i] = 0;
                }
                
TogglePlayerControllable(i1);
                
format(string,sizeof(string), GetPlayerMoney(i) >= Abbs " Vocк reabasteceu seu veнculo, por: R$%d." " Voce nao tem dinheiro suficiente para encher o tanque, custo: $%d." ,Abbs);
                
SendClientMessage(i, -1string);
            }
        }
    }
}
forward CheckGas();
public 
CheckGas()
{
    for(new 
0MAX_PLAYERSi++) {
        if(
IsPlayerConnected(i)) {
            if(
GetPlayerState(i) == PLAYER_STATE_DRIVER) {
                new 
vehicle GetPlayerVehicleID(i), VehicleModel GetVehicleModel(vehicle);
                if(
VehicleModel == 509 || VehicleModel == 481 || VehicleModel == 510) return 1;
                if(
Gas[vehicle] >= 1) {
                    if(
Gas[vehicle] <= 10){}
                    
Gas[vehicle]--;
                } else {
                    
SemComb[i] = 1;
                    
TogglePlayerControllable(i0);
                    
SendClientMessage(i,-1,"Sem combustivel Use /sair Para sair do veiculo");
                    
SendClientMessage(i,-1"O motor do veнculo apagou por falta de combustнvel");
                }
            }
        }
    }
    return 
1;
}
CMD:abastecer(playerid) {
    if(!
IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,-1,"Vocк nгo estб em um veнculo!");
    if(
Gas[GetPlayerVehicleID(playerid)] >= 100) return SendClientMessage(playerid,-1,"Tanque jб estб cheio.");
    if(!
NoPosto(playerid)) return SendClientMessage(playerid,-1,"Vocк nгo estб em um posto");
    
GameTextForPlayer(playerid,"Abastecendo...",5000,3);
    
SetTimerEx("Abastecimento",5000,0"i"playerid);
    
TogglePlayerControllable(playerid0);
    
Abastecendo[playerid] = 1;
    return 
1;
}
CMD:sair(playerid) {
    
TogglePlayerControllable(playerid1);
    
RemovePlayerFromVehicle(playerid);
    return 
1;

Reply
#10

Quote:
Originally Posted by HelderPT
View Post
Ainda nao percebi essa Noia de Otimizaзao e fazer os bagulho desde que compile e nao bugue e dei-a erros jб estб '-' essa coisa de otimizaзao me irrita ksks #EterNuEspaikeMorreuNoEdenScavenge'-'TeamIsWinner
Uso de CPU e RAM sent you hugs.

@topic

Obrigado por compartilhar conosco. Vai ser muito ъtil pra um leigo como eu. Estava procurando uma forma de pegar a velocidade do carro. Thanks!

@edit

Encontrei algo, nгo se se estou correto, mas a principio, seu cуdigo tem um grave erro.

Vocк cria um timer toda vez que o player entra no carro e armazena o id do timer na variбvel Timer_Veloo. Pois bem, se eu entro no carro, ele salva o valor na variavel, e a variavel fica com o valor que o mйtodo retornou (Ex: 1);

O que acontece se outro jogador entrar em um carro? Ele vai substituir o valor da variбvel Timer_Veloo pelo valor retornado pelo mйtodo SetTimerEx que foi executado quando o outro jogador entrou no carro. Ai por exemplo, o valor da Timer_veloo ficou 2.

Se eu sair do carro, o meu timer de ID 1 nгo vai ser finalizado, mas sim o timer de ID 2, que й o id do timer do cara que entrou num carro por ultimo.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)