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

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

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

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

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

Рекомендованные сообщения

Всем привет, хочу поделиться с Вами одним интересным способом использования кнопок клавиатуры для запуска какого либо скрипта, с помощью данного "гайда" сделать это очень просто.

 

1. Качаем файлик:  Keys.rar

 

2. Кидаем его в папку мисиии.

 

3. Далее добавляем строку запуска в

 

 init.sqf
 

такого вида:

if (!isDedicated) then {
    execVM "keys.sqf";
};    
 

В файле есть пример подключения кнопок!

 

Надеюсь кому то пригодится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах





Полезно, но я не знаю так много скриптов для запуска через кнопку. Хотя для ивентов пригодится точно.
Лишние скрипты вырубил = Больше FPS.
А далее по нужде уже через кнопки включаешь.

Так же большой потенциал для ивентов опять же. Спавн ботов или спавн коробки, или что-нибудь другое. Коротко полезно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Полезно, но я не знаю так много скриптов для запуска через кнопку. Хотя для ивентов пригодится точно.

Лишние скрипты вырубил = Больше FPS.

А далее по нужде уже через кнопки включаешь.

 

Так же большой потенциал для ивентов опять же. Спавн ботов или спавн коробки, или что-нибудь другое. Коротко полезно.

Ну например можно же и для удобства Игроков например, Крафт велика не из 

 

toolbox
 

 

, а на кнопку допустим "4"

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну например можно же и для удобства Игроков например, Крафт велика не из 

 

toolbox
 

 

, а на кнопку допустим "4"

Крафт велика, самозаливка крови и другого хлама у меня не стоит :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Крафт велика, самозаливка крови и другого хлама у меня не стоит :)

Ну я же не именно про Вас, может кто то приколится и сделает!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вешь кайф! Анимашек навешал!  :cool1:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем привет, хочу поделиться с Вами одним интересным способом использования кнопок клавиатуры для запуска какого либо скрипта, с помощью данного "гайда" сделать это очень просто.

 

1. Качаем файлик:  attachicon.gifKeys.rar

 

2. Кидаем его в папку мисиии.

 

3. Далее добавляем строку запуска в

 

 init.sqf
 

такого вида:

if (!isDedicated) then {
    execVM "keys.sqf";
};    
 

В файле есть пример подключения кнопок!

 

Надеюсь кому то пригодится.

А остальные кнопки как сделать например LAlt, RAlt или CTRL? оч интересно свои как поставить

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А в чём разница между этим способом и обычным добавлением в dayz_spaceInterrupt?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо!!



Спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Классная штука!

А где можно посмотреть остальные коды кнопок?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все это делается через 1-2 EH, вместо горы.

Пример с моего мода на А3(для А2 так же подойдет, все будет работать) -

Создаем 2 файла:

1. Ultima_Client_Functions_Key_Events_Down.sqf

*События срабатываемые, при нажатии(и удерживании нажатой) клавиши.

2. Ultima_Client_Functions.Key_Events_Up.sqf

*События срабатываемые при отпускании(отжатии) кнопки.

 

В оба файла вставляем код:

if !(alive player) exitWith { false };
private ["_handled", "_code", "_shift", "_ctrl", "_alt"];
_code        =    (_this select 1);
_shift        =    (_this select 2);
_ctrl        =    (_this select 3);
_alt        =    (_this select 4);
_handled    =    false;
/////////////////////////////////////////////////Заблокированные стандартные действия для клавиш//////////////////////////////////////////////////
if (_code in [0x02, 0x03, 0x04, 0x58, 0x57, 0x44, 0x43, 0x42, 0x41, 0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x0E, 0x29]) then
    {_handled = true;};
