Transformar veiculo morto por carcaзa. -
HumildadeForevis - 27.06.2013
Hoje estava olhando meu GM, quando vi a "public OnVehicleDeath" sozinha lб sem nada, entгo queria que alguйm me mostrasse como eu faco um veiculo morto se transformar em carcaзa, exemplo estou andando de boa com meu veiculo, que esta com a vida 300 de repente eu bato na parece e ele pega fogo, antes de explodir ele se transforma em carcaзa ( aquela carcaзa enfrente a casa do Ryder )... e uma comando que remova a carcaзa se o player da profissгo lixeiro estiver a 20 metros da mesma... alguйm pode me ajudar?
Re: Transformar veiculo morto por carcaзa. -
BielCOP - 28.06.2013
Faзa o seu pedido aqui:
https://sampforum.blast.hk/showthread.php?tid=446719
Re: Transformar veiculo morto por carcaзa. -
andreasbleck - 28.06.2013
Testa e vк se funciona, fis agora so olhando a wiki sem testar, comentei bastante o code pra vocк saber o que ta acontecendo no code e editar do jeito que quiser.
pawn Код:
#include <a_samp>
#define COLOR_WHITE 0xFFFFFFAA //Cor branco pra usar no SendClientMessage
new Carcaca[MAX_VEHICLES]; //Aqui vai ficar o id do objeto criado pra ser destruнdo pelo lixeiro
new Lixeiro[MAX_PLAYERS]; //Essa variбvel guarda se o player й lixeiro ou nгo, vocк pode usar na enum PlayerInfo se quiser
public OnPlayerConnect(playerid)
{
Lixeiro[playerid] = 0; //Aqui vocк pode colocar um code pra carregar do arquivo se o player й lixeiro ou nгo
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
new Float:VehX, Float:VehY, Float:VehZ, Float:VehAngle; //Aqui eu crio umas variбveis pra armazenar a posiзгo do veнculo
GetVehiclePos(vehicleid, VehX, VehY, VehZ); //Pego a posiзгo X, Y e Z do veнculo
GetVehicleZAngle(vehicleid, VehAngle); //E o angulo do veнculo
SetVehicleToRespawn(vehicleid); //E depois respawno o veнculo pra nгo bugar, ficaria melhor usando um timer, porque aqui ele й respawnado bem na hora da explosгo ou se encostar na бgua
Carcaca[vehicleid] = CreateObject(3594, VehX, VehY, VehZ, 0.0, 0.0, VehAngle); //Aqui eu crio o objeto da carcaзa e armazeno o id na variбvel Carcaca[vehicleid]
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/virarlixeiro", true))
{
Lixeiro[playerid] = 1; //Aqui eu seto o player para lixeiro
SendClientMessage(playerid, COLOR_WHITE, "Parabйns, agora vocк й um lixeiro.");
return 1;
}
if(!strcmp(cmdtext, "/limparrua", true))
{
if(!Lixeiro[playerid]) return SendClientMessage(playerid, COLOR_WHITE, "Vocк nгo й um lixeiro.");
new Float:ObjX, Float:ObjY, Float:ObjZ, Limpezas = 0; //Aqui eu crio umas variбveis pra armazenar a posiзгo das carcaзas e o nъmero de carcaзas limpas
for(new i = 0; i < MAX_VEHICLES; i++) //Aqui eu faзo um loop por todos os carros do server
{
if(Carcaca[i]) //E vejo quais tem carcaзa
{
GetObjectPos(Carcaca[i], ObjX, ObjY, ObjZ); //Armazeno as coordenadas da carcaзa
if(IsPlayerInRangeOfPoint(playerid, 20.0, ObjX, ObjY, ObjZ)) //E vejo se o player estб a 20 metros de alguma carcaзa
{
DestroyObject(Carcaca[i]); //Removo a carcaзa
Limpezas++; //E aumento o count de quantas carcaзas limpei
}
}
}
if(!Limpezas)
{
SendClientMessage(playerid, COLOR_WHITE, "Nгo hб nenhuma carcaзa perto pra ser limpa.");
}
else if(Limpezas >= 1)
{
new string[129]; //Variбvel que vai conter a mensagem formatada (128 max characters + 1 EOS character = 129 cells)
format(string, sizeof(string), "Vocк limpou %i carcaзas da rua.", Limpezas);
SendClientMessage(playerid, COLOR_WHITE, string);
}
return 1;
}
return 0;
}
Re: Transformar veiculo morto por carcaзa. -
HumildadeForevis - 28.06.2013
Quote:
Originally Posted by andreasbleck
Testa e vк se funciona, fis agora so olhando a wiki sem testar, comentei bastante o code pra vocк saber o que ta acontecendo no code e editar do jeito que quiser.
pawn Код:
#include <a_samp>
#define COLOR_WHITE 0xFFFFFFAA //Cor branco pra usar no SendClientMessage
new Carcaca[MAX_VEHICLES]; //Aqui vai ficar o id do objeto criado pra ser destruнdo pelo lixeiro new Lixeiro[MAX_PLAYERS]; //Essa variбvel guarda se o player й lixeiro ou nгo, vocк pode usar na enum PlayerInfo se quiser
public OnPlayerConnect(playerid) { Lixeiro[playerid] = 0; //Aqui vocк pode colocar um code pra carregar do arquivo se o player й lixeiro ou nгo return 1; }
public OnVehicleDeath(vehicleid, killerid) { new Float:VehX, Float:VehY, Float:VehZ, Float:VehAngle; //Aqui eu crio umas variбveis pra armazenar a posiзгo do veнculo GetVehiclePos(vehicleid, VehX, VehY, VehZ); //Pego a posiзгo X, Y e Z do veнculo GetVehicleZAngle(vehicleid, VehAngle); //E o angulo do veнculo SetVehicleToRespawn(vehicleid); //E depois respawno o veнculo pra nгo bugar, ficaria melhor usando um timer, porque aqui ele й respawnado bem na hora da explosгo ou se encostar na бgua Carcaca[vehicleid] = CreateObject(3594, VehX, VehY, VehZ, 0.0, 0.0, VehAngle); //Aqui eu crio o objeto da carcaзa e armazeno o id na variбvel Carcaca[vehicleid] return 1; }
public OnPlayerCommandText(playerid, cmdtext[]) { if(!strcmp(cmdtext, "/virarlixeiro", true)) { Lixeiro[playerid] = 1; //Aqui eu seto o player para lixeiro SendClientMessage(playerid, COLOR_WHITE, "Parabйns, agora vocк й um lixeiro."); return 1; } if(!strcmp(cmdtext, "/limparrua", true)) { if(!Lixeiro[playerid]) return SendClientMessage(playerid, COLOR_WHITE, "Vocк nгo й um lixeiro."); new Float:ObjX, Float:ObjY, Float:ObjZ, Limpezas = 0; //Aqui eu crio umas variбveis pra armazenar a posiзгo das carcaзas e o nъmero de carcaзas limpas for(new i = 0; i < MAX_VEHICLES; i++) //Aqui eu faзo um loop por todos os carros do server { if(Carcaca[i]) //E vejo quais tem carcaзa { GetObjectPos(Carcaca[i], ObjX, ObjY, ObjZ); //Armazeno as coordenadas da carcaзa if(IsPlayerInRangeOfPoint(playerid, 20.0, ObjX, ObjY, ObjZ)) //E vejo se o player estб a 20 metros de alguma carcaзa { DestroyObject(Carcaca[i]); //Removo a carcaзa Limpezas++; //E aumento o count de quantas carcaзas limpei } } } if(!Limpezas) { SendClientMessage(playerid, COLOR_WHITE, "Nгo hб nenhuma carcaзa perto pra ser limpa."); } else if(Limpezas >= 1) { new string[129]; //Variбvel que vai conter a mensagem formatada (128 max characters + 1 EOS character = 129 cells) format(string, sizeof(string), "Vocк limpou %i carcaзas da rua.", Limpezas); SendClientMessage(playerid, COLOR_WHITE, string); } return 1; } return 0; }
|
Meu caro, ha um pequeno bug: quando eu explodi mais de 1 carcaзa em seguida, nгo consigo limpar nem a primeira nem a segunda, e nem as futuras carcaзas, assim tendo que reiniciar o servidor pra desbugar... se tiver como vocк arrumar o bug... rs. Muito obrigado por enquanto
Re: Transformar veiculo morto por carcaзa. -
andreasbleck - 29.06.2013
Que tipo de GM vocк tem? Eu testei compilando esse code como filterscript e funcionou normal, consegui limpar varias sem bug.
Re: Transformar veiculo morto por carcaзa. -
HumildadeForevis - 04.07.2013
Quote:
Originally Posted by andreasbleck
Que tipo de GM vocк tem? Eu testei compilando esse code como filterscript e funcionou normal, consegui limpar varias sem bug.
|
RPG, tambйm coloquei como FS, sу deu esse ъnico probleminha ae.
Re: Transformar veiculo morto por carcaзa. -
HumildadeForevis - 04.07.2013
Desculpe o Double mas, tem outros problemas: as vezes buga o numero de carcaзas que limpei, trava no 2, posso limpar 54646 carcaзas que fala que limpei somente 2.
e o outro bug que citei acima e o seguinte, para melhor entender: eu explodo um carro, nгo limpo ele, depois explodi outro, tambйm nгo limpo ele, depois explodo outro, e vou explodindo sem limpar... chega na hora de limpar, ele limpa sу os 2 ou 3 ultimas, depois fica falando que nгo ha nenhuma carcaзa por perto...
Re: Transformar veiculo morto por carcaзa. -
F1N4L - 13.07.2013
Tentei
ACOPLAR este code em meu server mas da a seguinte warning:
Quote:
C:\Users\xxxxxxx\Downloads\xxxxxxxxx [0.3d]\gamemodes\xxxxxxx.pwn(2777) : warning 219: local variable "string" shadows a variable at a preceding level
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
1 Warning.
|
o q fasso para remover essa warning string?
Re: Transformar veiculo morto por carcaзa. -
clerISoN - 13.07.2013
Quote:
Originally Posted by F1N4L
Tentei ACOPLAR este code em meu server mas da a seguinte warning:
o q fasso para remover essa warning string?
|
Muda o nome da string por outra qualquer.
Re: Transformar veiculo morto por carcaзa. -
F1N4L - 16.07.2013
Quote:
Originally Posted by clerISoN
Muda o nome da string por outra qualquer.
|
Desculpe mas a Warning permanece com qualquer outro nome...