[Ajuda] Objeto voltar ao lugar depois de destruido
#1

Bem, estou criando um GM RPG bбsico. Gostaria que os objetos voltassem ao seu lugar depois que fossem destruнdo (os objetos em questгo Caixa eletrфnico , ponto de anibus e outros que podem ser destruнdos). Se me ajudarem ficarei muito feliz.
Reply
#2

Crie o objeto apуs ele detruir dentro do cуdigo de destruir ele crie uma Settimer e chame a public que irб reconstruir o obj. Caso nгo entenda irei dar EDIT nesta resposta.
Reply
#3

Entгo, os objetos a qual me refiro sгo todos do GM. Acontece que quando um player destrуi o caixa eletrфnico por exemplo o mesmo n volta ao seu lugar depois q o player se afasta ou morre.
Reply
#4

Entгo pega os objetos criados e cria tipo....

pawn Код:
//TOPO DO GM
new Objeto[5];//Definiзгo rбpida para os objetos melhor do que usar:
//new obj1, obj2, obj3...
forward AtualizarObjetos();//Forward referente a pъblic criada


//Criamos os objetos normalmente
//ONGAMEMODEINIT
Objeto[0] = CreateObject...
Objeto[1] = CreateObject...
Objeto[2] = CreateObject...
Objeto[3] = CreateObject...
Objeto[4] = CreateObject...

//Legenda usada abaixo:  PC = Public Criada   T = Tempo    R = Repetiзгo 1 = repetir 0 = nгo repetir
//A repetiзгo da settimer й como se fosse assim: usei uma variavel uma vez e nгo vou mais utilizala....

//        PC                   T    R
SetTimer("AtualizarObjetos", 60000, 1);//Chamamos um settimer para atualizar de acordo com a evoluзгo...

//FINAL DO GM


public AtualizarObjetos()
{
for(new ApagarObj; ApagarObj <= 5; ApagarObj++)// Aqui criamos um loop para identificar o nъmero de objetos
DestroyObject(Objeto[ApagarObj]);//Destruimos todos os objetos novamente.....

//Em seguida os recriamos...

Objeto[0] = CreateObject...
Objeto[1] = CreateObject...
Objeto[2] = CreateObject...
Objeto[3] = CreateObject...
Objeto[4] = CreateObject...

//Menssagem enviada aos players informando a reconstituiзгo dos objetos....
SendClientMessageToAll(-1, "Todos os objetos destruidos foram recriados");
return 1;
}
Teste o cуdigo e deixe respostas.
Reply
#5

Nossa cara vlw mesmo.

Sem querer abusar de sua boa vontade mas ja abusando sera q da pra criar algo altomatico acho q chamam de loops, pois sao muitos objetos, se n souber vlw mesmo assim ajudou muito.
Reply
#6

kkkkkkk fera sim isso ai й o que eu disse observe vou explicar detalhadamente para vocк ok veja:


pawn Код:
/*Primeiramente vamos criar a variavel dos objetos, no cуdigo acima utilizei "5" desta forma:
"new Objeto[5];" vamos dizer que eu quero 30 objetos... Sendo assim irei utilizar a variavel Objetos da seguinte maneira: new Objeto[30];.... pronto criei minha variavel e setei um valor adicional a ela de "30".*/


//TOPO DO GM

new Objeto[30];

/*Agora vamos colocar a forward da callback que iremos cria lб no final da explicaзгo logo abaixo do new Objeto[30]; ficando da seguinte maneira:*/

new Objeto[30];
forward AtualizarObjetos();

/*Agora precisamos criar nossos objetos, irei dar um exemplo mas antes vou explicar veja bem:

se eu tiver 30 objetos serб necessбrio eu criar 30 aplicaзхes da variбvel Objeto enumerando-as por:

Objeto[0]
Objeto[1]..... assim por diante...

OBS:::::::: Objeto[0] й por que vocк inicia a contagem sempre do 0 nгo vai mudar o resultado, mas й uma questгo de ordem sendo assim eu teria:
*/

