Current time: 21.12.2024, 15:20 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Lua скрипты
» Вопросы и обсуждение
Author Message
gamecreator Offline

Posts: 7107
Post: #16

(17.08.2011 20:05)garretdrazor Wrote:  ассемблер(который мне хотелось бы забыть)
и зря. очень хороший и полезный язык.


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
17.08.2011 20:19
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #17

garretdrazor Wrote:ассемблер(который мне хотелось бы забыть)
Видать, так учил. Sm Вообще, им стоит хоть немного владеть, хотя бы для общего развития.
17.08.2011 21:06
Find all posts by this user Quote this message in a reply
Valery Offline

Posts: 2196
Post: #18

A new language to learn? cool)
05.01.2018 20:19
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16660
Post: #19

Lua is used in most games, like HMM 5 or Fallout. It's quite fast and expressive. All ERM features remain still. With Lua there is no border between scripts and plugins.

Code:
local NO_MON = -1

-- Given hero ID. Returns slot without creatures or false on failure
function findFreeSlot (heroId)
  erm.y[1] = heroId  

  for i = 0, 6 do -- repeat from 0 to 6
    erm.y[2] = i
    erm('HEy1:C0/y2/?y3/?y4')

    if y3 == NO_MON then
      return i
    end
  end

  return false
end

local freeSlot = findFreeSlot(0) -- find free slot for Orrin

if freeSlot then
  print('Found ' .. freeSlot)
else
  print('Not found ((')
end


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
05.01.2018 22:29
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2360
Post: #20

Поддержка хуков будет? Например, если картоделу понадобиться расширить таблицы для добавления новых героев в ERA (пример из WoG 3.59):
06.01.2018 00:53
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16660
Post: #21

Не увидил хуков. Увидел только выделение памяти под новые структуры (такая функциональность есть, malloc, ffi.new и иже с ним из стандартной поставки luajit) и замена старых адресов новыми с глобальным реестром (?) структур по имени. Возможно, у Сергея был ещё какой-то побочный функционал.

Что касается перехватчиков/хуков в коде, то таковые поддерживаются. Реальный пример из era.lua:

Code:
-- установили перехватчик по адресу, когда окно уже создано и базовые ресурсы загружены
era.bridge(0x4EEEA5, function (context)
  -- Redirect message boxes to native game dialog system
  era.msg  = nativePrint
  era.ask  = era.showNativePrompt
  _G.print = era.msg
  
  era.trigger('OnGuiStart') -- сгенерировали новое именованное событие
  
  return 1 -- выполнили код по умолчанию
end)

Будет реальный запрос на модуль с синтаксисом вроде 3.59, добавлю. Глобальная таблица расширенных структур и несколько удобных методов для патчинга адресов.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
06.01.2018 01:13
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16660
Post: #22

Добавил в ЭРЕ функции для внесения заплаток в секции кода.

function mem.writeHex (ptr, data)
function mem.writeByte (ptr, value)
function mem.writeWord (ptr, value)
function mem.writeInt (ptr, value)


Пример:
Code:
local buf = ffi.new(mem.pu8, 1000)    -- создали новый массив на 1000 байт для хранения неясной структуры
mem.writeInt(0x4035E2, mem.addr(buf)) -- пропатчили обращение к массиву
mem.writeHex(0x701000, 'abcdef')      -- записали 3 байта hex-строки в точку входа исполняемого файла


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
06.01.2018 03:28
Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 624
Post: #23

Что насчет именованных геройских констант и адекватного представления геройских структур (без ритуалов с ffi через строчку или, прости господи, динамического ерм)?
(This post was last modified: 06.01.2018 21:26 by feanor.)
06.01.2018 21:25
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16660
Post: #24

feanor, работать нужно в этом направлении через ритуал ffi-структуры + ffi.metatype либо через обёртки модуля erm-подобного и get/set методы: erm.hero(3):setName().
Это библиотечные файлы, которые нужно писать. Готовых взять негде. Для начала планирую ерм-функционалу давать обвязку, структур-то много. Хотелось бы camelCase выдержать, а так можно пробовать из HD-мода конвертировать для начала. Любые начинания приветствуются и очень желательны.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
07.01.2018 00:24
Find all posts by this user Quote this message in a reply
Heromant Offline

Posts: 348
Post: #25

(05.01.2018 22:29)Berserker Wrote:  ***
    erm.y[2] = i
    erm('HEy1:C0/y2/?y3/?y4')

    if y3 == NO_MON then
    ***

Между erm('HEy1:C0/y2/?y3/?y4') и if y3 == NO_MON разве не надо строку:
y3 = erm.y[3]
Или что-то вроде этого? Переменные y3, у4 сами "материализуются" в контексте выполнения?
15.07.2019 19:05
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16660
Post: #26

Надо, пропустил.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
15.07.2019 22:19
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5429
Post: #27

(20.03.2022 18:22)Berserker Wrote:  wessonsm, пожалуйста. Жаль, так и не успел с Lua сделать аналогичное.

прозвучало, как будто ты все планы по ЛУА на базе ERA полность свернул и более не планируешь?!


Image: team-supermod.gif
22.03.2022 12:04
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16660
Post: #28

Не мы такие, жизнь такая ) На текущий момент просвета не видно.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
22.03.2022 23:03
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group