Перейти к содержимому


Фотография

indbi2 чтение очков из базы


Лучший Ответ ReXcOr , 24 July 2018 - 18:23

Schatten правильно подметил, а у вас score назначается в файле initPlayerLocal.sqf,  а должен на стороне сервера

Если хотите, что-бы работало из initPlayerLocal.sqf, команду addScore прогоните через remoteExec с аргументом 2

 

в общем, вместо

player addScore _score;

попробуйте 

_lPlayer = player;
[_lPlayer, _score] remoteExec ["addScore", 2];
Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 OFFLINE   moroz89

moroz89

    Мл.сержант

  • Пользователи
  • 116 сообщений

Отправлено 24 July 2018 - 14:01

В базу сохраняется позиция, урон, экипировка, очки. Подгружается все, кроме очков почему-то. Подскажите в чем беда?)

 

 

initServer

//database
waitUntil {time > 0};
// --------------------------------------------------------------------checking the database-----------------------------------------------------------------------
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------
"un_database_check" addPublicVariableEventHandler {
private ["_packet"];
 
  _packet = _this select 1;
  _dataplayrowner = _packet select 0;
  _dataplayrname = _packet select 1;
  _dataplayruid = _packet select 2;
  _datanamearray = format ["%1_%2_mycustommissionname", _dataplayrname, _dataplayruid];
  _databasename = _datanamearray;
  
  _inidbiUN = ["new", _databasename] call OO_INIDBI;
  _databasefind = "exists" call _inidbiUN;
 
// ------------------------------------------------------cant find the database saveing new players name and uid---------------------------------------------------
  if (!_databasefind) then {
  ["write", ["INFO", "Name", _dataplayrname]] call _inidbiUN;
  ["write", ["INFO", "UID", _dataplayruid]] call _inidbiUN;
 
  "welcome new spawn" remoteExec ["hint"];
  };
// --------------------------------------------------------found the database now loading data to send to player---------------------------------------------------
  if (_databasefind) then {
  "found the database" remoteExec ["hint"];
    _readpos = ["read", ["POSITION", "Position", []]] call _inidbiUN;   
    _readdir = ["read", ["POSITION", "Direction", ""]] call _inidbiUN;
    _readdamage = ["read", ["INFO", "Health", ""]] call _inidbiUN;
    _readloadout = ["read", ["GEAR", "Loadout", []]] call _inidbiUN;
	_score = ["read", ["INFO", "Score", ""]] call _inidbiUN;
    
 
    un_database_load = [_readpos,
                        _readdir,
                        _readdamage,
                        _readloadout,
						_score];
 
    _dataplayrowner publicVariableClient "un_database_load";
  };
  un_database_check = nil;
};
 
// --------------------------------------------------player sent save game data to server - saving it to database--------------------------------------------------
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------
"un_database_save" addPublicVariableEventHandler {
private ["_packet"];
    _packet = _this select 1;
    _datanamearray = format ["%1_%2_mycustommissionname", _packet select 0, _packet select 1];
    _databasename = _datanamearray;
    _inidbiUN = ["new", _databasename] call OO_INIDBI;
    
    ["write", ["INFO", "Name", _packet select 0]] call _inidbiUN;
    ["write", ["INFO", "UID", _packet select 1]] call _inidbiUN;
    ["write", ["POSITION", "Position", _packet select 2]] call _inidbiUN;
    ["write", ["POSITION", "Direction", _packet select 3]] call _inidbiUN;
    ["write", ["INFO", "Health", _packet select 4]] call _inidbiUN;
    ["write", ["GEAR", "Loadout", _packet select 5]] call _inidbiUN;
	["write", ["INFO", "Score", _packet select 6]] call _inidbiUN;
 
    
    "Progress Saved" remoteExec ["hint"];
};

initPlayerLocal

//database
waitUntil {time > 10};
// -------------------------------------------------------send name and uid to server to check for database--------------------------------------------------------
if (!isNil "un_database_check") then {
un_database_check = nil;
};
 
sleep 1;
 
if (isNil "un_database_check") then {
_dataplayrowner = clientOwner;
_dataplayrname = profileName;
_dataplayruid = getPlayerUID player;
 
un_database_check = [_dataplayrowner,_dataplayrname,_dataplayruid];
publicVariableServer "un_database_check";
};
 
// ------------------------------------------------------server found database and now sent us the data to load----------------------------------------------------
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------
"un_database_load" addPublicVariableEventHandler {
private ["_ppacket"];
  _ppacket = _this select 1;
  _readpos = _ppacket select 0;
  _readdir = _ppacket select 1;
  _readdamage = _ppacket select 2;
  _readloadout = _ppacket select 3;
  _score = _ppacket select 4;
  
 
  _passtheparcel = [_readpos,
                    _readdir,
                    _readdamage,
                    _readloadout,
					_score];
  _Null = _passtheparcel call FN_loaddata;
 
};
 
