Нужно чтоб возле здания, которое построено, поменялся ландшафт (с летнего, например, на зимний) и желательно чтоб не мгновенно а плавно (как в карте Terrania), подскажите пожалуйста как это сделать
Сообщение отредактировал [Warcrafter]MIRon - Воскресенье, 26 Июня 2011, 22:03:49
function SetTerrainTypeTimed_Timer takes nothing returns nothing local timer t = GetExpiredTimer() local integer id = GetHandleId(t) local integer time = LoadInteger(udg_Hash, id, 4) local integer elapsed = LoadInteger(udg_Hash, id, 5) call SetTerrainType(LoadReal(udg_Hash, id, 0), LoadReal(udg_Hash, id, 1), LoadInteger(udg_Hash, id, 2), -1, elapsed / time * LoadInteger(udg_Hash, id, 3), 0) if elapsed == time then call PauseTimer(t) call DestroyTimer(t) call FlushChildHashtable(udg_Hash, id) else call SaveInteger(udg_Hash, id, 5, elapsed + 1) endif set t = null endfunction
function SetTerrainTypeTimed takes real x, real y, integer terrainType, real radius, real time returns nothing local timer t local integer id if time < .1 then call SetTerrainType(x, y, terrainType, -1, R2I(radius / 128.), 0) else set t = CreateTimer() set id = GetHandleId(t) call SaveReal(udg_Hash, id, 0, x) call SaveReal(udg_Hash, id, 1, y) call SaveInteger(udg_Hash, id, 2, terrainType) call SaveInteger(udg_Hash, id, 3, R2I(radius / 128.)) call SaveInteger(udg_Hash, id, 4, R2I(time * 10.)) call SaveInteger(udg_Hash, id, 5, 1) call TimerStart(t, .1, true, function SetTerrainTypeTimed_Timer) set t = null endif endfunction
Ставишь действие: "Окружение - Change Terrain Type" с нужным типом почвы, конвертируешь в код, записываешь второй аргумент функции (он в одиночных кавычках). Например, "Летний Лордерон - почва" - это 'Ldrt'. Затем в нужном триггере прописываешь через Custom script: call SetTerrainTypeTimed(<x>, <y>, <тип почвы>, <радиус>, <время>) Например: call SetTerrainTypeTimed(GetWidgetX(GetConstructedStructure()), GetWidgetY(GetConstructedStructure()), 'Ldrt', 500., 1.) Это поменяет тип почвы в позиции построенного здания на "Летний Лордерон - почва" в радиусе 500. за 1. секунду. P. S. Нужно создать переменную Hash типа хэш-таблица и прописать в триггере инициализации: set udg_Hash = InitHashtable()
SirNikolas, Спасибо за уделенное время, в общем я не смог разобраться в твоей функции и сделал немного подругому, может это кому то поможет. Тему можно клоз
Сообщение отредактировал [Warcrafter]MIRon - Вторник, 28 Июня 2011, 18:02:52