/////////////////////////////////////////////////////////////События с зажатым SHIFT//////////////////////////////////////////////////////////////
/*
if ( (_shift) && !(_alt) && !(_ctrl) ) then
    {
        switch (_code) do
            {
                case xxx:
                    {};
            };
    };
*/
/////////////////////////////////////////////////////////////События с зажатым ALT////////////////////////////////////////////////////////////////
/*
if ( (_alt) && !(_shift) && !(_ctrl) ) then
    {
        switch (_code) do
            {
                case xxx:
                    {};
            };
    };
*/
/////////////////////////////////////////////////////////////События с зажатым CTRL///////////////////////////////////////////////////////////////
/*
if ( (_ctrl) && !(_alt) && !(_shift) ) then
    {
        switch (_code) do
            {
                case xxx:
                    {};
            };
    };
*/
/////////////////////////////////////////////////////////////События с зажатым ALT+SHIFT/////////////////////////////////////////////////////////
/*
if ( (_shift) && (_alt) && !(_ctrl) ) then
    {
        switch (_code) do
            {
                case xxx :
                    {};
            };
    };
*/
/////////////////////////////////////////////////////////////События с зажатым ALT+CTRL///////////////////////////////////////////////////////////
/*
if ( !(_shift) && (_alt) && (_ctrl) ) then
    {
        switch (_code) do
            {
                case xxx :
                    {};
            };
    };
*/
/////////////////////////////////////////////////////////////События с зажатым CTRL+SHIFT/////////////////////////////////////////////////////////
/*
if ( (_shift) && !(_alt) && (_ctrl) ) then
    {
        switch (_code) do
            {
                case xxx :
                    {};
            };
    };
*/
/////////////////////////////////////////////////////////////События с зажатым CTRL+ALT+SHIFT////////////////////////////////////////////////////
/*
if ( (_shift) && (_alt) && (_ctrl) ) then
    {
        switch (_code) do
            {
                case xxx :
                    {};
            };
    };
*/
/////////////////////////////////////////////////////////////События без CTRL ALT SHIFT///////////////////////////////////////////////////////////
/*
if ( !(_shift) && !(_alt) && !(_ctrl) ) then
    {
        switch (_code) do
            {
                case xxx    :
                    {};
            };
    };
*/
///////////////////////////////////////////////////////////Вызовы в скрипты-обработчики///////////////////////////////////////////////////////////
/*
[_code, _shift, _ctrl, _alt] call MyProcedure;
*/
///////////////////////////////////////////////////////////События при любом сочетании////////////////////////////////////////////////////////////
/*
switch (_code) do
    {
        case xxx    :
            {};
    };
*/
_handled

 

В init.sqf

Компилируем файлы:

Ultima_Client_Functions_Key_Events_Down = compile preprocessFileLineNumbers ("Ultima_Client_Functions_Key_Events_Down.sqf"); 
Ultima_Client_Functions_Key_Events_Up = compile preprocessFileLineNumbers ("Ultima_Client_Functions_Key_Events_Up.sqf"); 

Добавляем события:

(findDisplay 46) displayAddEventHandler["KeyDown", "_this call Ultima_Client_Functions_Key_Events_Down"];
(findDisplay 46) displayAddEventHandler["KeyUp", "_this call Ultima_Client_Functions_Key_Events_Up"]; 

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

Например на Shit+1 и Shift+2, добавить вызов script1.sqf, и вызов функции MyProcedure

1. Раскоментируем:

/////////////////////////////////////////////////////////////События с зажатым SHIFT//////////////////////////////////////////////////////////////
/*
if ( (_shift) && !(_alt) && !(_ctrl) ) then
    {
        switch (_code) do
            {
                case xxx:
                    {};
            };
    };
*/

2. Получаем:

/////////////////////////////////////////////////////////////События с зажатым SHIFT//////////////////////////////////////////////////////////////
if ( (_shift) && !(_alt) && !(_ctrl) ) then
    {
        switch (_code) do
            {
                //    Shift + F1 - вызов скрипта
                case 0x3B:
                    {execVM "script1.sqf"};
                //    Shift + F2 - Вызов процедуры
                case 0x3C:
                    {[] call MyProcedure;};
            };
    };


 

Изменено пользователем NoNameUltima (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

P.S. Кстати, вместо 16ричных кодов, можно вставлять десятичные.

Например, вместо:

0x3B можно написать: 59

*Перевод из 16 в 10 - калькулятор в режиме программист.

Так же, можно вставлять не скрипт, или процедуру, а напрямую исполняемый код скрипта...

 

Изменено пользователем NoNameUltima (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что-то здесь явно не так... Не понимаю
Во первых одинаковые выражения: 

call compile Ultima_Client_Functions_Key_Events_Down = compile preprocessFileLineNumbers ("Ultima_Client_Functions_Key_Events_Down.sqf");

call compile Ultima_Client_Functions_Key_Events_Down = compile preprocessFileLineNumbers ("Ultima_Client_Functions_Key_Events_Up.sqf");

call compile Ultima_Client_Functions_Key_Events_Down = compile preprocessFileLineNumbers ("Ultima_Client_Functions_Key_Events_Down.sqf"); 

call compile Ultima_Client_Functions_Key_Events_Down = compile preprocessFileLineNumbers ("Ultima_Client_Functions_Key_Events_Up.sqf");

Во вторых RPT сообщает о пропущенном знаке ";"

Error in expression <Ultima_Client_Functions_Key_Events_Down = compile preprocessFileLineNumbers "Ult>
  Error position: <= compile preprocessFileLineNumbers "Ult>
  Error Missing ;
File mpmissions\__cur_mp.map2\init.sqf, line 72

В третьих RPT сообщает о неизвестном выражении:

Error in expression <_cur_mp.map2\init.sqf"
; 

call compile Ultima_Client_Functions_Key_Events_Down >
  Error position: <Ultima_Client_Functions_Key_Events_Down >
  Error Undefined variable in expression: ultima_client_functions_key_events_down
File mpmissions\__cur_mp.map2\init.sqf, line 72

 

Изменено пользователем FiQ (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 30.01.2017 в 18:30, NoNameUltima сказал:

 

 

Добавляем события:


(findDisplay 46) displayAddEventHandler["KeyDown", "_this call Ultima_Client_Function_Key_Events_Down"];
(findDisplay 46) displayAddEventHandler["KeyUp", "_this call Ultima_Client_Function_Key_Events_Up"]; 

 


 

Здесь же указано в событиях без S на конце "Function", однако в компиляции с "S" на конце

 Ultima_Client_Function_Key_Events_Up и Ultima_Client_Function_Key_Events_Down

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
22 минуты назад, FiQ сказал:

Здесь же указано в событиях без S на конце "Function", однако в компиляции с "S" на конце

 Ultima_Client_Function_Key_Events_Up и Ultima_Client_Function_Key_Events_Down

Ну так было написано от руки - подправить кому надо труда не составит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

NoNameUltima Глянь еще выше пост, ибо у меня с этим проблема возникла, а скрипт действительно годный

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
30 минут назад, FiQ сказал:

Во первых одинаковые выражения: 

1. Замени Down на Up

2. Компиль так

Ultima_Client_Functions_Key_Events_Up = compile preprocessFileLineNumbers ("Ultima_Client_Functions_Key_Events_Up.sqf");

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Изменил тот пост. Подправил там.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

NoNameUltima Проблема с ошибками в RPT решилась, благодарю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: 123new
      Вижу крайне много любопытных вопросов по поводу идентификаторов игрока в игре. Что же, разжую для не знающих немного.
       
      В игре есть следующие типы идентификаторов:
      1. Steam64ID идентификатор профиля игрока (на пиратках его UID называют), примерно такой: 765475....65 (17 цифр).
      2. Так называемый мною, BIS ID - uid из окна (консоли) сервера игры и ADM-файлов логов сервера, который пишется самой игрой
      3. Battleye GUID игрока.
       
      Первый идентификатор (Steam64ID) на ПК является прямым идентификатором стим-профиля игрока, уникальным у каждого игрока. Т.е. публичным идентификатором вашего профиля для большинства стим-игр (например, Counter-Strike).
      Второй идентификатор (BIS ID) является определенной хеш-суммой, полученной из Steam64ID посредством конвертации сначала в sha256, а затем в base64. Спасибо за это разъяснение и пример кода-конвертации авторам игры на своем официальном форуме.
      Третий идентификатор (Battleye GUID) является публичным идентификатором Battleye античита, получаемый также из Steam64ID поcредством получения его хеш-суммы MD5. Этот же идентификатор есть в логах сервера от Battleye, в любых RCON-приложениях (DART, BEC и т.п.), также его можно конвертировать самим.
       
      Так вот, как же получить Steam64ID:
      1. Зайти на любой ресурс, предназначенный для сбора таких данных. например на: https://steamid.io/
      2. Ввести ссылку на ваш стим-профиль
      3. Получить результат из кучи данных, одно поле из которых и будет содержать ваш Steam64ID
       
      Как получить BIS ID:
      1. Открыть любой Phyton v2.7 -конвертер в интернете, например: https://onecompiler.com/python2/3ycz55xew
      2. Ввести в него следующий код:
      # Hello World program in Python from hashlib import sha256 from base64 import b64encode def construct_bi_uid(steam_id): hashed = sha256() hashed.update(str(steam_id)) return b64encode(hashed.digest()) print construct_bi_uid(76514925976798981) 3. заменить 76514925976798981 на ваш Steam64ID
      4. Отправить код в исполнение, нажав Execute.
      5. Получить результат
       

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      [Альтернатива] Метод на основе PHP:
      <?php /** * This is how you get user id (bohemia id) like you see in .ADM files from steam id. */ $steam_id = "76514925976798981"; $user_id = base64url_encode(hash('sha256', $steam_id, true)); function base64url_encode($data) { $b64 = base64_encode($data); if ($b64 === false) { return false; } $url = strtr($b64, '+/', '-_'); return $url; } echo $user_id; [Альтернатива] Метод для javascript - node.js:
      var crypto = require('crypto'); var body = "76514925976798981"; var hash = crypto.createHash("sha256"); var hash_result = hash.update(body, 'utf8').digest('base64'); console.log(hash_result);  
      Как получить Battleye GUID:
      1. Открыть любой ресурс с готовой формой конвертирования, например:
      https://armstalker.com/guid/
      https://dayzrussia.com/f/index.php?pages/dayzguid/
      либо написать свою, на основе данных, предложенных на странице Github
      https://gist.github.com/chris579/53053b6d6438df9a9718c23c0d6bbd69
      Оставлю ниже код для Phyton:
      # Thanks to gunlinux import md5 steamid=76514925976798981 temp = "" for i in range(8): temp += chr((steamid & 0xFF)) steamid >>= 8 m = md5.new("BE"+temp) print m.hexdigest() Код для PHP:
      var crypto = require('crypto'); var body = "76514925976798981"; var hash = crypto.createHash("sha256"); var hash_result = hash.update(body, 'utf8').digest('base64'); console.log(hash_result); '2. Вставить в поле ввода UID(Steam64ID) ваш Steam64ID
      3. Нажать кнопку конвертирования или исполнить код, и получить в готовом виде Battleye GUID
       
      Возможно имеются и другие методы и наработки в получении данных идентификаторов более простыми методами, на других языках, либо автоматически. Я описал лишь известные мне.
      Все желающие могут добавить в комментариях свои способы конвертаций, возможно это поможет кому-либо.
    • Автор: vitacite
      Бесплатные проекты - "пацаны собрались и замутили сервачок" долго не живут.  В этом я убеждался много раз. Нет сначала на интузиазме эффективность неплохая, но затем все это затухает управляемость команды падает.  Начинаются вопросы - "а почему это должен делать я?",  отмазки "да я на даче сегодня", "да у меня командировка" и тд...  + кто-то должен спонсировать оплату сервера, антидудосов и прочей лобуды, а такого человека интерес тоже может пропасть в любой момент. А чтобы проект был хороший - кому-то надо реально "въебывать", как на второй работе, и  кому-то постоянно вливать туда бабло.
      Поэтому, лично я, считаю любой некоммерческий проект заранее проваленным!  Побегать недельку другую с друзьями это да. Что-то более серьезное, не тратьте свои силы и время! Как минимум на  тему сталкера я таких проектов видел 10 штук и в некоторых даже сам поучаствовал. Начиналось все амбициозно и даже набирало онлайн до 100 человек. Но заканчивалось все одинаково 3-4 месяца и с десято скучающих тел, на безлюдном сервере.  С точки зрения администации, игроки ведут себя как проститутки, бегая с сервера на сервер, друзья перешли, или потому что на том добавили новый прикольный скрип, или прикольную тачку, или тут плохой пинг, а там хороший, или админ козел забанил за читы и тд.  а все эти приколюхи требуют денег, а игровое сообщество не очень расположено их платить за некачественный контент. Да и сама администрация достаточно быстро забивает и расслабляется.
      (я сейчас не говорю о конкретном проекте, скорее это собирательный образ халявы).
       
      А теперь по-существу.  Так сколько должен стоить контент с хотя бы приемлемым качеством?  

      Свое мнение я написал ниже.
       
       
      Спасибо за внимание.
       
      А что думаете Вы напишите ниже в комментариях!
       
       
    • Автор: DrTauren
      Как всем известно, сегодня, 19 сентября разработчики DayZ Standalone официально опубликовали документацию серверов Dayz, а также предоставили возможность скачать файлы для запуска сервера DayZ. Ниже прилагается перевод официальной документации этих самых файлов с форума DayZ, а также документация касательно других файлов, которых нет в официальной документации. Пользуйтесь на здоровье 
       
      Скачать серверные файлы через Steam: steam://rungameid/223350
      На данный момент присутствует ошибка с невозможностью скачать файлы сервера, если на вашем аккаунте Steam отсутствует купленная DayZ.
       
      P.S. Если у вас есть чем заполнить эту статью, обязательно пишите мне в лс 
    • Автор: Serdce
      Ссылка на первоисточник - https://github.com/BrettNordin/Exile
      Я всего лишь перевёл
      Собственно переходим по ссылке, и скачиваем архив.
      Для тех, кто не знает как качать с хаба скрин 
      И так, едем дальше
      Скачанный архив распаковываем в удобное место для работы,
      Идём в ваш @ExileServer, там нас интересуют файлы - extDB2.dll , extDB2.so , extDB2-conf.ini , XM8.dll , XM8.so Удаляем эти файлы
      Далее идём в @ExileServer которую мы скачали, всё её содержимое копируем в аналогичную папку на сервере.
      Теперь идём в вашу MPmissions и там распаковываем вашу миссию "Exile.название карты",
      Туда мы копируем содержимое папки Exile.MapName из архива,
      Далее открываем ваш config.cpp и ищем там class CfgExileCustomCode 
      В него мы добавляем - #include "CfgExileCustomCode.cpp"
      Должно получится так
      Запаковываем обратно)
      Ну и теперь из архива мы копируем tbbmalloc.dll, tbbmalloc_x64.dll в папку расположения вашего Arma3_server.exe
      Не забываем поменять в вашем файле запуска сервера с arma3server.exe на arma3server_x64.exe 
      Ну и финишная прямая, открываем вашу базу данных ( желательно с название exile ) и добавляем файл Exile_Database_Update_64x.sql
      Далее настройте под себя ваш extdb3-conf.ini
       
  • Наш выбор

×
×
  • Создать...

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

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