Problème de briefing qui disparait après respawn

Pour les Masochistes Éditeurs de missions
Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 43
Messages : 3351
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

Problème de briefing qui disparait après respawn

Message par =[TTK]= Memphis007 »

J'ai trouvé un truc sur le site arma-fr, ça vaut ce que ce ça vaut, comme j'y pipe que dalle je vous le met :

Code : Tout sélectionner

waitUntil { !isNil {player} };
waitUntil { player == player };

if ( isNil {player getVariable "mk_briefingEH"} ) then
{
    player addEventHandler ["killed",
    {
        [] spawn {
            waitUntil { alive player };
            execVM "briefing.sqf";
        };    
    }];
    player setVariable ["mk_briefingEH", true];
};
c'est à mettre dans le briefing.sqs juste à la fin


EDIT: j'ai collé le code sur mes deux missions, mais à mon avis cette technique ne fonctionne que pour les objectifs définis au départ et pas pour les objectifs créés en cours de partie à l'aide de déclencheurs, il faudrait donc déporter ces ajouts de briefing dans des fichiers sqf supplémentaires et les appeler à l'aide du même code ci dessus

RE EDIT : ça à pas l'air de fonctionner leur machin, j'ai trouvé un autre truc qui à l'air plus simple :

Code : Tout sélectionner

A mettre dans l'init de toutes les unités jouables :
this addEventHandler ["killed", {_this execVM "respawn_player.sqf";}];

respawn_player.sqf:
sleep playerRespawnTime;
player exec "briefing.sqf"; 
après dans respawn_player.sqf faudrai bricoler un truc qui vérifie que obj1 et obj2 sont bien sur true pour afficher obj3 qui est dans un sqf a part

sources : http://www.arma-fr.net/forum/index.php?showtopic=8192
sources : http://www.tacticalgamer.com/armed-assa ... t-2-a.html
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 43
Messages : 3351
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

Re: Problème de briefing qui disparait après respawn

Message par =[TTK]= Memphis007 »

ou encore :

Code : Tout sélectionner

init.sqf :

_KilledHandler = player addEventHandler ["killed", {_this execVM "playerkilled.sqf"}];

Code : Tout sélectionner

playerkilled.sqf :

waituntil {(alive player)};

execVM "briefing.sqf";
Quelle méthode vous semble la plus prometteuse ?
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
Camille Caz
Grand Gourou
Grand Gourou
Âge : 83
Messages : 1814
Enregistré le : lun. 25 janv. 2010, 22:45
Humeur : paléolithique mais presque
Localisation : près de La Rochelle

Re: Problème de briefing qui disparait après respawn

Message par Camille Caz »

J'ai choisi la dernière pour la mettre dans "Crash"
On n'a pas toujours ce qu'on mérite mais on ne mérite pas forcément ce qu'on a.

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 43
Messages : 3351
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

Re: Problème de briefing qui disparait après respawn

Message par =[TTK]= Memphis007 »

Je viens de voir que j'avais oublié un petit détail qui a son importance, il faut ajouter sur la carte une logique de jeu nommé "killed" pour que cette méthode fonctionne
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 43
Messages : 3351
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

Re: Problème de briefing qui disparait après respawn

Message par =[TTK]= Memphis007 »

je monologue un peu mais je crois que j'avance sur ce problème :

En fait les Respawn "GROUP" et "SIDE" ne sont pas des respawn a proprement parler pour arma 2, il s'agit en fait de teamswitch déguisé (vous pouvez vous en apercevoir en appuyant sur la touche "T" dans 'éditeur qui vous propose le changement d'équipe.

Donc vous démarrer votre mission, sur le premier joueur le briefing s'affiche, vous appuyez sur "T", vous selectionnez n'importe quel joueur et la boom le briefing et les notes disparaissent.

En fait lorsque la partie débute le briefing.sqf est envoyé uniquement aux joueurs humains et pas aux IA.

Donc en rajoutant dans l'init.sqf : onTeamSwitch {execVM "briefing.sqf";};

on résout le problème, cependant deux problèmes persistent :

- le 1er si on s'amuse (mais là ya pas de raison en multi) à reswitcher sur un joueur ayant déjà eu le briefing, on double toutes les entrées.
- le 2ème : avec cette technique les objectifs ne sont pas cochés quand ils ont été réalisés, malgré le publicVariable (tout du moins en local, pas testé sur le serveur)
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
=[TTK]= MoreBack
Retraité
Retraité
Âge : 62
Messages : 657
Enregistré le : lun. 25 janv. 2010, 22:45

