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

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

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

Ответ
Страница 146 из 260
 
Опции темы
#2176
Старый 31.03.2016, 23:09
  #2176
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
По умолчанию
Re: Скрипты

serovoy, когда создаешь нового героя, ему нужно присвоить уникальное системное имя, по которому потом к нему и обращаешься из скриптов.
Jack_of_shadows вне форума
Ответить с цитированием
#2177
Старый 02.04.2016, 11:57
  #2177
^
hhtp0
📖
Регистрация: 30.01.2016
Сообщения: 3
Регистрация: 30.01.2016
Сообщения: 3
По умолчанию
Re: Скрипты

Совсем недавно начал осваивать скрипты, даже самые простейшие которые расписанны по 5 раз подряд выхывают трудности, однако вроде разобрался.
Нужна помощь в данном вопросе.
Не могу понять как правильно пользоваться командой : "ShowFlyingSign"
function offlich ()
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "off", nil);
ShowFlyingSign(GetMapDataPath().."offli.txt");
end;
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "off", "offlich");
к тому же смогу ли я к "ShowFlyingSign" добавить "PLAYERFLT_1"??
Так как создаю мультиплеерную карту , хочу что бы сообщение выдавало первому игроку чуть выше использовал :
function mostFF ()
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "most", nil);
MessageBoxForPlayers(PLAYERFLT_1, GetMapDataPath().."most11.txt");
end;
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "most", "mostFF");
hhtp0 вне форума
Ответить с цитированием
#2178
Старый 02.04.2016, 14:26
  #2178
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

В ShowFlyingSign есть еще параметры: имя объекта, от которого будет отлетать сообщение; номер игрока, которому будет сообщение видно (-1, если всем); длительность полета сообщения в секундах. Порядок лучше проверить в мануале по скриптовым функциям.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#2179
Старый 02.04.2016, 16:09
  #2179
^
hhtp0
📖
Регистрация: 30.01.2016
Сообщения: 3
Регистрация: 30.01.2016
Сообщения: 3
По умолчанию
Re: Скрипты

в общем нашел я синтаксис
ShowFlyingSign(messageName, objectName, targetPlayerID = -1, time = 1.0);
начал его прописывать и "скриптэдишн" начал ругаться
я его "изменил" и он отстал , однако мой вариант не сработал и выглядел так:
ShowFlyingSign("GetMapDataPath().."offli.txt","offlich", "targetPlayerID = -1", "time = 1.5");
Прошло немного врмени и я понял что без "шаблона" не справиться, порылся в нете и нашел
ShowFlyingSign({path.."slavescaptured.txt";totalcost=tc},hero,PLAYER_1,5);
подправил под себя и вышло
ShowFlyingSign(GetMapDataPath().."offlich.txt", off, Player_1, 5);
однако скрипт всё равно не работает.=) Подскажите что я делаю не так, возможно это изза того что я даю вместо "имени обьекта" "имя региона"??

исходный скр.
function offlich ()
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "off", nil);
ShowFlyingSign(GetMapDataPath().."offlich.txt", off, Player_1, 5);
end;
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "off", "offlich");

P.s. скрипт работает до части где в нужном регионе герой останавливаеться)
hhtp0 вне форума
Ответить с цитированием
#2180
Старый 02.04.2016, 17:06
  #2180
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
По умолчанию
Re: Скрипты

Регион не есть объект, объект это герой, замок или скажем куст с именем. В функцию триггера передается имя героя, ступившего в регион, проще всего его и использовать. Player_1 вероятно не сработает, поскольку это совсем не то же самое, что PLAYER_1.
Я бы рекомендовал скачать любую сюжетную карту, достаточно насыщенную скриптами, и по любой непонятной функции просто искать пример использования в ней.
Jack_of_shadows вне форума
Ответить с цитированием
#2181
Старый 02.04.2016, 18:00
  #2181
^
hhtp0
📖
Регистрация: 30.01.2016
Сообщения: 3
Регистрация: 30.01.2016
Сообщения: 3
По умолчанию
Re: Скрипты

Спасибо за ответы)
Думаю поищу карту со скриптами , но в данной ситуации решил не мучаться а воспользоваться шаблоном из руководства "OGO" через "тоуч обьект"
hhtp0 вне форума
Ответить с цитированием
#2182
Старый 03.04.2016, 21:21
  #2182
^
Рыцарь Бездны
 
Аватар для Рыцарь Бездны
📖
Регистрация: 24.07.2012
Сообщения: 88
Регистрация: 24.07.2012
Сообщения: 88
По умолчанию
Re: Скрипты

Подскажите,а возможно ли сделать так чтобы один герой компьютера каждый ход отслеживал кординаты другого героя компьютера)

Ну как бы заплатил герою через QuestionBox,и он с EnableHeroAl и MoveHero побежал твоего врага убивать. Как сделать чтобы первый герой в начале каждого хода запрагивал кординаты второго героя и двигался в них? . До тех пор пока сам не погибнет.

Городов и гарнизонов нет,MoveHero работает отлично. Заранее огромное спасибо.
Рыцарь Бездны вне форума
Ответить с цитированием
#2183
Старый 04.04.2016, 20:41
  #2183
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
По умолчанию
Re: Скрипты

