Скрипты - Страница 230 - Форум HeroesWorld-а

Быстрая навигация по основным разделам форума:
Турниры
КАРТЫ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

Герои Меча и Магии 5 - Картостроительство (Редактор карт) В этом разделе можно обсуждать все что касается редактора карт для Heroes of Might and Magic V. Так же здесь обсуждаем картостроительство.

Ответ
Страница 230 из 237
 
Опции темы
#3436
Старый 21.08.2021, 10:45
  #3436
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1313
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1313
Выставка наград
По умолчанию
Re: Скрипты

Здравствуйте. Протестировал ваш вариант скрипта
enemy_creatures = {106,107,108,109,110,111,112,15,16,17,18,19,20,21,  22,24,25,26,27,28}

counter = length(enemy_creatures) --Размер счётчика не задаётся вручную

for enemy = 1, counter do
    if GetHeroCreatures(hero, enemy_creatures[enemy])>=1 then
      counter = counter -1
    end
  end

немного изменив. Всё работает. Но рекомендую воспользоваться более удобным решением обхода массива:

for key, id in enemy_creatures do
    if GetHeroCreatures(hero, id)>=1 then
      counter = counter - 1
    end
end
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3437
Старый 21.08.2021, 15:37
  #3437
^
Alinksolo
 
Аватар для Alinksolo
📖
Регистрация: 02.08.2021
Сообщения: 40
Регистрация: 02.08.2021
Сообщения: 40
По умолчанию
Re: Скрипты

Азгалор пишит в консоли ERROR: Empty message text!
Alinksolo вне форума
Ответить с цитированием
#3438
Старый 21.08.2021, 15:52
  #3438
