Hey Leute,
ich bin seit ein paar Tagen dran, ein komplett anderes ZInventar zu machen, wobei zB die Items und Lizenzen auf einem eigenem Button liegen.
Sprich ich öffne das Invetar -> Klicke auf Items -> Dort werden sie gelistet.
Sprich ich öffne das Invetar -> Klicke auf Lizenzen -> Dort werden sie gelistet.
Funktioniert auch!
Mein Problem:
Klicke ich nun auf ein anden Punkt. ZB Bank, und gehe zurück zu Lizenzen, werden diese nicht gelistet, alles andere (Gewicht, Konto, Cash) jedoch schon!.
Schließe ich das Menü komplett, und öffne es mit Z wieder, funktioniert es wieder.
DAS SELBE SPIEL IST MIT ITEMS!
Der Aufruf der Dialoge funktioniert so, wie es standardmäßig mit der life_fn_p_openMenu / life_fn_p_updateMenu ist.
RPT Logs gibt es leider keine.
Diese ist sauber.
Ein Check, ob das Richtige Display angezeigt wird, war erfolgreich.
Es ist sehr kurios, dass alles andere angezeigt wird, nur die foreach schleife wird einmalig nur angezeigt...
Beispielecodes:
LIZENZEN Update:
_side = switch(playerSide) do {case west:{"cop"}; case civilian:{"civ"}; case independent:{"med"};};
_dialog = findDisplay 60001;
_lic = _dialog displayCtrl 60061;
_struct = "";
ctrlSetText[60011,format["Gewicht: %1 | %2",life_carryWeight,life_maxWeight]];
ctrlSetText[60041,format["Bargeld: %1",[life_cash] call life_fnc_numberText]];
ctrlSetText[60051,format["Konto: %1",[life_atmcash] call life_fnc_numberText]];
{
if((_x select 1) == _side) then
{
_str = [_x select 0] call life_fnc_varToStr;
_val = missionNamespace getVariable (_x select 0);
if(_val) then
{
_struct = _struct + format["%1<br/>",_str];
};
};
} foreach life_licenses;
if(_struct == "") then{ _struct = "Keine"; };
_lic ctrlSetStructuredText parseText format["<t size='1px'>%1</t>",_struct];
Alles anzeigen
So wird jedes Dialog aufgerufen:
if(!alive player) exitWith {closedialog 0;};
if(dialog) then {closedialog 0;};
createDialog "playerSettings_items";
disableSerialization;
[] call life_fnc_razr_updateMenu_lizenzen;
Es ist auch unerheblich, ob ich mit
onButtonClick = "closedialog 0; createdialog ""playerSettings_lizenzen""; [] call life_fnc_razr_updateMenu_lizenzen;";
das Dialogfeld sofort erstelle, oder ob ich es über die openMenu datei mache:
onButtonClick = "[] call life_fnc_razr_openMenu_lizenzen";
Das Verhalten ist bei beiden verfahren identisch!
Es fehlt jedesmal die foreach schleife...
Für ein besseres Verständnis, habe ich mal das Problem Skizziert.