Вот сокращенный вариант из моей карты, только комп за игроком гонится, поэтому может будет не совсем так выглядеть, как вам хотелось. hero герой компьютера, player_hero соответственно герой игрока. Запускать как поток. Комп пытается допрыгать до игрока в начале хода, плюс если игрок за это время быстро отойдет в сторону, это тоже корректно обработается.
function MainKnightSavedHeroReturnWithPlayerThread()

local hero = quest_main_knight.AttackParam('hero');
local start_date = GetDate(ABSOLUTE_DAY);
local move_date = 0;
local curr_date;
local hx_last, hy_last, hf_last = -1, -1, -1;
local hx_curr, hy_curr, hf_curr;

while(1) do
if(IsObjectExists(hero)) then

if(IsObjectExists(player_hero)) then
hx_curr, hy_curr, hf_curr = GetObjectPosition(player_hero);
if((hx_last ~= hx_curr) or (hy_last ~= hy_curr) or (hf_last ~= hf_curr)) then
hx_last, hy_last, hf_last = hx_curr, hy_curr, hf_curr;
MoveHeroRealTime(hero, hx_curr, hy_curr, hf_curr);
end
end

-- в начале каждого хода добавляются очки передвижения
curr_date = GetDate(ABSOLUTE_DAY);
if(move_date ~= curr_date) then
move_date = curr_date;
ChangeHeroStat(hero, STAT_MOVE_POINTS, 2500);
sleep(1);
if(IsObjectExists(player_hero)) then
hx_curr, hy_curr, hf_curr = GetObjectPosition(player_hero);
MoveHeroRealTime(hero, hx_curr, hy_curr, hf_curr);
end
end

else
break
end
sleep(5);
end

end
Jack_of_shadows вне форума
Ответить с цитированием
#2184
Старый 10.04.2016, 12:48
  #2184
^
Dyrman
 
Аватар для Dyrman
📖
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
По умолчанию
Re: Скрипты

Есть ли скрипт, который определяет, выполняется ли данная функция или уже нет? (без использования флага в самой функции)
Например, есть:
	
for i=1,100 do
startThread(Func);
end

Получается так, что могут запуститься несколько функций Func, даже не смотря на то, что могла бы не завершиться предыдущая.
Dyrman вне форума
Ответить с цитированием
#2185
Старый 11.04.2016, 11:26
  #2185
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

DyrmanЕсть ли скрипт, который определяет, выполняется ли данная функция или уже нет? (без использования флага в самой функции)
Например, есть:
	
for i=1,100 do
startThread(Func);
end

Получается так, что могут запуститься несколько функций Func, даже не смотря на то, что могла бы не завершиться предыдущая.
	
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 проверяет запущена ли функция в данный момент.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#2186
Старый 11.04.2016, 22:54
  #2186
^
Рыцарь Бездны
 
Аватар для Рыцарь Бездны
📖
Регистрация: 24.07.2012
Сообщения: 88
Регистрация: 24.07.2012
Сообщения: 88
По умолчанию
Re: Скрипты

Извините за банальный вопрос но всёже:

Итак,напишите пожалуста кому не трудно 100% рабочий пример скрипта StartCombat . Всего 1 строчку. Ато сколько мануалов не перелистал - везде разное описание этого скрипта,и почемуто ни одно не работает.Заранее спасибо.
Рыцарь Бездны вне форума
Ответить с цитированием
#2187
Старый 11.04.2016, 23:05
  #2187
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

Бой Рутгера с 15 крестьянами и 6 лучниками:
	StartCombat('Brem', nil, 2, CREATURE_PEASANT, 15, CREATURE_ARCHER, 6)
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#2188
Старый 12.04.2016, 19:52
  #2188
^
serovoy
📖
Регистрация: 06.01.2016
Адрес: Dayr az Zawr
Сообщения: 468
Регистрация: 06.01.2016
Адрес: Dayr az Zawr
Сообщения: 468
По умолчанию
Re: Скрипты

Jack_of_shadowsserovoy, когда создаешь нового героя, ему нужно присвоить уникальное системное имя, по которому потом к нему и обращаешься из скриптов.
А если я играю в чужую авторскую карту с созданным на ней героем, как узнать его системное имя? Есть консольная команда какая-то или что-то в этом роде?
serovoy вне форума
Ответить с цитированием
#2189
Старый 12.04.2016, 23:08
  #2189
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
По умолчанию
Re: Скрипты

serovoy, быстрее всего наверное открыть карту архиватором и глянуть в файле описания героя.

upd: хотя чего это я, есть же GetPlayerHeroes(player_id), которая выдает массив имен героев по ID игрока.
Jack_of_shadows вне форума
Ответить с цитированием
#2190
Старый 13.04.2016, 00:49
  #2190
^
serovoy
📖
Регистрация: 06.01.2016
Адрес: Dayr az Zawr
Сообщения: 468
Регистрация: 06.01.2016
Адрес: Dayr az Zawr
Сообщения: 468
По умолчанию
Re: Скрипты

Здорово! А в синглплеере оно работает? Просто начинаю кампанию, ввожу сие добро, а эффекта ноль.
serovoy вне форума
Ответить с цитированием
Ответ
Страница 146 из 260


Опции темы



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


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

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