[DISCUSSГO] Sobre o "Sistema de pegar kilometros andados de Bruno Silva"
#1

- Ola apуs usar e analizar o cуdico de pegar kilometros andados de Bruno Silva(Drakins) eu notei que se localiza um pequeno desfecho em que pode ver que a lуgica usada por ele que seria SetTimer estбva errada e fora do comum. Como ele disse sobre б fнsica que й lуgica na vida real nгo й no jogo.

Lуgica utilizada:

PHP Code:
O carro estб indo a 90 KM/H
Logo
estarб indo 90 mil metros por horascerto?
Isto significa que ele irб fazer 90 quilфmetros em uma hora ou 90 mil metros em uma hora.
Entгo me sistema converte essas horas para segundosfazendo o seguinte:
90000 3600 25 Metros por Segundos
O que sгo esses 90 mil
Sгo a quantidade de metros por hora
O que sгo esses 3600
Й a taxa de conversгo de horas para segundosй a mesma coisa que (60 60) (Horas para Minutos e Minutos para Segundos)
Porque utilizar segundosPorque o tempo do SetTimer estб em 1 segundologo ele irб atualizar a distancia percorrida do player em 1 segundo com base na velocidade atual
Veja o cуdico abaixo:

PHP Code:
#define GetPlayerMeters(%0) (IsPlayerInAnyVehicle(i)) ? disJogador[%0] : 0xFFFFFFFF
#define SetPlayerMeters(%0, %1) disJogador[%0] = %1
#define ResetPlayerMeters(%0) disJogador[%0] = 0xFFFFFFFF
new disJogador[MAX_PLAYERS];
public 
OnFilterScriptInit()
{
    print(
"Calculo de Distancia");
    return 
SetTimer("OnUpdateKM"1000true);
}
forward OnUpdateKM();
public 
OnUpdateKM()
{
    for(new 
i!= MAX_PLAYERSi++) if(IsPlayerInAnyVehicle(i))
    {
        static 
Float:PosX,Float:PosY,Float:PosZ;
        
GetVehicleVelocity(GetPlayerVehicleID(playerid), PosXPosYPosZ);
        
disJogador[i] += (floatround(floatmul(((floatmul(floatsqroot(floatadd(floatadd(floatpower(PosX2), floatpower(PosY2)),  floatpower(PosZ2))), 170.0) * 1)),1000)) / 3600);
    }
    return 
true;
}
/*
    Projeto:
    Calculador de Distвncia Percorrida
    
    Lуgica:
            Sistema pega os metros do jogador percorridos por hora (m/h)
            A Cada um segundo adiciona na variбvel disJogador a quantidade de metros percorrida
            Dividido por (60 * 60) (para retornar metros por segundo e adicionar na variбvel a distancia percorrida)
    Uso:
        Usar GetPlayerMeters(playerid) para retornar a quantidade percorrida pelo player
    Criador
        Bruno da Silva
        www.ips-team.blogspot.com
        
 */ 
- Note que em OnFilterScriptInit() se localiza o SetTimer("OnUpdateKM", 1000, true); que estб configurado para repetir e atualizar em cada 1 segundo. Mais eu acabei descobrindo esse erro quando eu fui mudar esses 1000 centйsimos para 100 centйsimos, para que nгo demore para mostrar a kilometragem. Ex: em 1 segundo ficaria de 400 metros irб direto para 436 por exemplo estбria completamente fora de sн o cуdico."Tambem vemos isso nos cуdicos de velocimetro"

- Eu penso serб que ele testou o cуdico GetPlayerMeters(playerid)?, Porque esse GetPlayerMeters(playerid) deu erro falando undefined "i". E esse erro sу pude arrumar em

#define GetPlayerMeters(%0) (IsPlayerInAnyVehicle(i)) ? disJogador[%0] : 0xFFFFFFFF

mudando para

#define GetPlayerMeters(%0) (IsPlayerInAnyVehicle(playerid)) ? disJogador[%0] : 0xFFFFFFFF


Aqui nesta pбgina do Orkut mostra algumas reclamaзoes e opiniхes sobre este cуdico que foram esquecidas.
" http://www.orkut.com/CommMsgs?cmm=38...506&na=1&nst=1 "

"Nгo quero ser ruim nгo quero reclamar sу apenas quero avisar!" Meu nome й Mr.Hardy ou seja Sr.Destemido e eu jб fui Ips.
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)