PDA

Ver la versión completa : Inicialización amunicionamiento unidades



NeGoov
17/02/2014, 17:14
Por algún motivo, en servidor no funciona el llamar un script en cada unidad en su inicialización para amunicionarlos. Ya se comentó en ts y no encontramos solución...

Probé llamando un script en el init.sqf que lo hacia por cada unidad (por nombres) reutilizando el script de la caja de roles.

_lideres=[Alpha_1,Bravo_1,Charlie_1,Delta_1];_rtos=[Alpha_5,Bravo_5,Charlie_5,Delta_5];
_fusileros=[Alpha_2,Bravo_2,Charlie_2,Delta_2,Charlie_3,Delta_ 3];
_apoyo=[Alpha_3,Bravo_3];
_medicos=[Alpha_4,Bravo_4,Charlie_4,Delta_4];


{
_unidadVacia = _x execVM "scriptsMision\vaciarUnidad.sqf";
waitUntil {scriptDone _unidadVacia};
_x execVM "scriptsMision\preSetsArmamento\sargento.sqf";
}forEach _lideres;


{
_unidadVacia = _x execVM "scriptsMision\vaciarUnidad.sqf";
waitUntil {scriptDone _unidadVacia};
_x execVM "scriptsMision\preSetsArmamento\RTO.sqf";
}forEach _rtos;


{
_unidadVacia = _x execVM "scriptsMision\vaciarUnidad.sqf";
waitUntil {scriptDone _unidadVacia};
_x execVM "scriptsMision\preSetsArmamento\fusileroGranadero.s qf";
}forEach _fusileros;


{
_unidadVacia = _x execVM "scriptsMision\vaciarUnidad.sqf";
waitUntil {scriptDone _unidadVacia};
_x execVM "scriptsMision\preSetsArmamento\ligera.sqf";
}forEach _apoyo;


{
_unidadVacia = _x execVM "scriptsMision\vaciarUnidad.sqf";
waitUntil {scriptDone _unidadVacia};
_x execVM "scriptsMision\preSetsArmamento\TES.sqf";
}forEach _medicos;

Y nada, muy bonito en el editor, pero ni caso en servidor.

Leyendo la wiki de bis, vi información sobre el 'initPlayerLocal.sqf' (https://community.bistudio.com/wiki/Event_Scripts) y me dio por probar a partir de él. Aún así, entiendo que hace la misma función que la inicialización de cada unidad en el servidor pero de manera general... Así, que ahí llamo a este script:

_player=_this select 0;

_unidadVacia = _player execVM "scriptsMision\vaciarUnidad.sqf";
waitUntil {scriptDone _unidadVacia};


switch (_player) do {
case (Alpha_1 || Bravo_1 || Charlie_1 || Delta_1) : {
_player execVM "scriptsMision\preSetsArmamento\sargento.sqf"; };
case (Alpha_5 || Bravo_5 || Charlie_5 || Delta_5) : {
_player execVM "scriptsMision\preSetsArmamento\RTO.sqf"; };
case (Alpha_2 || Bravo_2 || Charlie_2 || Delta_2 || Charlie_3 || Delta_3) : {
_player execVM "scriptsMision\preSetsArmamento\fusileroGranadero.s qf"; };
case (Alpha_3 || Bravo_3) : {
_player execVM "scriptsMision\preSetsArmamento\ligera.sqf"; };
case (Alpha_4 || Bravo_4 || Charlie_4 || Delta_4) : {
_player execVM "scriptsMision\preSetsArmamento\TES.sqf"; };
default {
_player execVM "scriptsMision\preSetsArmamento\fusileroGranadero.s qf"; };
};

Y nada...

Se me ocurre también hacerlo mediante un activador, pero no se si sería correcto.

Alguna idea? Porque no en todas las misiones puede tener sentido que te esté esperando una bonita caja...



--



EDITO: A parte de algunos errores en los dos scripts, ya se me comentó que no hay solución simple, así que nada, por cajas.

Artur
17/02/2014, 19:07
Siempre nos queda meterlo en el init a pelo...

:(

NeGoov
17/02/2014, 20:40
Siempre nos queda meterlo en el init a pelo...

:(
Lo siento, pero soy incapaz de dejarlo así de guarro xD

NeGoov
09/03/2014, 15:54
Para no empezar un nuevo tema y aprovechar que está relacionado,

Antes eran las unidades, ahora también las cajas. Parece que el tradicional:

clearItemCargo this;
clearWeaponCargo this;
clearMagazineCargo this;
clearBackpackCargo this;
this addWeaponCargo["loQueSea",5];

en servidor no hace ni caso, y parece ser que tiene que ser cambiado por los scripts globales, sincronizados en cada uno de los clientes en MP:

clearItemCargoGlobal this;
clearWeaponCargoGlobal this;
clearMagazineCargoGlobal this;
clearBackpackCargoGlobal this;
this addWeaponCargoGlobal["loQueSea",5];

Esto afecta a todos los scripts/funciones que quitan/añaden objetos en cajas, incluido, por ejemplo, el GXAddons con su gx_asp_addradio

this addWeaponCargoGlobal ["gx_supportradio", 5];

Entiendo que esto está relacionado con la inicialización de armamento de las unidades, pero no están los scripts de vaciado global (sí de quitar una arma en concreto -removeWeaponGlobal-), así que eso sigue igual.

Que alguien lo confirme (Colum...), aunque así lo he comprobado.

NeGoov
09/03/2014, 23:35
Después de una rápida búsqueda, parece que se ha comentado en los foros de BIS (http://forums.bistudio.com/showthread.php?174171-ammo-crate-custom-load-out-problems-since-update).

Hemos hecho unas pruebas, y así es. Pero hacer incapié en que se tiene que llamar entre if(isServer) then { ... }; , ya que sino lo haría cada vez que entre alguien, provocando además un gran desincronismo. Aún así, no se si es lo correcto...


De nuevo, invoco a Colum...

[EDITO: Confirmado.]