Français Solved Comment récolter virtuellement des pommes dans un jeu ?

  • Auteur de la discussion Auteur de la discussion Mathias
  • Date de début Date de début

Mathias

User
22/4/21
43
1
0
300
Usa
Bonsoir, j'ai 2 idée mais j'ai besoin d'aide

J'aimerai que pour récolter des pomme par exemple il faut

sois récolter les pomme au sol, et que toutes les 5 minute les pommes se regenere au sol (Item Physique)

Ou sois que quand on fait une touche ben on recolte l'item en physique dans le sac

la 1er idée, je vois bien mais comment
 
c'est "simple"

Pour l'idée n°1 =
=> tu créer une variable serveur avec soit un nombre d'unité max a récolter, et toutes les X minutes tu recharges cette variable
=> Dans le gather.sqf, tu fais un check de la variable du champ puis tu fais la soustraction. Si la variable est à 0 alors tu empêches de récolter.

Pour l'idée n°2 =
=> A la place d'ajouter un item virtuel dans le gather.sqf tu ajoutes un objet avec un addItem.

Suivant les ressources, il faudra faire pareil dans le mine.sqf
 
j'ai fait ceci mais je crois j'ai une boulette car rien apparait

Code:
_PommeTotal = 500;
_PommeClassname = "Inventaire_Pomme";
_radiusChamps = 30;
_markers = ["CHAMPS_POMME_1"];
while {true} do {
    _diff = 0;
    {
        _pos = getMarkerPos _x;
        _numberPomme = count (nearestObjects[_pos,[_PommeClassname],_radiusChamps]);
        hint str(_numberPomme);
        if (_numberPomme < _PommeTotal) then {
            _diff = _PommeTotal - _numberPomme;
        };
        for "_i" from 1 to _diff do {
            _posRandom = [_pos,0,_radiusChamps,0.1,0,0,0] call BIS_fnc_findSafePos;
            createVehicle[_PommeClassname,_posRandom];
            sleep 1;
        };
    } forEach _markers;
};

et dans le Init j'ai mis un exec

mais cela semble pas fonctionner :(
 
L'objet "Inventaire_Pomme" est un objet physique (qui se met dans l'inventaire) non ?
Il faut que ce soit un objet 3D, c'est à dire quelque chose que tu pourrais placer sur ton mapping par exemple
Ah oui
La config est fait en magazine.
Pour que il sois consommables aussi
Il doit en config weapons du coup ?
 
Je ne comprends pas pourquoi tu le met en magazine.

Tu peux consommer des munitions ? Perso j'aurai fais un addAction sur le joueur si il possède de l'eau ou de la nourriture, alors il a l'addAction pour pouvoir l'utiliser.
 
D’accord, après un magazine peut aussi avoir un model 3D.

Pour ton script, as tu essayé de debug avec des diag_log?
 
j'ai mis l'object en mapping comme dit,
mais cela spawn pas

j'ai cette erreur
Code:
19:39:10 Error in expression <meClassname,_posRandom];
};
};
forEach _markers;
};>
19:39:10   Error position: <_markers;
};>
19:39:10   Error ; manquant
19:39:10 File mpmissions\__CUR_MP.Altis\Scripts\fn_GatherPomme.sqf..., line 19
19:39:10 Error in expression <meClassname,_posRandom];
};
};
forEach _markers;
};>
19:39:10   Error position: <_markers;
};>
19:39:10   Error ; manquant
19:39:10 File mpmissions\__CUR_MP.Altis\Scripts\fn_GatherPomme.sqf..., line 19
 
Pour le faire spawn exactement à l'emplacement du marqueur il faut que tu modifies la position du createVehicle :
Code:
createVehicle[_PommeClassname,_posRandom];
par la position du marqueur directement :
Code:
createVehicle[_PommeClassname,_pos];
Je n'est plus rien qui spawn

Code:
_PommeTotal = 200;
_PommeClassname = "Iventaire_Pomme";
_radiusChamps = 20;
_markers = ["CHAMPS_POMME_1","CHAMPS_POMME_2","CHAMPS_POMME_3"];

while {true} do {
    _diff = 50;
    {
        _pos = getMarkerPos _x;
        _numberPomme = count (nearestObjects[_pos,[_PommeClassname],_radiusChamps]);
        if (_numberPomme < _PommeTotal) then {
            _diff = _PommeTotal - _numberPomme;
        };
        for "_i" from 1 to _diff do {
            _posRandom = [_pos,0,_radiusChamps,0.1,0,0,0] call BIS_fnc_findSafePos;
            createVehicle[_PommeClassname,_pos];
        //sleep 1;
        };
    } forEach _markers;

    sleep 600;
};
 
C'est pas "Inventaire_Pomme" ?

Sinon est-ce que tu peux tester avec ce code ?
Code:
_PommeTotal = 200;
_PommeClassname = "Iventaire_Pomme";
_radiusChamps = 20;
_markers = ["CHAMPS_POMME_1","CHAMPS_POMME_2","CHAMPS_POMME_3"];

while {true} do {
    {
        _pos = getMarkerPos _x;
        _numberPomme = count (nearestObjects[_pos,[_PommeClassname],_radiusChamps]);

        for "_i" from 0 to (_PommeTotal - _numberPomme) do {
            createVehicle [_PommeClassname,_pos];
        };
    } forEach _markers;

    sleep 600;
};