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


Фотография

arma server проблема с записью значений


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

#1 OFFLINE   chugunin

chugunin

    Рядовой

  • Пользователи
  • 8 сообщений
  • Откуда:Ленинград
  • Отряд:team

Отправлено 29 November 2024 - 01:17

подключил базу данных к серверу (extdb3), без кастомных запросов в custom.ini потому что так легче. Сделал так, чтобы при подключении игрока была проверка, есть ли он в базе данных, если нет, то в базу добавлялся бы его ID и ник. Но что примечательно, GetPlayerUID возвращает пустую строку, а name player Error: No vehicle. Я не знаю как это фиксить, потому что когда я запускаю сетевую через редактор, и ввожу эти команды, то он мне возвращает нужные значения, но при запуске через TADST, он уже начинает творить фигню, я также дебажил (в rpt) те же значения, результат: "результат: [1,[[Error: No vehicle]]]"

"UID результат: ". Подскажите, как решить проблему с пустым возвратом значений этих функций
//--------------------код initServer.sqf-----------------------
"Extdb3" callExtension "9:ADD_DATABASE:gs281196";
"extDB3" callExtension "9:ADD_DATABASE_PROTOCOL:gs281196:SQL:888";
"extDB3" callExtension "0:888:INSERT INTO players (p_name,p_guid) VALUES ('tu','11')";//для проверки нормальной работы БД (ну и того что запросы работают)
onPlayerConnected "[_id, _name] execVM 'onPlayerConnected.sqf';";
//--------------------код onPlayerConnected.sqf-----------------------
sleep 3;
private _nick = name player;
_result = "extDB3" callExtension format ["0:888:SELECT p_name FROM `players` WHERE p_guid = '%1'", getPlayerUID player];
if (!(_result isEqualTo "[1]")) then {
  "extDB3" callExtension format["0:888:INSERT INTO players (p_name,p_guid) VALUES ('%1','%2')", _nick,getPlayerUID player];
} else {
	hint format ["Hello, %1!", name player];
	diag_log("ne poluchilos");
}


 

Прикрепленные файлы


Сообщение отредактировал chugunin: 29 November 2024 - 01:18

  • 0

#2 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 30 November 2024 - 00:01

Читаем матчасть:

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


  • 0

#3 OFFLINE   chugunin

chugunin

    Рядовой

  • Пользователи
  • 8 сообщений
  • Откуда:Ленинград
  • Отряд:team

Отправлено 30 November 2024 - 00:26

Читаем матчасть:

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

то есть использовать это нужно?

waitUntil { not isNull player };

  • 0

#4 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 30 November 2024 - 00:35

In MP player is different on each computer and on dedicated server it is objNull by default


  • 0

#5 OFFLINE   chugunin

chugunin

    Рядовой

  • Пользователи
  • 8 сообщений
  • Откуда:Ленинград
  • Отряд:team

Отправлено 30 November 2024 - 00:56

 

In MP player is different on each computer and on dedicated server it is objNull by default

я не вдуплю, какой конкретно должен быть код...


  • 0

#6 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 30 November 2024 - 01:06

Ну, если ты текст не вдуплил, то с чего вдруг код вдуплишь?
 
Игрока надо искать среди

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

. Но я бы не со стороны сервера обрабатывал подключение игрока, а со стороны игрока слал бы запрос на сервер.


Сообщение отредактировал Schatten: 30 November 2024 - 01:16

  • 0

#7 OFFLINE   chugunin

chugunin

    Рядовой

  • Пользователи
  • 8 сообщений
  • Откуда:Ленинград
  • Отряд:team

Отправлено 01 December 2024 - 20:59

Ну, если ты текст не вдуплил, то с чего вдруг код вдуплишь?
 
Игрока надо искать среди

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

. Но я бы не со стороны сервера обрабатывал подключение игрока, а со стороны игрока слал бы запрос на сервер.

окей, я вот заметил что в initPlayerLocal.sqf все работает нормально, но sql запросы не отправляются почему то

hint format["id: %1; name: %2; score: %3", getPlayerUID player, name player,score player];
"extDB3" callExtension format["0:888:INSERT INTO players (p_name,p_guid) VALUES ('%1','%2')", name player,getPlayerUID player];
 

  • 0

#8 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 01 December 2024 - 21:14

я вот заметил что в initPlayerLocal.sqf все работает нормально

