• Mettre un Spawn en fonction des grades (medic ; cop ...)


    Bonjour a tous,

    pour mon deuxième tuto je vais vous montrer comment faire un Spawn a partir des levels :

    ce script fonctionne en 4.3.

    Ex :   “coplevel”; “mediclevel” ou encore “adminlevel”

    Merci a Jackson Deamers pour m’avoir aidé.

    Pour commencer rendez vous dans Altis_life.altis\dialog\function\fn_spawnPointCfg.sqf

    vous devez tomber sur sa

    /*  
    	File: fn_spawnPointCfg.sqf  
    	Author: Bryan "Tonic" Modifié par Xavier Suna  
    
    	Description:  
    	Master configuration for available spawn points depending on the units side.  
    
    	Return:  
    	[Spawn Marker,Spawn Name,Image Path]  
    */  
    private["_side","_return"];  
    _side = [_this,0,civilian,[civilian]] call BIS_fnc_param;  
    
    //Spawn Marker, Spawn Name, PathToImage  
    switch (_side) do  
    {  
    	case west:  
    	{  
    		_return = [  
    			["cop_spawn_1","Kavala HQ","\a3\ui_f\data\map\MapControl\watertower_ca.paa"],			  
    			["cop_spawn_2","Pyrgos HQ","\a3\ui_f\data\map\MapControl\fuelstation_ca.paa"],  
    			["cop_spawn_3","Athira HQ","\a3\ui_f\data\map\GroupIcons\badge_rotate_0_gs.paa"],  
    			["cop_spawn_4","Air HQ","\a3\ui_f\data\map\Markers\NATO\b_air.paa"],  
    			["cop_spawn_5","HW Patrol","\a3\ui_f\data\map\GroupIcons\badge_rotate_0_gs.paa"]  
    
    		];  
    	};  
    
    	case civilian:  
    	{  
    		_return = [  
    			["civ_spawn_1","Kavala","\a3\ui_f\data\map\MapControl\watertower_ca.paa"],  
    			["civ_spawn_2","Pyrgos","\a3\ui_f\data\map\MapControl\watertower_ca.paa"],  
    			["civ_spawn_3","Athira","\a3\ui_f\data\map\MapControl\watertower_ca.paa"],  
    			["civ_spawn_4","Sofia","\a3\ui_f\data\map\MapControl\watertower_ca.paa"]  
    		];  
    
    		if(count life_houses > 0) then {  
    			{  
    				_pos = call compile format["%1",_x select 0];  
    				_house = nearestBuilding _pos;  
    				_houseName = getText(configFile >> "CfgVehicles" >> (typeOf _house) >> "displayName");  
    
    				_return pushBack [format["house_%1",_house getVariable "uid"],_houseName,"\a3\ui_f\data\map\MapControl\lighthouse_ca.paa"];  
    			} foreach life_houses;  
    		};  
    	};  
    
            case independent:  
            {  
                 _return = [  
    
                      ["medic_spawn_1","Kavala","\a3\ui_f\data\map\MapControl\hospital_CA.paa"],  
                      ["medic_spawn_2","Athira","\a3\ui_f\data\map\MapControl\hospital_CA.paa"],  
                      ["medic_spawn_3","Pyrgos","\a3\ui_f\data\map\MapControl\hospital_CA.paa"]  
                ];  
    
            };  
    
    };  
    
    _return;  
    

    nous allons modifier la case Independent mais le tuto fonctionne aussi sur les les Blufor et les admin (dans les civil)

     case independent:  
            {  
                 _return = [  
    
                      ["medic_spawn_1","Kavala","\a3\ui_f\data\map\MapControl\hospital_CA.paa"],  
                      ["medic_spawn_2","Athira","\a3\ui_f\data\map\MapControl\hospital_CA.paa"],  
                      ["medic_spawn_3","Pyrgos","\a3\ui_f\data\map\MapControl\hospital_CA.paa"]  
                ];  
    
            };  
    

    nous allons ajouter : (si la personne a un grade = a 2 alors elle peut spawn ici)

     case independent:  
            {  
                 _return = [  
    
                      ["medic_spawn_1","Kavala","\a3\ui_f\data\map\MapControl\hospital_CA.paa"],  
                      ["medic_spawn_2","Athira","\a3\ui_f\data\map\MapControl\hospital_CA.paa"],  
                      ["medic_spawn_3","Pyrgos","\a3\ui_f\data\map\MapControl\hospital_CA.paa"]  
                ];  
    
                //on ajoute ceci  
              if(FETCH_CONST(life_mediclevel) == 2) then { //On vérifie que le médecin à bien le niveau 2  
                  _return pushBack ["medic_spawn_4","Agios","\a3\ui_f\data\map\MapControl\hospital_CA.paa"]; //On ajoute le spawn  
               };  
    
            };  
    

    le point “medic_spawn_4” n’est pas déclarer de base je vous explique comment l’ajouter a la fin du tuto

    Maintenant si vous voulez avoir que des spawn avec des grade

    Ex :

    - Level 1 Kavala

    - Level 2 Athira

    -  Level 3 …

    nous allons supprimer le contenue de la variables “_return” puis ajouter des conditions.

     case independent:  
            {  
                 _return = [/*on a enlever le contenue */ ];  
    
                //on garde ceci  
              if(FETCH_CONST(life_mediclevel) == 2) then { //On vérifie que le médecin à bien le niveau 2  
                  _return pushBack ["medic_spawn_4","Agios","\a3\ui_f\data\map\MapControl\hospital_CA.paa"]; //On ajoute le spawn  
               };  
    
            };  
    

    puis on rajoute des conditions

     case independent:  
            {  
                 _return = [/*on a enlever le contenue */ ];  
    
               //on ajoute ceci  
              if(FETCH_CONST(life_mediclevel) >= 1) then { //On vérifie que le médecin à bien le niveau 1 ou superieur à 1  
                  _return pushBack ["medic_spawn_1","kavala","\a3\ui_f\data\map\MapControl\hospital_CA.paa"]; //On ajoute le spawn  
               };            
    
               //on garde ceci mais on modifie == en >= comme sa les grades > a 2 peuvent spawn sur ce spawn  
              if(FETCH_CONST(life_mediclevel) >= 2) then { //On vérifie que le médecin à bien le niveau 2  ou superieur à 2  
                  _return pushBack ["medic_spawn_2","ahtira","\a3\ui_f\data\map\MapControl\hospital_CA.paa"]; //On ajoute le spawn  
               };  
    
                //on ajoute ceci  
              if(FETCH_CONST(life_mediclevel) >= 3) then { //On vérifie que le médecin à bien le niveau 3 ou superieur à 3  
                  _return pushBack ["medic_spawn_3","Pyrgos","\a3\ui_f\data\map\MapControl\hospital_CA.paa"]; //On ajoute le spawn  
               };  
            };  
    

    Maintenant je vais vous montrer comment ajouter le “medic_spawn_4”

    allez sur arma 3 puis éditer votre fichier de mission

    vous sélectionner les marqueur F6

    et vous ajouter un marqueur

    !1466080766-20160616143620-1.jpg>!

    Merci a tous d’avoir suivi ce tuto si j’ai fait une erreur merci de me le dire en commentaire .

    #EDIT   16/06  a 16h21

    ajouter #include “…\script_macros.hpp”  au debut du fichier

  • Merci, peux-tu me faire un tuto sur comment respawn directement sur l’hôpital le plus proche de ta mort?  :lol:

  • @nanou

    Pour cela, il faut modifier d’autre fichier que ceux présent dans le tuto.

    A savoir core\medical\fn_onPlayerKilled.sqf, dialog\functions\fn_spawnMenu et Config_Master.

    Config_Master:

    hospitalList[] = {"medic_spawn_1", "medic_spawn_2", "medic_spawn_3"}; //Ajouter ceci dans la class Life_Settings  
    

    fn_onPlayerKilled:

    //Set some vars  
    _unit setVariable ["Revive",true,true];  
    _unit setVariable ["name",profileName,true]; //Set my name so they can say my name.  
    _unit setVariable ["restrained",false,true];  
    _unit setVariable ["Escorting",false,true];  
    _unit setVariable ["transporting",false,true];  
    _unit setVariable ["playerSurrender",false,true];  
    _unit setVariable ["steam64id",(getPlayerUID player),true]; //Set the UID.  
    life_deathPos = getPos _unit; //Ajouter ceci  
    

    fn_spawnMenu:

    if (life_respawned) then {  
        [] call life_fnc_respawned;  
        if (!isNil "life_deathPos") exitWith {  
            _hospitals = getArray(missionConfigFile >> "Life_Settings" >> "hospitalList");  
            _pos = [];  
            {  
                if ((getMarkerPos _x distance life_deathPos) < _pos distance life_deathPos) then {_pos = getMarkerPos _x;};  
            } count _hospitals;  
            player setPos _pos;  
        };  
    
    

    PS: Je n’ai pas testé ce script.

  • @Jackson Deamers

    16:36:56 File mpmissions\Altis_Life.Altis\Config_Master.hpp, line 55: ‘/Life_Settings.hospitalList’: Missing ‘;’ prior '}'
    ErrorMessage: Config : some input after EndOfFile.

  • @Xavier Suna

    Rajoute [] après hospitalList dans le Config_Master.

  • @Jackson Deamers

    je ne vois pas la différence il ya tous les spawn

  • @Xavier Suna

    La différence s’opère quand tu meurs, tu va respawn dans l’hôpital le plus proche mais pas quand c’est ta première connexion.

  • @Jackson Deamers

    nn mais j’avais compris sa mais justement je me suis suicider et sa me demander ou je voulais spawn

  • @Xavier Suna

    Salut

    Ça commençait bien, mais c’est comme à l’habitude d’AltisDev, bourré de fautes.

    Ensuite cette méthode est vraiment crade, pourquoi ne pas switch case sur tes variables ? Encore heureux on à du pushBack grâce à @Jackson Deamers je pense. Mettre le script_macro ? A ce moment la passe directement par le config afin de faire quelque chose qui à de la gueule. (Enfin on pourrait savoir si y avait la version précise). C’est bien de commencer petit mais essaye de ne pas partager des trucs comme ça qui te casse tout un serveur si c’est mal foutu sans préciser au moins la version. (Il me semble qu’après justement ça passe en config - 4.4r2 ?)

    Je trouve aussi un peu bizzare que tu ais répondu à ton propre sondage.

    @Jackson Deamers

    Pourquoi utiliser une variable globale de type life_xx alors que juste au dessus tu as un format bien plus propre ou même la balancer au script de respawn ?

    Ensuite pourquoi ne pas appeler justement la config (dans cette version spawnPointCfg ou dans l’autre la config mission) pour te retourner les spawns ? En enfin pourquoi ne pas utiliser l’EH de respawn pour éviter de call toute la partie menu etc… Pas mal le count, je sais pas ou t’as appris ça mais tu sais bien t’en servir  B) .

    Pour la boucle faudrait voir avec un test de perf si mettre toutes les distances dans une liste et choper l’index de la plus basse pour choper le respawn correspondant irait pas plus vite. (En fait osef, c’est que des serveurs de trololo qui font s’en servir et mieux vaut se tirer dans les pattes ;) )

    Ps: Pour les bouffons récurrents qui chercheraient la merde, c’est de l’ironie.

  • @harmdhast

    Le spawnPointCfg ne fonctionnerait pas dans ce cas, le respawn à l’hôpital est pour toutes les factions ici.

    Et je l’ai mis à cet endroit pour que le script fn_respawned s’exécute et remette en ordre les variables.

    Je n’avais pas trop envie de me creuser la tête pour faire quelque chose de totalement propre et optimiser pour un fonctionnalité que peu de gens vont utiliser.

  • @harmdhast

    pour commencer on est pas tous comme toi, on sais pas tous coder; ont essaye ont test  ont apprend . alors si tu est plus malin apprend nous a coder

    deuxièmement je vois pas en quoi sa casse le serveur car ya pas de bug ni de problème avant un tuto ta juste a faire une save

    troisièmement la version est mise au début du tuto 4.3 j’ai pas tester les autres

  • @Jackson Deamers

    D’accord, pense à prendre ça en compte si jamais tu sors un truc.

    @Xavier Suna

    Malin pour savoir coder, pas assez pour apprendre aux autres (du moins d’après ce que je viens de lire, pas l’envie). Et justement prends les remarques et les conseils si tu lis bien je te donne une meilleure méthode (en tout cas plus propre). Je ne dit pas que ça casse le serveur, tu dis “testé sur la 4.3” je vois pas de version dans le titre ni de pistes pour savoir si ça marche ailleurs. Enfin bref…

  • @harmdhast

    Toujours égal à toi même  ^_^  Plus facile de critiquer qu’aider les personnes dans le besoin, pourquoi tu ne lui expliques pas les choses venant de ton savoir sans limites au lieu d’être détestable comme à ton habitude jeune padawan?

  • pourquoi ne pas switch case sur tes variables ?

    A ce moment la passe directement par le config afin de faire quelque chose qui à de la gueule. (Il me semble qu’après justement ça passe en config - 4.4r2 ?)

    Pourquoi utiliser une variable globale de type life_xx alors que juste au dessus tu as un format bien plus propre ou même la balancer au script de respawn ?

    Ensuite pourquoi ne pas appeler justement la config (dans cette version spawnPointCfg ou dans l’autre la config mission) pour te retourner les spawns ?

    En enfin pourquoi ne pas utiliser l’EH de respawn pour éviter de call toute la partie menu etc…

    Pour la boucle faudrait voir avec un test de perf si mettre toutes les distances dans une liste et choper l’index de la plus basse pour choper le respawn correspondant irait pas plus vite.

    Ps: Pour les bouffons récurrents qui chercheraient la merde, c’est de l’ironie.

    Tout est la, notamment le PS. Maintenant boucle la et ouvre tes yeux. @nanou Tu cherches quoi exactement ?

  • @harmdhast

    toi aussi ouvre les yeux

    Bonjour a tous,

    pour mon deuxième tuto je vais vous montrer comment faire un Spawn a partir des levels :

    ce script fonctionne en 4.3

  • @Xavier Suna

    Alors toi t’es golden.

    tu dis “testé sur la 4.3” je vois pas de version dans le **titre **ni de pistes pour savoir si ça marche ailleurs.

  • Do you even read brah ?

  • @harmdhast

    et moi j’ai dit

    **la version est mise au début du tuto ****4.3 ****j’ai pas tester les autres **

  • je narive pas a faire se tuto pour la police tu peut help

    /*

    File: fn_spawnPointCfg.sqf
    Author: Bryan “Tonic” Boardwine

    Description:
    Master configuration for available spawn points depending on the units side.

    Return:
    [Spawn Marker,Spawn Name,Image Path]
    */
    private["_side","_return"];
    _side = [_this,0,civilian,[civilian]] call BIS_fnc_param;

    //Spawn Marker, Spawn Name, PathToImage
    switch (_side) do
    {
    case west:
    {
    _return = [
    [“cop_spawn_1”,“Kavala HQ”,"\a3\ui_f\data\map\MapControl\watertower_ca.paa"],
    [“cop_spawn_2”,“Pyrgos HQ”,"\a3\ui_f\data\map\MapControl\fuelstation_ca.paa"],
    [“cop_spawn_3”,“Athira HQ”,"\a3\ui_f\data\map\GroupIcons\badge_rotate_0_gs.paa"],
    [“cop_spawn_4”,“Air HQ”,"\a3\ui_f\data\map\Markers\NATO\b_air.paa"],
    [“cop_spawn_5”,“HW Patrol”,"\a3\ui_f\data\map\GroupIcons\badge_rotate_0_gs.paa"]
    ];

    //on ajoute ceci
              if(FETCH_CONST(life_coplevel) == 7) then { /On vérifie que le médecin à bien le niveau 2
                  _return pushBack [“spawn_gign”,“Base GIGN”,"\a3\ui_f\data\map\MapControl\hospital_CA.paa"]; //On ajoute le spawn
               };
    };

    case civilian:
    {
    _return = [
    [“civ_spawn_1”,“Kavala”,"\a3\ui_f\data\map\MapControl\watertower_ca.paa"],
    [“civ_spawn_2”,“Pyrgos”,"\a3\ui_f\data\map\MapControl\watertower_ca.paa"],
    [“civ_spawn_3”,“Athira”,"\a3\ui_f\data\map\MapControl\watertower_ca.paa"],
    [“civ_spawn_4”,“Sofia”,"\a3\ui_f\data\map\MapControl\watertower_ca.paa"]
    ];

    if(license_civ_rebel && playerSide == civilian) then {
                        _return = [
                                        [“civ_spawn_1”,“Kavala”,"\a3\ui_f\data\map\MapControl\watertower_ca.paa"],
    [“civ_spawn_2”,“Pyrgos”,"\a3\ui_f\data\map\MapControl\watertower_ca.paa"],
    [“civ_spawn_3”,“Athira”,"\a3\ui_f\data\map\MapControl\watertower_ca.paa"],
    [“civ_spawn_4”,“Sofia”,"\a3\ui_f\data\map\MapControl\watertower_ca.paa"],
    [“spawn_reb_1”,“Base Rebelle 1”,"\a3\ui_f\data\map\MapControl\watertower_ca.paa"],
    [“spawn_reb_2”,“Base Rebelle 2”,"\a3\ui_f\data\map\MapControl\watertower_ca.paa"]
                                        ];
                        };

    if(count life_houses > 0) then {
    {
    _pos = call compile format["%1",_x select 0];
    _house = nearestBuilding _pos;
    _houseName = getText(configFile >> “CfgVehicles” >> (typeOf _house) >> “displayName”);

    return pushBack [format["house%1",_house getVariable “uid”],_houseName,"\a3\ui_f\data\map\MapControl\lighthouse_ca.paa"];
    } foreach life_houses;
    };
    };

    case independent: {
    _return = [
    [“medic_spawn_1”,“Kavala Hospital”,"\a3\ui_f\data\map\MapControl\hospital_ca.paa"],
    [“medic_spawn_2”,“Athira Regional”,"\a3\ui_f\data\map\MapControl\hospital_ca.paa"],
    [“medic_spawn_3”,“Pygros Hospital”,"\a3\ui_f\data\map\MapControl\hospital_ca.paa"]
    ];   
    };
    };

    _return;

Messages 23Vues 2942