Trousses de soins/soins alternatifs © Pumpkin

 


Description :

Ayant eu pas mal de bug en MP avec le système de soins alternatif de BIS (pourtant très bien en jeu solo), je voulais un système simple d'utilisation pour permettre de se soigner, sans avoir besoin de l'aide d'un infirmier... Surtout utile pour de petite unité, le "toubib" pouvant être à des kilomètres (surtout si on est sniper ;) ). Il s'agit en gros d'un système de soins simulant la possession de trousses de secours. Ce système inclut une espèce de "jauge" de blessure : Si le joueur est blessé, sa vue se brouillera et plus les blessures seront graves, plus la vue sera brouillée. Le joueur a, à sa disposition, un nombre limité de trousse, chacune le guérissant de +10%. Un trousse utilisée disparait. Si l'option est mise en place par le créateur de mission, le joueur a la possibilité de récupérer des trousses de secours auprès des infirmiers, hôpital de campagne, ambulance,... Lorsqu'il s'en approchera, un menu lui permettra de recouvrir le nombre de trousses maximal. Les soins ne sont pas instantanés, le joueur est bloqué durant une 10aine de secondes durant lequel il est totalement vulnérable... à ne pas éxécuter à découvert !

 


Mise en oeuvre :

Il faut simplement lancer le script dans le fichier "init.sqf". Par défaut, le nombre de trousses est de 5, mais on peut aussi moduler ce nombre en définissant une variable "medkitnum" (augmenter à 10 dans l'exemple ci-dessous).

	// Init Systeme de soins scripté perso
	medkitnum = 10; // modification du nombre de medkit disponible par mission
	nul = execVM "medkit\medkit.sqf";

Il y a également dans le répertoire "medkit\" un script "medkit_doc.sqf" qui s'utilise au même endroit et de la même façon que le "briefing.sqf" et qui donne accès à un mode d'emploi des trousses de secours en jeu.

 


L'option de recouvrement du nombre de trousses :

Il s'agit de permettre aux joueurs ayant utilisés des trousses de pouvoir le récupérer. Il leur leur suffit de s'approcher de l'objet/véhicule/personnage pour voir apparaitre un menu qui leur permettra cette récupération.

Concernant les objets/véhicules/personnages non-humains, il y a deux methodes pour mettre en place cette option :

  1. un déclencheur englobant les objets/personnages qui doivent recevoir le menu :
    	Activation = N'importe qui/BLUFOR/OPFOR/...
    	Condition  = this
    	Sur Act.   = {nul = _x execVM "medkit\recover_medkits_menu.sqf"} forEach thislist

    Par exemple, dans cette image ci-dessous, la flèche verte désigne un déclencheur avec activation "N'importe qui". Seul les éléments désigné par une fléche rouge permettront de recouvrir toutes les trousses. Il faut tout de même noter que les soldats "jouables" n'auront pas le menu si des joueurs humains les utilisent. Le soldat désigné par une flèche noire, malgré qu'il soit infirmier, ne permettra pas le recouvrement, car à l'extérieur du déclencheur, sauf si on utilise pour lui la 2ème méthode, ci-dessous

  2. Une commande dans le champ init de l'objet/véhicule/personnage (s'il est isolé et/ou non intégré dans un déclencheur)
    	this execVM "medkit\recover_medkits_menu.sqf";

Cependant, ce menu ne sera accessible que si l'objet sur lequel le script est greffé a des capacités de soin, donc seul les infirmiers, ambulance, hôpitaux de campagne pourront refournir des trousses. Si l'on veut forcé cette possibilité, il faudra modifier le paramètre et non pas indiquer un objet mais un tableau, comme suis :

	[this, menu_forcé_true] execVM "medkit\recover_medkits_menu.sqf";

 

Concernant les joueurs, il faut ajouter au fichier "init.sqf" la commande

	this execVM "medkit\recover_medkits_menu.sqf";
ou
	[this, menu_forcé_true] execVM "medkit\recover_medkits_menu.sqf";

Même si le joueur est inclus dans un déclencheur, le menu n'apparaitra que si cette ligne est placée dans l'"init.sqf". Par contre, il ne faut pas mettre l'appel au script à la fois dans l'"init.sqf" ET dans le champ init du personnage, IL Y AURA CONFLIT ET LE MENU SE MULTIPLIERA !

Seul petit hic, le menu disparait à la mort du joueur, il faut donc le remettre en place. Personnellement, comme j'utilise un script, "respawn_handler.sqf", qui gère tout à la mort du joueur, via un évènement "killed" (cf. player addEventHandler ["killed",{execVM "respawn_handler.sqf"}];), j'ajoute simplement la même ligne que dans le fichier "init.sqf", tout à la fin... Mais je pense changer ça un de ces quatres ;)

fichier "respawn_handler.sqf"

...

// ---------- METTRE CI-DESSOUS LES SCRIPTS DEVANT S'EXECUTER APRES LA REAPPARITION DU JOUEUR ----------

if ( _isOperationArrowhead ) then {
	// ajout de la gestion du sac à dos (pour OA uniquement).
	nul = execVM "plr_respawn\Event_Inventory.sqf";
};

// // Activation du menu de récupération des medkits
nul = player execVM "medkit\recover_medkits_menu.sqf";