Добавлен , опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
vJass
Тип:
Наработка
Новая версия библиотеки, расширяющая возможности движка без добавления нативок.
с этого момента будет ввестись лог версий.
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)

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
4
6
7 лет назад
4
Эмм, мы всё еще в предвкушении обновления. Что там?
ещё несколько дней, нужно сделать защиту, чтобы никто не смог запустить свой mix (с вирусом) или его изменить.
0
22
7 лет назад
0
Alexander12:
Эмм, мы всё еще в предвкушении обновления. Что там?
ещё несколько дней, нужно сделать защиту, чтобы никто не смог запустить свой mix (с вирусом) или его изменить.
Мы всё еще ждем.
0
2
7 лет назад
Отредактирован karaulov
0
И синхронизация будет что бы по сети можно было играть или только одиночка?
0
4
7 лет назад
0
karaulov автор писал что сразу с синхронизацией автоматически будет
0
10
7 лет назад
0
Воможно ли это сделать в самой карте, без установки отдельного микс патча?
2
30
7 лет назад
2
Новая версия, будет работать без микса в папке варика. А внедренный в саму карту!
Между прочим, очень-очень хотелось бы увидеть, это будет практически революцией, теперь даже не запоздалой, а актуальной.
2
4
7 лет назад
Отредактирован SomnusUltima
2
Как там работа? Или с появлением мемхака уже забили?
Но я бы все равно хотел посмотреть, многим чисто один только отлов клавиш нужен и больше ничего. А кучи строк всего подряд в мемхаке могут пугать нубов)
0
21
6 лет назад
0
У меня не работает если проигрывается музыка. Кто-то еще проверял?
0
4
6 лет назад
0
Raised:
У меня не работает если проигрывается музыка. Кто-то еще проверял?
У меня тож. Я пока проигрываю музыку, как звуком.
0
21
6 лет назад
0
В прошлом месяце баловался. Прикрутил управление клавишами + контроль камеры с помощью мышки. Если коротко, то это почти камера с DA Origins, только и-за отсутствия API для рейкастинга не выйдет нормально посчитать клиппинг и фиксить дистанцию. Код тестовый.
Загруженные файлы
0
11
5 лет назад
0
ENAleksey, там функция есть PlayerText, я так понимаю она исполняется для того игрока, который грубо говоря исполнил условия триггера. А реально ли с помощью данной функции отправить сообщение определенной группе игроков?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.