09.04.2014, 00:18
(
Последний раз редактировалось DiegoCosta; 25.04.2015 в 05:18.
Причина: Adicionarinformaзхes
)
O caso era o seguinte:
A base do meu server й o PPC_Trucking, e estou formatando-o а meu modo. Pesquisei aqui no forum e aprendi todo o passo а passo pra criar uma oficina а cйu aberto, pra podermos usar comandos para trocar a cor do veiculo, adicionar neon e etc. Porйm, mesmo sabendo criar o 3DTextLabel, PickupIcon, percebi algo MUITO FACIL, e que me ajudou MUITO na criaзгo de Oficinas. Enfim, vou tentar explicar o que fiz.
Para os Pontos de Abastecimento do PPC_Trucking, existe uma serie de scripts que, juntos, permitem que seja criado o PickupIcon, 3DTextLabel e MapIcon apenas com a inserзгo das coordenadas. Como teste, editei uma das coordenadas do "AddRefuelPickup" para um outro local, e funcionou como eu imaginava: Foram gerados automaticamente o 3DTextLabel, o MapIcon e o Pickup nas coordenadas que determinei, e os comandos relacionados ao local tbm funcionaram.
O problema:
Eu queria criar um script para criaзгo de OFICINA, que adicionasse automaticamente os icones e textos para as coordenadas especificadas, como ocorre com o Ponto de Abastecimento.
A soluзгo:
Primeiro descartei a ideia de usar MapIcon e PickUp, por considerar desnecessario, pois criei as oficinas proximas a postos de abastecimento que jб tem MapIcon atrelado, e "andando pelo mapa" a propria 3DTextlabel identifica o local da Oficina quando nos aproximamos dele.
Entгo comecei a "copiar" os parametros dos Postos de Abastecimento, fazendo as devidas adaptaзхes para a "Oficina", da seguinte forma:
Na include PPC_Defines:
Na include PPC_GameModeInit:
Na include PPC_DefTexts:
Aqui defini o texto que aparecerб no lugar de "TXT_Oficina" em "Create3DTextLabel(TXT_Oficina (...) );"
Depois disso foi sу compilar o GM e definir os comandos que serгo utilizados na Oficina. Mas como o GM vai saber se estou na Oficina ou nгo?
Simples, basta incluir no comando a funзгo "IsPlayerInRangeOfPoint":
Enfim, muitas coisas nгo sei explicar direito, entгo nгo me aprofundei em detalhes pra nгo confundir mais ainda. Embora nгo seja criado nenhum MapIcon ou PickUp para a oficina, й possivel adicionar isso posteriormente. Quem jб teve contato com o PPC_Trucking vai identificar facilmente a estrutura das PickUps "ARefuelPickup" e adaptadar para a "AOficinaPickup".
Espero que meu tуpico sirva de ajuda para alguem.
A base do meu server й o PPC_Trucking, e estou formatando-o а meu modo. Pesquisei aqui no forum e aprendi todo o passo а passo pra criar uma oficina а cйu aberto, pra podermos usar comandos para trocar a cor do veiculo, adicionar neon e etc. Porйm, mesmo sabendo criar o 3DTextLabel, PickupIcon, percebi algo MUITO FACIL, e que me ajudou MUITO na criaзгo de Oficinas. Enfim, vou tentar explicar o que fiz.
Para os Pontos de Abastecimento do PPC_Trucking, existe uma serie de scripts que, juntos, permitem que seja criado o PickupIcon, 3DTextLabel e MapIcon apenas com a inserзгo das coordenadas. Como teste, editei uma das coordenadas do "AddRefuelPickup" para um outro local, e funcionou como eu imaginava: Foram gerados automaticamente o 3DTextLabel, o MapIcon e o Pickup nas coordenadas que determinei, e os comandos relacionados ao local tbm funcionaram.
O problema:
Eu queria criar um script para criaзгo de OFICINA, que adicionasse automaticamente os icones e textos para as coordenadas especificadas, como ocorre com o Ponto de Abastecimento.
A soluзгo:
Primeiro descartei a ideia de usar MapIcon e PickUp, por considerar desnecessario, pois criei as oficinas proximas a postos de abastecimento que jб tem MapIcon atrelado, e "andando pelo mapa" a propria 3DTextlabel identifica o local da Oficina quando nos aproximamos dele.
Entгo comecei a "copiar" os parametros dos Postos de Abastecimento, fazendo as devidas adaptaзхes para a "Oficina", da seguinte forma:
Na include PPC_Defines:
PHP код:
//Adicionei os enumeradores:
enum TOficinaData
{
Float:tx,
Float:ty,
Float:tz,
Local
}
new AOficinaPickup[50][TOficinaData];
PHP код:
GameModeInit_VehiclesPickups()
{
GameModeInit_PickupsIcons();//Na propria include jб tem isso, mas pode ser mudado se preferir
}
//Em outra parte mais abaixo, na mesma include, adicionaremos isso isso:
GameModeInit_PickupsIcons()
{
//Aqui pode ser especificada qualquer coordenada, no formato (x,y,z)
AddOficinaPickup(1911.27, -1776.14, 13.38);
}
//Mais abaixo, na mesma include
AddOficinaPickup(Float:x, Float:y, Float:z)
{
for (new i; i < sizeof(AOficinaPickup); i++)
{
if (AOficinaPickup[i][Local] == 0)
{
AOficinaPickup[i][tx] = x;
AOficinaPickup[i][ty] = y;
AOficinaPickup[i][tz] = z;
Create3DTextLabel(TXT_Oficina, 0xFFFF00AA, x, y, z + 0.8, 30.0, 0);
//A TXT_Oficina й o texto que aparcerб na 3DTextLabel, que vamos setar depois em outra Include.
break;
}
}
}
Aqui defini o texto que aparecerб no lugar de "TXT_Oficina" em "Create3DTextLabel(TXT_Oficina (...) );"
PHP код:
//Eu coloquei nessa include, por ser a padrгo para os textos desse GM
#define TXT_Oficina "{FFFF00}Digite o \"/comando\"\n de sua Oficina"
Simples, basta incluir no comando a funзгo "IsPlayerInRangeOfPoint":
PHP код:
if(IsPlayerInRangeOfPoint(playerid, 10.0, AOficinaPickups[i][tx], AOficinaPickups[i][ty], AOficinaPickups[i][tz]))
Espero que meu tуpico sirva de ajuda para alguem.