[Tutorial] DS Systen Tires
#1

Olб , venho ensinar como fazer um sistema de pneu.
Eu ia postar como FilterScript mas achei que tava muito basico , entгo vo explicar como fazer!

Antes de tudo vocк precisa saber que em algo pro VEICULO tipo , ALARME, TRAVA, GAS ETC. SE USA MAX_VEHICLES.
VI O POVO DO MEGA TRUCK USANDO MAX_PLAYERS PARA VEICULOS PQP.


Bom vamos la:

Primeiro o sistema de pneu precisa de uma variavel , uma variavel de veiculo e nгo de player
pawn Код:
new Pneu[MAX_VEHICLES];// Topo do GameMode/ FilterScript
Deve ser float.
Podes usar junto com seu sistema de carros.

Apos isso precisamos setar os pneuґs quando o servidor e logado ja para que nгo comeзe extourado!
Iremos utilizar um loop
pawn Код:
for(new d = 0; d < MAX_VEHICLES; d++)
         Pneu[d] = 100;
Tambem podes usar junto com sistema de carro que provavelmente seta algo no GameModeInit usando loop de veiculos.

PHP код:
Pneu[d] = 100; > Esse 100 Se refere ao maximo do pneu podes mudar 
Agora precisamos fazer um timer para que possamos reduzir o pneu conforme ele for andando.

Primeiro vamos fazer uma variavel AGORA PARA O PLAYER , para que possa fazermos o timer!
pawn Код:
new Timer[MAX_PLAYERS];// Topo do GameMode/ FilterScript
Bom feito isso iremos procurar pela callback chamada OnPlayerStateChange.
Iremos fazer o codigo para ver se ele e motorista!
E iniciar o Timer , e ja da um KillTimer (Parar o Timer).
pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER)
    {
   
         Timer[playerid] = SetTimerEx("AtualizarVelocimetro", 100, true, "d", playerid);
         
    }else KillTimer(Timer[playerid]);
    return 1;
}
PHP код:
AtualizarVelocimetro -> Nome da callback que farб a atualizaзгo do pneu
100 
-> Tempo em segundos que esta verificaзгo serrб feita
true 
-> Verdadeiro significa que ele ficara repetindo
KillTimer 
-> Ira parar o timer assim que ele sair do carro 
Podes ser adaptado ao seu GameMode/FilterScript

Agora vamos criar a CallBack para a atualizaзгo
E diminuir o pneu!
pawn Код:
forward AtualizarVelocimetro(playerid);
public AtualizarVelocimetro(playerid)
{
    Pneu[GetPlayerVehicleID(playerid)] -= 0.1;
   
    if(Pneu[GetPlayerVehicleID(playerid)] < 1)
    {
           new Paineis, Portas, Luzes, Pneu;
           GetVehicleDamageStatus(GetPlayerVehicleID(playerid), Paineis, Portas, Luzes, Pneu);
           UpdateVehicleDamageStatus(GetPlayerVehicleID(playerid), Paineis, Portas, Luzes, 15);
    }
    return true;
}
PHP код:
Pneu[GetPlayerVehicleID(playerid)] -= 0.1// Diminui a variavel do pneu em 0.1 ja que amesma e float
GetPlayerVehicleID(playerid) -> Isso pega o id de seu veiculo para que possa atualiza/diminuir os pneus 
Agora vou explicar como deve ser para que estoure o pneu:
PHP код:
if(Pneu[GetPlayerVehicleID(playerid)] < 1) -> Quantidade minima para estourar o pneu 
Ai vocк deve getar os damanges do veiculo, criando as variaveis das damanges para usa-los.
PHP код:
new PaineisPortasLuzesPneu;
           
GetVehicleDamageStatus(GetPlayerVehicleID(playerid), PaineisPortasLuzesPneu); 
Agora para estourar o pneu . Hб varios modos de estouro .
Vocк deve se perguntar como assim
PHP код:
0: (0000)
    
o-o
    
| |
    
o-o
1
: (0001)
    
o-o
    
| |
    
o-i
2
: (0010)
    
o-i
    
| |
    
o-o
3
: (0011)
    
o-i
    
| |
    
o-i
4
: (0100)
    
o-o
    
| |
    
i-o
5
: (0101)
    
o-o
    
| |
    
i-i
6
: (0110)
    
o-i
    
| |
    
i-o
7
: (0111)
    
o-i
    
| |
    
i-i
8
: (1000)
    
i-o
    
| |
    
o-o
9
: (1001)
    
i-o
    
| |
    
o-i
10
: (1010)
    
i-i
    
| |
    
o-o
11
: (1011)
    
i-i
    
| |
    
o-i
12
: (1100)
    
i-o
    
| |
    
i-o
13
: (1101)
    
i-o
    
| |
    
i-i
14
: (1110)
    
i-i
    
| |
    
i-o
15
: (1111)
    
i-i
    
| |
    
i-
Estes sгo de veiculos com 4 rodas .

Para ver os de bikerrs/motos > https://sampwiki.blast.hk/wiki/TireStates

Ai e so fazer um update das damanges

PHP код:
UpdateVehicleDamageStatus(GetPlayerVehicleID(playerid), PaineisPortasLuzesID DO ESTOURO DO PNEU);
ID DO ESTOURO DO PNEU -> Escolha seu id na tabela acima
Bom para reparar o pneu e muito facil , e so setar a var do pneu a 100 ou ao maximo que vocк definiu!


Creditos
DonSpeed
Rjjj
Wiki sa-mp

Qualquer duvida poste aqui tentarei exclarecer.
Reply
#2

Maneiro cara , parabens
Reply
#3

good joba
Reply
#4

muito bom..
Reply
#5

Very Nice.

Ficou bem explicativo o tutorial, parabйns.
Reply
#6

Vlw . '-'
Reply
#7

eu tenho uma grande duvida, em casos assim й melhor usar um timer com pouco tempo, ou usar OnPlayerUdate??
qual й melhor?

[]Topic - Legal, isso pode auxiliar muitos em outras coisas com veнculos, como desgaste do motor, sei la kkkk, bem legal parabens. +rep
Reply
#8

Quote:
Originally Posted by Jumper.
Посмотреть сообщение
eu tenho uma grande duvida, em casos assim й melhor usar um timer com pouco tempo, ou usar OnPlayerUdate??
qual й melhor?

[]Topic - Legal, isso pode auxiliar muitos em outras coisas com veнculos, como desgaste do motor, sei la kkkk, bem legal parabens. +rep
Acredito que o timer seja melhor , poiso update e chamada muitas vezes em um segundo!
Reply
#9

Muito bom o tutorial .

+REP
Reply
#10

Quote:
Originally Posted by Don_Speed
Посмотреть сообщение



Acredito que o timer seja melhor , poiso update e chamada muitas vezes em um segundo!
Eu acho que a Update й atualizada de 1 em 1 milйsimo no segundo.
Esse Timer esta em 1 milйsimo de segundo.

Corriga-me se eu estiver errado, nгo estб a mesma coisa?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)