I encountered a very important problem that caused me a headache. When a player invited another player and accepted, members returned an empty array, but I debugged gang_members (hint str group player getVariable "gang_members") after debugging The array format is displayed normally, but the database displays []. This causes the player to drop the team after restarting the server or retreating the game, any help is greatly appreciated!

i need help plz.about gangs
-
- Altis Life
-
apple123 -
25. März 2020 um 08:22 -
Geschlossen -
Erledigt
-
-
my server rpt
-
You are talking about the Alits Life Gang Script, aren't you?
Code: Error thrownError in expression <log format["get gang vara: (%1)",_membersFinal];_membersFinal=[_membersFi> Error position: <_membersFinal];_membersFinal=[_membersFi> Error Undefined variable in expression: _membersfinal File \life_server\Functions\Gangs\fn_updateGang.sqf [TON_fnc_updateGang]..., line 2
Could you upload your fn_updateGang.sqf or show us your code lines, all of them?
-
Code
Alles anzeigenfn_updateGang.sqf params [ ["_mode",0,[0]], ["_group",grpNull,[grpNull]] ]; if (isNull _group) exitWith {}; private _groupID = _group getVariable ["gang_id",-1]; if (_groupID isEqualTo -1) exitWith {}; private _query = ""; switch (_mode) do { case 0: { private _bank = [(_group getVariable ["gang_bank",0])] call SOCK_fnc_numberSafe; private _maxMembers = _group getVariable ["gang_maxMembers",50]; private _members = [(_group getVariable "gang_members")] call SOCK_fnc_mresArray; private _owner = _group getVariable ["gang_owner",""]; if (_owner isEqualTo "") exitWith {}; _query = format ["UPDATE gangs SET bank='%1', maxmembers='%2', owner='%3' WHERE id='%4'",_bank,_maxMembers,_owner,_groupID]; }; case 1: { _query = format ["UPDATE gangs SET bank='%1' WHERE id='%2'",([(_group getVariable ["gang_bank",0])] call DB_fnc_numberSafe),_groupID]; }; case 2: { _query = format ["UPDATE gangs SET maxmembers='%1' WHERE id='%2'",(_group getVariable ["gang_maxMembers",50]),_groupID]; }; case 3: { _owner = _group getVariable ["gang_owner",""]; if (_owner isEqualTo "") exitWith {}; _query = format ["UPDATE gangs SET owner='%1' WHERE id='%2'",_owner,_groupID]; }; case 4: { _members = _group getVariable "gang_members"; if (count _members > (_group getVariable ["gang_maxMembers",50])) then { _membersFinal = []; for "_i" from 0 to _maxMembers -1 do { _membersFinal pushBack (_members select _i); }; } else { _membersFinal = _group getVariable "gang_members"; }; { _x set [0,[_x select 0] call DB_fnc_mresString]; _membersFinal set[_forEachIndex,_x]; } forEach _membersFinal; _membersFinal = [_membersFinal] call DB_fnc_mresArray; _query = format ["UPDATE gangs SET members='%1' WHERE id='%2'",_membersFinal,_groupID]; }; case 5: { _query = format ["UPDATE gangs SET tasks='%1' WHERE id='%2'",(_group getVariable ["gang_role",[0,[0,0,0,0,0,0]]]),_groupID]; }; }; if (!isNil "_query") then { [_query,1] call DB_fnc_asyncCall; };
-
Code
Alles anzeigenfn_updateGang.sqf params [ ["_mode",0,[0]], ["_group",grpNull,[grpNull]] ]; if (isNull _group) exitWith {}; private _groupID = _group getVariable ["gang_id",-1]; if (_groupID isEqualTo -1) exitWith {}; private _query = ""; switch (_mode) do { case 0: { private _bank = [(_group getVariable ["gang_bank",0])] call SOCK_fnc_numberSafe; private _maxMembers = _group getVariable ["gang_maxMembers",50]; private _members = [(_group getVariable "gang_members")] call SOCK_fnc_mresArray; private _owner = _group getVariable ["gang_owner",""]; if (_owner isEqualTo "") exitWith {}; _query = format ["UPDATE gangs SET bank='%1', maxmembers='%2', owner='%3' WHERE id='%4'",_bank,_maxMembers,_owner,_groupID]; }; case 1: { _query = format ["UPDATE gangs SET bank='%1' WHERE id='%2'",([(_group getVariable ["gang_bank",0])] call DB_fnc_numberSafe),_groupID]; }; case 2: { _query = format ["UPDATE gangs SET maxmembers='%1' WHERE id='%2'",(_group getVariable ["gang_maxMembers",50]),_groupID]; }; case 3: { _owner = _group getVariable ["gang_owner",""]; if (_owner isEqualTo "") exitWith {}; _query = format ["UPDATE gangs SET owner='%1' WHERE id='%2'",_owner,_groupID]; }; case 4: { _members = _group getVariable "gang_members"; if (count _members > (_group getVariable ["gang_maxMembers",50])) then { _membersFinal = []; for "_i" from 0 to _maxMembers -1 do { _membersFinal pushBack (_members select _i); }; } else { _membersFinal = _group getVariable "gang_members"; }; { _x set [0,[_x select 0] call DB_fnc_mresString]; _membersFinal set[_forEachIndex,_x]; } forEach _membersFinal; _membersFinal = [_membersFinal] call DB_fnc_mresArray; _query = format ["UPDATE gangs SET members='%1' WHERE id='%2'",_membersFinal,_groupID]; }; case 5: { _query = format ["UPDATE gangs SET tasks='%1' WHERE id='%2'",(_group getVariable ["gang_role",[0,[0,0,0,0,0,0]]]),_groupID]; }; }; if (!isNil "_query") then { [_query,1] call DB_fnc_asyncCall; };
-
Your Variables are not defined
Above params there is missing a line:
private ["_groupID","_bank","_maxMembers","_members","_membersFinal","_query","_owner"];
Spoiler anzeigen
private ["_groupID","_bank","_maxMembers","_members","_membersFinal","_query","_owner"];
params [
["_mode",0,[0]],
["_group",grpNull,[grpNull]]
];
if (isNull _group) exitWith {};
private _groupID = _group getVariable ["gang_id",-1];
if (_groupID isEqualTo -1) exitWith {};
private _query = "";
switch (_mode) do {
case 0: {
private _bank = [(_group getVariable ["gang_bank",0])] call SOCK_fnc_numberSafe;
private _maxMembers = _group getVariable ["gang_maxMembers",50];
private _members = [(_group getVariable "gang_members")] call SOCK_fnc_mresArray;
private _owner = _group getVariable ["gang_owner",""];
if (_owner isEqualTo "") exitWith {};
_query = format ["UPDATE gangs SET bank='%1', maxmembers='%2', owner='%3' WHERE id='%4'",_bank,_maxMembers,_owner,_groupID];
};
case 1: {
_query = format ["UPDATE gangs SET bank='%1' WHERE id='%2'",([(_group getVariable ["gang_bank",0])] call DB_fnc_numberSafe),_groupID];
};
case 2: {
_query = format ["UPDATE gangs SET maxmembers='%1' WHERE id='%2'",(_group getVariable ["gang_maxMembers",50]),_groupID];
};
case 3: {
_owner = _group getVariable ["gang_owner",""];
if (_owner isEqualTo "") exitWith {};
_query = format ["UPDATE gangs SET owner='%1' WHERE id='%2'",_owner,_groupID];
};
case 4: {
_members = _group getVariable "gang_members";
if (count _members > (_group getVariable ["gang_maxMembers",50])) then {
_membersFinal = [];
for "_i" from 0 to _maxMembers -1 do {
_membersFinal pushBack (_members select _i);
};
} else {
_membersFinal = _group getVariable "gang_members";
};
{
_x set [0,[_x select 0] call DB_fnc_mresString];
_membersFinal set[_forEachIndex,_x];
} forEach _membersFinal;
_membersFinal = [_membersFinal] call DB_fnc_mresArray;
_query = format ["UPDATE gangs SET members='%1' WHERE id='%2'",_membersFinal,_groupID];
};
case 5: {
_query = format ["UPDATE gangs SET tasks='%1' WHERE id='%2'",(_group getVariable ["gang_role",[0,[0,0,0,0,0,0]]]),_groupID];
};
};
if (!isNil "_query") then {
[_query,1] call DB_fnc_asyncCall;
};also here is the defaul file:
Spoiler anzeigen
#include "\life_server\script_macros.hpp"
/*
File: fn_updateGang.sqf
Author: Bryan "Tonic" BoardwineDescription:
Updates the gang information?
*/
private ["_groupID","_bank","_maxMembers","_members","_membersFinal","_query","_owner"];
params [
["_mode",0,[0]],
["_group",grpNull,[grpNull]]
];if (isNull _group) exitWith {}; //FAIL
_groupID = _group getVariable ["gang_id",-1];
if (_groupID isEqualTo -1) exitWith {};switch (_mode) do {
case 0: {
_bank = [(_group getVariable ["gang_bank",0])] call DB_fnc_numberSafe;
_maxMembers = _group getVariable ["gang_maxMembers",8];
_members = [(_group getVariable "gang_members")] call DB_fnc_mresArray;
_owner = _group getVariable ["gang_owner",""];
if (_owner isEqualTo "") exitWith {};_query = format ["UPDATE gangs SET bank='%1', maxmembers='%2', owner='%3' WHERE id='%4'",_bank,_maxMembers,_owner,_groupID];
};case 1: {
params [
"",
"",
["_deposit",false,[false]],
["_value",0,[0]],
["_unit",objNull,[objNull]],
["_cash",0,[0]]
];private _funds = _group getVariable ["gang_bank",0];
if (_deposit) then {
_funds = _funds + _value;
_group setVariable ["gang_bank",_funds,true];
[1,"STR_ATM_DepositSuccessG",true,[_value]] remoteExecCall ["life_fnc_broadcast",remoteExecutedOwner];
_cash = _cash - _value;
} else {
if (_value > _funds) exitWith {
[1,"STR_ATM_NotEnoughFundsG",true] remoteExecCall ["life_fnc_broadcast",remoteExecutedOwner];
breakOut "";
};
_funds = _funds - _value;
_group setVariable ["gang_bank",_funds,true];
[_value] remoteExecCall ["life_fnc_gangBankResponse",remoteExecutedOwner];
_cash = _cash + _value;
};
if (LIFE_SETTINGS(getNumber,"player_moneyLog") isEqualTo 1) then {
if (LIFE_SETTINGS(getNumber,"battlEye_friendlyLogging") isEqualTo 1) then {
diag_log (format [localize "STR_DL_ML_withdrewGang_BEF",_value,[_funds] call life_fnc_numberText,[0] call life_fnc_numberText,[_cash] call life_fnc_numberText]);
} else {
diag_log (format [localize "STR_DL_ML_withdrewGang",name _unit,(getPlayerUID _unit),_value,[_funds] call life_fnc_numberText,[0] call life_fnc_numberText,[_cash] call life_fnc_numberText]);
};
};
_query = format ["UPDATE gangs SET bank='%1' WHERE id='%2'",([_funds] call DB_fnc_numberSafe),_groupID];
[getPlayerUID _unit,side _unit,_cash,0] call DB_fnc_updatePartial;
};case 2: {
_query = format ["UPDATE gangs SET maxmembers='%1' WHERE id='%2'",(_group getVariable ["gang_maxMembers",8]),_groupID];
};case 3: {
_owner = _group getVariable ["gang_owner",""];
if (_owner isEqualTo "") exitWith {};
_query = format ["UPDATE gangs SET owner='%1' WHERE id='%2'",_owner,_groupID];
};case 4: {
_members = _group getVariable "gang_members";
if (count _members > (_group getVariable ["gang_maxMembers",8])) then {
_membersFinal = [];
for "_i" from 0 to _maxMembers -1 do {
_membersFinal pushBack (_members select _i);
};
} else {
_membersFinal = _group getVariable "gang_members";
};
_membersFinal = [_membersFinal] call DB_fnc_mresArray;
_query = format ["UPDATE gangs SET members='%1' WHERE id='%2'",_membersFinal,_groupID];
};
};if (!isNil "_query") then {
[_query,1] call DB_fnc_asyncCall;
};just a smiple scope error
-
tk you man, it work!