RESOLVIDO!! PickupIcon, MapIcon e TextLabel automatico -
DiegoCosta - 09.04.2014
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:
PHP код:
//Adicionei os enumeradores:
enum TOficinaData
{
Float:tx,
Float:ty,
Float:tz,
Local
}
new AOficinaPickup[50][TOficinaData];
Na include PPC_GameModeInit:
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;
}
}
}
Na include PPC_DefTexts:
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"
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":
PHP код:
if(IsPlayerInRangeOfPoint(playerid, 10.0, AOficinaPickups[i][tx], AOficinaPickups[i][ty], AOficinaPickups[i][tz]))
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.
Re: PickupIcon, MapIcon e TextLabel automatico -
DiegoCosta - 09.04.2014
Ninguem? :-/
Re: PickupIcon, MapIcon e TextLabel automatico -
BielCorpOProgramm - 09.04.2014
Nгo estб muito bem esclarecida a sua dъvida.
Especifique-se melhor.
Re: PickupIcon, MapIcon e TextLabel automatico -
DiegoCosta - 09.04.2014
Criar script que de crie MapIcons, 3DTextLabel e PickupIcon automaticamente, como dos Pontos de Abastecimento citados acima, mas para criaзгo de Oficina de Pintura.
Re: PickupIcon, MapIcon e TextLabel automatico -
Stroon - 09.04.2014
Pq nгo faz manual? o.O
Re: PickupIcon, MapIcon e TextLabel automatico -
DiegoCosta - 10.04.2014
Stroon, sei que й "preguiзa", mas alйm de facilitar o uso, acaba dixando mais organizado, por exemplo, pra cada coordenada tenho que gerar os 3 itens, enquanto o sistema que usaram no GM deixa apenas os 3 scripts genericos pra criar tais itens, bastando apenas digitar "AddRefuelPickup" com as coordenadas que o proprio script s encarrega de fazer o resto
Re: PickupIcon, MapIcon e TextLabel automatico -
VeNuZ_ - 10.04.2014
Copie tudo, altere de rufuel para oficina em todas as variavei, altere o numero da pickup, altere o define do texto da 3d text label, e pronto, ou entao resconstrua um codigo seu... Usando salvamento e ler o ficheiro..
Re: PickupIcon, MapIcon e TextLabel automatico -
DiegoCosta - 10.04.2014
Vlw Venuz, vou tentar de novo, pq fiz isso e deu varios erros, deve haver algo do "ARefuel" que dveria sr criado para "AOficina" mas nгo encontrei :/
Re: PickupIcon, MapIcon e TextLabel automatico -
DiegoCosta - 15.04.2014
Galera, voltando ao topico pra avisar: CONSEGUI O QUE EU QUERIA!!!
Antes eu tinha que fazer isso:
-Pegar as coordenadas
-Definir a coordenada como Oficina1, Oficina2, e etc, conforme a quantidade e necessidade
-Criar o 3DTextLabel pro local
-Criar o PickupIcon no local
-Criar o MapIcon pro local
Agora, a unica coisa que faзo, й escrever isso na Include:
"AddOficinaPickup(233.5481,64.8072,2.8994)"
E pronto, tudo o que eu tinha que criar um por um, й criado na coordenada especificada automaticamente, sem dor de cabeзa.
O problema estava na include "PlayerCommands" que primeiro definia os locais das oficinas dessa forma:
PHP код:
#define Oficina1 IsPlayerInRangeOfPoint(playerid, 2.5, -47.7836, 270.6917, 2.2500)
#define Oficina2 IsPlayerInRangeOfPoint(playerid, 10.0, 24.6492, 2418.9697, 22.7578)
#define Oficina3 IsPlayerInRangeOfPoint(playerid, 3.0, 1348.4963, 946.5101, 10.5252)
#define Oficina4 IsPlayerInRangeOfPoint(playerid, 4.0, -547.3569,507.0492,2.5933)
E depois no Script do comando ficava assim:
PHP код:
if(Oficina1 || Oficina2 || Oficina3 || Oficina4)
Re: PickupIcon, MapIcon e TextLabel automatico -
DiegoCosta - 25.04.2015
Consegui galera, atualizei tudo no primeiro post
Esse post era de uma duvida minha que nг ohavia sido solucionada por completo, mas agora enfim consegui editar o script como eu queria. Entгo atualizei o primeiro post para adicionar as informaзхes necessarias para solucionar o problema
Antes eu tinha que pegar as coordenadas e setar cada oficina com o "#define Oficina", e depois ainda tinha que incluir a respectiva oficina no comando, caso contrбrio o comando nao funcionava naquele local.
Agora, com o o script generico do "IsPlayerInRangeOfPoint" basta adicionar as coordenadas em "AddOficinaPickups(X ,Y,Z)", e MAIS NADA, e os comandos funcionam normalmente sem precisar altera-los a cada oficina adicionada
Ressucitei o topico pq hб tempos atrбs meu HD queimou, e perdi todas as modificaзхes que eu havia feito no GM, e agora que estou editando tudo de novo desde o inicio. Desculpem por dar esse "Bump" em topico meu jб antigo, mas acredito que isso possa ajudar а mais alguem.