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

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

В ответ пользователю Warrior777
Аватар пользователя
Warrior777
У меня она прекрасно отображается. Это описание ошибки.

Добавлено через 2 часа 13 минут


Тогда подскажи как уменьшить количество ресурса в 1.6.
Я вижу только картинку с ошибкой редактора. А в сбщ#1322 нет.

local gold=GetPlayerResource(1,6)-10000
gold=gold>0 and gold or 0
SetPlayerResource(1,6,gold)

Добавлено через 2 минуты
Вообще лучше заранее сделать проверку на наличие ресурсов.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
А вот так в 1.6 не работает? Просто всю ветку постов не читал, мб, не понимаю последнего вопроса: (1.6 - это что вообще, версия игры что-ль?)

If GetPlayerResource(1, 6) >= 0 then
SetPlayerResource(1, 6, GetPlayerResource(1, 6) - 10000)
else
--zolota net--
end

Whatever
В ответ пользователю Heroist
Аватар пользователя
Heroist
А вот так в 1.6 не работает? Просто всю ветку постов не читал, мб, не понимаю последнего вопроса: (1.6 - это что вообще, версия игры что-ль?)

If GetPlayerResource(1, 6) >= 0 then
SetPlayerResource(1, 6, GetPlayerResource(1, 6) - 10000)
else
--zolota net--
end
1.6 - это вусмерть пропатченные оригинальные пятые герои.
Да, а проверку надо делать другую.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
Ну вот так точно не следует писать код (это очень дурной почерк, похожий на машинный код):
gold=gold>0 and gold or 0

А вот так должно работать, и при этом читабельно:
TAX_GOLD = 10000
...
local playerGold = GetPlayerResource(PLAYER_1, GOLD)
if (playerGold > TAX_GOLD) then
local newPlayerGold = playerGold - TAX_GOLD
SetPlayerResource(PLAYER_1, GOLD, newPlayerGold)
else
SetPlayerResource(PLAYER_1, GOLD, 0)
end
Разработчик Heroes 5.5 WarGame Edition.
Сайт проекта - пока неактивен
Автор Асимметричных шахмат
Аватар пользователя
А разве не лучше включить ">=" в определение кол золота? Тогда сразу захватим два варианта. А else уже будет означать, что золота вообще не хватает...Или в данном случае lua: знак ">" воспринимает, как больше-равно?

Whatever
В ответ пользователю Heroist
Аватар пользователя
Там немного другое: в моём случае проверялось количество золота с уже отнятой суммой, а в вашем - нужно сравнивать не с 0, а с 10000, и тут уже надо >=

Добавлено через 5 минут
Проверку лучше делать ещё в функции b и сразу выдать сообщение о нехватке ресурса.

Добавлено через 7 минут
function b()
if GetPlayerResource(1, 6) >= 10000 then
QuestionBox("золото есть.txt", "yes")
else
MessageBox("золота нет.txt")
end
end

function yes()
SetPlayerResource(1, 6, GetPlayerResource(1, 6) - 10000)
obs = obs + 10
end
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
obs - это что за переменная? Я чего-то не нашел...
И вроде, раз уж на то пошло, можно и без function yes() обойтись. Или тогда улучшить question box, как прикол, с 2-мя вариантами, чтоб игрок мог сам отменить сделку...

Whatever
В ответ пользователю Heroist
Аватар пользователя
Heroist
obs - это что за переменная? Я чего-то не нашел...
И вроде, раз уж на то пошло, можно и без function yes() обойтись. Или тогда улучшить question box, как прикол, с 2-мя вариантами, чтоб игрок мог сам отменить сделку...
Obs - какая-то сценарная штука в миссии Warrior777, которую за десять тысяч предлагают увеличить на 10.
У меня вариант такой: при вызове ф-ии b игроку предлагают червонец обсов за 10000 золотых, если столько есть, и он может согласиться или отказаться. А если денег нет, его посылают месадж боксом с одним вариантом ответа.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
function b()
if GetPlayerResource(1, 6) >= 10000 then
--money ok--
QuestionBox("согласен_ли_ты.txt", "yes" , "no")
else
--money no--
MessageBox("золота нет.txt")
end
end

