SetTimerEx("VenderCarro",1000, true, "i", plid); //false = chama o timer uma vez sу.
|
Estб repetindo vбrias vezes? Se sim, da uma olhada no timer.
Код:
SetTimerEx("VenderCarro",1000, true, "i", plid); //false = chama o timer uma vez sу.
|
|
Poste seu cуdigo que te dou uma ajuda, alem de que nгo entendi muito bem sua pergunta. :P
|
//Aqui ele verifica a cara 1 segundo se ele tб na posiзгo
if(IsPlayerInArea(playerid, -1964.867553, 253.466934, -1925.898315, 309.475463))
if(Veh == VeiculosBBO[RandomMSG[randMSG][0]] || Veh == VeiculosBBO[RandomMSG[randMSG][1]] || Veh == VeiculosBBO[RandomMSG[randMSG][2]] || Veh == VeiculosBBO[RandomMSG[randMSG][3]] || Veh == VeiculosBBO[RandomMSG[randMSG][4]] || Veh == VeiculosBBO[RandomMSG[randMSG][5]])
//Aqui ele fica chamando a cada 1 minuto alterando o modelo o que nгo deveria acontecer...
{
SendClientMessage(playerid, 0xFF0000FF,"VENDIDO!");
for(new plid=0;plid<MAX_PLAYERS;++plid)
{
KillTimer(TimerEstaNaGarragem[plid]);
SetVehicleToRespawn(Veh);
Block[plid] = false;
}
}
* A cada 60 minitos um veнculo diferente. * A cada um minuto o servidor verifica se o jogador estб em um veнculo. * Sу um veнculo й vendido por hora. O objetivo do seu cуdigo й, em ordem: - O jogador estar na Бrea Correta; - O jogador estar no Carro Correto; Se todos essas condiзхes forem verdadeiras ele vai: - Exibir "VENDIDO!" no Chat; - Parar o Timer do Jogador que estб no carro que acabou de 'comprar'; -> Estou usando um timer para todos jogadores, entгo nгo hб um Timer para cara jogador. - Respawnar o Veнculo Comprado;
//Maneira fбcil de calcular tempo para um timer: (Horas*Minutos*Segundos*1000), ignorando valores 1.
// (Minutos * Segundos * 1000)
new newVehicleTime = (60 * 60 * 1000);
new updatePlayerTime = (60 * 1000); //Um minuto
new currentVehicle = -1; //Guardarб o veнculo atual
new bool:isInGaragem[MAX_PLAYERS];
public OnFilterScriptInit() {
SetTimer("AtualizarVeiculo", newVehicleTime, true); //Executara 'AtualizarVeiculo' a cada uma hora apуs este Script ser iniciado.
AtualizarVeiculo(); //Como o 'SetTimer' sу executarб daqui uma hora, atualize o veнculo pela primeira vez.
SetTimer("AtualizarCarro", updatePlayerTime, true); //Executara 'AtualizarCarro' a cada minuto para todos jogadores.
//Seus veнculos
VeiculosBBS[] = ...
}
//Ter certeza de que o jogador nгo inicie 'na garagem'.
public OnPlayerConnect(playerid) {
isInGaragem[playerid] = false;
return 1;
}
forward AtualizarVeiculo();
public AtualizarVeiculo() {
//Respawna o Veнculo Antigo no caso de ele nгo estar vendido.
if(currentVehicle != -1)
SetVehicleToRespawn(VeiculosBBO[currentVehicle]);
//Faz com que o veнculo nгo repita.
new oldVeh = currentVehicle;
while(oldVeh != currentVehicle)
currentVehicle = random(sizeof(VeiculosBBO)); //Seleciona um veнculo Aleatуrio.
for(new playerid = 0; playerid < MAX_PLAYERS; playerid++) {
if(!IsPlayerConnected(playerid)
|| !isInGaragem[playerid])
continue;
SendClientMessage(playerid, -1, "Este veнculo nгo estб mais а venda.");
}
SendClientMessageToAll(-1, "Hб um novo veнculo а venda!");
return;
}
forward VenderCarro();
public VenderCarro() {
for(new playerid = 0; playerid < MAX_PLAYERS; playerid++) {
if(IsPlayerInArea(playerid, /* AREA DA GARAGEM */)
&& currentVehicle != -1) {
isInGaragem[playerid] = true;
new v = GetPlayerVehicleID(playerid);
if(v == VeiculosBBO[currentVehicle]) {
SendClientMessage(playerid, -1, "Vendido!");
SetVehicleToRespawn(v);
currentVehicle = -1; //Veнculo nгo estarб mais а venda
isInGaragem[playerid] = false;
}
continue;
}
isInGaragem[playerid] = false;
continue;
}
return;
}
IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY) {
if(MinX > MaxX) {
new min = MinX;
MinX = MaxX;
MaxX = min;
}
if(MinY > MaxY) {
new min = MinY;
MinY = MaxY;
MaxY = min;
}
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY)
return true;
return false;
}
Eu tava tentando fazer assim: |*| Uma mensagem falando o modelo de veнculo chamado... |*| Um modelo de veнculo seria vendido a cada 1 hora... |*| A cada 1 minuto ele verificaria se ele estб na posiзгo e o modelo chamado... Eu consegui fazer mas criando vбrias forwards e a random chamando cada uma mas se eu fizer com vбrios veнculos isso darб muitas linhas e bagunзa...
#include <a_samp>
//Maneira fбcil de calcular tempo para um timer: (Horas*Minutos*Segundos*1000), ignorando valores 1.
// (Minutos * Segundos * 1000)
//new newVehicleTime = (60 * 60 * 1000);
//new updatePlayerTime = (60 * 1000); //Um minuto
//Eu desativei para poder testar melhor - /\
//E usei isso \/
new newVehicleTime = (60000);
new updatePlayerTime = (1000);
new currentVehicle = -1; //Guardarб o veнculo atual
new VeiculosBBO[12];
new bool:isInGaragem[MAX_PLAYERS];
public OnFilterScriptInit()
{
SetTimer("AtualizarVeiculo", newVehicleTime, true); //Executara 'AtualizarVeiculo' a cada uma hora apуs este Script ser iniciado.
AtualizarVeiculo(); //Como o 'SetTimer' sу executarб daqui uma hora, atualize o veнculo pela primeira vez.
SetTimer("AtualizarCarro", updatePlayerTime, true); //Executara 'AtualizarCarro' a cada minuto para todos jogadores.
//Seus veнculos
VeiculosBBO[0] = CreateVehicle(559,-1990.7375,170.9375,27.1953,270.0000000,0,3,15); //Jester-BBO
VeiculosBBO[1] = CreateVehicle(559,-1990.7375,170.9375,27.1953,270.0000000,0,3,15); //Jester-BBO
VeiculosBBO[2] = CreateVehicle(559,-1991.0796,159.3297,27.1953,270.0000000,0,3,15); //Jester-BBO
VeiculosBBO[3] = CreateVehicle(559,-1991.4545,146.6407,27.1953,270.0000000,0,3,15); //Jester-BBO
VeiculosBBO[4] = CreateVehicle(559,-1991.9436,130.0406,27.1953,270.0000000,0,3,15); //Jester-BBO
VeiculosBBO[5] = CreateVehicle(559,-1992.5179,110.5918,27.1954,270.0000000,0,3,15); //Jester-BBO
VeiculosBBO[6] = CreateVehicle(411,-1990.7375,170.9375,27.1953,270.0000000,0,3,15); //Infernus-BBO
VeiculosBBO[7] = CreateVehicle(411,-1990.7375,170.9375,27.1953,270.0000000,0,3,15); //Infernus-BBO
VeiculosBBO[8] = CreateVehicle(411,-1991.0796,159.3297,27.1953,270.0000000,0,3,15); //Infernus-BBO
VeiculosBBO[9] = CreateVehicle(411,-1991.4545,146.6407,27.1953,270.0000000,0,3,15); //Infernus-BBO
VeiculosBBO[10] = CreateVehicle(411,-1991.9436,130.0406,27.1953,270.0000000,0,3,15); //Infernus-BBO
VeiculosBBO[11] = CreateVehicle(411,-1992.5179,110.5918,27.1954,270.0000000,0,3,15); //Infernus-BBO
return 1;
}
//Ter certeza de que o jogador nгo inicie 'na garagem'.
public OnPlayerConnect(playerid) {
isInGaragem[playerid] = false;
return 1;
}
forward AtualizarVeiculo();
public AtualizarVeiculo()
{
//Respawna o Veнculo Antigo no caso de ele nгo estar vendido.
if(currentVehicle != -1)
SetVehicleToRespawn(VeiculosBBO[currentVehicle]);
//Faz com que o veнculo nгo repita.
new oldVeh = currentVehicle;
while(oldVeh != currentVehicle)
currentVehicle = random(sizeof(VeiculosBBO)); //Seleciona um veнculo Aleatуrio.
for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
{
if(!IsPlayerConnected(playerid)
|| !isInGaragem[playerid])
continue;
SendClientMessage(playerid, -1, "Este veнculo nгo estб mais а venda.");
}
SendClientMessageToAll(-1, "Hб um novo veнculo а venda!");
return;
}
forward VenderCarro();
public VenderCarro()
{
for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
{
if(IsPlayerInArea(playerid, -1964.867553, 253.466934, -1925.898315, 309.475463)
&& currentVehicle != -1)
{
isInGaragem[playerid] = true;
new v = GetPlayerVehicleID(playerid);
if(v == VeiculosBBO[currentVehicle])
{
SendClientMessage(playerid, -1, "Vendido!");
SetVehicleToRespawn(v);
currentVehicle = -1; //Veнculo nгo estarб mais а venda
isInGaragem[playerid] = false;
}
continue;
}
isInGaragem[playerid] = false;
continue;
}
return;
}
IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY) {
return 1;
}
return 0;
}
//ficou dando erro no IsPlayerInArea que vocк fez...
/*
COP.pwn(111) : warning 219: local variable "min" shadows a variable at a preceding level
COP.pwn(111) : warning 213: tag mismatc
COP.pwn(116) : warning 219: local variable "min" shadows a variable at a preceding level
COP.pwn(116) : warning 213: tag mismatch
*/
/*
IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY) {
if(MinX > MaxX) {
new min = MinX;
MinX = MaxX;
MaxX = min;
}
if(MinY > MaxY) {
new min = MinY;
MinY = MaxY;
MaxY = min;
}
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY)
return true;
return false;
}*/
IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY) {
if(MinX > MaxX) {
new Float:min = MinX;
MinX = MaxX;
MaxX = min;
}
if(MinY > MaxY) {
new Float:min = MinY;
MinY = MaxY;
MaxY = min;
}
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X >= MinX && X <= MaxX && Y >= MinY && Y <= MaxY)
return true;
return false;
}
public VenderCarro() {
if(currentVehicle != -1)
return;
for(new playerid = 0; playerid < MAX_PLAYERS; playerid++) {
if(currentVehicle != -1) {
if(IsPlayerInArea(playerid, /* AREA DA GARAGEM */) {
isInGaragem[playerid] = true;
new v = GetPlayerVehicleID(playerid);
if(v == VeiculosBBO[currentVehicle]) {
SendClientMessage(playerid, -1, "Vendido!");
SetVehicleToRespawn(v);
currentVehicle = -1; //Veнculo nгo estarб mais а venda
isInGaragem[playerid] = false;
}
else {
SendClientMessage(playerid, -1, "Veнculo Invбlido!");
}
continue;
}
}
isInGaragem[playerid] = false;
continue;
}
return;
}