// -----------------------------------------------applying the data sent to player - magazine loaded work around-------------------------------------------------
FN_loaddata = {
params ["_readpos",
        "_readdir",
        "_readdamage",
        "_readloadout",
		"_score"];
 
hint "all your shit has loaded";
// Clear player gear
  removeAllAssignedItems player;
  removeAllItems player;
  clearAllItemsFromBackpack player;
  removeBackpack player;
  removeUniform player;
  removeVest player;
  removeHeadgear player;
  removeGoggles player;
  removeAllWeapons player;
  removeAllPrimaryWeaponItems player;
  removeAllHandgunItems player;
  cash = 0;
  killcount = 0; 
  
// Add player gear
  player setPosATL _readpos;
  player setDir _readdir;
  player setDamage _readdamage;
  player setUnitLoadout _readloadout;
  player addScore _score;
 
  
  un_database_load = nil;
  publicVariable "un_database_load";
};
 
// ---------------------------------------------------------request to save game - send data to server-------------------------------------------------------------
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------
UN_savedata = {
_dataplayrname = profileName;
_dataplayruid = getPlayerUID player;
_dataplayrpos = getPosATL player;
_dataplayrdir = direction player;
_dataplayrdamage = damage player;
_dataplayrloadout = getUnitLoadout player;
_dataplayrscore = score player;
 
 
 
un_database_save = [_dataplayrname,
                    _dataplayruid,
                    _dataplayrpos,
                    _dataplayrdir,
                    _dataplayrdamage,
                    _dataplayrloadout,
					_dataplayrscore]; 
publicVariableServer "un_database_save";
hint "saveing game";
};
 
// ------------------------------------------------------------addaction to player to save data--------------------------------------------------------------------
player addAction ["<t color='#38BAFF'>Save Game</t>", {[] call UN_savedata;}];

  • 0

#2 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1780 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 24 July 2018 - 14:52

moroz89 , а с чего ты решил, что очки не подгружаются? В файлах их нет? В RPT-файле сообщения об ошибках есть? Ну и самое главное -- команду

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

нужно использовать только на сервере.


  • 1

#3 OFFLINE   moroz89

moroz89

    Мл.сержант

  • Пользователи
  • 116 сообщений

Отправлено 24 July 2018 - 17:49

moroz89 , а с чего ты решил, что очки не подгружаются? В файлах их нет? В RPT-файле сообщения об ошибках есть? Ну и самое главное -- команду

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

нужно использовать только на сервере.

ошибок нет. В файле очки сохраняются. Тестирую на выделенном сервере.

 

Вот файлик с данными:

[INFO]
Name=""moroz""
UID=""76561198188658010""
Health="0"
Score="7"
[POSITION]
Position="[15171.5,17348,0.00143051]"
Direction="14.9982"
[GEAR]
Loadout="[["arifle_Katiba_C_F","","","",["30Rnd_65x39_caseless_green",30],[],""],[],["hgun_Rook40_F","","","",["16Rnd_9x21_Mag",16],[],""],["U_O_SpecopsUniform_ocamo",[["30Rnd_65x39_caseless_green",2,30],["Chemlight_red",1,1]]],["V_BandollierB_khk",[["30Rnd_65x39_caseless_green",3,30],["16Rnd_9x21_Mag",2,16],["HandGrenade",2,1],["SmokeShell",1,1],["SmokeShellRed",1,1],["Chemlight_red",1,1]]],[],"H_HelmetCrew_O","",["Binocular","","","",[],[],""],["ItemMap","ItemGPS","ItemRadio","ItemCompass","ItemWatch","NVGoggles_OPFOR"]]"


  • 0

#4 OFFLINE   ReXcOr

ReXcOr

    Ст.сержант

  • Пользователи
  • 264 сообщений
  • Откуда:Moscow

Отправлено 24 July 2018 - 18:23   Лучший Ответ

Schatten правильно подметил, а у вас score назначается в файле initPlayerLocal.sqf,  а должен на стороне сервера

Если хотите, что-бы работало из initPlayerLocal.sqf, команду addScore прогоните через remoteExec с аргументом 2

 

в общем, вместо

player addScore _score;

попробуйте 

_lPlayer = player;
[_lPlayer, _score] remoteExec ["addScore", 2];

Сообщение отредактировал ReXcOr: 24 July 2018 - 18:45

  • 1

#5 OFFLINE   moroz89

moroz89

    Мл.сержант

  • Пользователи
  • 116 сообщений

Отправлено 24 July 2018 - 19:02

 

Schatten правильно подметил, а у вас score назначается в файле initPlayerLocal.sqf,  а должен на стороне сервера

Если хотите, что-бы работало из initPlayerLocal.sqf, команду addScore прогоните через remoteExec с аргументом 2

 

в общем, вместо

player addScore _score;

попробуйте 

_lPlayer = player;
[_lPlayer, _score] remoteExec ["addScore", 2];

Огромное Вам человеческое спасибо )


  • 0

#6 OFFLINE   ReXcOr

ReXcOr

    Ст.сержант

  • Пользователи
  • 264 сообщений
  • Откуда:Moscow

Отправлено 24 July 2018 - 20:00

Рад помочь)
  • 0




Яндекс.Метрика