Перейти к содержанию

Сообщения от Скрипты

Аватар пользователя
10 лет назад
Консоль по умолчанию не выдает возвращаемый функциями результат, нужно обернуть принтом. Вот так у меня работает:
@print(GetPlayerHeroes(PLAYER_1))
10 лет назад
Хех, про print-то я и забыл, [nm и сам сколько раз им пользовался, чтоб МР узнать. Спасибо! А можно ещё вопросик?Где в файлах игры прописаны свойства навыков-умений и артефактов? А то весь data перерыл - не нашёл.
В ответ пользователю RedHeavenHero
Аватар пользователя
10 лет назад
RedHeavenHero

local threads = {}

local startExec = function(func)
local threads = threads
errorHook(function()
%threads[%func] = nil
end)
threads[func] = 1
func()
threads[func] = nil
end

function startThreadOnce(func)
if not %threads[func] then
startThread(%startExec, func)
end
end

function isFunctionRunning(func)
return %threads[func]
end
В данном примере startThreadOnce запускает функцию только если она не запущена в данный момент. isFunctionRunning проверяет запущена ли функция в данный момент.
Спасибо. Если функция выдаст ошибку, то она перейдёт в статус завершённой?
В ответ пользователю Dyrman
Аватар пользователя
10 лет назад
Dyrman
Спасибо. Если функция выдаст ошибку, то она перейдёт в статус завершённой?
Да:
errorHook(function()
%threads[%func] = nil
end)
Аватар пользователя
10 лет назад
serovoy
Где в файлах игры прописаны свойства навыков-умений и артефактов?
GameMechanics/RefTables/ и дальше файлы Skills.xdb/Artifacts.xdb. Свойства описаны только базовые, всё самое интересное зашито в коде игры.
10 лет назад
Т.е. если я, к примеру, захочу изменить дипломатию (уменьшить процент, но уменьшить и стоимость), то для этого придётся лезть в код самой игры? :eek:
Аватар пользователя
10 лет назад
Не всё возможно описать скупым языком xml разметки. У дипломатии, например, куча условий изменяющих шансы срабатывания, их нереально привести к виду таблицы ключ-значение. В код игры вы не залезете, так как всё уже скомпилировано в exe файл, и последующая его правка суть весьма нетривиальная задача.
10 лет назад
Да, я в курсе, читал мануал и помню этот отрывок:
1) +5%, если у героя и нейтралов одинаковое мировоззрение (добрый/злой – как при расчете Боевого Духа)
2) +5%, если герой и нейтралы принадлежат к одному и тоже же замку
3) +5%, если в армии героя есть точно такие же существа, как и в нейтральной армии (обычные и улучшенные существа считаются разными)
4) +5%, если нейтралы – обычные существа, а в армии героя есть их улучшенный вариант (например, нейтралы – крестьяне, а в армии героя есть ополченцы)
5) +10%, если у героя есть умение «Дипломатия»
6) +20%, если у героя есть специализация на существ из нейтральной армии
Меня интересует конкретно предпоследний пункт (п. 5). Где можно изменить эти пресловутые 10% и можно ли.
И ещё вопросик (надеюсь, не надоел): где можно отредактировать стартовые армии героев? (Не на конкретной карте, а вообще в игре.)
Аватар пользователя
10 лет назад
Есть такая странная особенность: если заменяешь существо скриптами в мульт-режиме, то оно сразу же видно в интерфейсе армии героя, если в сингл, то надо выйти из интерфейса и обратно зайти...
Нет ли способа обновления или чего-то подобного и для сингл-режима игры?
Аватар пользователя
10 лет назад
Всем ку!
Вопрос знатокам скриптов.
Можно ли временно (до первого боя (включая его)) повысить/снизить мораль/удачу? Чтобы потом они вернулись обратно на свои места.
Аватар пользователя
10 лет назад
GiveHeroBattleBonus('имя_героя', ТИП_БОНУСА, ИЗМЕНЕНИЕ)
ТИП_БОНУСА. Удача - HERO_BATTLE_BONUS_LUCK, боевой дух - HERO_BATTLE_BONUS_MORALE.
ИЗМЕНЕНИЕ - число, может быть как положительным, так и отрицательным.
Аватар пользователя
10 лет назад
RedHeavenHero
Премного благодарен! :beer:

Может вы знаете, есть ли "libhomm3" на версию 3.1 ?
Потому что в описании к данному сборнику скриптов было сказано, что "в версии 3.1 будет исправлена выдача данных значений".
Вот пришлось самому поправить с вашей помощью)
Аватар пользователя
10 лет назад
Нет, к сожалению, тут не могу ничем помочь.
Аватар пользователя
10 лет назад
Напрочь забыл какой скрипт определяет принадлежность героя к игроку. Вобщем нужно что при входе в регион любого героя первого игрока открывался messagebox,а на всех других героев триггер не реагировал,подскажите пожалуста как это сделать?)
В ответ пользователю Рыцарь Бездны
Аватар пользователя
10 лет назад
Проверку на принадлежность игроку можно сделать так:
if GetObjectOwner(hero) == 1 then
.....
end
hero должен быть первым параметром функции, которую вызывает триггер. Например:
function message(hero, region)

Статистика

Приветствуем новейшего участника: recijeb

Сейчас на сайте 8 пользователей 1315 гостей