[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
#2

- Me prove o contrбrio.

"Nгo pude avisar o Bruno Silva sobre esse post ele estб offline no meu MSN!"
Reply
#3

Quote:

- 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"

Vocк nгo pode mudar 1000 para 100, eu falei que nгo deveria mudar. Os cбlculos foram baseados nesta lуgica, os cбlculos ficaram encima de 1000 milisegundos, nгo hб erro na precisгo do cуdigo, vocк que errou em querer modificar. Enfim, o erro foi seu, nгo meu.

Desculpem o up mas sу fui ver o tуpico agora e o usuбrio ainda encontra-se ativo !!


O ъnico erro que vi meu alн foi em:
pawn Code:
#define GetPlayerMeters(%0) (IsPlayerInAnyVehicle(i)) ? disJogador[%0] : 0xFFFFFFFF
Mude para:

pawn Code:
#define GetPlayerMeters(%0) (IsPlayerInAnyVehicle(%0)) ? disJogador[%0] : 0xFFFFFFFF
No mais, obrigado pro avisar. O Script й antigo mesmo, jб criei outros assim a alguns dias.

http://pastebin.com/MttuMDqM
--

Quote:

"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.

Relaxa, nгo sou um bixo de sete cabeзas

--

Obrigado pelo aviso, apesar de vocк tentar chamar atenзгo com um erro banal
Reply
#4

LOL, This is the english section, NOT PORTUGUESE.
Reply
#5

Quote:
Originally Posted by next-studio|TheKiller
View Post
LOL, This is the english section, NOT PORTUGUESE.
I've seen. The guy wrote the post in Portuguese. I need global moderators send it (thread) to the correct location .. Thanks
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)