function yes()
--da soglasen--
SetPlayerResource(1, 6, GetPlayerResource(1, 6) - 10000)
obs = obs + 10
end

function no()
--net ne hochu--
end

Whatever
В ответ пользователю Heroist
Аватар пользователя
Heroist
function b()
if GetPlayerResource(1, 6) >= 10000 then
--money ok--
QuestionBox("согласен_ли_ты.txt", "yes" , "no")
else
--money no--
MessageBox("золота нет.txt")
end
end

function yes()
--da soglasen--
SetPlayerResource(1, 6, GetPlayerResource(1, 6) - 10000)
obs = obs + 10
end

function no()
--net ne hochu--
end
Функция no и указание на неё в QuestionBox не нужны, т.к. она ничего не делает, и вообще не является обязательной.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
Аватар пользователя
RedHeavenHero
Функция no и указание на неё в QuestionBox не нужны, т.к. она ничего не делает, и вообще не является обязательной.

Не знал, извиняюсь. В любом случае, на всякий случай как черновик можно оставить, вдруг там потом понадобится записать какие-нибудь действие...

Whatever
Аватар пользователя
Каким образом можно уменьшить опыт героя, либо понизить уровень героя? например, мне нужна функция, обратная к функции LevelUpHero
Кампании для Heroes V 3.1 (Трилогия):

Пробуждение зла
Нашествие из Преисподней
Смена эпох

Скачать все кампании одним архивом: Яндекс.Диск Google.Диск

You can download the set of 3 Campaigns (English version) here


Одиночные сценарии Heroes V 3.1:


Незваные гости
Красный кристалл
Синий кристалл
Закат тьмы

Мультиплеерные карты для Heroes V 3.1:

Легендарная война
Сердце вулкана
Передел мира
В ответ пользователю MasteR
Juss456
Каким образом можно уменьшить опыт героя, либо понизить уровень героя? например, мне нужна функция, обратная к функции LevelUpHero


Насколько я помню, есть функция ChangeHeroStat - c ее помощью можно не только с опытом играться, но и с остальными характеристиками героя ( в т.ч. убирать\добавлять очки пунктов передвижения )
В ответ пользователю antonag07
Аватар пользователя
antonag07
Насколько я помню, есть функция ChangeHeroStat - c ее помощью можно не только с опытом играться, но и с остальными характеристиками героя ( в т.ч. убирать\добавлять очки пунктов передвижения )
Как раз с опытом играться нельзя. Я изначально так пытался сделать

Добавлено через 4 минуты
void ChangeHeroStat( sHeroName, nStatID, nDelta )

Получение/изменение того или иного стата героя. Соотв. константы для nStatID прописаны в /scripts/advmap-startup.lua и бывают такими:
STAT_EXPERIENCE = 0
STAT_ATTACK = 1
STAT_DEFENCE = 2
STAT_SPELL_POWER = 3
STAT_KNOWLEDGE = 4
STAT_LUCK = 5
STAT_MORALE = 6
STAT_MOVE_POINTS = 7
STAT_MANA_POINTS = 8
Обращаю внимание, что функция ChangeHeroStat не устанавливает, а изменяет стат. Т.е. третьим параметром передается не новое значение стата, а разница со старым (которая может быть и отрицательной). В отличие от прочих, STAT_EXPERIENCE не может быть уменьшен. STAT_MOVE_POINTS и STAT_MANA_POINTS представляют собой текущие значения соответствующих параметров, выставить их выше максимальных – нельзя.
Кампании для Heroes V 3.1 (Трилогия):

Пробуждение зла
Нашествие из Преисподней
Смена эпох

Скачать все кампании одним архивом: Яндекс.Диск Google.Диск

You can download the set of 3 Campaigns (English version) here


Одиночные сценарии Heroes V 3.1:


Незваные гости
Красный кристалл
Синий кристалл
Закат тьмы

Мультиплеерные карты для Heroes V 3.1:

Легендарная война
Сердце вулкана
Передел мира
Аватар пользователя
TakeAwayHeroExp( heroName, exp )
С ней бывает полезна функция LockMinHeroSkillsAndAttributes( heroName ), если какие-то навыки надо зафиксировать, чтобы их не отняли.
 

К А
Стикеры GBF в Telegram

Статистика

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