Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной

Таблица лидеров


Популярные публикации

Отображаются публикации с наибольшей репутацией на 04/16/18 во всех областях

  1. 1 балл
    Выкладываю миссию от комрада 123new с моими текущими доработками Только что внес неск микроизменений в проверки, тк по результатм испытаний 3х игроков один раз автореспавн умудрился наложиться на респавн ручной. Внес изменения (внедрил именованные переменные для проверок) и выложил заново https://drive.google.com/drive/folders/1Hq1lLMDBp8wB0K-x1DZFgXcfENDTo6pG
  2. 1 балл
    123new Плюс переменных в profileNamespace - они сохраняют свои значения до тех пор, пока клиент не отключится от сервера - потому их надо обязательно обнулять в процедуре респавна я в респавне обнуляю eventKilledClient и eventKilledClientCount (эта переменная для подсчета интераций) а переменные ClientRespawn и ClientRespawnAuto непосредственно в eventPlayerKilled, но обнуляю только 1 раз Вдруг игрок очень шустрый и быра нажмет на респавн )))) Теперь Как отправить код на клиента разобрался _myProc = { //тут код }; [_id,_myProc] spawnForClient { _myProc = _this select 1; call _myProc; //будет выполнеy код определенный на сервере и переданный как параметр. чем больше код, тем больше трафик! }; осталось разобраться в 3х моментах 1. Передача кода/переменной (а собственно какая разница?) с клиента на сервер. только publicvariables? 2. Управление камерой для клиента - рою 3. fnc_addHandsItem; - укладка оружия в руги новому игроку при входе (в прицнипе разобрался, надо только проверить) 4. перезарядка этого оружия что бы при входе он был готов стрелять (вероятно это playerAcation или что-то вроде этого) - рою
  3. 1 балл
    123new Вот пример применения в event_playerKilled.sqf тк этот скрипт вызывается от 1 до 3х раз, то нежелательно, что бы часть кода которая ниже выдачи сообщения всем юзверям и в лог об убийстве выполнялась более 1 раза Просто потому что - убийство профиля вызовется 2-3 раза, процесс ожидания и удаления агента будет болтаться в памяти сервера в 2х-3х экземплярах А если в конце мы добавили вызов экрана смерти, вызов автопереспавна - они могут наложиться (я с этим уже столкнулся неск раз) Использовать глобальные нельзя, тк это повлияет на всех клиентов Можно использовать переменные привязанные к агенту - тогда просто вместо profileNamespace пишем _agent Но если сервер грохнет агента, то тогда и переменная пропадет потому сразу после сообщуг ... код 1 ... _eventKilledClient = profileNamespace getVariable ["eventKilledClient",false]; if (_eventKilledClient) exitWith {}; profileNamespace setVariable ["eventKilledClient",true]; ... код 2... в итоге код 1 будет выполнен сколько серверной душе угодно а код 2 только 1 раз Точно так же я решил проверку при автореспавне - в процедуре автореспавна проверяется не запущен ли респавн вручную, и, если запущен, то бросаем это занятие )). На всяк случай сделал аналогичную проверку в процедуре вызываемой на сервере по нажатию клиентом кнопки respawn, в процедуре _clientRespawn которая в dbLoadPlayer.sqf в самом начале _clientRespawnAuto = profileNamespace getVariable ["ClientRespawnAuto",false]; if (_clientRespawnAuto) exitWith { diag_log format["RESPAWN: Client %1 with UID %2 alredy automatically respawn!",_id, _uid]; profileNamespace setVariable ["ClientRespawn",false]; }; profileNamespace setVariable ["ClientRespawn",true]; в скрипте который организует автореспавн (та же процедура _clientRespawn, только ее содержимое вынесено в отдельный файл (forcedRespawnCustom.sqf) и обьявлено в compilse.sqf как forcedRespawnCustom и эта процедура вызывается после задержки в конце event_playerKilled.sqf) _id туда передается в качестве параметра - [_id] call forcedRespawnCustom; [тк я не уверен, что _id будет там содержать корректный _id] можно конечно передать _id и через profileNamespace. _id = _this select 0; if (isNil "_id") exitWith {diag_log format["FORCECLIENTRESPAWN: _id == isNil, Exit!"]}; _uid = getClientUID _id; if (isNil "_uid") exitWith {diag_log format["FORCECLIENTRESPAWN: _uid == isNil, Exit!"]}; _clientRespawn = profileNamespace getVariable ["ClientRespawn",false]; if (_clientRespawn) exitWith { diag_log format["FORCECLIENTRESPAWN: Client %1 with UID %2 alredy manual respawn!",_id, _uid]; profileNamespace setVariable ["ClientRespawnAuto",false]; }; profileNamespace setVariable ["ClientRespawnAuto",true]; заодно зупулил переменную в код который отправляется и запускается на клиенте и которую так же проверяю в том же коде но это на предмет если потребуется затемнения детскрина так же добавил доппроверкку_ClientRespawn непосредственно перед вызовом процедуры автореспавна сегодня все дообкатаю, проверю (надеюсь приятели помогут протестить, тк одному норм убийство и респавн нескольких игроков не проверить) и выложу сами скрипты с каментами внутри
×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.

Поддержка