Re: Problème de briefing qui disparait après respawn

Message par =[TTK]= MoreBack »

tout cela est très intéressant Memphis !

Camille, il faudrait que tu ajoute, dans ton raccourci arma, le paramètre -winxp.
beaucoup de personnes ont résolus leurs problèmes sous vista / arma avec ce paramètre.
Le jour où on ne travaillera plus le lendemain des jours de repos, la fatigue sera vaincue.
État : Ivre mort pour la patrie.
Image

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 43
Messages : 3351
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

Re: Problème de briefing qui disparait après respawn

Message par =[TTK]= Memphis007 »

vous noterez qu'il n'y pas de problèmes de briefing avec respawn = "BASE"
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
=[TTK]= Clem
Retraité
Retraité
Messages : 431
Enregistré le : ven. 12 févr. 2010, 15:47

Re: Problème de briefing qui disparait après respawn

Message par =[TTK]= Clem »

c'est un bug de arma 2 , dans le patch 1.03 ils ont corige que pour le respawn base.
pour group et side faut atendre un autre patch

eh pour info j'ai 2 soluces a ce bug mais c'et du script sur script et tu utilise plus du tout le systeme briefing.sqf et briefing.html
faite un tour ,le temps que je comprends comment ca fonctionne, sur www.ofpec.com et recuperez Briefing_Example.utes.rar ce probleme de diparation de briefing est aparament resolu dans cete exemple
Image

Avatar du membre
=[TTK]= Clem
Retraité
Retraité
Messages : 431
Enregistré le : ven. 12 févr. 2010, 15:47

Re: Problème de briefing qui disparait après respawn

Message par =[TTK]= Clem »

virez briefing.sqf du dossier mision et metre tous le texte du briefing.sqf dans initJIPcompatible.sqf que vous aurez preablement creer dans votre dossier mission .
Image

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 43
Messages : 3351
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

Re: Problème de briefing qui disparait après respawn

Message par =[TTK]= Memphis007 »

