Tenho Um Sistema De Corrida Por Checkpoint.... Tava Pensando Em Fazer Um Reset Por Exemplo Se O Player Pegar o Checkpoint e ela digitar o comando /reset ele retornar ao ultimo checkpoint que ele pegou.. queria uma base pra eu ter uma noзгo do que fazer poderia mim ajudar ?
|
mano explique mais seus pedidos e duvidas 2° vez que nгo entendo tu quer que se ele tiver la no meio ele de /reset dai ele para no checkpoint que tava atras dele й isso ? se for vo construir uma base
|
jб estou terminando mais uma pergunta tu quer um evento ou uma corrida ? tipo o admin da /race dai todo mundo online ja й teleportado ? e cria um carro para cada e eles jб dentro do carro para corrida e manda uma mensagem: 1,2,3 jб dai comeзa , isso ?
|
mano acho que tu й novato correto ? tipo mano eu to terminando uma avanзada que nem essa que tu mandou o link vocк quer uma base basica de corrida dai vocк vai fazendo ela aos poucos ou a avanзada que to terminando porque eu to pensando e tu nгo vai entender muito bem oque ta aqui eu posso fazer ela virar basica de novo em 1 instante ja ta feito a corrida e o comando /reset e /race para ir para ela o basico ta bom ? porque senгo vai demorar mais kkk й complicado mano
|
new Float:Xx,Float:Yy,Float:Zz, Float:Anglee
//checkpoints
{
GetPlayerPos(playerid, Xx,Yy,Zz);
GetPlayerFacingAngle(playerid,Anglee);
}
/reset
{
SetPlayerPos(playerid, Xx,Yy,Zz);
SetPlayerFacingAngle(playerid, Anglee);
GetPlayerPos(playerid, Xx,Yy,Zz);
GetPlayerFacingAngle(playerid,Anglee);
return 1;
}
quando o player entrar no checkpoint obter float + angulo ou uma variбvel
PHP Code:
PHP Code:
|
Nгo Intendi Muito Bem.. Mais Vlw Pela A Ajuda.. |
X = Lado Y = Frente Z = Altura tanto para cima como para baixo вngulo = Bom se vocк estudou geometria sabe o que й. RotX = Rotaзгo para o Lado RotY = Rotaзгo para o Frente RotZ = Rotaзгo para cima/Baixo
#include < a_samp >
//utilizei a include zcmd caso nгo tenha procura que tem ai no fуrum
#include < zcmd >
//fiz na forma de um fs
#define FILTERSCRIPT
//parar dar funзхes para os checkpoits iremos usar uma variavel e a corrida iniciada
new checkpoint[MAX_PLAYERS] , carroinq[MAX_VEHICLES] , nacorrida[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
checkpoint[playerid] = 0; //checkpoint 0 ou seja nenhum...
return 1;
}
//comando que manda ele para a corrida
CMD:entrarc(playerid, params[])
{
//no lugar de 1, 1, 1 coloque as coordenadas da sua corrida
SetPlayerPos(playerid, 1, 1, 1);
//vai mandar a mensagem que ele foi para corrida
// o {00FF00} vai deixar a cor verde
SendClientMessage(playerid, -1, "{00FF00}Vocк foi para a corrida!");
//vai pegar as coordenadas do player e criar um veiculo perto dele e por ele dentro
new Float:X,Float:Y,Float:Z,Float:A; GetPlayerPos(playerid, X, Y, Z); GetPlayerFacingAngle(playerid, A);
//vai criar um veiculo(um infernus)
new carro = CreateVehicle(411, X, Y, Z, A, -1, -1, 0);
//vai por ele dentro do veiculo(infernus)
PutPlayerInVehicle(playerid, carro, 0);
//vai criar um checkpoint com tamanho 10(igual o das corridas)
//esse checkpoint й o 1
SetPlayerCheckpoint(playerid, 1, 1, 1, 10.0);
//coloca ele dentro do checkpoint 1
checkpoint[playerid] = 1;
//ativa o god car
carroinq[GetPlayerVehicleID(playerid)] = 1;
nacorrida[playerid] = 1;
return 1;
}
public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
//se o carroinq tiver ligado(1)
if(carroinq[vehicleid] == 1)
{
//quando o carro sofre dano ele repara o veiuclo
if(carroinq[vehicleid]) RepairVehicle(vehicleid);
}
return 1;
}
CMD:desistir(playerid, params[])
{
if(nacorrida[playerid] == 1)
{
SendClientMessage(playerid, -1, "{FF0000}Vocк desistiu da corrida!");
checkpoint[playerid] = 0;
new idc = GetPlayerVehicleID(playerid);
carroinq[idc] = 0;
SetPlayerPos(playerid, 0, 0 ,0);
}
else
{
SendClientMessage(playerid, -1, "{FF0000}Vocк nem esta em uma corrida!");
}
return 1;
}
//comando reset
CMD:reset(playerid, params[])
{
//se o checkpoint dele for o 1...
if(checkpoint[playerid] == 1)
{
checkpoint[playerid] = 1;
//vai criar novamente o checkpoint 1
SetPlayerCheckpoint(playerid, 1, 1, 1, 10.0);
//se ele estiver em um veiculo
if(IsPlayerInAnyVehicle(playerid))
{
//ele teleporta o veiculo + o player
new veiculo = GetPlayerVehicleID(playerid);
SetVehiclePos(veiculo, 1, 1, 1);
}
else//se nao estiver em um veiculo
{
//ele teleporta so o player
SetPlayerPos(playerid, 1, 1, 1);
}
}
//mesma coisa do de cima soque й o 2° checkpoint
if(checkpoint[playerid] == 2)
{
checkpoint[playerid] = 2;
SetPlayerCheckpoint(playerid, 2, 2, 2, 10.0);
if(IsPlayerInAnyVehicle(playerid))
{
new veiculo = GetPlayerVehicleID(playerid);
SetVehiclePos(veiculo, 2, 2, 2);
}
else
{
SetPlayerPos(playerid, 2, 2, 2);
}
}
if(checkpoint[playerid] == 3)
{
checkpoint[playerid] = 3;
SetPlayerCheckpoint(playerid, 3, 3, 3, 10.0);
if(IsPlayerInAnyVehicle(playerid))
{
new veiculo = GetPlayerVehicleID(playerid);
SetVehiclePos(veiculo, 3, 3, 3);
}
else
{
SetPlayerPos(playerid, 3, 3, 3);
}
}
if(checkpoint[playerid] == 4)
{
checkpoint[playerid] = 4;
SetPlayerCheckpoint(playerid, 4, 4, 4, 10.0);
if(IsPlayerInAnyVehicle(playerid))
{
new veiculo = GetPlayerVehicleID(playerid);
SetVehiclePos(veiculo, 4, 4, 4);
}
else
{
SetPlayerPos(playerid, 4, 4, 4);
}
}
if(checkpoint[playerid] == 5)
{
checkpoint[playerid] = 5;
SetPlayerCheckpoint(playerid, 5, 5, 5, 10.0);
if(IsPlayerInAnyVehicle(playerid))
{
new veiculo = GetPlayerVehicleID(playerid);
SetVehiclePos(veiculo, 5, 5, 51);
}
else
{
SetPlayerPos(playerid, 5, 5, 5);
}
}
return 1;
}
//essa callback serve para quando ele entrar em um checkpoint
public OnPlayerEnterCheckpoint(playerid)
{
//se esse checkpoint dele for o 1
if(checkpoint[playerid] == 1)
{
//manda a mensagem que ele passou
SendClientMessage(playerid, -1, "{00FF00}Vocк passou pelo checkpoint 1!");
//para nгo se confundir abaixo й o checkpoint 2!
//vai criar o checkpoint 2
SetPlayerCheckpoint(playerid, 2, 2, 2, 10.0);
//vai colocar ele dentro do checkpoint 2
checkpoint[playerid] = 2;
}
if(checkpoint[playerid] == 2)
{
//manda a mensagem que ele passou
SendClientMessage(playerid, -1, "{00FF00}Vocк passou pelo checkpoint 2!");
//para nгo se confundir abaixo й o checkpoint 3!
//vai criar o checkpoint 3
SetPlayerCheckpoint(playerid, 3, 3, 3, 10.0);
//vai colocar ele dentro do checkpoint 3
checkpoint[playerid] = 3;
}
if(checkpoint[playerid] == 3)
{
//manda a mensagem que ele passou
SendClientMessage(playerid, -1, "{00FF00}Vocк passou pelo checkpoint 3!");
//para nгo se confundir abaixo й o checkpoint 4!
//vai criar o checkpoint 4
SetPlayerCheckpoint(playerid, 4, 4, 4, 10.0);
//vai colocar ele dentro do checkpoint 4
checkpoint[playerid] = 4;
}
if(checkpoint[playerid] == 4)
{
//manda a mensagem que ele passou
SendClientMessage(playerid, -1, "{00FF00}Vocк passou pelo checkpoint 4!");
//para nгo se confundir abaixo й o checkpoint 4!
//vai criar o checkpoint 5
SetPlayerCheckpoint(playerid, 5, 5, 5, 10.0);
//vai colocar ele dentro do checkpoint 5
checkpoint[playerid] = 5;
}
if(checkpoint[playerid] == 5)
{
//manda o premio do player que ganhou
SendClientMessage(playerid, -1, "{00FF00}Vocк ganhou a corrida!");
SendClientMessage(playerid, -1, "{00FF00}Premio: {FF0000}$10000");
GivePlayerMoney(playerid, 10000);
//apaga o checkpoint
DisablePlayerCheckpoint(playerid);
//coloca o checkpoint dele novamento no 0 (sem checkpoint)
checkpoint[playerid] = 0;
new idc = GetPlayerVehicleID(playerid);
carroinq[idc] = 0;
nacorrida[playerid] = 0;
}
return 1;
}
//topo do GM:
new CorridaCP[MAX_CPS];
new LastPlayerCP[MAX_PLAYERS];
//Na criaзгo do evento ou corrida:
CorridaCP[CreateCheckPoint("corrida", CP_CIRCLE_BIG, 0x99FF0000, Float:x, Float:y, Float:z)] = 0;
CorridaCP[CreateCheckPoint("corrida", CP_CIRCLE_BIG, 0x99FF0000, Float:x, Float:y, Float:z)] = 1;
...
CPEnter:corrida(playerid, CPID)
{
if(LastPlayerCP[playerid] == CorridaCP[CPID - 1])
{
LastPlayerCP[playerid]= CorridaCP[CPID];
return 1;
}
return SendClientMessage(playerid, -1 "Caminho errado! pressione /reset, ou aperte F");
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (PRESSED(KEY_SECONDARY_ATTACK) && VariavelDoEvento[playerid]) cmd_reset(playerid, " ");
...
}
CMD:reset(playerid, param[]);
{
new Float:x, Float:y, Float:z;
new CPID=LastPlayerCP[playerid];
GetCPpos(CPID, x,y,z);
new vehicleid = GetPlayerVehicleID(playerid);
SetVehiclePos(vehicleid, x,y,z);
RepairVehicle(vehicleid);
PutPlayerInVehicle(playerid, vehicleid, 0);
}
Bom, eu tenho um realese de CheckPoints, que traz muitas funcionalidades extras
|