Что работает "нормально"? Выводятся данные игрока? Если да, то неудивительно, -- player возвращает объект на стороне клиента.
 

но sql запросы не отправляются почему то

Ну, если ты тестируешь на выделенном сервере, где extDB3 подключён только на сервере, то что тут удивительного, что запросы не отправляются на стороне клиента?


  • 0

#9 OFFLINE   chugunin

chugunin

    Рядовой

  • Пользователи
  • 8 сообщений
  • Откуда:Ленинград
  • Отряд:team

Отправлено 02 December 2024 - 01:20

Ну, если ты текст не вдуплил, то с чего вдруг код вдуплишь?
 
Игрока надо искать среди

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

. Но я бы не со стороны сервера обрабатывал подключение игрока, а со стороны игрока слал бы запрос на сервер.

я пытаюсь научится, но не вижу конкретных ошибок. Саму суть я уловил, но методы с помощью которых можно это исправить я не знаю, и не понимаю. 

// onPlayerConnected.sqf
{
    hint format [
        "Player %1 is %2",
        name _x,
        ["dead", "alive"] select alive _x
    ];
} forEach allPlayers; //как к примеру уловить через цикл имя игрока, а к тому же еще и его ид

  • 0

#10 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 02 December 2024 - 01:56

Твоя ошибка в том, что ты пользуешься командой

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

на сервере, где игрока вроде как нету (текст, кстати, который ты не вдуплил, как раз об этом и говорит).
В код, передаваемый 

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

 (лучше, кстати, использовать обработчик события 

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

) передаётся UID подключившегося игрока, который и нужно использовать для получения объекта игрока среди тех, которые возвращает 

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

(можно ещё воспользоваться функцией

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

):

addMissionEventHandler [
    "PlayerConnected",
    {
        params ["", "_uid", "_name"];

        _player = _uid call BIS_fnc_getUnitByUID;

        diag_log (format ["UID: %1; name: %2; score: %3", _uid, _name, score _player]);
    }
];

Здесь именно сервак реагирует на подключение игрока. По-моему, лучше сделать по-другому: игрок зашёл в миссию, отправил запрос на сервак, сервак вытащил данные из базы и отправил обратно игроку.


Сообщение отредактировал Schatten: 02 December 2024 - 01:57

  • 1

#11 OFFLINE   chugunin

chugunin

    Рядовой

  • Пользователи
  • 8 сообщений
  • Откуда:Ленинград
  • Отряд:team

Отправлено 03 December 2024 - 17:16

addMissionEventHandler [ "PlayerConnected", { params ["", "_uid", "_name"];   _player = _uid call BIS_fnc_getUnitByUID;   diag_log (format ["UID: %1; name: %2; score: %3", _uid, _name, score _player]); } ];

в rpt логе : "UID: 76561198866275034; name: KnyaZZ; score: 0"
в базе данных:

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


Сообщение отредактировал chugunin: 03 December 2024 - 17:17

  • 0

#12 OFFLINE   chugunin

chugunin

    Рядовой

  • Пользователи
  • 8 сообщений
  • Откуда:Ленинград
  • Отряд:team

Отправлено 03 December 2024 - 17:37

 

addMissionEventHandler [ "PlayerConnected", { params ["", "_uid", "_name"];   _player = _uid call BIS_fnc_getUnitByUID;   diag_log (format ["UID: %1; name: %2; score: %3", _uid, _name, score _player]); } ];

в rpt логе : "UID: 76561198866275034; name: KnyaZZ; score: 0"
в базе данных:

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

 

UPD: возможно моя ошибка в коде, щас попробую поковырять


Сообщение отредактировал chugunin: 03 December 2024 - 17:38

  • 0

#13 OFFLINE   chugunin

chugunin

    Рядовой

  • Пользователи
  • 8 сообщений
  • Откуда:Ленинград
  • Отряд:team

Отправлено 03 December 2024 - 18:51

 

 

addMissionEventHandler [ "PlayerConnected", { params ["", "_uid", "_name"];   _player = _uid call BIS_fnc_getUnitByUID;   diag_log (format ["UID: %1; name: %2; score: %3", _uid, _name, score _player]); } ];

в rpt логе : "UID: 76561198866275034; name: KnyaZZ; score: 0"
в базе данных:

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

 

UPD: возможно моя ошибка в коде, щас попробую поковырять

 

да, все отлично спасибо


  • 0




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