Guten Abend,
Ist es möglich, dass wenn ich z.B Pfirsiche Farme, dass ich einstellen kann, dass man mit einer bestimmten Wahrscheinlichkeit ein anderes Item kriegt. z.B Verdorbener Pfirsich?
Ich hoffe ihr könnt mir helfen.
MFG
Fact
Guten Abend,
Ist es möglich, dass wenn ich z.B Pfirsiche Farme, dass ich einstellen kann, dass man mit einer bestimmten Wahrscheinlichkeit ein anderes Item kriegt. z.B Verdorbener Pfirsich?
Ich hoffe ihr könnt mir helfen.
MFG
Fact
Alles ist möglich ja ist es
Bin mir aber nicht Sicher ob du es so in die Gather bekommst.
Bin mir aber nicht Sicher ob du es so in die Gather bekommst.
warum nicht doch ist halt machbar aber nicht unbedinkt so leicht wenn man es richtig haben möchte das z.b. bei Äpfel auch ein verdorbener apflel kommt und nich nur von einer vorgegenen liste random egal wo man ist was kommt
Baust vielleicht noch paar Animationen etc. ein.
Wie du es Gathern lässt ist deine Sache so hätte ich es jetzt gemacht.
/*
Autor : Brizi Jaeger
Datum : 10.04.2017
Uhrzeit : 23:44
Beschreibung : Lässt Spieler scheisse farmen und vielleicht kommt krasse scheisse bei raus.
*/
private["_farmer"];
if(player distance (getMarkerPos "peachfield") < 30) then {};
_farmer = floor(random(20));
if(_farmer < 18) exitWith {
[true,"peach",1] call life_fnc_handleInv;
titleText["Du hast einen Pfirsich gesammelt.","PLAIN"];
};
if(_farmer == 18) exitWith {
[true,"peachmull",1] call life_fnc_handleInv;
titleText["Bahhh!!! Ein verfaulter Pfirsich.","PLAIN"];
};
if(_farmer == 19) exitWith {
[true,"peach",7] call life_fnc_handleInv;
titleText["Aua Aua, du hast 7 Pfirsiche aufgesammelt die vom Baum gefallen sind.","PLAIN"];
};
Alles anzeigen
Ich danke dir damit kann ich etwas anfangen.
MFG
Fact
Baust vielleicht noch paar Animationen etc. ein.
Wie du es Gathern lässt ist deine Sache so hätte ich es jetzt gemacht.
Code Alles anzeigen/* Autor : Brizi Jaeger Datum : 10.04.2017 Uhrzeit : 23:44 Beschreibung : Lässt Spieler scheisse farmen und vielleicht kommt krasse scheisse bei raus. */ private["_farmer"]; if(player distance (getMarkerPos "peachfield") < 30) then {}; _farmer = floor(random(20)); if(_farmer < 18) exitWith { [true,"peach",1] call life_fnc_handleInv; titleText["Du hast einen Pfirsich gesammelt.","PLAIN"]; }; if(_farmer == 18) exitWith { [true,"peachmull",1] call life_fnc_handleInv; titleText["Bahhh!!! Ein verfaulter Pfirsich.","PLAIN"]; }; if(_farmer == 19) exitWith { [true,"peach",7] call life_fnc_handleInv; titleText["Aua Aua, du hast 7 Pfirsiche aufgesammelt die vom Baum gefallen sind.","PLAIN"]; };
Denke es kommt drauf an welche Life Version man nutzt. In der 4.0 z.B. geht das mit der Lösung. Aber in der 5.0 ist das ganze etwas anders aufgebaut. Da sind die Zonen und zu farmenden Sachen in einer Config_Gather.hpp definiert und in der fn_gather.sqf ruft nur die hpp Sachen auf. Habe mir das heute angeschaut und wüßte grad net wie das so in der neuen Version realisiert werden sollte.
naja in der 5.0 würde ich es so umsetzen
fn_gather.sqf
#include "..\..\script_macros.hpp"
/*
File: fn_gather.sqf
Author: Devilfloh
Description:
Main functionality for gathering.
*/
private ["_maxGather","_resource","_amount","_maxGather","_requiredItem"];
if (life_action_inUse) exitWith {};
if !(isNull objectParent player) exitWith {};
if (player getVariable "restrained") exitWith {hint localize "STR_NOTF_isrestrained";};
if (player getVariable "playerSurrender") exitWith {hint localize "STR_NOTF_surrender";};
life_action_inUse = true;
_zone = "";
_requiredItem = "";
_exit = false;
_resourceCfg = missionConfigFile >> "CfgGather" >> "Resources";
for "_i" from 0 to count(_resourceCfg)-1 do {
_curConfig = _resourceCfg select _i;
_resource = configName _curConfig;
_maxGather = getNumber(_curConfig >> "amount");
_zoneSize = getNumber(_curConfig >> "zoneSize");
_resourceZones = getArray(_curConfig >> "zones");
_requiredItem = getText(_curConfig >> "item");
_randomItem = getArray(_curConfig >> "Random");
{
if ((player distance (getMarkerPos _x)) < _zoneSize) exitWith {_zone = _x;};
} forEach _resourceZones;
if (_zone != "") exitWith {};
};
if (_zone isEqualTo "") exitWith {life_action_inUse = false;};
if (_requiredItem != "") then {
_valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
if (_valItem < 1) exitWith {
switch (_requiredItem) do {
//Messages here
};
life_action_inUse = false;
_exit = true;
};
};
if (_exit) exitWith {life_action_inUse = false;};
_amount = round(random(_maxGather)) + 1;
_diff = [_resource,_amount,life_carryWeight,life_maxWeight] call life_fnc_calWeightDiff;
if (_diff isEqualTo 0) exitWith {
hint localize "STR_NOTF_InvFull";
life_action_inUse = false;
};
switch (_requiredItem) do {
case "pickaxe": {player say3D "mining";};
default {player say3D "harvest";};
};
for "_i" from 0 to 4 do {
player playMoveNow "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";
waitUntil{animationState player != "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";};
sleep 0.5;
};
_dice = random(100);
if(_dice < 80) then {
if ([true,_resource,_diff] call life_fnc_handleInv) then {
_itemName = M_CONFIG(getText,"VirtualItems",_resource,"displayName");
titleText[format [localize "STR_NOTF_Gather_Success",(localize _itemName),_diff],"PLAIN"];
};
}else{
_radom = random _randomItem;
if ([true,_random,_diff] call life_fnc_handleInv) then {
_itemName = M_CONFIG(getText,"VirtualItems",_resource,"displayName");
titleText[format [localize "STR_NOTF_Gather_Success",(localize _itemName),_diff],"PLAIN"];
};
sleep 1;
life_action_inUse = false;
Alles anzeigen
und in der Config_Gather.hpp
einafch bei den sachen
Random[] = {"apple","peach"};
z.b.
class apple {
amount = 5;
zones[] = { "apple_1", "apple_2", "apple_3", "apple_4" };
item = "";
zoneSize = 30;
Random[] = {"sand","peach"};
};
so ist es eine 20% chanche das er beim apfel farmen auf einmal eins der eingetragenen sachen bekommt im Beispiel sand oder Pfrisich
Oh danke. Das werd ich gleich mal ausprobieren. ;-D
Hab das bei mir mal für eine Mülldeponie eingebaut
Die Animation beim Farmen kommt zwar 1 mal aber danach geht keine taste mehr nur mehr laufe und I-Inventar geht
Wie ist das denn bei der 3.1.4.8? Ist das da auch möglich :)?
Bei der 3.1.4.8 ist das ganze sehr einfach.
du gehst einfach in die fn_gather.sqf und dann tust du bei
ein "selectRandom" davorsetzen.
und wenn du die Dropmenge auch Random haben möchtest einfach bei _val:
Das ganze würde dann so Aussehen
//Get the resource that will be gathered from the zone name...
switch(true) do {
case (_zone in ["apfel_1","apfel_2","apfel_3"]): {_gather = selectRandom "apple","apple2","apple3"; _val = selectRandom 1,2,3,4;};
default {""};
};
Falls ich etwas Falsch gemacht habe korrigiert mich
mfg
Da ist ja jetzt die Chance für jedes Item gleich hoch es zu bekommen, oder? (33.333...%) Wie könnte ich denn dann einstellen, dass zb ein Gegenstand eine 1%tige chance hat etc?
RPTLog bitte bzw sonst Fehler zu merken ?
scheint aber kein fehler auf was mit dem zutun hat
ich habe das ganze nun ausprobiert, jedoch muss ich sagen, dass ich es bei mir nicht zum Laufen gebracht habe. Ich habe zum Test folgende Zeile eingetragen:
case (_zone in ["müllhalde_1"]): {_gather = selectRandom "cannabis","cocaine","heroinu"; _val = 1;};
Jedoch passiert einfach gar nichts :). Alle anderen Rohstoffe in der gather.sqf gehen noch.
PS: ja ich habe es oben in den Zonen auch eingetragen
case (_zone in ["müllhalde_1"]): {_gather = selectRandom ["cannabis","cocaine","heroinu"]; _val = 1;};
selectRandom funktioniert nur mit einem array.
Ok teste es später nochmal.
Vielen Dank
Es funktioniert einwandfrei :). Nur wie kann ich denn einstellen, dass jeder Rohstoff eine andere Dropchance hat? Ich hab dafür nur eine Idee und die ist vll nicht die beste und ich weiß nichtmal ob die gehen würde xD
PS Meine Idee:
case (_zone in ["müllhalde_1"]): {_gather = selectRandom ["cannabis","cannabis","cannabis","cannabis","cannabis","cannabis","cannabis","cannabis","cocaine","heroinu"]; _val = 1;};
Da wären dann die Chancen bei: Cannabis = 80%, Heroin und Kokain jeweils 10%
ich teste es jedoch schonmal eben und sag dann bescheid ob es geht. Wenn ja mache ich es notfalls so. Ist zwar mühsam aber immerhin eine Lösung .
Funktioniert .
Hätte aber abschließend noch eine Frage:
Ist es möglich das ganze nun noch so einzustellen, dass wenn man zb koks gedropt bekommt, man 2 statt 1 bekommt aber bei zb Heroin wenn man das bekommt nur 1 ?