Blog destinado ao compartilhamento de técnicas de edição de missões para a série Armed Assault

quinta-feira, 21 de julho de 2011

Respawn móvel

Atualizado em 03/12/2011

Fiz um script que possibilita a criação de um respawn móvel para jogos multiplayer no Arma2. É compatível a partir da versão OA 1.55.

O funcionamento desse script é bem simples, basta criar um veículo no editor e dar a ele um nome qualquer. Enquanto esse veículo não estiver danificado totalmente, ele será o respawn móvel. Caso ele seja destruído, o respawn será a marca respawn_west.


Para habilitar o script na sua missão, siga os seguintes passos:

  • Entre no arquivo description.ext que está na pasta da sua missão, em mpmissions. Caso não tenha um arquivo description.ext, crie um no notepad ou outro editor de textos e cole ou altere o seguinte código para:
respawn = 3;
  • Entre no editor e crie uma marker do tipo empty com o nome respawn_west. Posicione essa marca no local que será o ponto de respawn, caso o respawn móvel seja destruído.
  • Crie um ou mais veículos e dê a eles nomes quaisquer, como por exemplo: veiculorespawn. Esses veículos serão os respawn móveis. Pode ser um carro, um helicóptero, um avião, um blindado, uma motocicleta...
  • Entre no arquivo init.sqf localizado na pasta da sua missão ou crie um no notepad, caso não o tenha ainda. Inclua o seguinte código:
{_x addMPEventHandler ["MPRespawn", {Null = [[veiculorespawn1,
veiculorespawn2],_this select 0, _this select 1] execVM "scripts\respawnmovel.sqf";}];} foreach playableunits;
Note que o nome do veículo em negrito deve ser o mesmo que o nome digitado no editor.
  • Entre no notepad, crie um arquivo novo e cole o seguinte código:

//Script by armastudio.blogspot.com
_veiculosrespawn = _this select 0;
_unit = _this select 1;
_dead = _this select 2;
if (! isplayer _unit) exitwith {};

while {isnil "respawnmovel"} do
{
_rspmv = [_veiculosrespawn,_dead] call BIS_fnc_nearestposition;
if (alive _rspmv) then {respawnmovel = _rspmv};
if (! alive _rspmv) then {_veiculosrespawn = _veiculosrespawn - [_rspmv]};
if (count _veiculosrespawn == 0) exitwith{ respawnmovel = nil};
};

if (alive respawnmovel) then
{
_freedriver = respawnmovel emptyPositions "driver";
If (_freedriver > 0) exitwith {_unit moveindriver respawnmovel};

_freecargo = respawnmovel emptyPositions "cargo";

If (_freecargo > 0) then {_unit moveincargo respawnmovel} else
{

// Se não tiver nenhuma posição livre no respawn móvel, posiciona o jogador 2 metros atrás do veículo de respawn, se ele ainda estiver vivo

_size = ((sizeof typeof respawnmovel) / 2) + 2;
_xx = (((getpos respawnmovel) select 0) - ((sin (getdir respawnmovel) * _size)));
_yy = (((getpos respawnmovel) select 1) - ((cos (getdir respawnmovel) * _size)));

_unit setpos [_xx,_yy, 0];
_unit setdir (getdir respawnmovel);
};

};
respawnmovel = nil;



  • Grave esse arquivo na pasta scripts da sua missão com o nome respawnmovel.sqf
Em caso de dúvidas e sugestões, faça um comentário a este artigo.
Assine o RSS e inscreva-se no blog Armed Assault Studio para manter-se atualizado com as publicações.

12 comentários:

  1. legal,mas erioa saber uma coisa...muitos scripts de missoes se aplicam tbm aos addons,keri saber como faço pra criar uma caixa de muniçao,pois estou kerendo adicionar as armas FAL do Dragon em uma caixa pra aparecer no editor...Vlw

    ResponderExcluir
  2. Nunca abri um PBO de um addon para ver o conteúdo, mas acho que não deve ser muito complicado. Vou tentar encontrar alguma coisa a respeito e se conseguir te aviso.

    ResponderExcluir
  3. Achei o arquivo weapons.pbo da pasta arma2/addons nele tem os ammobox originais, me parece que é só alterá-los para incluir as FALs. Se quiser tente aí, ou me mande o link do PBO das armas FAL do Dragon que eu vou tentar colocá-las em uma caixa.

    ResponderExcluir
  4. Consegui,vlw ai as dicas...Ahh,depois poste como fazer para matar uma unidade completando o objetivo e se for possiel um script ondeas pessoas e carros(civis) passem na rua...pois estou pensando em tentar fazer uam missao onde a gente esta com um carro patrulhando,e pode occorrer ataques(td aleatorio:pátrulha,ataque,civis)pois asssim simulara uma patrulha...

    ResponderExcluir
  5. Este comentário foi removido pelo autor.

    ResponderExcluir
  6. Tipo um domination SP com suporte aereo e vida civil...se for possivel,edita um pra mim,pq ja tentei com us scripts aki e nem sei por onde começar...

    ResponderExcluir
  7. Se quiser detectar quando uma pessoa foi morta, basta inserir no campo condition de um trigger o código:

    ! alive nomedaunidade

    Tem um exemplo disso no vídeo que mostro a edição de uma missão básica.
    Se quiser fazer uma missão em conjunto, podemos tentar, acho uma boa ideia.

    ResponderExcluir
  8. Sobre o script, acho que dá para fazer alguma coisa legal.
    Podemos criar uma base da qual partirá as patrulhas para alguma cidade do mapa sorteada aleatoriamente. Nessa cidade, circulam grupos de civis normais, civis com armas "escondidas", IEDs, Suicidas etc
    Quando os civis detectam a patrulha, sacam as armas e começam o ataque ou acionam explosivos. Se for algo assim, acho que não será difícil de fazer.

    ResponderExcluir
  9. Cara,aum tenho OA,apenas o A2...to olhando aki akelas missoes do A2(q parecem um Wrafare SP)...e to pensando em edita-las(troca de ilha,naum gosto de matas verdes),tipo,trocar a ilha,colocar uniaddes do ACE...Tentarei tbm add o script de supirte aereo e de cargo no C130,mas naum sei como fazer isso..bom,tentarei la,caso consiga te avisarei e caso naum,TALVEZ pedirei sua ajuda(sempre kis mexer com missoes,mas cansa)...disse talvez pq se eu iritar desistirei de criar missoes...

    ResponderExcluir
  10. Fiz uma alteração no script para permitir o respawn das AIs também. Antes somente os jogadores faziam respawn.

    ResponderExcluir
  11. Fiz algumas alterações no script, permitindo o uso de mais de um veículo para respawn.

    ResponderExcluir
  12. nao consegui fazer jorge se tivesse como deixa eles prontos pra download os inscript e um template era bem melhor

    ResponderExcluir