"[[""pickaxe"",1],[""waterBottle"",1],[""tbacon"",1],[""money"",194870]]"
das steht im client log aber die kiste ist leer ... I inventar funktioniert
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.
"[[""pickaxe"",1],[""waterBottle"",1],[""tbacon"",1],[""money"",194870]]"
das steht im client log aber die kiste ist leer ... I inventar funktioniert
@moek schau sonst bitte noch mal, ob ich im Tut nicht doch noch irgendwas vergessen habe. Oder hat es jemand nach dem Tut schon funktionsfähig eingerichtet? Ich mein, es war halt mitten in der Nacht
AvirexDE was hindert Dich das zu ändern? Es gibt ein I-Item das aussieht wie Geld
(Land_Money_F) und klar kann man das dann auch in die Kiste legen und als Variable den Betrag drauflegen. Wie Alice Kingsleigh schon geschrieben hat haben wir uns an dem orientiert was wir im Video von Armaservices gesehen haben.
Da es sich hier um ein Tutorial und kein gekauftes Script handelt kann man das nach seinen Wünschen abändern, solange man weiß was man tut
Gruß,
moeck
Wobei ich mal wieder mein Hirn nicht eingeschaltet habe
Der Geldhaufen ist natürlich kein I-Item sondern ein Objekt und man kann es nicht ins Inventar ziehen.
Deswegen fällt die Idee weg.
UPDATE
Na da haben sich ja doch ein paar kleine Fehlerchen eingeschlichen.
In Schritt 1 in der fn_dropItems.sqf muss die Zeile 19 hiermit ersetzt werden:
_name = format ["%1's Lootbox", name _unit]; // %1 bewirkt die Anzeige des Namens des verstorbenen Spielers, so dass ihr das "'s Lootbox" ändern könnt falls gewünscht.
_obj setVariable ["BoxName",_name,true];
Punkt 3 war nicht klar genug ausgedrückt und wurde geändert. Hier haben die meisten ein }; vergessen. Hier wurde auch noch eine Korrektur vorgenommen, ersetzt also bitte alles nach der else Abfrage (mit Tutorial vergleichen):
if (_vehicle isKindOf "Land_PlasticCase_01_small_F") then {
ctrlSetText[3501,format [(localize "STR_MISC_VehStorage")+ " - %1",(_vehicle getVariable ["BoxName",""])]];
} else {
ctrlSetText[3501,format [(localize "STR_MISC_VehStorage")+ " - %1",getText(configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "displayName")]];
};
};
Alle Sachen wurden im Tutorial angepasst.
Noch ein UPDATE
Dieses Update dient dazu, dass man Dinge angeben kann, die NICHT in die Lootbox gespeichert werden sollen und somit beim Tod verschwinden. Gilt für V- und I-Items.
die fn_dropItems.sqf ersetzen mit (dabei auch im Anhang verfügbar):
#include "..\..\script_macros.hpp"
/*
File: fn_dropItems.sqf
Author: moeck
Description:
Called on death, Player drops any 'virtual' items and items. They are stored in a plastic case.
*/
params [
["_unit",objNull,[objNull]]
];
private _restricted_items = LIFE_SETTINGS(getArray,"drop_restricted_vitems");
private _pos = _unit modelToWorld[0,3,0];
_pos = [(_pos select 0),(_pos select 1),0];
private _obj = "Land_PlasticCase_01_small_F" createVehicle _pos; //Solltet ihr ein anderes Objekt wollen, den Classname in allen für diese Funktion benötigten Scripts ändern.
clearWeaponCargoGlobal _obj;
clearItemCargoGlobal _obj;
clearMagazineCargoGlobal _obj;
clearBackpackCargoGlobal _obj;
_name = format ["%1's Lootbox",name _unit];
_obj setVariable ["Name",_name,true]; // %1 bewirkt die Anzeige des Namens des verstorbenen Spielers an, so dass ihr das "'s Lootbox" ändern könnt falls gewünscht.
private _trunk =[];
private _weight = 0;
{
private _value = 0;
private _iweight = 0;
private _itemName= "";
private _item = "";
if (_x isEqualType "") then {_item = _x;} else {_item = configName _x};
if (_item isEqualTo "life_cash") then {
_value = CASH;
_itemName = "CASH";
_item = "money";
} else {
_value = ITEM_VALUE(_item);
_iweight = (([_item] call life_fnc_itemWeight) * _value);
_itemName = ITEM_VARNAME(_item);
};
_weight = _weight + _iweight;
if (_value > 0 && !(_item in _restricted_items)) then {
_trunk pushBack [_item,_value];
};
missionNamespace setVariable [_itemName,0];
} forEach (("true" configClasses (missionConfigFile >> "VirtualItems")) + ["life_cash"]);
_obj setVariable["Trunk",[_trunk,_weight],true];
if (LIFE_SETTINGS(getNumber,"drop_iitems_onDeath") isEqualTo 1) then {
if (!(uniform _unit isEqualTo "")) then {
{_obj addItemCargoGlobal [_x, 1];_unit removeItem _x} forEach (uniformItems _unit);
};
if (!(backpack _unit isEqualTo "")) then {
{_obj addItemCargoGlobal [_x, 1];_unit removeItem _x} forEach (backpackItems _unit);
};
if (!(vest _unit isEqualTo "")) then {
{_obj addItemCargoGlobal [_x, 1];_unit removeItem _x} forEach (vestItems _unit);
};
if (count (primaryWeaponItems _unit) > 0) then {
{_obj addItemCargoGlobal [_x, 1];_unit removeItem _x} forEach (primaryWeaponItems _unit);
};
if (count (handgunItems _unit) > 0) then {
{_obj addItemCargoGlobal [_x, 1];_unit removeItem _x} forEach (handGunItems _unit);
};
if !(primaryWeapon _unit isEqualTo "") then {_obj addItemCargoGlobal [(primaryWeapon _unit), 1]};
if !(handgunWeapon _unit isEqualTo "") then {_obj addItemCargoGlobal [(handgunWeapon _unit), 1]};
removeAllWeapons _unit;
{player removeMagazine _x;} forEach (magazines _unit);
};
[_obj] spawn {
params ["_obj"];
_timer = LIFE_SETTINGS(getNumber,"lootbox_timer");
uisleep (_timer*60);
deleteVehicle _obj
}; //Zeit, bis die Kiste weg ist. Kann durch ändern der 10 (= 10 Minuten) geändert werden.
Alles anzeigen
in config/Config_Master.hpp nach drop_weapons_onDeath tragt ihr folgende Sachen ein
drop_restricted_vitems[]={"apple","peach","tbacon","donuts"}; // V-Items die bei Tod nicht in die Box gelegt werden sollen.
lootbox_timer = 3; // //Zeit, bis die Kiste weg ist. Kann durch ändern der 3 (= 3 Minuten) geändert werden.
drop_iitems_onDeath = true; // true = I-Items (Waffen etc.) werden in die Box gelegt, false = I-Items werden nicht in die Box gelegt.
Alle Änderungen wurden dem Tutorial hinzugefügt.
Moin zusammen,
hier mal noch eine kleine Änderung zu dem Tutorial. Und zwar müsst ihr die fn_fetchDeadGear.sqf auch ersetzten, da man ansonsten die Sachen duppn kann, wenn man wiederbelebt wird ;-).
#include "..\..\script_macros.hpp"
/*
File: fn_fetchDeadGear.sqf
Author: Bryan "Tonic" Boardwine
Description:
Fetches gear off of a body.
*/
params [["_unit",objNull,[objNull]]];
if (isNull _unit) exitWith {};
private _dropWeapons = LIFE_SETTINGS(getNumber,"drop_weapons_onDeath");
private _dropItems = LIFE_SETTINGS(getNumber,"drop_iitems_onDeath");
private _primary = [primaryWeapon _unit, ""] select _dropWeapons;
private _launcher = [secondaryWeapon _unit, ""] select _dropWeapons;
private _handgun = [handGunWeapon _unit, ""] select _dropWeapons;
private _primitems = [];
private _secitems = [];
private _handgunitems = [];
private _magazines = [];
private _uniform = uniform _unit;
private _vest = vest _unit;
private _backpack = backpack _unit;
private _items = assignedItems _unit;
private _headgear = headgear _unit;
private _goggles = goggles _unit;
private _uitems = [];
private _vitems = [];
private _bitems = [];
if (_dropItems isEqualTo 0) then {
if !(primaryWeapon _unit isEqualTo "") then {_primitems = primaryWeaponItems _unit;};
if !(handgunWeapon _unit isEqualTo "") then {_handgunItems = handgunItems _unit;};
if !(_uniform isEqualTo "") then {{_uitems pushBack _x; true} count (uniformItems _unit);};
if !(_vest isEqualTo "") then {{_vitems pushBack _x; true} count (vestItems _unit);};
if !(_backpack isEqualTo "") then {{_bitems pushBack _x; true} count (backPackItems _unit);};
if !(primaryWeapon _unit isEqualTo "") then {
_unit selectWeapon (primaryWeapon _unit);
if !(currentMagazine _unit isEqualTo "") then {
_magazines pushBack currentMagazine _unit;
};
};
if !(secondaryWeapon _unit isEqualTo "") then {
_unit selectWeapon (secondaryWeapon _unit);
if !(currentMagazine _unit isEqualTo "") then {
_magazines pushBack currentMagazine _unit;
};
};
if !(handgunWeapon _unit isEqualTo "") then {
_unit selectWeapon (handgunWeapon _unit);
if !(currentMagazine _unit isEqualTo "") then {
_magazines pushBack currentMagazine _unit;
};
};
};
_unit selectWeapon (primaryWeapon _unit);
if (isNil "_handgunItems") then {_handgunItems = ["","",""];};
[_primary,_launcher,_handgun,_magazines,_uniform,_vest,_backpack,_items,_primitems,_secitems,_handgunitems,_uitems,_vitems,_bitems,_headgear,_goggles];
Alles anzeigen
Wegen der Formatierung hänge ich die Datei auch noch mal an.
Gruß,
moeck
Mhm beim T-Inventar öffnen der Box bekomme ich folgenden Fehler:
11:30:55 Error in expression <TR_MISC_VehStorage")+ " - %1",(_vehicle getVariable ["Name"])]];
} else {
ctrlSe>
11:30:55 Error position: <getVariable ["Name"])]];
} else {
ctrlSe>
11:30:55 Error 1 Elemente angegeben, 2 erwartet
11:30:55 File core\vehicle\fn_openInventory.sqf [life_fnc_openInventory], line 78
11:30:59 Error in expression <((Life_maxWeight) - (Life_carryWeight)) / _num2));
_num = if (_num1 <= ((((Life_>
11:30:59 Error position: </ _num2));
_num = if (_num1 <= ((((Life_>
11:30:59 Error Nullteiler
11:30:59 File core\vehicle\fn_vehTakeAllItem.sqf [life_fnc_vehTakeAllItem], line 84
11:31:00 Error in expression <((Life_maxWeight) - (Life_carryWeight)) / _num2));
_num = if (_num1 <= ((((Life_>
11:31:00 Error position: </ _num2));
_num = if (_num1 <= ((((Life_>
Alles anzeigen
Wir haben so einen "Alles Herausnehmen Knopf" ich denke es liegt daran.
Moin,
es gab gestern noch eine kleine Änderung in der fn_dropItems.sqf und in der fn_openInventory.sqf, da uns der Fehler auch aufgefallen ist.
Ersetze in der fn_dropItems.sqf
durch
_name = format ["%1's Lootbox", name _unit]; // %1 bewirkt die Anzeige des Namens des verstorbenen Spielers, so dass ihr das "'s Lootbox" ändern könnt falls gewünscht.
_obj setVariable ["BoxName",_name,true];
und in der fn_openInventory.sqf
if (_vehicle isKindOf "Land_PlasticCase_01_small_F") then {
ctrlSetText[3501,format [(localize "STR_MISC_VehStorage")+ " - %1",(_vehicle getVariable ["Name",""])]];
} else {
ctrlSetText[3501,format [(localize "STR_MISC_VehStorage")+ " - %1",getText(configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "displayName")]];
};
};
durch
if (_vehicle isKindOf "Land_PlasticCase_01_small_F") then {
ctrlSetText[3501,format [(localize "STR_MISC_VehStorage")+ " - %1",(_vehicle getVariable ["BoxName",""])]];
} else {
ctrlSetText[3501,format [(localize "STR_MISC_VehStorage")+ " - %1",getText(configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "displayName")]];
};
};
Das beseitigt den 1. Fehler, den 2. mit dem TakeAll schaue ich mir gleich an .
Gruß,
moeck
So bei der TakeAll Funktion liegt das Problem, dass das Item "money" kein Gewicht hat. Ich schaue mal ob ich das vernüftig umgeschrieben bekomme.
AvirexDE : versuchs mal bitte damit
bitte ignorieren, die Konsistenz der Arma Befehle hat leider wieder zugeschlagen.
Eyeyey ich glaub ich schreib bald Script in Entwicklung hin thihihi Schau mir nachher alles selber ein mal an und wenns klappt mach ich (wieder) ein Update
Alice Kingsleigh : hat keiner gesagt, dass es nicht noch Sachen gibt, die man verbessern könnte , die nächste Erweiterung wäre das aus der PN
, wobei ich da den Sinn noch nicht verstanden habe. Aber die TakeAll kannst Du gleich mittesten, ich glaube du nutzt die auch
Ja benutz ich auch, wollt ich mir ja eh selbst noch angucken, hast du mir ja jetzt netterweise abgenommen
moeck ersteinmal danke für den Support.
Soweit sind die alten Fehler verschwunden, aber das Geld Problem bleibt hartnäckig. Sobald ich das aus der Kiste nehmen möchte erscheint folgendes.
15:20:47 Loading movesType CfgMovesButterfly
15:20:47 Reading cached action map data
15:21:00 Transfer of uninitialized variables is not supported
15:21:00 Error in expression <!((damage player) isEqualTo _life) ||
!(life_cash isEqualTo _money) ||
!(life_at>
15:21:00 Error position: <life_cash isEqualTo _money) ||
!(life_at>
15:21:00 Error Nicht definierte Variable in Ausdruck: life_cash
15:21:00 File core\functions\fn_hudSetup.sqf [life_fnc_hudSetup], line 84
15:21:00 Error in expression <!((damage player) isEqualTo _life) ||
!(life_cash isEqualTo _money) ||
!(life_at>
15:21:00 Error position: <life_cash isEqualTo _money) ||
Alles anzeigen
AvirexDE : tritt das Problem beim einzelnen Herausnehmen auf oder beim Take all?
ähm AvirexDE hänge mal bitte deine fn_hudSetup.sqf mit an. Da scheinst du was zu prüfen was auf einen Fehler läuft.
so hier mal der nächste anlauf
so hier mal der nächste anlauf
16:19:07 Transfer of uninitialized variables is not supported
16:19:07 Error in expression <!((damage player) isEqualTo _life) ||
!(life_cash isEqualTo _money) ||
!(life_at>
16:19:07 Error position: <life_cash isEqualTo _money) ||
!(life_at>
16:19:07 Error Nicht definierte Variable in Ausdruck: life_cash
16:19:07 File core\functions\fn_hudSetup.sqf [life_fnc_hudSetup], line 84
16:19:07 Error in expression <!((damage player) isEqualTo _life) ||
!(life_cash isEqualTo _money) ||
!(life_at>
Alles anzeigen
Selber Fehler auch mit der neuen Datei
Problemlos geht dahingegen das "einzelne Herausnehmen"