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

sábado, 3 de dezembro de 2011

Respawn com mesmas armas

Este script feito para o ACE2 permite ao jogador renascer com as mesmas armas e munições de quando morreu. Para acioná-lo, crie um MP Eventhandler no init.sqf:
player addMPEventHandler ["MPRespawn", {[_this select 0, _this select 1] execVM "scripts\respawn.sqf"}];

Defina o parâmetro respawn=3 no description.ext.

Crie o arquivo respawn.sqf e coloque na pasta scripts da sua missão.

_unit = _this select 0;
_dead = _this select 1;

_weapons = weapons _dead;
_mags = magazines _dead;
_weaponback = [_dead] call ACE_fnc_WeaponOnBackName;
_WeaponsRuckList = [_dead,true] call ACE_fnc_RuckWeaponsList;
_MagazinesRuckList = [_dead,true] call ACE_fnc_RuckMagazinesList;
_armasjogador = _dead setvariable ["armas",[_weapons, _mags, _weaponback, _WeaponsRuckList, _MagazinesRuckList]];

_weapons = _dead getvariable "armas" select 0;
_mags = _dead getvariable "armas" select 1;
_weaponback = _dead getvariable "armas" select 2;
_WeaponsRuckList = _dead getvariable "armas" select 3;
_MagazinesRuckList = _dead getvariable "armas" select 4;

removeAllItems player;
removeAllWeapons player;
removeBackpack player;

{player addMagazine _x;} forEach _mags;
{player addWeapon _x;} forEach _weapons;

if !(_weaponback == "") then
{
player addWeapon _weaponback;
_acewob = [player, _weaponback] call ACE_fnc_PutWeaponOnBack;
};

{_mag = [player, _x select 0, _x select 1] call ACE_fnc_PackMagazine;} forEach _MagazinesRuckList;
{_wep = [player, _x select 0, _x select 1] call ACE_fnc_PackWeapon;} forEach _WeaponsRuckList;

firstmuz = {
   private "_ma";
   _ma = getArray (configFile >> "CfgWeapons" >> _this >> "muzzles");
   if (_ma select 0 != "this") exitWith {_ma select 0};
   _this
};

_primary = primaryWeapon player;
if (_primary != "") then
{
   player selectWeapon (_primary call firstmuz);
};

sleep 5;

removeAllItems _dead;
removeAllWeapons _dead;
removeBackpack _dead;


quinta-feira, 1 de dezembro de 2011

Script que cria marca onde o jogador está ferido

Pessoal, fiz esse script para marcar no mapa o local em que um jogador está ferido e necessita de ajuda médica. Foi feito para funcionar com o ARMA 2 conjuntamente com ACE e o recurso ACE WOUNDS PREVTIME.

É bem simples o funcionamento. Coloque no init.sqf o seguinte código:

nul = [] execVM "scripts\jogadorferido.sqf";
Crie um arquivo com o nome "jogadorferido.sqf" e coloque em uma pasta scripts na pasta da sua missão, cole o seguinte código no arquivo sqf:

//Script by armastudio.blogspot.com
[] spawn
{
while {true} do
{
waituntil {! isnil "jogadorferido"};
titleText [format ["%1 foi ferido gravemente e necessita de ajuda.", jogadorferido], "PLAIN DOWN", 0];
jogadorferido = nil;
sleep 10;
};
};

if (isServer) then
{
{
_asd = round (random 1000);
_string1 = tostring [_asd,_asd,_asd];
_marker = createMarker [_string1, position _x];
_string1 setMarkerShape "icon";
_string1 setMarkerType "dot";
_string1 setmarkeralpha 0;

while {true} do
{
if (isplayer _x) then
{
_nome = name _x;
_string1 setmarkertext format ["%1", _nome];
_string1 setmarkerpos getpos _x;
_jogadorferido = _x getVariable "ace_w_state";
if (_jogadorferido > 800) then
{
_string1 setmarkeralpha 1;
jogadorferido = _nome;
publicvariable "jogadorferido";
waituntil {(_x getVariable "ace_w_state") == 0};
_string1 setmarkeralpha 0;
} else {_string1 setmarkeralpha 0};
} else {_string1 setmarkeralpha 0};
sleep 10;
};
} foreach playableunits;
};

sábado, 19 de novembro de 2011

CO22 ACE ACRE Incoming 2.7

Pessoal, fiz uma missão praticamente toda construída em scripts. Como possui várias coisas aleatórias, virtualmente nunca se repete da mesma forma. Possui recursos já mostrados aqui no blog e muito mais. A quantidade de inimigos é proporcional à quantidade de jogadores, então, dá para jogar com 1, 2 ou até 20 players.

Situação: Os americanos iniciaram a desocupação de Takistan. Antigas fortalezas, como o FOB Warrior, estão se tornando ilhas em meio ao caos, cercado de inimigos por todos os lados. Com o enfraquecimento do Taliban na região, aliado à falta de estrutura do exército takistanês, os russos iniciaram uma invasão e estão ganhando terreno. Aos bravos soldados que permanecem longe de casa, não resta outra opção, senão a defesa. Mas nessas condições, a melhor defesa é o ataque. Diariamente, o serviço de inteligência informa sobre a localização provável de inimigos. A tarefa do grupo especial de patrulha é eliminar esses focos antes que seja tarde.

Objetivo: Proteger o FOB de ataques de artilharia. O FOB está sob ataque de artilharia russa. A posição da bateria russa é desconhecida, somente com muita sorte será possível localizá-la, mas o melhor a fazer é localizar um dos comandantes russos que estão em Takistan, ele possui uma tabela de artilharia com a posição exata dos canhões D30. Peguem a tabela do comandante e terão as coordenadas dos canhões. A ação tem que ser rápida e os D30 destruídos, ou os morteiros destruirão o FOB e a missão será fracassada.

Inimigos: Infantaria russa e ocasionalmente talibans. Podem haver tanques ou blindados leves. O grupo de reforço russo se movimenta em um helicóptero de transporte de tropas armado com metralhadoras estáticas.

Notas: Os russos estão se organizandona região. Recentemene foi detectada uma estação de retransmissão de ondas de rádio que os grupos russos utilizam para se comunicarem e solicitarem reforços. Um humvee localizado no FOB foi equipado com uma antena parabólica que sempre aponta para a direção de origem da antena de rádio russa. Destruir essa antena pode ser uma estratégia vital para o sucesso da missão, pois cortando a comunicação os russos não conseguirão solicitar reforços.


Download: CO22 ACE ACRE Incoming 2.7

Missão revisada e atualizada para versão 2.7.

segunda-feira, 19 de setembro de 2011

Mais sobre localidade

Ao editar um script, uma coisa é bom ter em mente. Localidade. Os comandos disponíveis em bistudio.com não têm comportamentos idênticos quando rodam em ambientes multiplayer.
Um guia rápido sobre o funcionamento de cada comando pode ser acessado diretamente no wiki da BIS. Nessa página, estão todos os comandos disponíveis para criação de scripts.
Quando clicamos em algum dos comandos, a página que abre mostra, entre outras coisas, ícones indicando o comportamento do comando em jogos multiplayer.



Nesta captura de tela podemos ver o comando addAction e logo abaixo do nome do comando, três ícones neste caso, cada um informa sobre uma característica.
O primeiro ícone mostra que o comando está ativo desde a versão 1.1 do Operation Flashpoint e permanece funcionando até nos games mais recentes, como Operation Arrowhead.
O segundo ícone mostra que a ação do comando é local, ou seja, esse ícone simboliza, que os argumentos do comando devem ser locais para o cliente (computador) no qual o comando é executado.
O terceiro ícone mostra que os efeitos do comando são locais, ou seja, o script quando acionado por addAction produzirá efeitos somente na máquina do jogador que acionou o comando.



Já o comando join, funciona desde a versão 1.34 do Operation Flashpoint e possui como caracaterísticas de localidade ação local e efeitos globais. O último ícone simboliza que os efeitos do comando são transmitidos através da rede e acontecem em todos os computadores.
É bom estar atento. Cada comando tem suas particularidades quando rodam em MP.