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

Сообщения от «Замена» startcombat

Пока нет оценок — будьте первым!
Аватар пользователя
26 дней назад
Долгое время раздражал нейтральный цвет героев при использовании StartCombat, экспериментируя нашел способ давать им цвета игроков.
При использовании SiegeTown цвет там сохранялся, но оставались объекты осады. Попробовал удалить все объекты с арены  осады и сработало.
Это будет Heaven1.(AdvMapTownShared).xdb это наша арена без осадных объектов.
Меняет сцену когда открываешь существо или героя, хавен=травка и тд по названиям разберетесь.
Дальше будет Spes.xdb это наша установка на арене, в Shared вставляем нашу пустую арену ()
как раз задаёт нужный цвет противника. Пример: PLAYER_2
задаёт осадные бонусы по типу -1 удачи всем атакующим  у замка нежити и тд. Но можно их выключить.
армия противника. если не будет героя то будут мобы без героя но с цветом.
ссылка на вражеского героя. Пример  
Вложения 4
4 файл(ов) • Общий размер: 756,7 KB
Аватар пользователя
7 дней назад

Есть способ гораздо проще, если тебе не хочется пользоваться резервом - функция "MakeHeroInteractWithObject( heroName, objectName )". Вводишь скриптовые имена своего и нужного вражеского героя, и тогда твой герой как бы касается вражеского, тем самым запуская комбат. Если целевой вражеский герой сидит в городе, то в objectName нужно указывать скриптовое имя города, в котором он сидит(Ну или же запускать SiegeTown(heroName, townName, arenaName = "")). Если у города нет скриптового имени, то тогда нужно "пнуть" героя из города через SetObjectPosition(). Ну а если нужно, чтобы при этом всём запускался какой-то Combat Script, то тогда в Shared главного(своего) героя прописываешь путь к скрипту, который будет запускаться при каждой его стычке, и впиши условия, по которым скрипт начнет отрабатывать код только если мы встретимся с определенным героем, например(код взял со своей карты, который отрабатывает на встречу нужных героев, типа мой герой нападет/атакован определенными героями):

function CheckHero()
if (GetDefenderHero() and GetHeroName(GetDefenderHero()) == "Duncan") or (GetAttackerHero() and GetHeroName(GetAttackerHero()) == "Duncan") then
if (GetDefenderHero() and GetHeroName(GetDefenderHero()) == "Freyda") or (GetAttackerHero() and GetHeroName(GetAttackerHero()) == "Freyda") then
print("Рубль будет? Мне на яхту не хватает")
end
end

Такие дела)

В ответ пользователю Азгалор
Аватар пользователя
7 дней назад
Азгалор

Есть способ гораздо проще, если тебе не хочется пользоваться резервом - функция "MakeHeroInteractWithObject( heroName, objectName )". Вводишь скриптовые имена своего и нужного вражеского героя, и тогда твой герой как бы касается вражеского, тем самым запуская комбат. Если целевой вражеский герой сидит в городе, то в objectName нужно указывать скриптовое имя города, в котором он сидит(Ну или же запускать SiegeTown(heroName, townName, arenaName = "")). Если у города нет скриптового имени, то тогда нужно "пнуть" героя из города через SetObjectPosition(). Ну а если нужно, чтобы при этом всём запускался какой-то Combat Script, то тогда в Shared главного(своего) героя прописываешь путь к скрипту, который будет запускаться при каждой его стычке, и впиши условия, по которым скрипт начнет отрабатывать код только если мы встретимся с определенным героем, например(код взял со своей карты, который отрабатывает на встречу нужных героев, типа мой герой нападет/атакован определенными героями):

function CheckHero()
if (GetDefenderHero() and GetHeroName(GetDefenderHero()) == "Duncan") or (GetAttackerHero() and GetHeroName(GetAttackerHero()) == "Duncan") then
if (GetDefenderHero() and GetHeroName(GetDefenderHero()) == "Freyda") or (GetAttackerHero() and GetHeroName(GetAttackerHero()) == "Freyda") then
print("Рубль будет? Мне на яхту не хватает")
end
end

Такие дела)

Но тогда сработает "случайная арена", а не та которая нужна. 

Статистика

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

Сейчас на сайте 6 пользователей 1439 гостей