Hallo folgendes problem bei altis 5.0
die items
Benzinkanister Lockpick kann ich nicht benutzen.
stehen mit einer Case aber in der FN_Useitem drinn kann mir da jemand weiterhelfen !?
Schön, dass du den Weg zu NodeZone.net gefunden hast! Aktuell bist du nicht angemeldet und kannst deshalb nur eingeschränkt auf unsere Community zugreifen. Um alle Funktionen freizuschalten, spannende Inhalte zu entdecken und dich aktiv einzubringen, registriere dich jetzt kostenlos oder melde dich mit deinem Account an.
Hallo folgendes problem bei altis 5.0
die items
Benzinkanister Lockpick kann ich nicht benutzen.
stehen mit einer Case aber in der FN_Useitem drinn kann mir da jemand weiterhelfen !?
How about some logs und die useitem Datei?
witch (true) do {
case "boltcutter": {
[cursorObject] spawn life_fnc_boltcutter;
closeDialog 0;
};
case "blastingcharge": {
player reveal fed_bank;
(group player) reveal fed_bank;
[cursorObject] spawn life_fnc_blastingCharge;
closeDialog 0;
};
case "defusekit": {
[cursorObject] spawn life_fnc_defuseKit;
closeDialog 0;
};
case "storagesmall": {
[false] call life_fnc_storageBox;
};
case "storagebig": {
[true] call life_fnc_storageBox;
};
case "spikeStrip": {
if (!isNull life_spikestrip) exitWith {hint localize "STR_ISTR_SpikesDeployment"; closeDialog 0};
if ([false, _item, 1] call life_fnc_handleInv) then {
[] spawn life_fnc_spikeStrip;
closeDialog 0;
};
};
case "fuelFull": {
if !(isNull objectParent player) exitWith {hint localize "STR_ISTR_RefuelInVehicle"};
[] spawn life_fnc_jerryRefuel;
closeDialog 0;
};
case "fuelEmpty": {
[] spawn life_fnc_jerryCanRefuel;
closeDialog 0;
};
case "lockpick": {
[] spawn life_fnc_lockpick;
closeDialog 0;
};
Alles anzeigen
Da das ein Problem von dir, wenn du als Spieler eingeloggt bist, würde der Client log mehr helfen, allgemein findest du dazu hier etwas: ArmA 3 Logs - Alles was du über Logdateien wissen musst - Tutorials, Downloads & Releases - ArmA 3 - Native-Network.net - deine Next Generation Gameserver- und Gaming Community
Die komplette useitem Datei würde auch helfen, Sache ist das, wenn das so weit 1zu1 dein Script ist, kann das nicht funktionieren da du in der Switch Anweisung true stehen hast.
Hier eine Erklärung zu switch - Bohemia Interactive Community (bistudio.com) und die "default" Datei vom Tonic Framework Framework/fn_useItem.sqf at v5.X.X · AsYetUntitled/Framework (github.com)
#include "..\..\script_macros.hpp"
/*
File: fn_useItem.sqf
Author: Bryan "Tonic" Boardwine
Description:
Main function for item effects and functionality through the player menu.
*/
disableSerialization;
if ((lbCurSel 2005) isEqualTo -1) exitWith {
hint localize "STR_ISTR_SelectItemFirst";
};
private _item = CONTROL_DATA(2005);
private _edible = M_CONFIG(getNumber, "VirtualItems", _item, "edible");
private _drinkable = M_CONFIG(getNumber, "VirtualItems", _item, "drinkable");
if (_edible > -1 || _drinkable > -1) exitWith {
if ([false, _item, 1] call life_fnc_handleInv) then {
if (_edible > -1) then {
private _sum = life_hunger + _edible;
life_hunger = (_sum max 5) min 100; // never below 5 or above 100
};
if (_drinkable > -1) then {
private _sum = life_thirst + _drinkable;
life_thirst = (_sum max 5) min 100; // never below 5 or above 100
if (LIFE_SETTINGS(getNumber, "enable_fatigue") isEqualTo 1) then {
player setFatigue 0;
};
if (_item isEqualTo "redgull" && {LIFE_SETTINGS(getNumber, "enable_fatigue") isEqualTo 1}) then {
[] spawn {
life_redgull_effect = time;
titleText [localize "STR_ISTR_RedGullEffect", "PLAIN"];
player enableFatigue false;
waitUntil {!alive player || ((time - life_redgull_effect) > (3 * 60))};
player enableFatigue true;
};
};
};
};
[] call life_fnc_p_updateMenu;
[] call life_fnc_hudUpdate;
};
private _craftingPlans = [];
{
private _variable = getText(_x >> "variable");
_craftingPlans pushBack _variable;
} forEach ("true" configClasses (missionConfigFile >> "Cation_CraftingV2" >> "plans"));
switch (true) do {
case (_item in _craftingPlans): {
if ([false,_item,1] call life_fnc_handleInv) then {
if (!([_item,true] call cat_craftingV2_fnc_handlePlan)) then {
[true,_item,1] call life_fnc_handleInv;
};
};
};
case "boltcutter": {
[cursorObject] spawn life_fnc_boltcutter;
closeDialog 0;
};
case "blastingcharge": {
player reveal fed_bank;
(group player) reveal fed_bank;
[cursorObject] spawn life_fnc_blastingCharge;
closeDialog 0;
};
case "defusekit": {
[cursorObject] spawn life_fnc_defuseKit;
closeDialog 0;
};
case "storagesmall": {
[false] call life_fnc_storageBox;
};
case "storagebig": {
[true] call life_fnc_storageBox;
};
case "spikeStrip": {
if (!isNull life_spikestrip) exitWith {hint localize "STR_ISTR_SpikesDeployment"; closeDialog 0};
if ([false, _item, 1] call life_fnc_handleInv) then {
[] spawn life_fnc_spikeStrip;
closeDialog 0;
};
};
case "fuelFull": {
if !(isNull objectParent player) exitWith {hint localize "STR_ISTR_RefuelInVehicle"};
[] spawn life_fnc_jerryRefuel;
closeDialog 0;
};
case "fuelEmpty": {
[] spawn life_fnc_jerryCanRefuel;
closeDialog 0;
};
case "lockpick": {
[] spawn life_fnc_lockpick;
closeDialog 0;
};
default {
hint localize "STR_ISTR_NotUsable";
};
};
[] call life_fnc_p_updateMenu;
[] call life_fnc_hudUpdate;
Alles anzeigen
Code Alles anzeigen#include "..\..\script_macros.hpp" /* File: fn_useItem.sqf Author: Bryan "Tonic" Boardwine Description: Main function for item effects and functionality through the player menu. */ disableSerialization; if ((lbCurSel 2005) isEqualTo -1) exitWith { hint localize "STR_ISTR_SelectItemFirst"; }; private _item = CONTROL_DATA(2005); private _edible = M_CONFIG(getNumber, "VirtualItems", _item, "edible"); private _drinkable = M_CONFIG(getNumber, "VirtualItems", _item, "drinkable"); if (_edible > -1 || _drinkable > -1) exitWith { if ([false, _item, 1] call life_fnc_handleInv) then { if (_edible > -1) then { private _sum = life_hunger + _edible; life_hunger = (_sum max 5) min 100; // never below 5 or above 100 }; if (_drinkable > -1) then { private _sum = life_thirst + _drinkable; life_thirst = (_sum max 5) min 100; // never below 5 or above 100 if (LIFE_SETTINGS(getNumber, "enable_fatigue") isEqualTo 1) then { player setFatigue 0; }; if (_item isEqualTo "redgull" && {LIFE_SETTINGS(getNumber, "enable_fatigue") isEqualTo 1}) then { [] spawn { life_redgull_effect = time; titleText [localize "STR_ISTR_RedGullEffect", "PLAIN"]; player enableFatigue false; waitUntil {!alive player || ((time - life_redgull_effect) > (3 * 60))}; player enableFatigue true; }; }; }; }; [] call life_fnc_p_updateMenu; [] call life_fnc_hudUpdate; }; private _craftingPlans = []; { private _variable = getText(_x >> "variable"); _craftingPlans pushBack _variable; } forEach ("true" configClasses (missionConfigFile >> "Cation_CraftingV2" >> "plans")); switch (true) do { case (_item in _craftingPlans): { if ([false,_item,1] call life_fnc_handleInv) then { if (!([_item,true] call cat_craftingV2_fnc_handlePlan)) then { [true,_item,1] call life_fnc_handleInv; }; }; }; case "boltcutter": { [cursorObject] spawn life_fnc_boltcutter; closeDialog 0; }; case "blastingcharge": { player reveal fed_bank; (group player) reveal fed_bank; [cursorObject] spawn life_fnc_blastingCharge; closeDialog 0; }; case "defusekit": { [cursorObject] spawn life_fnc_defuseKit; closeDialog 0; }; case "storagesmall": { [false] call life_fnc_storageBox; }; case "storagebig": { [true] call life_fnc_storageBox; }; case "spikeStrip": { if (!isNull life_spikestrip) exitWith {hint localize "STR_ISTR_SpikesDeployment"; closeDialog 0}; if ([false, _item, 1] call life_fnc_handleInv) then { [] spawn life_fnc_spikeStrip; closeDialog 0; }; }; case "fuelFull": { if !(isNull objectParent player) exitWith {hint localize "STR_ISTR_RefuelInVehicle"}; [] spawn life_fnc_jerryRefuel; closeDialog 0; }; case "fuelEmpty": { [] spawn life_fnc_jerryCanRefuel; closeDialog 0; }; case "lockpick": { [] spawn life_fnc_lockpick; closeDialog 0; }; default { hint localize "STR_ISTR_NotUsable"; }; }; [] call life_fnc_p_updateMenu; [] call life_fnc_hudUpdate;
wie gesagt deine switch statment ist fehlerhaft.
Die komplette useitem Datei würde auch helfen, Sache ist das, wenn das so weit 1zu1 dein Script ist, kann das nicht funktionieren da du in der Switch Anweisung true stehen hast.
Hier eine Erklärung zu switch - Bohemia Interactive Community (bistudio.com) und die "default" Datei vom Tonic Framework Framework/fn_useItem.sqf at v5.X.X · AsYetUntitled/Framework (github.com)
Das Switch-Statement ist nicht unbedingt Fehlerhaft.
Für das mit den Crafting Plänen macht True sogar sinn.
switch true do
{
case (_dikCode in actionKeys "MoveForward"): _fn_moveForward;
case (_dikCode in actionKeys "MoveBackward"): _fn_moveBackward;
default _fn_invalidKey;
};
Die Frage ist ob andere Items funktionieren.
Überprüf mal bitte deine Config_vItems.hpp ob dort bei den jeweiligen Items edible und drinkable jeweils auf -1 gesetzt sind.
Das ist übrigens die Standard Datei aus der Version 4.
Wie man sieht wird hier auch "true" benutzt.
(https://github.com/AsYetUntitled/…/fn_useItem.sqf)
#include "..\..\script_macros.hpp"
/*
File: fn_useItem.sqf
Author: Bryan "Tonic" Boardwine
Description:
Main function for item effects and functionality through the player menu.
*/
private "_item";
disableSerialization;
if ((lbCurSel 2005) isEqualTo -1) exitWith {hint localize "STR_ISTR_SelectItemFirst";};
_item = CONTROL_DATA(2005);
switch (true) do {
case (_item in ["waterBottle","coffee","redgull"]): {
if ([false,_item,1] call life_fnc_handleInv) then {
life_thirst = 100;
if (LIFE_SETTINGS(getNumber,"enable_fatigue") isEqualTo 1) then {player setFatigue 0;};
if (_item isEqualTo "redgull" && {LIFE_SETTINGS(getNumber,"enable_fatigue") isEqualTo 1}) then {
[] spawn {
life_redgull_effect = time;
titleText[localize "STR_ISTR_RedGullEffect","PLAIN"];
player enableFatigue false;
waitUntil {!alive player || ((time - life_redgull_effect) > (3 * 60))};
player enableFatigue true;
};
};
};
};
case (_item isEqualTo "boltcutter"): {
[cursorObject] spawn life_fnc_boltcutter;
closeDialog 0;
};
case (_item isEqualTo "blastingcharge"): {
player reveal fed_bank;
(group player) reveal fed_bank;
[cursorObject] spawn life_fnc_blastingCharge;
closeDialog 0;
};
case (_item isEqualTo "defusekit"): {
[cursorObject] spawn life_fnc_defuseKit;
closeDialog 0;
};
case (_item isEqualTo "storagesmall"): {
[false] call life_fnc_storageBox;
};
case (_item isEqualTo "storagebig"): {
[true] call life_fnc_storageBox;
};
case (_item isEqualTo "spikeStrip"): {
if (!isNull life_spikestrip) exitWith {hint localize "STR_ISTR_SpikesDeployment"; closeDialog 0};
if ([false,_item,1] call life_fnc_handleInv) then {
[] spawn life_fnc_spikeStrip;
closeDialog 0;
};
};
case (_item isEqualTo "fuelFull"): {
if (vehicle player != player) exitWith {hint localize "STR_ISTR_RefuelInVehicle"};
[] spawn life_fnc_jerryRefuel;
closeDialog 0;
};
case (_item isEqualTo "fuelEmpty"): {
[] spawn life_fnc_jerryCanRefuel;
closeDialog 0;
};
case (_item isEqualTo "lockpick"): {
[] spawn life_fnc_lockpick;
closeDialog 0;
};
case (_item in ["apple","rabbit","salema","ornate","mackerel","tuna","mullet","catshark","turtle_soup","hen","rooster","sheep","goat","donuts","tbacon","peach"]): {
if (!(M_CONFIG(getNumber,"VirtualItems",_item,"edible") isEqualTo -1)) then {
if ([false,_item,1] call life_fnc_handleInv) then {
_val = M_CONFIG(getNumber,"VirtualItems",_item,"edible");
_sum = life_hunger + _val;
switch (true) do {
case (_val < 0 && _sum < 1): {life_hunger = 5;}; //This adds the ability to set the entry edible to a negative value and decrease the hunger without death
case (_sum > 100): {life_hunger = 100;};
default {life_hunger = _sum;};
};
};
};
};
default {
hint localize "STR_ISTR_NotUsable";
};
};
[] call life_fnc_p_updateMenu;
[] call life_fnc_hudUpdate;
Alles anzeigen
Das Switch-Statement ist nicht unbedingt Fehlerhaft.
Für das mit den Crafting Plänen macht True sogar sinn.
Code: Beispiel 3 aus der Wikiswitch true do { case (_dikCode in actionKeys "MoveForward"): _fn_moveForward; case (_dikCode in actionKeys "MoveBackward"): _fn_moveBackward; default _fn_invalidKey; };
Die Frage ist ob andere Items funktionieren.
Überprüf mal bitte deine Config_vItems.hpp ob dort bei den jeweiligen Items edible und drinkable jeweils auf -1 gesetzt sind.
Du hast komplett recht man kann ein Switch mit true machen ob es sinnvoll ist die andere Frage.
Abgesehen davon ja es ist auch nicht komplett fehlerhaft in dem fall geht nur eine abfrage und das ist die der Baupläne.
Überprüf mal bitte deine Config_vItems.hpp ob dort bei den jeweiligen Items edible und drinkable jeweils auf -1 gesetzt sind.
Das Essen wird auch gehen, es geht ja speziell um die "anderen" items.
Wenn du dir mal die 5.0 useitem anschaust, fällt dir auf das er "in dem switch" nicht true, sondern das _item verwendet wird, dadurch kann man bei jedem case "abfragen", ob das richtige Item / wert in der _item variable anliegt.
Wenn man jetzt aber wie hier es der fall, ist "true" verwendet wird z. B. "boltcutter" mit true verglichen was natürlich false zurückgibt und daher das Script weiter vergleicht.
Das ist übrigens die Standard Datei aus der Version 4.
Wie man sieht wird hier auch "true" benutzt.
Und genau da hängt auch der unterschied, hier wird true verwendet aber anstatt
case "boltcutter": {
wird das hier verwendet
case (_item isEqualTo "boltcutter"): {
da steht eine abfrage drin, ist aber auch fragwürdig, ob man das heutzutage machen möchte
also die Lösung ist halt einfach das true durch _item zu ersetzten und dann dürfte alles laufen.
Wenn man jetzt aber wie hier es der fall, ist "true" verwendet wird z. B. "boltcutter" mit true verglichen was natürlich false zurückgibt und daher das Script weiter vergleicht.
Mhh.. komplett übersehen, dass da nur "boltcutter" steht.
Da hast komplett recht. Beim Essen hatte ich jetzt eher an den exit vorher gedacht ob das eben Probleme macht, naja.
micky entweder du änderst wie von TaktischerSpeck vorgeschlagen das "true" auf "_item" oder musst eben alle anpassen wie es erklärt wurde.
Solltest du "_item" verwenden müsstest du beim default-case einfach folgendes für deine Baupläne einfügen: