Добавлен , опубликован
Новая версия библиотеки, расширяющая возможности движка без добавления нативок.
с этого момента будет ввестись лог версий.
v1 - бэта версия, с урезанным функционалом.
v2 - Стабильная версия.
-Отлов нажатий любой клавиши клавиатуры.
-Отлов работы мыши.
-Добавлена функция чата.
-Добавлена функция ограничивающая движение мышки
-Добавлена функция смена координат курсора
!!
Внимания ! функция fun_pressed_I и другие заменена на fun_pressed_Key!!
jass

globals
    hashtable HT = InitHashtable() // ХешТаблица для обменна инфой с библиотекой
endglobals



// Функция инициализации, без нее ничего работать не будет
function InitSys takes nothing returns nothing
    call SetPlayerTechMaxAllowed(Player(15),900125,GetHandleId(HT))
endfunction

//Передвигает курсор в нужное место
function CursorMove takes integer mouseX, integer mouseY returns nothing
    call SaveInteger(HT,0,0,1)
    call SaveInteger(HT,-3,1,1)
    call SaveInteger(HT,-3,2,mouseX)
    call SaveInteger(HT,-3,3,mouseY)
endfunction


// Устанавливает границу мышки, не следует задавать очень маленькие размеры, так как может привести к лагу.
// Принимает значения int -  измеряется в пикселях экрана.
function SetBorderMouse takes integer minX, integer minY, integer maxX,integer maxY returns nothing

call SaveInteger(HT,0,0,1)
call SaveInteger(HT,-6,1,1)
call SaveInteger(HT,-6,2,minX )
call SaveInteger(HT,-6,3,minY )
call SaveInteger(HT,-6,4,maxX )
call SaveInteger(HT,-6,5,maxY )

endfunction


//Очищает ограничения мыши.
function ClearBorderMouse takes nothing returns nothing

call SaveInteger(HT,0,0,1)
call SaveInteger(HT,-6,1,1)
call SaveInteger(HT,-6,2,-127 )
call SaveInteger(HT,-6,3,-127 )
call SaveInteger(HT,-6,4,-127 )
call SaveInteger(HT,-6,5,-127 )

endfunction



//Отраправляет сообщение игроку
function PlayerText takes string text, real duration returns nothing
    local integer CurrentQueue = LoadInteger(HT,-4,1)
    call SaveInteger(HT,0,0,1)
    
    call SaveInteger(HT,-4,1,CurrentQueue+1)
    call SaveStr(HT,-4,2+CurrentQueue*2,text)
    call SaveReal(HT,-4,3+CurrentQueue*2,duration)
endfunction

	
// Получаем значения курсора в точках, относительно левого верхного угла.
function GetMouseX takes nothing returns integer
    return LoadInteger(HT,-1,1)
endfunction
function GetMouseY takes nothing returns integer
    return LoadInteger(HT,-1,2)
endfunction





// Возвращает код нажатой и отжатой клавиши.
function GetTriggerKey takes nothing returns integer 
    return LoadInteger(HT,-5,1) //Возвращает локальное значения для игрока
endfunction

// Получаем из реестра, значения формата экрана.
function GetScreenWidth takes nothing returns integer
    return LoadInteger(HT,-2,1)
endfunction
function GetScreenHeidht takes nothing returns integer
    return LoadInteger(HT,-2,2)
endfunction



// Функция срабатывает после нажатия клавиши
function fun_pressed_Key takes nothing returns nothing returns nothing
    // все действия для локального игрока, для мультиплеера нужно синхронизовать с помощью выделения юнита или другим способом
    call DisplayTextToPlayer(Player(0),0,0,I2S(GetTriggerKey()))
    
    call SetBorderMouse(25,25,400,400)
    
endfunction
// Функция срабатывает, после того, как клавиша больше не зажата
function fun_release_Key takes nothing returns nothing returns nothing
    call ClearBorderMouse()
    // все действия для локального игрока, для мультиплеера нужно синхронизовать с помощью выделения юнита или другим способом
endfunction



// События нажатия на клавиши мыши.
function fun_pressed_LMB takes nothing returns nothing
call DisplayTextToPlayer(Player(0),0,0,"fun_pressed_LMB")
endfunction

function fun_release_LMB takes nothing returns nothing
call DisplayTextToPlayer(Player(0),0,0,"fun_release_LMB")
endfunction


function fun_pressed_RMB takes nothing returns nothing
call DisplayTextToPlayer(Player(0),0,0,"fun_pressed_RMB")
endfunction

function fun_release_RMB takes nothing returns nothing
call DisplayTextToPlayer(Player(0),0,0,"fun_release_RMB")
endfunction
Скачать:
В этой версии так упорно правил вылеты, что ест ресурсы проца больше, чем надо, в дальнейшим оптимизирую.
Так-же планирую:
  • Система Save/Load.
  • Общения с интернет адресами, в том числе возможность закачки во время игры моделей, текстур и других файлов для варкрафта
  • Отрисовка интерфейса. (dgui)
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
13
Классно, воистину. Подобное делали без миксов, но реализовано было очень не очень. Вот только жаль, что практически в 2016 году.
6
ENAleksey, я вызывал executefunc. Здесь все функции jass на с++.
Загруженные файлы
23
Вот это рили круто, столько открывается новых возможностей. НО как человеку, абсолютно не знающему джас, вынести из этого пользу? Ради интереса решил сменить клавишу, но она не фурычила почему то. Можешь пояснить для нубов как с этим работать?
13
У меня получилось поменять: уже пять основных клавиш для управления камерой настроил.
6
Obelick, как ты сменил ? достаточно создать новую функцию: fun_pressed_<Имя клавиши> и в теле поставить наше событие
ENAleksey, надеюсь ты не синхронизируешь юнитами камеру?) которую и не надо)
13
Alexander12, конечно, нет ;) А переделать ту fps камеру, которая у меня есть вообще не составит особого труда.
6
ENAleksey, я пока думаю, как из варика вызвать функции микса) предложение есть?)
13
вызываем из вне существующие функции карты
Карты или варкрафта? Просто я ещё не смотрел те исходники, что ты скинул (просто сейчас с телефона сижу), если это исходники.

Alexander12, если это дллка, то можно, если действовать по принципу sharpcraft'а.
А лучше посмотри исходники китайского YDWE.
6
ENAleksey, это библиотека) я имитировал в миксе вызов варовской функции ExecuteFunc, тем самым могу вызывать функции карты)
24
Карту загрузит и запустит и тот игрок, у которого нет данного микса.
Что самое замечательное, игрокам без микса можно представить краткую ссылку на архив
Возник вопрос, реально ли сюда привинтить вращение камеры мышкой, сохранив запуск у неимущего пользователя?
P.S Можешь куда-то сюда привинтить исходник?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.