??? ça change quoi de déporter le briefing dans ce fichier ? tu lances ce nouveau fichier via l'init.sqf ? t'as testé cette méthode ? Quid des objectifs déclarés en cour de partie ? (oui je sais ça m'agace aussi )

Mais il faut trouver une solution fiable qui fonctionne dans tous les cas de figures, sinon c'est pas drôle !
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
=[TTK]= Clem
Retraité
Retraité
Messages : 431
Enregistré le : ven. 12 févr. 2010, 15:47

Re: Problème de briefing qui disparait après respawn

Message par =[TTK]= Clem »

ta le briefing ,le respwan ok,quid no,JIP avec objectif a jour no,teamswitch no

tu ne le lance pas a partir de l'init se lance tout seul

la soluce elle est la reste a piger comment ca marche


jip.sqf

private ["_diary6", "_diary5", "_diary4", "_diary3", "_diary2", "_diary1", "_str", "_trigger"];

waitUntil {!isNil "tasks_done"};

if (!isNil "convoy_down") then {
deleteMarkerLocal "Hinterhalt";
} else {
"convoy_down" addPublicVariableEventHandler {
hint "The convoy was destroyed, good work!";
task1 settaskstate "Succeeded";
deleteMarkerLocal "Hinterhalt";
};
};

//Missionsziel wird vorausgewählt

_str = str player;

if (_str in ["sf_1d","sf_2d","sf_3d","sf_4d","sf_5d","sf_1","sf_2","sf_3","sf_4","sf_5"]) then {
if (isNil "convoy_down") then {
player setCurrentTask task1;
};
} else {
if (_str in ["pilot_1","pilot_2","pilot_3","pilot_4","pilot_5"]) then {
player setCurrentTask task5;
} else {
if (_str in ["a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","a11","a12","a13","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13"]) then {
if (isNil "elektro_clear") then {
player setCurrentTask task3;
};
} else {
if (_str in ["b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13"]) then {
if (isNil "zele_clear") then {
player setCurrentTask task2;
};
} else {
if (isNil "elektro_clear") then {
player setCurrentTask task3;
};
};
};
};
};

if (isNil "tanks_down") then {
"tanks_down" addPublicVariableEventHandler {
"tanks" setMarkerColorLocal "ColorGreen";
hint "Tanks in Zelenogorsk are destroyed !!!";
};
} else {
"tanks" setMarkerColorLocal "ColorGreen";
};

if (isNil "zele_clear") then {
"zele_clear" addPublicVariableEventHandler {
"zeleno" setMarkerColorLocal "ColorGreen";
task2 settaskstate "Succeeded";
hint "Zelenogorsk cleared !!!";
};
} else {
"zeleno" setMarkerColorLocal "ColorGreen";
};

if (isNil "elektro_clear") then {
"elektro_clear" addPublicVariableEventHandler {
"elektro" setMarkerColorLocal "ColorGreen";
task3 settaskstate "Succeeded";
hint "Elektrozavodsk cleared !!!";
};
} else {
"elektro" setMarkerColorLocal "ColorGreen";
};

if (isNil "krasno_clear") then {
"krasno_clear" addPublicVariableEventHandler {
"krasnostav" setMarkerColorLocal "ColorGreen";
task4 settaskstate "Succeeded";
hint "Krasnostav cleared !!!";
};
} else {
"elektro" setMarkerColorLocal "ColorGreen";
};

"convoy_reached_dest" addPublicVariableEventHandler {
task1 settaskstate "FAILED";
hint "The convoy reached its destination, mission failed!";
};

"ari_available" addPublicVariableEventHandler {
[playerSide,"HQ"] sideChat "Artillery available again!";
};

is_artiman = false;
arti_action = -1000;
if (_str in ["arti","artid"]) then {
arti_action = player addAction ["Call Artillery","call_arti.sqf",[],-1,false];
is_artiman = true;
_trigger = createTrigger["EmptyDetector" ,position player];
_trigger setTriggerArea [0, 0, 0, false];
_trigger setTriggerActivation ["NONE", "PRESENT", true];
vec_ass = -8876;
_trigger setTriggerStatements["vehicle player != player", "arti_vehicle = vehicle player;if (vec_ass == -8876) then {vec_ass = arti_vehicle addAction ['Call Artillery', 'call_arti.sqf',[],-1,false]}", "if (vec_ass != -8876) then {arti_vehicle removeAction vec_ass;vec_ass = -8876}"];
};

player addEventHandler ["killed",{[_this select 0, _this select 1] execVM "x_scripts\x_checkkill.sqf"}];

execVM "x_scripts\x_playerweapons.sqf";

admins=[];
admins=["Xeno"];
if ((name player) in admins) then {KEGsShownSides = [west, east, resistance, civilian, sideEnemy, sideFriendly, sideLogic,sideUnknown];} else {KEGsShownSides = [(side player)]};
[] execVM "spect\specta_init.sqf";
is_admin = false;
if ((name player) in admins) then {
is_admin = true;
Kspect1= player addaction ["Admin Spectate", "spect\specta.sqf",[],1, false, false,"testX0"];
};



tasks_fix.sqf


private ["_diary6", "_diary5", "_diary4", "_diary3", "_diary2", "_diary1", "_str"];

//Briefingeinträge
_diary6 = player createDiaryRecord ["Diary", ["Technical Details", "None"]];
_diary5 = player createDiaryRecord ["Diary", ["Historic", "No Information available"]];
_diary4 = player createDiaryRecord ["Diary", ["Weather", "No weather information available"]];
_diary3 = player createDiaryRecord ["Diary", ["Intelligence report", "No intelligence report avaialbe"]];
_diary2 = player createDiaryRecord ["Diary", ["Motor pool", "Not available"]];
_diary1 = player createDiaryRecord ["Diary", ["Briefing", "Your main task is to recapture <marker name=""elektro"">Elektrozavodsk</marker>, <marker name=""zeleno"">Zelenogorsk</marker> and <marker name=""krasnostav"">Krasnostav</marker> from enemy forces. Watch out for enemy AntiAir guns. We have spotted them around <marker name=""shilka1"">here</marker> and <marker name=""shilka2"">here</marker>here</marker>. In case of this danger, we only get a go for the armed choppers, when the AAs are eliminated. A convoy is underway to support the enemy forces. Destroy the convoy before it reaches Elektrozavodsk."]];

//Missionsziele
task5 = player createSimpleTask ["obj5"];
task5 setSimpleTaskDescription ["Attention: Don't waste our choppers <marker name=""start"">own</marker> helicopters.","Main target: Do not waist choppers","Main target: Do not waist choppers"];
task5 setSimpleTaskDestination markerpos "start";
task5 settaskstate "Created";

task4 = player createSimpleTask ["obj4"];
task4 setSimpleTaskDescription ["Clear <marker name=""krasnostav"">Krasnostav</marker> from all enemy forces.","Main target: Clear Krasnostav","Main target: Clear Krasnostav"];
task4 setSimpleTaskDestination markerpos "krasnostav";
if (isNil "krasno_clear") then {
task4 settaskstate "Created";
} else {
task4 settaskstate "Succeeded";
};

task3 = player createSimpleTask ["obj3"];
task3 setSimpleTaskDescription ["Clear <marker name=""elektro"">Elektrozavodsk</marker> from all enemy forces.","Main target: Clear Elektrozavodsk","Main target: Clear Elektrozavodsk"];
task3 setSimpleTaskDestination markerpos "elektro";
if (isNil "elektro_clear") then {
task3 settaskstate "Created";
} else {
task3 settaskstate "Succeeded";
};

task2 = player createSimpleTask ["obj2"];
task2 setSimpleTaskDescription ["Destroy the Tanks in <marker name=""zeleno"">Zelenogorsk</marker> and clear the town of all enemy presence","Hauptziel: Destroy Tanks","Hauptziel: Destroy Tanks"];
task2 setSimpleTaskDestination markerpos "zeleno";
if (isNil "zele_clear") then {
task2 settaskstate "Created";
} else {
task2 settaskstate "Succeeded";
};

//task1 = player createSimpleTask ["Hauptziel: Konvoi zerstören"];
task1 = player createSimpleTask ["obj1"];
task1 setSimpleTaskDescription ["Destroy the convoy that is coming from <marker name=""krasnostav"">Krasnostav</marker>. Its destination is <marker name=""elektro"">Elektrozavodsk</marker>. The SF Team starts in <marker name=""sf_team"">Dubrovka</marker> and must stop the convoy. If the convoy reaches <marker name=""elektro"">Elektrozavodsk</marker> the complete mission failed.","Main target: Destroy convoy","Destroy convoy"];
task1 setSimpleTaskDestination markerpos "Hinterhalt";
//Created, Succeeded, Failed
if (isNil "convoy_down") then {
task1 settaskstate "Created";
} else {
task1 settaskstate "Succeeded";
};

tasks_done = true;


init.sqf


setViewDistance 1600;
enableEnvironment false;

X_INIT = false;
X_Server = false; X_Client = false; X_JIP = false;X_SPE = false;

X_MP = isMultiplayer;

if (isServer) then {
X_Server = true;
if (!(isNull player)) then {X_Client = true;X_SPE = true;};
X_INIT = true;
} else {
X_Client = true;
if (isNull player) then {
X_JIP = true;
[] spawn {waitUntil {!(isNull player)};X_INIT = true};
} else {
X_INIT = true;
};
};

x_addkilledhandler = [east];

if (!isNil "param1") then {
switch (param1) do {
case 1: {skipTime 5};
case 2: {skipTime 12};
case 3: {skipTime 19};
};
} else {
skipTime 9;
};

if (!isNil "param2") then {
x_chopprespawn = if (param2 == 1) then {true} else {false};
} else {
x_chopprespawn = true;
};

ari_type = "";

if (isServer) then {
execVM "x_scripts\x_serverinit.sqf";
ari_available = true; publicVariable "ari_available";
"ari_type" addPublicVariableEventHandler {
(_this select 1) execVM "x_arifire.sqf";
};
konvoy_killed = 0;
};

waitUntil {X_INIT};
if (!X_Client) exitWith {};

[] spawn {
waitUntil {player == player};
execVM "tasks_fix.sqf";
};

if (true) exitWith {};



initJIPcompatible.sqf

// empty


x_initaddkilledhandler.sqf


private ["_vec","_gr"];
if (!isServer) exitWith {};

sleep 4.321;

{
if (side _x in x_addkilledhandler) then {
if (_x isKindOf "Man") then { // not needed, I guess ;)
_gr = group _x;
_kev = _gr getVariable "gr_a";
if (isNil "_kev") then {
_gr setVariable ["gr_a", 1];
switch (side _x) do {
case east: {groups_east = groups_east + [[_gr,time + 120]];};
case west: {groups_west = groups_west + [[_gr,time + 120]];};
case resistance: {groups_resistance = groups_resistance + [[_gr,time + 120]];};
case civilian: {groups_civilian = groups_civilian + [[_gr,time + 120]];};
};
};
if (!(isPlayer _x)) then {
_kev = _x getVariable "ke";
if (isNil "_kev") then {
_x addEventHandler ["killed", {[_this select 0] call XAddDead}];
_x setVariable ["ke", 1];
};
};
if (vehicle _x != _x) then {
_vec = vehicle _x;
_kev = _vec getVariable "ke";
if (isNil "_kev") then {
_vec addEventHandler ["killed", {[_this select 0] spawn x_removevehi}];
_vec setVariable ["ke", 1];
};
};
};
};
sleep 0.423;
} forEach allUnits;

if (true) exitWith {};


x_serverinit.sqf

if (!isServer) exitWith {};

call compile preprocessFile "x_scripts\x_initx.sqf";

if (true) exitWith {};


x_initx.sqf

if (!X_Server) exitWith{};

groups_east = [];
dead_list = [];
game_running = true;

if (isNil "x_addkilledhandler") then {x_addkilledhandler = [];};

x_removevehi = compile preprocessFile "x_scripts\x_removevehi.sqf";

XAddDead = {
dead_list = dead_list + [_this select 0];
};

[] execVM "x_scripts\x_removedead.sqf";
if (count x_addkilledhandler > 0) then {[] execVM "x_scripts\x_initaddkilledhandler.sqf";};

if (true) exitWith {};


x_checkkill.sqf

private ["_killed","_killer"];

_killed = _this select 0;

sleep 30 + (random 15);

deleteVehicle _killed;

if (true) exitWith {};
Image

Avatar du membre
=[TTK]= Yoda
Grand Mérou
Grand Mérou
Âge : 58
Messages : 3562
Enregistré le : jeu. 11 févr. 2010, 17:52
Humeur : bieng-bieng
Localisation : Le milieu

Re: Problème de briefing qui disparait après respawn

Message par =[TTK]= Yoda »

Mon dieu !!! C'est quoi ce langage ????? Clem, reviens, on a les mêmes à la maison !!!
C’est parce que la vitesse de la lumière est supérieure à celle du son que certains ont l’air brillant avant d’avoir l’air con.

Image
" ... j'ai pas la tirelire dans le string et des tétons comme des pipettes de roues de camion ..." - Injonction Frog Pénelope 2014

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 43
Messages : 3351
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

Re: Problème de briefing qui disparait après respawn

Message par =[TTK]= Memphis007 »

Un truc que je ne comprend pas :

quand je met :

Code : Tout sélectionner

    player addEventHandler ["killed",
    {
        [] spawn {
            waitUntil { alive player };
            execVM "briefing.sqf";
        };    
    }];
dans l'init.sqf au 1er respawn je conserve bien le briefing, mais pas au 2ème. Alors je me dis, ben oui c'est normal, le init.sqs il est appelé qu'une fois au lancement de la mission donc normal. Je rajoute alors le même code dans le briefing.sqf, mais ça marche pas non plus, au 2eme respawn hop plus de briefing. et si je le met que dans le briefing, ben la ça marche pas du tout

C'est quoi le problème ?

EDIT : le problème c'est qu'il fallait que j'enleve le mod "BOULET" et que je rajoute une ";" à la ligne du dessus....
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Avatar du membre
Camille Caz
Grand Gourou
Grand Gourou
Âge : 83
Messages : 1814
Enregistré le : lun. 25 janv. 2010, 22:45
Humeur : paléolithique mais presque
Localisation : près de La Rochelle

Re: Problème de briefing qui disparait après respawn

Message par Camille Caz »

A relire tous les messages du sujet pour faire le point, on est un peu déconcerté.

Memphis, tu pourrais pas faire un récapitulatif de ce qui te semble la meilleure solution ?

C'est pour perfectionner "mission portuaire"
On n'a pas toujours ce qu'on mérite mais on ne mérite pas forcément ce qu'on a.

Avatar du membre
=[TTK]= Memphis007
Grand TranKilou
Grand TranKilou
Âge : 43
Messages : 3351
Enregistré le : mer. 13 janv. 2010, 15:29
Humeur : Binaire
Localisation : 127.0.0.1
Contact :

Re: Problème de briefing qui disparait après respawn

Message par =[TTK]= Memphis007 »

j'ai noté ça dans mon agenda, je vois quand je peux te caser ça (je suis overbooké moi)
Si ya pas de shell, ya pas de plaisir...
Image

Fingers in the noise. Maxime verdâtre.

Répondre