^
Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 51
Регистрация: 24.04.2016
Сообщения: 51
По умолчанию
Re: Скрипты

}{0TT@6bI4, спасибо большое, потестирую  

AlinksoloАзгалор пишит в консоли ERROR: Empty message text!
Это значит что путь к текстовому файлу неверный. Вы уверены, что нужный текст находится именно в этом файле/по этому пути?
Азгалор вне форума
Ответить с цитированием
#3439
Старый 21.08.2021, 18:07
  #3439
^
Alinksolo
 
Аватар для Alinksolo
📖
Регистрация: 02.08.2021
Сообщения: 40
Регистрация: 02.08.2021
Сообщения: 40
По умолчанию
Re: Скрипты

Ну я незнаю если еще есть папки с таким путём 
Maps/SetingMission/НАЗВАНИЕ_МОЕЙ_КАРТЫ/ТЕКСТ

то возможно и не правильно 
Alinksolo вне форума
Ответить с цитированием
#3440
Старый 21.08.2021, 18:26
  #3440
^
Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 51
Регистрация: 24.04.2016
Сообщения: 51
По умолчанию
Re: Скрипты

Alinksolo, тогда сделайте так: Скопируйте свой текст, поставьте на вашей карте объект Signpost(это указатель. Найдёте его почти в самом низу среди Объектов), выделите его и слева в окошке в строке MessageFileRef нажмите New, введите название, ну например Reg0Message. После этого у вас откроется окошко для ввода текста, вставьте/впишите туда свой текст, подтвердите, закройте окошко и удалите указатель. В файлах вашей карты появится текстовый файл Reg0Message, введите путь к нему в ваш MessageBox в скрипте, т.е. MessageBox( "Maps/SingleMissions/greet/Reg0Message.txt" ), сохраните карту а после проверьте в игре полученный результат.
Азгалор вне форума
Ответить с цитированием
#3441
Старый 21.08.2021, 18:59
  #3441
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1313
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1313
Выставка наград
По умолчанию
Re: Скрипты

AlinksoloНу я незнаю если еще есть папки с таким путём 
Maps/SetingMission/НАЗВАНИЕ_МОЕЙ_КАРТЫ/ТЕКСТ

то возможно и не правильно 
Попробуйте: /Maps/SingleMissions/ИмяКарты/имяфайла.txt
С обязательным слешем перед Maps.
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3442
Старый 21.08.2021, 20:12
  #3442
^
Alinksolo
 
Аватар для Alinksolo
📖
Регистрация: 02.08.2021
Сообщения: 40
Регистрация: 02.08.2021
Сообщения: 40
По умолчанию
Re: Скрипты

Уже пробывал не работает 

Добавлено через 13 минут
Азгалор ваш способ помог спасибо!!
Alinksolo вне форума
Ответить с цитированием
#3443
Старый 21.08.2021, 21:02
  #3443
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1313
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1313
Выставка наград
По умолчанию
Re: Скрипты

Alinksolo, я кстати понял вашу вероятную ошибку. Вы создавали файл на рабочем столе, например, или в проводнике, а потому он имел неправилтную кодировку (скорее всего, ASCI), а должен быть строго Unicode. Рекомендую обзавестись редактором скриптов и создавать текстовые файлы через него, это удобно.
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3444
Старый 22.08.2021, 21:36
  #3444
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 29
Регистрация: 31.01.2020
Сообщения: 29
По умолчанию
Re: Скрипты

Сударь }{0TT@6bI4, извините за такой объёмный вопрос, но он назрел. Как вообще писать боевые скрипты? Что можно почитать по этому поводу, и что конкретно надо сделать?
Как создать файлы CombatScript.lua и CombatScript.xdb? Если просто запихиваешь чужие изменённые файлы в распакованную карту, ScriptsEditor матерится, и вообще отказывается открывать эту карту, когда потом её обратно запакуешь. Хотя, может быть, это я так наменяла, что он матерится.
В интернетах об этом только какие-то клочки информации, толкового руководства я не нашла.
Марта вне форума
Ответить с цитированием
#3445
Старый 22.08.2021, 22:48
  #3445
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1313
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1313
Выставка наград
По умолчанию
Re: Скрипты

https://vk.com/h5mmmapeditors?w=wall-197578149_356
Я давно уже сделал такое руководство. В моей группе вообще много чего интересного водится! biggrin Говорят, даже двурогие единороги встречаются smile04
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3446
Старый 23.08.2021, 00:21
  #3446
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 29
Регистрация: 31.01.2020
Сообщения: 29
По умолчанию
Re: Скрипты

}{0TT@6bI4https://vk.com/h5mmmapeditors?w=wall-197578149_356
Я давно уже сделал такое руководство. В моей группе вообще много чего интересного водится! biggrin Говорят, даже двурогие единороги встречаются smile04

-----

О, млин, так чтобы его почитать, надо ВКонтакте региться?( Меня вообще нет в соцсетях, и очень не хочется туда попадать.
А просто скачать это где-то нельзя?

ЗЫ Ладно, ради такого дела я зарегилась, и даже подписалась. Ушла читать.

Добавлено через 1 час 2 минуты
Простите, }{0TT@6bI4, но я прочитала, и не поняла ничего.

"Чтобы создать xdb файл скрипта, нужно зайти в Map Properties Tree => Map Script и вместо скрипта карты создать новый. В нём в ScriptFile выбрать из Игра/Editor/H5MMods/Имя карты/ луа файл скрипта. Сохранить, затем вернуть (выбрав или прописав путь вручную)."

Я открываю Map Properties Tree => Map Script, создаю новый скрипт, называю его Kot.
И вижу: (я бы вставила скриншот, который вижу, но тут мне пишут, что не поддерживают ни перемещение файлов в формате png, ни в jpg, а в каком формате тут можно вставлять скриншоты, и как это сделать?)
Словом, я не вижу никакого луа файла моей карты, потому что его нет.
Я его не создавала, - я не знаю как.

Ваше руководство хорошо для продвинутых пользователей, но я новичок в этом деле.
Вы можете просто написать, на что жать, чтобы создать CombatScript.lua?
Вы пишете в своём руководстве про хуки, - но вы не пишете, где их надо писать, - видимо, именно в этом файле?
Марта вне форума
Ответить с цитированием
#3447
Старый 23.08.2021, 01:30
  #3447
^
Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 51
Регистрация: 24.04.2016
Сообщения: 51
По умолчанию
Re: Скрипты

Марта, выбирите любое существо/героя на карте, в окошке слева увидите строчку CombatScript, наведите указатель на null и нажмите на него, после чего нажмите на New, дайте название будущему xdb файлу который будет вести к lua файлу. Например, Combat_1. Далее, откроется окошко(если не откроется то нажмите на многоточие где до этого по соседству выбирали New), там у вас уже будет открыт путь к созданному xdbшнику. Справа увидите две строки: FileName и ScriptText. Делайте точно такую же операцию в FileName как делали с созданием xdbшника, назовите его так же как и xdbшник(получится, что у вас должны будут появиться два файла Combat_1). Собственно, в заполненном FileName у вас появится путь к lua файлу. Выбрав путь и нажав Edit вместо многоточия, вы сможете редактировать этот lua файл. Так же, luaшник можно редактировать и нажатием на многоточие в строке ScriptText.
Азгалор вне форума
Ответить с цитированием
#3448
Старый 23.08.2021, 01:57
  #3448
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 29
Регистрация: 31.01.2020
Сообщения: 29
По умолчанию
Re: Скрипты

Азгалор, большое спасибо. Я попробую.
Марта вне форума
Ответить с цитированием
#3449
Старый 23.08.2021, 02:50
  #3449
^
Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 51
Регистрация: 24.04.2016
Сообщения: 51
По умолчанию
Re: Скрипты

}{0TT@6bI4Здравствуйте. Протестировал ваш вариант скрипта
enemy_creatures = {106,107,108,109,110,111,112,15,16,17,18,19,20,21,      22,24,25,26,27,28}

counter = length(enemy_creatures) --Размер счётчика не задаётся вручную

for enemy = 1, counter do
    if GetHeroCreatures(hero, enemy_creatures[enemy])>=1 then
      counter = counter -1
    end
  end

немного изменив. Всё работает. Но рекомендую воспользоваться более удобным решением обхода массива:

for key, id in enemy_creatures do
    if GetHeroCreatures(hero, id)>=1 then
      counter = counter - 1
    end
end

 

Здравствуйте! Протестировал, почему-то у меня более удобный вариант работает правильно, а вот первый так же делает неправильное число. Кстати, протестировал его в "расширенной" версии моего скрипта, то есть...
reputation = 0;
player_heroes = { "RedHeavenHero03", "RedHeavenHero02" }
enemy_creatures = { 106, 107, 108, 109, 110, 111, 112, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28 } 
friend_creatures = { 600, 601, 602, 603, 604, 605, 606, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }

function conditions()
      print("reputation = ", reputation );
      for h, heroes in player_heroes do
      for e, enemy in enemy_creatures do
      for f, friend in friend_creatures do
	 if GetHeroCreatures(heroes, enemy) > 0 and GetHeroCreatures(heroes, enemy) <= 99 then
         reputation = reputation - 1
         sleep(1)
         elseif GetHeroCreatures(heroes, enemy) >= 100 then
         reputation = reputation - 2
         sleep(1)
	 elseif GetHeroCreatures(heroes, friend) > 0 then
         reputation = reputation + 1
            end
         end
      end
   end
end

И вот что странно. Стоят у меня на карте Валерия и Лоренцо(рыцари из массива), Валерия к тому же ещё и в резерве(это как бы ошибка, ведь для резерва(как я понял) её не должно быть изначально на карте. Поэтому не знаю влияет ли её наличие в резерве на скрипт который проверяет армии у героев), и я тестирую так: дал Валерии в резерве зелёных архангела и паладина(которые в массиве как "друзья" за которых капает +1 в репутацию за отряд), той что на карте только зелёного архангела(+1 в репутацию), а у Лоренцо 40 лендлордов, 50 стрелков, 20 ревнителей, 10 боевых грифонов, 6 адептов, 4 рыцаря Изабель, 2 падших ангела. В сумме, Лоренцо должен давать -7 репутации, т.к. каждый красный это -1 и ни одного из них не больше 100, но почему-то счетчик сходит с ума, выдавая мне -126 очков. А ещё он начинает сходит с ума если я у Лоренцо уволю всех существ кроме, например, 40 лендлордов. Тогда он мне постепенно будет понижать счетчик до минус небольшого числа(16-36), а после совсем обнулит.

 

В общем, у меня задумка такая: игрок будет иметь счетчик, называющийся репутация(reputation), который: понижается за "плохих" существ и повышается за "хороших", в дальнейшем ещё планирую некоторые факторы добавить как например захват сокровищниц которыми владеет определённый игрок, битву с "хорошими" существами (о чем я уже ранее спрашивал но пока не реализовывал). Вообще, я хотел бы всю эту систему со счётчиком под одной функцией поселить, но не знаю хорошая ли это идея. Вот, нуждаюсь в помощи  

Азгалор вне форума
Ответить с цитированием
#3450
Старый 23.08.2021, 09:43
  #3450
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1313
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1313
Выставка наград
По умолчанию
Re: Скрипты

Марта, Ответить => Расширенный Режим => Вложения (кнопка визу), вот так можно прикрепить изображения.


Вот выкладка из одного их руководств:
Для начала создадим новый lua и xdb файлы скрипта, в которых будет написан боевой скрипт, и 
привяжем его к герою. Это действие выполняется для всех героев, специализация которых 
работает в бою.
Чтобы создать новый xdb-файл, откроем карту и найдём Map Properites Tree => MapScript. 
Нажимаем на эту строчку, выделяем текущее содержимое и копируем в буфер обмена (Ctrl+C). 
Затем жмём New => Вводим имя CombatScript => OK. Можно, конечно, просто заново зайти в Map 
Properties Window => Script => Edit Script и продолжить редактировать скрипт боевой 
специализации оттуда, но он часто вылетает, поэтому далее настоятельно рекомендую 
пользоваться редактором скриптов. Сохраняем-закрываем карту, открываем её в редакторе 
скриптов. В любой папке создаём новый lua-файл (File=>New *.lua) и сохраняем, закрываем. 
Теперь снова открываем карту в редакторе, MapScript => … => FileName => … => В проводнике идём
в Editor/H5Mods/Имя карты/Maps/SingleMissions/ИмяКарты/=> Выбираем отсюда наш файл lua. 
Ну или оттуда, куда положили. Сохраняем-закрываем редактор и возвращаемся в редактор 
скриптов. Итак, общие приготовления к созданию боевого скрипта закончены.
Теперь в основном скрипте карты пишем 
SetHeroCombatScript('Hero', 
'/Maps/SingleMissions/ИмяКарты/CombatScript.xdb#xpointer(/Script)').
Этим действием вы повесили скрипт, который будет выполняться каждый раз, когда герой Hero
вступает в бой. Также перед созданием боевых скриптов рекомендую ознакомиться с 
руководством по боевым скриптам.

Думаю, это достаточно полный ответ!
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
Ответ
Страница 230 из 237


Опции темы



Часовой пояс GMT +4, время: 21:24.


vBulletin v3.5.0, Copyright ©2000-2021, Jelsoft Enterprises Ltd. (Русский)

Яндекс цитирование    Top.Mail.Ru