Objeto[0]
Objeto[1]
//......
//.....
Objeto[29]

//Pois atribui um valor a menos e nгo estamos contando a partir do 1 e sim do 0(ZERO й nъmero entгo ele conta tambйm) '-'

//entгo vamos ao exemplo:

//Digamos ser 30 objetos certo....

Objeto[0] = CreateObject(......)
Objeto[1] = CreateObject(......)
Objeto[2] = CreateObject(......)
Objeto[3] = CreateObject(......)
Objeto[4] = CreateObject(......)
Objeto[5] = CreateObject(......)
............
Objeto[29] = CreateObject(......)//a contagem termina no 29.....


/*Agora com os objetos criados vamos atribuir um settimer dentro da public OnGameModeInit() ficando da seguinte maneira:*/

Objeto[0] = CreateObject(......)
Objeto[1] = CreateObject(......)
Objeto[2] = CreateObject(......)
Objeto[3] = CreateObject(......)
Objeto[4] = CreateObject(......)
Objeto[5] = CreateObject(......)
//............
Objeto[29] = CreateObject(......)
SetTimer("AtualizarObjetos", 60000, 1);//Chamamos um settimer para atualizar de acordo com a evoluзгo...



/*Agora iremos criar uma forma para que os objetos criados dizendo que eles serгo destruidos, "RECRIAREM" automaticamente....*/

//FINAL DO GM::::

//Iniciamos a public:

public AtualizarObjetos()
{
//Iremos atribuir os mesmos valores porйm com algumas pequenas alteraзхes observe:

//no nosso loop que й isso ai embaixo estamos atribuindo um valor de 30 (pode mudar pelo valor de objetos......
for(new ApagarObj; ApagarObj <= 30; ApagarObj++)// Aqui criamos um loop para identificar o nъmero de objetos

//Destruimos nossos objetos, para nгo haver bugs de criar 2 objetos em um mesmo lugar
DestroyObject(Objeto[ApagarObj]);//Destruimos todos os objetos novamente.....

//Agora iremos recriar nossos objetos da mesma maneira feito acima:


Objeto[0] = CreateObject(......)
Objeto[1] = CreateObject(......)
Objeto[2] = CreateObject(......)
Objeto[3] = CreateObject(......)
Objeto[4] = CreateObject(......)
Objeto[5] = CreateObject(......)
//............
Objeto[29] = CreateObject(......)

//Pronto agora iremos enviar uma menssagem aos player informando que os objetos foram recriados com sucesso!
SendClientMessageToAll(-1, "Todos os objetos destruidos foram recriados");
return 1;//Finalizando a public
}//Finalizando a public

/*
:::::::::::::OBS::::::::::

Na nossa variavel new Objeto[30]; deverб ser mudado de acordo com o nъmero de objetos se for 30 vai ficar 30 se for 1000 vai ser 1000 deverб ser efetuada a mudanзa no loop tambйm lб embaixo na public AtualizarObjetos() ficando da seguinte maneira:

new Objeto[1000];

for(new ApagarObj; ApagarObj <= 1000; ApagarObj++)

Assim ele irб getar o nъmero de objetos definidos pela variбvel de forma simples e rбpida....

DICA::::

se forem muitos objetos vocк pode dar um (CTRL + H) identificar CreateObject e substituir por: Objeto[0] = CreateObject e depoir vir mudando os valores.....

Objeto[0] = CreateObject
Objeto[1] = CreateObject
Objeto[2] = CreateObject
Objeto[3] = CreateObject
Objeto[4] = CreateObject
Objeto[5] = CreateObject
*/
Espero que seja ъtil

OBS:::: Antes de pegar qualquer cуdigo, leia e o entenda pois apenas dar CTRL + C e CTRL + V suas dъvidas e dores de cabeзa vгo ser constantes...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)