Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты для начинающих
Показать сообщение отдельно
#372
Старый 26.10.2023, 02:49
  #372
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 209
Регистрация: 24.04.2016
Сообщения: 209
По умолчанию
Re: Скрипты для начинающих

AngryTapok1337Хотелось бы чтобы по истечению какого-то времени, регион удалялся и ИИ смог проходить дальше

SetRegionBlocked("название региона", nil, PLAYER_номер игрока для которого нужно разблокировать);

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

Да собственно взять скрипт из той самой миссии Арантира, скопировать и вставить, убрав всё что не нужно и подставив свои параметры. Важно помнить пару вещей о караване: Спавнится только на пустой точке; доставляет существ только в города(в спавне назначается точка на которой находится город), иначе пиши "обманку" типа едет на какую-то точку рядом с нужным объектом(скажем, гарнизон), удаляется(RemoveObject) и потом объект(в нашем случае гарнизон) наполняется существами через AddObjectCreatures; собственно да, караван спавнится пустым, и удалится когда закончится ход игрока которому принадлежит если не наполнен существами; наполняется и очищается командами взаимодействия с объектами, т.е. AddObjectCreatures/GetObjectCreatures/RemoveObjectCreatures. Так же на него работают проверка на существование объекта IsObjectExists и разворот SetObjectRotation:

CARAVAN = "caravan"; --дадим стартовое название каравану для использования в функции

function respawn_caravan()
	if (GetDate( DAY_OF_WEEK ) == 5) then --день недели в который заспавним караван(можно изменить на другой триггер даты)
		car = CARAVAN..GetDate(DAY); --не могу сказать в чем была фишка именовать караван по игровому дню, возможно без этого переспавн ломался. Оставим как есть, ведь зачем трогать то что итак исправно работает, верно?
		CreateCaravan(car, PLAYER_1, GROUND, 130, 1, GROUND, 136, 14 ); --собственно, сам спавн каравана: имя каравана, кому принадлежит, на земле или под землёй спавнится, x y точки спавна, на земле или под землёй точка куда едет, x y точки назначения. Точка назначения либо пустое место, либо город(больше никуда караван технически существ не доставляет)
		sleep(4);
		SetObjectRotation(car, 180); --развернём караван чтоб смотрел в другую сторону
		AddObjectCreatures(car, CREATURE_BONE_DRAGON, 4); --наполняем караван существами, иначе он удалится в конце хода игрока которому принадлежит
		AddObjectCreatures(car, CREATURE_WIGHT, 8);
		AddObjectCreatures(car, CREATURE_LICH, 12);
		AddObjectCreatures(car, CREATURE_VAMPIRE, 20);
		AddObjectCreatures(car, CREATURE_MANES, 36);
		AddObjectCreatures(car, CREATURE_WALKING_DEAD, 60);
		AddObjectCreatures(car, CREATURE_SKELETON, 80);
		OpenCircleFog(130, 1, 0, 4, 1); --откроем область карты вокруг точки спавна каравана чтобы потом сместить камеру и показать караван
		sleep(4);
		MoveCamera(130, 1, 0, 30, 1, 3.14, 0, 0, 1); --сместим камеру к точке спавна каравана чтобы показать игроку что пришло подкрепление
	end;	
end;

Trigger(NEW_DAY_TRIGGER, "respawn_caravan")
Азгалор вне форума
Ответить с цитированием