09.01.2012, 00:25
(
Last edited by Mr.Hardy; 11/01/2012 at 03:19 AM.
)
- 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:
Veja o cуdico abaixo:
- 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.
Lуgica utilizada:
PHP Code:
O carro estб indo a 90 KM/H
Logo, estarб indo 90 mil metros por horas, certo?
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 segundos, fazendo 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 segundos? Porque o tempo do SetTimer estб em 1 segundo, logo ele irб atualizar a distancia percorrida do player em 1 segundo com base na velocidade atual.
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", 1000, true);
}
forward OnUpdateKM();
public OnUpdateKM()
{
for(new i; i != MAX_PLAYERS; i++) if(IsPlayerInAnyVehicle(i))
{
static Float:PosX,Float:PosY,Float:PosZ;
GetVehicleVelocity(GetPlayerVehicleID(playerid), PosX, PosY, PosZ);
disJogador[i] += (floatround(floatmul(((floatmul(floatsqroot(floatadd(floatadd(floatpower(PosX, 2), floatpower(PosY, 2)), floatpower(PosZ, 2))), 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
*/
- 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.