[Tutorial] Recriar objetos quando quebrar
#1

Bom, eu fiz um tutorial inteiro em uma resposta a uma dъvida de um cara entгo sу vou colocalo de forma mais fбcil aqui... vou copiar e colocar, espero que gostem

OBS: dividi o tutorial em 2 partes para ficar melhor explicado sendo assim teremos 2 explicaзхes diferentes mas se unindo no final


Removi os [*pawn] do tutorial kk vlw schocc

Crйditos do tutorial:

samp wiki:
https://sampwiki.blast.hk/wiki/Scripting....C3.A7.C3.B5es // NA PARTE MATRIZES LOGO ABAIXO NA PБGINA ABERTA....
https://sampwiki.blast.hk/wiki/SetTimer

Criador: Focaximubh

O motivo de criar o tуpico foi para facilitar o acesso aos cуdigos pois isto й uma dъvida constante... Sei que nego vai dar CTRL + C e CTRL + V pq jб tб tudo mastigadinho ai, mas a cada 10 pelomenos 1 deve querer aprender realmente e este 1 aprendendo alguma coisa com meu tуpico ja estou satisfeito pois os outros 9 nгo irгo chegar a lugar nenhum alйm de dar dinheiro fбcil para empresar de host e serviзos para scripters



//TOPO DO GM
// A definiзгo abaixo й chamada de MATRIZ
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

pawn Код:
//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

pawn Код:
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;
}


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:
pawn Код:
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....

pawn Код:
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 callback:

[/pawn]
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
[/pawn]
:::::::::::::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:
pawn Код:
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.....
pawn Код:
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
#2

REMOVED
Reply
#3

A explicacao poderia estar um pouco melhor.

porem nao esta ma

parabens.
Reply
#4

Gostei, funcionou perfeitamente no meu GM que estou criando.
Reply
#5

hehe agradeзo os comentбrios e estarei editando o tutorial neste exato momento para melhor explicar e remover da caixa de [pawn]
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)