// SuslPrtlGip - основной моб зоны Портал на Гипат на Сусле. //ВНИМАНИЕ! ParticleSourceID и PointLightID с 100 по 120 включительно - заняты в анимации портала! //ParticleSourceID и PointLightID с 120 по 130 включительно - заняты в анимации ловушек портала! //////////////////////////////////////////// // Переменные //////////////////////////////////////////// GlobalVars ( NULL : object, VSS#i#val : object, i : object, Heroes : group, //Объекты TCPA : object, // 1-й влючатель портала TCPB : object, // 2-й влючатель портала ToyBarrel : object, // Бочка с Амулетом MoneyBarrel1 : object, //Бочка с Бабками 1 MoneyBarrel2 : object, // Бочка с бабками 2 HChest1 : object, // Ящик с хз-чем HChest2 : object, // Еще 1 ящик с хз-чем Kaktus : object, //Кактус-тайник заговорщиков. Zagovorsh_veshi : object, //Вещи заговорщиков - такой мешочек :). Sundukars_sunduk : object, //Сундук на плантации //Юниты TainstvLichnost : object, //Таинственная личность Zagovorsh1 : object, //и другие... Zagovorsh2 : object, //...заговорщики. AngryMouse : object, //Если взрослого мышА.... AllUnits : group, //Все юниты на мапе.... //караван Рейханда Reihand : object, Reihand_Clerk : object, Overseer1 : object, Overseer2 : object, Reihand_Horse : object, Portal_Courier : object, //"Курьер", который приводит Рейханду лошадь через портал в q4_1 Overseer_sundukar : object, //Стоит и стережет сундук на плантации. Надсмотр всмысле. q4_2_AngryPeasant : object, //Етот таварисч будет выбивать из нашего игрока мозги в квесте q4_2 :) Rastaman : object, //Ростовщик Rastaman_guard1 : object, //1-й телохранитель растамана Rastaman_guard2 : object, //2-й телохранитель растамана q22_oblutanniy : object, //Человек Материально Облутанный : ))) //Группы Plantacia_zriteli : group, //Группа "зрителей" которые будут бегать смотреть за боем во время q4_2 Rinok_torgovci : group, //Будем проверять, облутали ли их... (q22) Rinok_zriteli : group, //Группа "зрителей" которые сбегутся на вопль при краже на рынке... (q22) //Логические PortalIsOff : float, //Если 1 то портал выключен PortalIsOn_Outcoming : float, //Если 1 то портал в режиме убытия PortalIsOn_Incoming : float, //Если 1 то портал в режиме прибытия TCPA_IsOn : float, //Если 1 то TCPA включен TCPB_IsOn : float, //Если 1 то TCPB включен ExitArea : float //Выходы из загона ) //////////////////////////////////////////// // Объявления скриптов //////////////////////////////////////////// DeclareScript FirstVisit ( this : object ) DeclareScript DebugScript ( this : object ) DeclareScript DoNameObjects ( this : object ) DeclareScript SetDefZoneVars ( this : object ) DeclareScript PlayerIsGod_CHECK ( this : object ) DeclareScript PlayerIsGod_CHECK_2 ( this : object ) DeclareScript AllAlly_CHECK ( this : object ) DeclareScript AllAlly_CHECK_2 ( this : object ) DeclareScript ukrivatel_enable (this:object) DeclareScript susl_prtlgip_plantacia_enable (this:object) DeclareScript susl_prtlgip_dock_enable (this:object) DeclareScript susl_bandits_logovo_enable (this:object) DeclareScript susl_rostovshik_enable (this:object) DeclareScript KillZabor (this : object) DeclareScript KillAngryMouse (this : object) DeclareScript KeyPersDeathCheck (this : object) //Проверка смерти ключевого персонажа. DeclareScript BlockAllZonePoints ( this : object ) //Блокировка всех точек перехода DeclareScript UnBlockAllZonePoints ( this : object ) //Разблокировка всех точек перехода DeclareScript TechDemoZoneBlocker ( this : object ) //Блокировщик зон для демки... // Для механизмов зон // отдельно - скрипты портала DeclareScript PortalOff ( this : object ) DeclareScript PortalOn_Outcoming ( this : object ) DeclareScript PortalOn_Incoming ( this : float ) //DeclareScript PortalOn_Incoming ( this : object ) DeclareScript Portal_TCPA_On ( this : object ) DeclareScript Portal_TCPB_On ( this : object ) DeclareScript Teleportator ( this : object ) DeclareScript CheckPortalIncome (this : object) DeclareScript CreateRunPoint1 ( id : float, x : float, y : float, z : float, rad : float, light : float ) DeclareScript CreateRunPoint ( id : float, xbase : float, ybase : float, dx : float, dy : float, alpha : float, light : float ) DeclareScript DeleteRunPoint ( id : float ) DeclareScript CreateRunway ( id : float, xbase : float, ybase : float, dx : float, dy : float ) DeclareScript DeleteRunway ( id : float ) DeclareScript RRunwayOut ( id : float ) DeclareScript RRunwayIn ( id : float ) //отдельно - система управления ловушками DeclareScript portal_trap ( LovushkVarName : string, NomerZoni : float ) //Срабатывалка ловушки DeclareScript portal_trap_BOOM ( NomerZoni : float, ujOsnax : object ) //Подорвать сцуку DeclareScript portal_trap_lever ( LovushkVarName : string, LeverObj : object ) //Выключатель ловушки DeclareScript portal_trap_indikator ( LovushkVarName : string, LovushkIndVarName : string, ParticleN : float, LightpointN : float, XCoord : float, YCoord : float, ZCoord : float ) //Индикатор ловушки DeclareScript portal_traps ( this : object ) //Поддерживалка ловушек в нормальном состоянии DeclareScript tirk_lever ( LeverObj : object, UnitObj : object ) //Заставить юнита тыркнуть рычаг //остальные DeclareScript LootContainers ( this : object ) //Разные сундуки и ящики с бочками... //Дипломатия DeclareScript Hadagan_Criminal ( this : object ) //Если менты враждебны игроку - сделать их таковыми. DeclareScript Hadagan_NoCriminal ( this : object ) //Если менты не враждебны игроку - сделать их таковыми. DeclareScript Hadagan_Slave2Crim ( this : object ) //Обработка противоправных действий для рабов. DeclareScript FirezAgentsReaction_GameOver ( this : object ) //Гамоверная реакция людей Фиреза. //Система управления доступом к точкам перехода DeclareScript dostup_susl_close_hadobjs ( this : object ) //Закрыть проходы на хадаганерские объекты. DeclareScript dostup_susl_open_hadobjs ( this : object ) //Открыть проходы на хадаганерские объекты. DeclareScript dostup_susl_hadobjs_check1 ( this : object ) //Проверялка для хадаганерских объектов. DeclareScript dostup_susl_hadobjs_check2 ( this : object ) //Проверялка для хадаганерских объектов. DeclareScript first_time_on_allod ( this : object ) //Если перс прибыл с другого аллода. //Управление персонажами DeclareScript UnitBlocker ( this : object ) //Управление блокировкой..... управления : ))) //Сюжетные //квест 1. DeclareScript q1_night ( this : object ) //Сделать ночь если активен квест 1. DeclareScript q1_west_bridge ( this : object ) //Западный мост DeclareScript q1_north_bridge ( this : object ) //Северный мост DeclareScript q1_bridges ( this : object ) //Оба моста обследованы DeclareScript q1_found ( this : object ) //Игрок увидел злобну личностю котоая таинственная. DeclareScript q1_razgovor ( this : object ) //Разговор заговорщиков. DeclareScript q1_return ( this : object ) //Возвращение в загон. DeclareScript q1_fail ( this : object ) //Провал квеста. //квест 2. DeclareScript q2_pre_activation ( this : object ) //Выполнить те действия которые надо выполнять если квест 2 не активен. DeclareScript q2_finded ( this : object ) //Игрок нашел кактус DeclareScript q2_kaktus ( this : object ) //Игрок поюзал кактус (интересно, кто о чем подумал читая ето :))) ). DeclareScript q2_bablo ( this : object ) //Игрок подкинул бабло. DeclareScript q2_return ( this : object ) //Игрок вернулся в загон. DeclareScript q2_fail ( this : object ) //Провал квеста. //квест 20. DeclareScript q20_finish ( this : object ) //Завершение квеста. DeclareScript q20_fail ( this : object ) //Провал квеста. //квест 21. DeclareScript q21_attack ( this : object ) //Напихать в него иголок.... DeclareScript q21_finish ( this : object ) //Завершение квеста. DeclareScript q21_fail ( this : object ) //Провал квеста. //q4_1 DeclareScript q4_1_start ( this : object ) //Начало квеста. DeclareScript q4_1_trap1off ( this : object ) //Если надо - вырубить ловушку 1. DeclareScript q4_1_marsrut1 ( this : object ) //Двигаемся к точке 2. DeclareScript q4_1_trap3off ( this : object ) //Если надо - вырубить ловушку 3. DeclareScript q4_1_marsrut2 ( this : object ) //Двигаемся к точке 3. DeclareScript q4_1_marsrut3 ( this : object ) //Двигаемся к точке 4. DeclareScript q4_1_marsrut4 ( this : object ) //Двигаемся к точке 5. DeclareScript q4_1_marsrut5 ( this : object ) //Двигаемся к точке 6. DeclareScript q4_1_marsrut6 ( this : object ) //Двигаемся к точке 7. DeclareScript q4_1_marsrut7 ( this : object ) //Двигаемся к точке 8. DeclareScript q4_1_marsrut8 ( this : object ) //Двигаемся к точке 9. DeclareScript q4_1_marsrut9 ( this : object ) //Двигаемся к точке 10. DeclareScript q4_1_marsrut10 ( this : object ) //Двигаемся к точке 11. DeclareScript q4_1_marsrut11 ( this : object ) //Последняя точка. DeclareScript q4_1_prishli ( this : object ) //Пришли к плантации. Провал квеста. DeclareScript q4_1_koluchka_check ( this : object ) //Втыкание колючки :). DeclareScript q4_1_drapaem ( this : object ) //Драпаем, что еще можно сказать :). DeclareScript q4_1_za_gorodom ( this : object ) //Вышли за стены города DeclareScript q4_1_logovo ( this : object ) //Добрались до логова DeclareScript q4_1_OverseerAI ( this : object, target : object, IsRunningVar : string ) //Управлялка надсмотром //q4_2 DeclareScript q4_2_PeasantAI ( this : object ) //Управлялка рабом - чтобы тока 1 дрался и не поднимал тревогу. DeclareScript q4_2_ZritelAI ( this : object ) //Управлялка зрителем - шоб все сбежались и вылупились :). Но на нормальном расстоянии :). DeclareScript q4_2_activateAI ( this : object ) //Активировать скрипты управления рабами. DeclareScript q4_2_draka ( this : object ) //Начало драки DeclareScript q4_2_wait_draka ( this : object ) //Ожидание завершения драки... DeclareScript q4_2_key ( this : object ) //Облутываем сундук... DeclareScript q4_2_crim ( this : object ) //Сдох раб с которым дрались... DeclareScript q4_2_fail_return ( this : object ) //Не удалось стырить ключ.... DeclareScript q4_2_vse_ok ( this : object ) //И ключ стырили, и от раба отмахались... можно драпать... DeclareScript q4_2_drapaem ( this : object ) //Драпаем через склад... //q4_3 DeclareScript q4_3_vo_blya ( this : object ) //Обля :). Сбежали :). //q22 DeclareScript q22_begin ( this : object ) //Встреча с ростовщиком... DeclareScript q22_karavan ( this : object ) //Встреча с караваном... DeclareScript q22_TorgovecAI (this : object ) //AI торговца. Его реакция на облутывание. Если при активации уже облутан - скрипт сразу здохнет. DeclareScript q22_marsrut8 ( this : object ) //Двигаемся к точке 9. DeclareScript q22_marsrut9 ( this : object ) //Двигаемся к точке 10. DeclareScript q22_marsrut10 ( this : object ) //Двигаемся к точке 11. DeclareScript q22_marsrut11 ( this : object ) //Последняя точка. DeclareScript q22_fail ( this : object ) //Пришли к плантации. Провал квеста. DeclareScript q22_ZritelAI ( this : object ) //Управлялка зрителем - шоб все сбежались и вылупились :). Но на нормальном расстоянии :). DeclareScript q22_koluchka_check ( this : object ) //Втыкание колючки :). DeclareScript q22_finish ( this : object ) //Драпаем... :). DeclareScript q22_razgovor ( this : object ) //Разговор с Хельмом. //Лошадь Рейханда DeclareScript loshadR_vtikalka ( this : object ) //Если нет колючки а лошадь облутали... DeclareScript loshadR_koluchka ( this : object ) //Если воткнули колючку и не активны 2 квеста где это юзится. //q5 DeclareScript q5_start ( this : object ) //В принципе - инициализация... DeclareScript q5_za_gorodom ( this : object ) //Если покинули город... DeclareScript q5_logovo ( this : object ) //Дошли до логова... //q6 DeclareScript q6_prichal ( this : object ) //Подошли к причалу... //Тестовый скрипт DeclareScript test_script ( this : object ) //Для различных тестов. //////////////////////////////////////////// // Скрипты глобальные для зоны //////////////////////////////////////////// Script FirstVisit //Скрипт выполнится только при первом входе в зону ( if ( IsEqual(GSGetVar(0,"SuslPrtlGip_visited" ),0) ) then ( KillScript( ) //Отметить что зона посещена GSSetVar(0,"SuslPrtlGip_visited",1) //Выполнить то что надо выполнить при первом входе AllUnits = GroupAdd(GetPlayerUnits(0),GetPlayerUnits(1)) EnableLever(Sundukars_sunduk,0) //Заблочить сундук на плантации. ) if ( ) then ( KillScript( ) ) ) Script DebugScript //Отладочный скрипт - для проверки того, что скрипт зоны работает. ( if ( ) then ( KillScript( ) ConsoleString("DEBUG script started!!!") ) ) Script DoNameObjects //Этот скрипт привязывает идешники объектов к переменным - объектам. ( if ( ) then ( KillScript( ) TCPA=GetObjectByID("43968") TCPB=GetObjectByID("43974") ToyBarrel=GetObjectByID("1954235") MoneyBarrel1=GetObjectByID("1954234") MoneyBarrel2=GetObjectByID("1954236") HChest1=GetObjectByID("736257") HChest2=GetObjectByID("980428") Kaktus=GetObjectByID("12025358") //Кактус-тайник заговорщиков. Zagovorsh_veshi=GetObjectByID("12025344") //Вещи заговорщиков - такой мешочек :). Sundukars_sunduk = GetObjectByID("12025360") //Сундук на плантации //Юниты TainstvLichnost = GetObjectByID("1954248") Zagovorsh1 = GetObjectByID("1954246") Zagovorsh2 = GetObjectByID("1954247") AngryMouse = GetObjectByID("100015") //Взять и бережно держа.... Reihand = GetObjectByID("12025356") Reihand_Clerk = GetObjectByID("12025357") Overseer1 = GetObjectByID("12025345") Overseer2 = GetObjectByID("19665") Reihand_Horse = GetObjectByID("997082") Portal_Courier = GetObjectByID("100019") Overseer_sundukar = GetObjectByID("12025363") Rastaman = GetObjectByID("12025365") //Ростовщик Rastaman_guard1 = GetObjectByID("997059") //1-й телохранитель растамана Rastaman_guard2 = GetObjectByID("997060") //2-й телохранитель растамана //Засунуть в группу всех имеющихся на карте юнитов... AllUnits = GroupAdd(GetPlayerUnits(0),GetPlayerUnits(1)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(2)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(3)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(4)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(5)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(6)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(7)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(8)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(9)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(10)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(11)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(12)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(13)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(14)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(15)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(16)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(17)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(18)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(19)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(20)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(21)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(22)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(23)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(24)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(25)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(26)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(27)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(28)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(29)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(30)) AllUnits = GroupAdd(AllUnits,GetPlayerUnits(31)) //Нда. Такая вот монстроватость. ) ) Script SetDefZoneVars //Этот скрипт выставляет умолчальные значение переменных при входе именно в эту зону ( if ( ) then ( KillScript( ) //Убить скрипт чтоб больше не выполнялся //SendStringEvent( 0, "tutorial DebugMessage" ) //дебаг-мессага GSSetVar(0,"Really_PlayerIsGod",0) //гадcтво игрока GSSetVar(0,"Really_AllAlly",0) //Нейтральность //Создание областей на зоне... AddRoundToArea( 1, 109, 227, 8 ) //Зона, открывающая поместье Укрывателя AddRoundToArea( 2, 169, 162, 8 ) //Зона, открывающая зону Плантация AddRoundToArea( 3, 76, 151, 8 ) //Зона, открывающая Док AddRoundToArea( 4, 404, 431, 15 ) //Зона, открывающая Логово AddRoundToArea( 5, 413.49, 89.19, 10 ) //Зона, безопасности для рабов. - загон у портала AddRoundToArea( 5, 187.95, 148.51, 18 ) //---"--- - плантация AddRectToArea( 5, 169.66,147.76,219.75,235.13) //---"--- - ---"--- AddRectToArea( 5, 164.19,164.53,173.94,232.42) //---"--- - ---"--- AddRectToArea( 5, 154.66,187.70,189.66,239.44) //---"--- - ---"--- AddRoundToArea( 6, 427.15, 38.36, 8 ) //Зона возле западного моста. AddRoundToArea( 7, 448.42, 97.61, 11 ) //Зона возле северного моста. AddRoundToArea( 8, 429.93, 111.50, 8.5 ) //Разговор заговорщиков. AddRoundToArea( 9, 497.53, 96.91, 12 ) //Кактус заговорщиков. AddRoundToArea( 10, 103, 465, 8 ) //Зона, открывающая поместье ростовщика AddRoundToArea( 11, 450.47, 185.47, 10.5 ) //Портальная ловушка 1 AddRoundToArea( 12, 330.81, 98.76, 13.5 ) //Портальная ловушка 2 AddRoundToArea( 13, 380.83, 255.70, 12.5 ) //Портальная ловушка 3 AddRectToArea( 14, 0,0,511.89,314.50) //Весь город AddRectToArea( 14, 0,297.70,7.13,358.99) //---"--- AddRectToArea( 14, 0,297.70,11.52,357.82) //---"--- AddRectToArea( 14, 0,297.70,16.01,356.67) //---"--- AddRectToArea( 14, 0,297.70,25.14,354.78) //---"--- AddRectToArea( 14, 0,297.70,25.14,354.78) //---"--- AddRectToArea( 14, 0,297.70,34.14,352.73) //---"--- AddRectToArea( 14, 0,297.70,43.06,350.68) //---"--- AddRectToArea( 14, 0,297.70,52.24,348.65) //---"--- AddRectToArea( 14, 0,297.70,61.77,346.66) //---"--- AddRectToArea( 14, 0,297.70,98.18,344.16) //---"--- AddRectToArea( 14, 0,297.70,117.87,337.42) //---"--- AddRectToArea( 14, 0,297.70,139.11,331.85) //---"--- AddRectToArea( 14, 0,297.70,150.43,323.91) //---"--- AddRectToArea( 14, 0,297.70,190.56,321.15) //---"--- AddRectToArea( 14, 190.0,297.70,210.09,332.11) //---"--- AddRectToArea( 14, 190.0,297.70,229.87,329.01) //---"--- AddRectToArea( 14, 228.0,297.70,245.86,337.57) //---"--- AddRectToArea( 14, 244.0,297.70,263.38,349.11) //---"--- AddRectToArea( 14, 262.0,297.70,510.27,355.55) //---"--- AddRoundToArea( 15, 158.87,223.45,5) //Вход в склад на плантации... AddRoundToArea( 16, 117.02,269.05,4) //Встреча с растаманом на мосту... AddRoundToArea( 17, 199.04,60.25,10) //Встреча с караваном в q22 AddRoundToArea( 21, 440.68, 169.63, 1 ) //Маршрут Рейханда. Точка 1. AddRoundToArea( 22, 452.95, 211.61, 1 ) //Маршрут Рейханда. Точка 2. AddRoundToArea( 23, 375.18, 229.40, 1 ) //Маршрут Рейханда. Точка 3. AddRoundToArea( 24, 344.58, 265.94, 1 ) //Маршрут Рейханда. Точка 4. AddRoundToArea( 25, 273.48, 313.74, 1 ) //Маршрут Рейханда. Точка 5. AddRoundToArea( 26, 258.62, 246.50, 1 ) //Маршрут Рейханда. Точка 6. AddRoundToArea( 27, 244.21, 63.64, 1 ) //Маршрут Рейханда. Точка 7. AddRoundToArea( 28, 128.29, 67.97, 1 ) //Маршрут Рейханда. Точка 8. AddRoundToArea( 29, 126.27, 87.94, 1 ) //Маршрут Рейханда. Точка 9. AddRoundToArea( 30, 122.06, 145.53, 1 ) //Маршрут Рейханда. Точка 10. AddRoundToArea( 31, 166.95, 162.97, 1 ) //Маршрут Рейханда. Точка 11. //Инициализация других переменных... GSSetVar(0,"PortalIsOff",1) GSSetVar(0,"PortalIsOn_Outcoming",0) GSSetVar(0,"PortalIsOn_Incoming",0) GSSetVar(0,"TCPA_IsOn",0) GSSetVar(0,"TCPB_IsOn",0) ) ) Script PlayerIsGod_CHECK //Переключает состояние гадмода в соотв. с переменной. ( if ( IsEqual(GSGetVar(0,"PlayerIsGod" ),Not(GSGetVar(0,"Really_PlayerIsGod"))) //Если переменные несовпадают. ) then ( GSSetVar(0,"Really_PlayerIsGod",GSGetVar(0,"PlayerIsGod")) //"Совпадить" переменные PlayerIsGod_CHECK_2 (NULL) //Собсно выставить гадмод ) ) Script PlayerIsGod_CHECK_2 //Вложенный скрипт. //Вызывается из PlayerIsGod_CHECK //В соответствии с переменной выставляет гадмод. ( if ( IsEqual(GSGetVar(0,"PlayerIsGod"),1) //Надо быть гадом. ) then ( KillScript( ) GodMode(0,1) ) if ( IsEqual(GSGetVar(0,"PlayerIsGod"),0) //Не гады мы :). ) then ( KillScript( ) GodMode(0,0) ) ) Script AllAlly_CHECK //Переключает состояние нейтральности в соотв. с переменной. ( if ( IsEqual(GSGetVar(0,"AllAlly" ),Not(GSGetVar(0,"Really_AllAlly"))) //Если переменные несовпадают. ) then ( GSSetVar(0,"Really_AllAlly",GSGetVar(0,"AllAlly")) //"Совпадить" переменные AllAlly_CHECK_2 (NULL) //Собсно выставить гадмод ) ) Script AllAlly_CHECK_2 //Вложенный скрипт. //Вызывается из AllAlly_CHECK //В соответствии с переменной выставляет нейтральность. ( if ( IsEqual(GSGetVar(0,"AllAlly"),1) //Нейтрал. ) then ( KillScript( ) For(i,Heroes) //Всех хероесов - переместить в 20 дипгруппу - нейтральны всем ( SetPlayer(i,20) //SendStringEvent( 0, "tutorial DebugMessage" ) ) ) if ( IsEqual(GSGetVar(0,"AllAlly"),0) //Игрок :). ) then ( KillScript( ) For(i,Heroes) //Всех хероесов - вернуть в 0 дипгруппу - группу игрока ( SetPlayer(i,0) ) ) ) //////////////////////////////////////////// // Скрипты добавляющие зоны на глоб мапу // при подходе к зонам перехода. //////////////////////////////////////////// Script ukrivatel_enable //Открывает зону Укрыватель ( if ( Any(i,Heroes,IsInArea(1,GetX(i),GetY(i))) IsEqual(GSGetVar(0,"z.ukrivatel"),0) ) then ( KillScript( ) //DebugScript(NULL) gssetvar(0,"z.ukrivatel",2) ) ) Script susl_prtlgip_plantacia_enable //Открывает зону Плантация ( if ( Any(i,Heroes,IsInArea(2,GetX(i),GetY(i))) IsEqual(GSGetVar(0,"z.susl_prtlgip_plantacia"),0) ) then ( KillScript( ) //DebugScript(NULL) gssetvar(0,"z.susl_prtlgip_plantacia",2) ) ) Script susl_prtlgip_dock_enable //Открывает зону Док ( if ( Any(i,Heroes,IsInArea(3,GetX(i),GetY(i))) IsEqual(GSGetVar(0,"z.susl_prtlgip_dock"),0) ) then ( KillScript( ) //DebugScript(NULL) gssetvar(0,"z.susl_prtlgip_dock",2) ) ) Script susl_bandits_logovo_enable //Открывает зону Логово ( if ( Any(i,Heroes,IsInArea(4,GetX(i),GetY(i))) IsEqual(GSGetVar(0,"z.susl_bandits_logovo"),0) ) then ( KillScript( ) //DebugScript(NULL) gssetvar(0,"z.susl_bandits_logovo",2) ) ) Script susl_rostovshik_enable //Открывает зону Поместье ростовщика ( if ( Any(i,Heroes,IsInArea(10,GetX(i),GetY(i))) IsEqual(GSGetVar(0,"z.susl_rostovshik"),0) ) then ( KillScript( ) //DebugScript(NULL) gssetvar(0,"z.susl_rostovshik",2) ) ) Script KillZabor //Скрипт проверяет, жив ли забор, и на основании этого отмечает значение переменной ( if ( Not(IsAlive(this)) ) then ( KillScript() GsSetVar(0,"ZaborIsDead",1) SetCP(this,200,200,-100) RemoveUnitFromServer(this) ) ) Script KillAngryMouse //Скрипт проверяет, жив ли супермЫш, и на основании этого отмечает значение переменной ( if ( Not(IsAlive(AngryMouse)) IsEqual(GSGetVar(0,"AngryMouseIsDead"),0) ) then ( KillScript() GsSetVar(0,"AngryMouseIsDead",1) ) ) Script KeyPersDeathCheck //Проверка смерти ключевого персонажа. ( if ( Any(i,Heroes,Not(IsAlive(i))) //Если кто-то в партии игрока здох... IsAlive(GetLeader()) //Если лидер партии здох то смысла еще раз его убивать нет ) then ( KillScript() //Вывесить инфу, что мол погиб ключевой персонаж и что гамовер подкрался незаметно. SendStringEvent( 0, "tutorial msg_KeyPersDead_gameover" ) //Собсно гамовер. KillUnit(GetLeader()) ) if ( IsDead(GetObjectByID("1527103973")) //Если здох Хельм IsAlive(GetLeader()) //Если лидер партии здох то смысла еще раз его убивать нет ) then ( KillScript() //Вывесить инфу, что мол погиб ключевой персонаж и что гамовер подкрался незаметно. SendStringEvent( 0, "tutorial msg_KeyPersDead_gameover" ) //Собсно гамовер. KillUnit(GetLeader()) ) if ( IsDead(GetObjectByID("12025356")) //Если здох Рейханд IsAlive(GetLeader()) //Если лидер партии здох то смысла еще раз его убивать нет ) then ( KillScript() //Вывесить инфу, что мол погиб ключевой персонаж и что гамовер подкрался незаметно. SendStringEvent( 0, "tutorial msg_KeyPersDead_gameover" ) //Собсно гамовер. KillUnit(GetLeader()) ) if ( IsDead(GetObjectByID("12025357")) //Если здох управляющий Рейханда IsAlive(GetLeader()) //Если лидер партии здох то смысла еще раз его убивать нет ) then ( KillScript() //Вывесить инфу, что мол погиб ключевой персонаж и что гамовер подкрался незаметно. SendStringEvent( 0, "tutorial msg_KeyPersDead_gameover" ) //Собсно гамовер. KillUnit(GetLeader()) ) if ( IsDead(TainstvLichnost) //Если здох таинственный личностя IsAlive(GetLeader()) //Если лидер партии здох то смысла еще раз его убивать нет ) then ( KillScript() //Вывесить инфу, что мол погиб ключевой персонаж и что гамовер подкрался незаметно. SendStringEvent( 0, "tutorial msg_KeyPersDead_gameover" ) //Собсно гамовер. KillUnit(GetLeader()) ) if ( IsDead(Reihand_Horse) //Если здохла лошадь Рейханда IsAlive(GetLeader()) //Если лидер партии здох то смысла еще раз его убивать нет ) then ( KillScript() //Вывесить инфу, что мол погиб ключевой персонаж и что гамовер подкрался незаметно. SendStringEvent( 0, "tutorial msg_KeyPersDead_gameover" ) //Собсно гамовер. KillUnit(GetLeader()) ) if ( IsDead(GetObjectByID("12025365")) //Если здох растаман... IsAlive(GetLeader()) //Если лидер партии здох то смысла еще раз его убивать нет ) then ( KillScript() //Вывесить инфу, что мол погиб ключевой персонаж и что гамовер подкрался незаметно. SendStringEvent( 0, "tutorial msg_KeyPersDead_gameover" ) //Собсно гамовер. KillUnit(GetLeader()) ) ) Script BlockAllZonePoints //Блокировка всех точек перехода ( if ( //Вызов ) then ( KillScript() //Бум блокировать точки перехода. //В начале надо запомнить старые параметры... GSSetVar(0,"bsave_suslprtlgip_suslangertown",GSGetVar(0,"z.suslprtlgip_suslangertown")) GSSetVar(0,"bsave_ukrivatel_perex",GSGetVar(0,"z.ukrivatel_perex")) GSSetVar(0,"bsave_suslprtlgip_to_susl_prtlgip_plantacia",GSGetVar(0,"z.suslprtlgip_to_susl_prtlgip_plantacia")) GSSetVar(0,"bsave_suslprtlgip_to_susl_prtlgip_dock",GSGetVar(0,"z.suslprtlgip_to_susl_prtlgip_dock")) GSSetVar(0,"bsave_susl_bandits_logovo_to_suslprtlgip",GSGetVar(0,"z.susl_bandits_logovo_to_suslprtlgip")) GSSetVar(0,"bsave_susl_rostovshik_to_suslprtlgip",GSGetVar(0,"z.susl_rostovshik_to_suslprtlgip")) GSSetVar(0,"bsave_susl_rostovshik_to_suslprtlgip",GSGetVar(0,"z.susl_rostovshik_to_suslprtlgip")) //Теперь - все заблочить нах... GSSetVar(0,"z.suslprtlgip_suslangertown",1) GSSetVar(0,"z.ukrivatel_perex",1) GSSetVar(0,"z.suslprtlgip_to_susl_prtlgip_plantacia",1) GSSetVar(0,"z.suslprtlgip_to_susl_prtlgip_dock",1) GSSetVar(0,"z.susl_bandits_logovo_to_suslprtlgip",1) GSSetVar(0,"z.susl_rostovshik_to_suslprtlgip",1) ) ) Script UnBlockAllZonePoints //Разблокировка всех точек перехода ( if ( //Вызов ) then ( KillScript() //Бум разблокировать точки перехода. GSSetVar(0,"z.suslprtlgip_suslangertown",GSGetVar(0,"bsave_suslprtlgip_suslangertown")) GSSetVar(0,"z.ukrivatel_perex",GSGetVar(0,"bsave_ukrivatel_perex")) GSSetVar(0,"z.suslprtlgip_to_susl_prtlgip_plantacia",GSGetVar(0,"bsave_suslprtlgip_to_susl_prtlgip_plantacia")) GSSetVar(0,"z.suslprtlgip_to_susl_prtlgip_dock",GSGetVar(0,"bsave_suslprtlgip_to_susl_prtlgip_dock")) GSSetVar(0,"z.susl_bandits_logovo_to_suslprtlgip",GSGetVar(0,"bsave_susl_bandits_logovo_to_suslprtlgip")) GSSetVar(0,"z.susl_rostovshik_to_suslprtlgip",GSGetVar(0,"bsave_rostovshik_to_suslprtlgip")) ) ) Script TechDemoZoneBlocker //Блокировщик зон для демки... ( if ( IsEqual(GSGetVar(0,"game_is_techdemo"),1) ) then ( KillScript() //Бум блокировать точки перехода. GSSetVar(0,"z.suslprtlgip_suslangertown",1) GSSetVar(0,"z.ukrivatel_perex",1) ) ) //////////////////////////////////////////// // Скрипты управления механизмами зоны //////////////////////////////////////////// ////////////////////////////////// // Скрипты, управляющие порталом ////////////////////////////////// Script PortalOff // Скрипт вырубающий портал // Автоматически не запускается - только по вызову // из других функций ( if ( IsEqual(GSGetVar(0,"PortalIsOn_Incoming"),0) ) then ( KillScript( ) //Поубивать все эффекты портала. DeleteParticleSource(1) DeleteFXSource(2) DeleteFXSource(3) Sleep(30) //Подождать - для более прикольного эффекта :) //Выставить переменные в положение "портал выключен" GSSetVar(0,"PortalIsOff",1) GSSetVar(0,"PortalIsOn_Outcoming",0) GSSetVar(0,"PortalIsOn_Incoming",0) //Убить мигающую дорожку DeleteRunway( 100 ) DeleteRunway( 110 ) DeleteFXSource(1) //Вырубить оставшийся звук... //Рычаги вырубить разблокировать\заблокировать... SwitchLeverState(TCPA,0) SwitchLeverState(TCPB,0) EnableLever(TCPA,1) EnableLever(TCPB,0) //Врубить скрипты рычагов (индикаторами их активировать) GSSetVar(0,"TCPA_IsOn",0) GSSetVar(0,"TCPB_IsOn",0) ) if ( ) then ( KillScript( ) ) ) Script PortalOn_Outcoming //Врубает портал в режиме убытия... а также вырубает через некоторое время :) ( if ( ) then ( KillScript( ) //Выставить переменные в положение "портал включен в режим убытия" GSSetVar(0,"PortalIsOff",0) GSSetVar(0,"PortalIsOn_Outcoming",1) GSSetVar(0,"PortalIsOn_Incoming",0) //Врубить дорожку... CreateRunway( 100, 441, 72.4, 5, -5.5 ) CreateRunway( 110, 447, 78.4, 5, -5.5 ) RRunwayOut( 100 ) //Мигать одной RRunwayOut( 110 ) //и второй полоске огоньков Sleep(20) //Врубить сам портал CreateParticleSource(1,456.87,60.877,24.5,3,"Portal") CreateFXSource( 2, 456, 61, 25, 25, 50, "Tools\teleport2.wav" ) CreateFXSource( 3, 456, 61, 25, 25, 50, "Tools\teleport3.wav" ) //Подождать некоторое время... Sleep(400) //Вырубить портал PortalOff(NULL) ) ) Script PortalOn_Incoming //Врубает портал в режиме прибытия... а также вырубает через некоторое время :) ( if ( ) then ( KillScript( ) //Выставить переменные в положение "портал включен в режим прибытия" GSSetVar(0,"PortalIsOff",0) GSSetVar(0,"PortalIsOn_Outcoming",0) GSSetVar(0,"PortalIsOn_Incoming",1) Sleep(10) //Врубить дорожку... CreateRunway( 100, 441, 72.4, 5, -5.5 ) CreateRunway( 110, 447, 78.4, 5, -5.5 ) RRunwayIn( 100 ) //Мигать одной RRunwayIn( 110 ) //и второй полоске огоньков //Врубить сам портал CreateParticleSource(1,456.87,60.877,24.5,3,"Portal") CreateFXSource( 2, 456, 61, 25, 25, 50, "Tools\teleport2.wav" ) CreateFXSource( 3, 456, 61, 25, 25, 50, "Tools\teleport3.wav" ) //Заблокировать рычаги на время работы в режиме выхода EnableLever(TCPA,0) EnableLever(TCPB,0) //Подождать некоторое время... //Sleep(140) Sleep(this) //Вырубить портал GSSetVar(0,"PortalIsOn_Incoming",0) PortalOff(NULL) ) ) Script Portal_TCPA_On //Врублен первый рычаг портала. ( if ( IsEqual(GetLeverState(TCPA),1) IsEqual(GSGetVar(0,"TCPA_IsOn"),0) ) then ( //KillScript( ) //Врубить звук портала в режиме убытия CreateFXSource( 1, 456, 61, 25, 25, 50, "Tools\teleport1.wav" ) //И сделать доступным второй рычаг. EnableLever(TCPB,1) //Поставить индикатор включенности рычага GSSetVar(0,"TCPA_IsOn",1) //Portal_TCPA_On(NULL) ) ) Script Portal_TCPB_On //Врублен второй рычаг портала. ( if ( IsEqual(GetLeverState(TCPB),1) IsEqual(GSGetVar(0,"TCPB_IsOn"),0) ) then ( //KillScript( ) //Поставить индикатор включенности рычага GSSetVar(0,"TCPB_IsOn",1) //Врубить портал в режиме убытия PortalOn_Outcoming(NULL) //Portal_TCPB_On(NULL) ) ) Script Teleportator // Телепортирующий скрипт ( if ( IsEqual(GSGetVar(0,"PortalIsOn_Outcoming"),1) IsLess(DistanceUnitPoint(GetLeader(),456,61),3) ) then ( KillScript( ) //Поставить индикатор что юзали портал GSSetVar(0,"susl_prtl_gip_used",1) //Вырубить сразу рычаги во избежание в дальнейшем глюков SwitchLeverState(TCPA,0) SwitchLeverState(TCPB,0) Sleep(20) //Чуть подождать... //И собсно телепортнуться LeaveToZone(0,"gip_prtl_susl",0) ) ) Script CheckPortalIncome // Если вход в зону был через портал - скрипт выполнится ( if ( IsEqual(GSGetVar(0,"gip_prtl_susl_used"),1) ) then ( KillScript( ) //Врубить портал в режиме прибытия PortalOn_Incoming(140) //Убрать индикатор использования портала GSSetVar(0,"gip_prtl_susl_used",0) ) ) Script CreateRunPoint1 //Создает точку для дорожки ( if ( ) then ( KillScript( ) CreatePointLight( id, x, y, z, 10, 255, 255, 0 ) CreateParticleSource( id, x, y, z, rad, "PortalStar" ) ) ) Script CreateRunPoint //Вызывают функцию, которая создаст точку для дорожки ( if ( ) then ( KillScript( ) CreateRunPoint1( id, Add( xbase, Mul( dx, alpha ) ) , Add( ybase, Mul( dy, alpha ) ) , Add( 24.7, Mul( 2.4, alpha ) ) , 0.3, light ) ) ) Script DeleteRunPoint //Удаляет точку для дорожки ( if ( ) then ( KillScript( ) DeletePointLight(id) DeleteParticleSource(id) ) ) Script CreateRunway //Создает полоску дорожки ( if ( ) then ( KillScript( ) CreateRunPoint( Add( id, 0 ) , xbase, ybase, dx, dy, -1, 1 ) Sleep( 2 ) CreateRunPoint( Add( id, 1 ) , xbase, ybase, dx, dy, -0.75, 0 ) Sleep( 2 ) CreateRunPoint( Add( id, 2 ) , xbase, ybase, dx, dy, -0.5, 0 ) Sleep( 2 ) CreateRunPoint( Add( id, 3 ) , xbase, ybase, dx, dy, -0.25, 0 ) Sleep( 2 ) CreateRunPoint( Add( id, 4 ) , xbase, ybase, dx, dy, 0, 1 ) Sleep( 2 ) CreateRunPoint( Add( id, 5 ) , xbase, ybase, dx, dy, 0.25, 0 ) Sleep( 2 ) CreateRunPoint( Add( id, 6 ) , xbase, ybase, dx, dy, 0.5, 0 ) Sleep( 2 ) CreateRunPoint( Add( id, 7 ) , xbase, ybase, dx, dy, 0.75, 0 ) Sleep( 2 ) CreateRunPoint( Add( id, 8 ) , xbase, ybase, dx, dy, 1, 1 ) ) ) Script DeleteRunway //Убивает полосу дорожки ( if ( ) then ( KillScript( ) DeleteRunPoint(Add( id, 0 )) Sleep( 2 ) DeleteRunPoint(Add( id, 1 )) Sleep( 2 ) DeleteRunPoint(Add( id, 2 )) Sleep( 2 ) DeleteRunPoint(Add( id, 3 )) Sleep( 2 ) DeleteRunPoint(Add( id, 4 )) Sleep( 2 ) DeleteRunPoint(Add( id, 5 )) Sleep( 2 ) DeleteRunPoint(Add( id, 6 )) Sleep( 2 ) DeleteRunPoint(Add( id, 7 )) Sleep( 2 ) DeleteRunPoint(Add( id, 8 )) ) ) Script RRunwayOut //Запускает мигание дорожки в режиме убытия ( if ( IsEqual(GSGetVar(0,"PortalIsOn_Outcoming"),1) ) then ( KillScript( ) SetParticleSourceSize( id, 0.3 ) SetParticleSourceSize( Add( id, 1 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 1 ) , 0.3 ) SetParticleSourceSize( Add( id, 2 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 2 ) , 0.3 ) SetParticleSourceSize( Add( id, 3 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 3 ) , 0.3 ) SetParticleSourceSize( Add( id, 4 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 4 ) , 0.3 ) SetParticleSourceSize( Add( id, 5 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 5 ) , 0.3 ) SetParticleSourceSize( Add( id, 6 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 6 ) , 0.3 ) SetParticleSourceSize( Add( id, 7 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 7 ) , 0.3 ) SetParticleSourceSize( Add( id, 8 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 8 ) , 0.3 ) SetParticleSourceSize( Add( id, 0 ) , 1 ) Sleep( 5 ) RRunwayOut( id ) ) if ( Not(IsEqual(GSGetVar(0,"PortalIsOn_Outcoming"),1)) ) then ( KillScript( ) ) ) Script RRunwayIn //Запускает мигание дорожки в режиме прибытия ( if ( IsEqual(GSGetVar(0,"PortalIsOn_Incoming"),1) ) then ( KillScript( ) SetParticleSourceSize( Add( id, 1 ), 0.3 ) SetParticleSourceSize( Add( id, 0 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 0 ) , 0.3 ) SetParticleSourceSize( Add( id, 8 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 8 ) , 0.3 ) SetParticleSourceSize( Add( id, 7 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 7 ) , 0.3 ) SetParticleSourceSize( Add( id, 6 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 6 ) , 0.3 ) SetParticleSourceSize( Add( id, 5 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 5 ) , 0.3 ) SetParticleSourceSize( Add( id, 4 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 4 ) , 0.3 ) SetParticleSourceSize( Add( id, 3 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 3 ) , 0.3 ) SetParticleSourceSize( Add( id, 2 ) , 1 ) Sleep( 5 ) SetParticleSourceSize( Add( id, 2 ) , 0.3 ) SetParticleSourceSize( Add( id, 1 ) , 1 ) Sleep( 5 ) RRunwayIn( id ) ) if ( Not(IsEqual(GSGetVar(0,"PortalIsOn_Incoming"),1)) ) then ( KillScript( ) ) ) ///////////////////////////////////////// // Cистема управления ловушками // ///////////////////////////////////////// Script portal_trap //Срабатывалка ловушки //( LovushkVarName : string, NomerZoni : float ) ( if ( //Если какой-то юнит зашел в ловушку, живой... Any(i,AllUnits, Mul(Mul(IsInArea(NomerZoni,GetX(i),GetY(i)),GSGetVar(0,LovushkVarName)),IsAlive(i)) ) ) then ( KillScript( ) ConsoleString("Vax - kakoi-to debil zashel v lovushku. Budem schitat ego ujOsnaxom. A vseh takih kozlov nado mochitt.") GSSetVar(0,"TempFloat",NomerZoni) For(i, AllUnits) ( //Ну собсно - все очень просто. Передаем i параметром :). //А там уже будет проверка - жив ли юнит. Если живой - замочить :). portal_trap_BOOM(GSGetVar(0,"TempFloat"),i) ) Sleep(10) //Подождать чтоб игра с ума не сходила совсем //Нда... еще имеет смысл подновить скрипт... portal_trap(LovushkVarName,NomerZoni) ) ) Script portal_trap_BOOM //Подорвать сцуку //( NomerZoni : float, ujOsnax : object ) ( if ( IsInArea(NomerZoni,GetX(ujOsnax),GetY(ujOsnax)) IsAlive(ujOsnax) ) then ( KillScript( ) ConsoleString("BOOOOM!!!") ConsoleString("Poluchi gadina :)") //поджарить ужОснаха... CastSpellUnit("fireball{ee1;ee1;ee1;ee1;ee1;ee1;ee1}",GetX(ujOsnax),GetY(ujOsnax),ujOsnax) ) ) Script portal_trap_lever //Выключатель ловушки //( LovushkVarName : string, LeverObj : object ) ( if ( GetLeverState(LeverObj) ) then ( KillScript( ) ConsoleString("Dernut perekluchatel lovushki... please wait....") ConsoleString("0% completed") //Вы спросите Sleep(5) ConsoleString("20% completed") //зачем все ети Sleep(5) ConsoleString("40% completed") //комплитеды... Sleep(5) ConsoleString("60% completed") //ну как зачем? Sleep(5) ConsoleString("80% completed") //просто по приколу Sleep(5) ConsoleString("100% completed") //ессно :). GSSetVar(0,LovushkVarName,Not(GSGetVar(0,LovushkVarName))) //Вот так всегда - 1 строчка полезного кода и куча мусора :). SwitchLeverState(LeverObj,0) //Ну 2... разницы то.... и комментариев дохера - чтоб сожрать побольше места на диске EnableLever(LeverObj,1) ConsoleString("done.") //а как же иначе то :) //Главное - чтобы строк кода было побольше : ))). Тогда больше заплатят. //Но поскольку нам не платят - то такой ужОснах вы увидите тока в этом скрипте :). //Но должен же программер хоть иногда отвлечся? :) //Например положить в код чего-нить прикольное но не нужное :). //З.Ы. есть такая болезнь. Когда чел смайлики тучами ставит.... нда.... %). //Подновить скрыпт. portal_trap_lever(LovushkVarName,LeverObj) ) ) Script portal_trap_indikator //Индикатор ловушки //( LovushkVarName : string, LovushkIndVarName : string, ParticleN : float, LightpointN : float, XCoord : float, YCoord : float, ZCoord : float ) ( if ( IsEqual(GSGetVar(0,LovushkVarName),0) IsEqual(GSGetVar(0,LovushkIndVarName),1) //Всмысле - если ловушка вырублена а индикатор какого-то овоща еще горит... ) then ( KillScript( ) //Ну типа - просто убрать индикатор DeleteParticleSource(ParticleN) DeletePointLight(LightpointN) GSSetVar(0,LovushkIndVarName,0) ConsoleString("Indikator lovushki pogashen") //Подновить скрипт portal_trap_indikator(LovushkVarName,LovushkIndVarName,ParticleN,LightpointN,XCoord,YCoord,ZCoord) ) if ( IsEqual(GSGetVar(0,LovushkVarName),1) IsEqual(GSGetVar(0,LovushkIndVarName),0) //Ловушка пашет а индикатор нихера. Не пойдет. Травмоопасная ситуация однако :). ) then ( KillScript( ) CreateParticleSource(ParticleN,XCoord,YCoord,ZCoord,0.3,"portalstar") CreatePointLight(LightpointN,XCoord,YCoord,ZCoord,20,255,255,0) GSSetVar(0,LovushkIndVarName,1) ConsoleString("Indikator lovushki zazhen") //Подновить скрипт portal_trap_indikator(LovushkVarName,LovushkIndVarName,ParticleN,LightpointN,XCoord,YCoord,ZCoord) ) ) Script portal_traps //Поддерживалка ловушек в нормальном состоянии //( this : object ) ( if ( IsEqual(GSGetVar(0,"sc_suslprtlgip_portaltraps_update"),1) //Ловушки включаются. ) then ( KillScript( ) //В принципе - надо перезапустить систему ловушек. ConsoleString("Portal traps ON") //Для начала - подготовить переменные так, чтобы индикаторы если они вдруг //зажжены - вырубились автоматически GSSetVar(0,"sc_suslprtlgip_portaltrap1",0) GSSetVar(0,"sc_suslprtlgip_portaltrap2",0) GSSetVar(0,"sc_suslprtlgip_portaltrap3",0) GSSetVar(0,"sc_suslprtlgip_portaltrap_ind1",1) GSSetVar(0,"sc_suslprtlgip_portaltrap_ind2",1) GSSetVar(0,"sc_suslprtlgip_portaltrap_ind3",1) //Теперь - врубить управлялки индикаторами... ConsoleFloat(GSGetVar(0,"sc_suslprtlgip_portaltrap1")) ConsoleFloat(GSGetVar(0,"sc_suslprtlgip_portaltrap_ind1")) portal_trap_indikator("sc_suslprtlgip_portaltrap1","sc_suslprtlgip_portaltrap_ind1",121,121,451.13,186.38,29.36) portal_trap_indikator("sc_suslprtlgip_portaltrap2","sc_suslprtlgip_portaltrap_ind2",122,122,331.85,98.55,29.98) portal_trap_indikator("sc_suslprtlgip_portaltrap3","sc_suslprtlgip_portaltrap_ind3",123,123,380.89,252.15,30.23) sleep(20) //Врубить обработчики рычагов... portal_trap_lever("sc_suslprtlgip_portaltrap1",GetObjectByID("45633")) portal_trap_lever("sc_suslprtlgip_portaltrap1",GetObjectByID("45631")) portal_trap_lever("sc_suslprtlgip_portaltrap2",GetObjectByID("45629")) portal_trap_lever("sc_suslprtlgip_portaltrap2",GetObjectByID("45627")) portal_trap_lever("sc_suslprtlgip_portaltrap3",GetObjectByID("45625")) portal_trap_lever("sc_suslprtlgip_portaltrap3",GetObjectByID("45622")) //Врубить сами обработчики ловушек... portal_trap("sc_suslprtlgip_portaltrap1",11) portal_trap("sc_suslprtlgip_portaltrap2",12) portal_trap("sc_suslprtlgip_portaltrap3",13) //Включить ловушки. GSSetVar(0,"sc_suslprtlgip_portaltrap1",1) GSSetVar(0,"sc_suslprtlgip_portaltrap2",1) GSSetVar(0,"sc_suslprtlgip_portaltrap3",1) ) if ( IsEqual(GSGetVar(0,"sc_suslprtlgip_portaltraps_update"),0) //Ловушки не включаются. ) then ( KillScript( ) ConsoleString("Portal traps OFF") ) ) Script tirk_lever //Заставить юнита тыркнуть рычаг //( LeverObj : object, UnitObj : object ) ( if ( ) then ( KillScript( ) //Заставить юнита вырубить ловушку. ConsoleString("LeverOff...") //Run(UnitObj) UMGuard(UnitObj,GetX(LeverObj),GetY(LeverObj),0) //Подождать пока юнит не подойдет к рычагу. SleepUntil(IsLess(DistanceUnitUnit(UnitObj,LeverObj),1.6)) //Проиграть анимацию по переключению рычага PlayAnimation(UnitObj,"uspecial04") Sleep(28) //Подождать пока рычаг не будет тыркнут. //И собсно тыркнуть рычаг :). SwitchLeverState(LeverObj,1) //Прочистить юниту мозги. ResetTarget(UnitObj) //ок :). ) ) ///////////////////////////////////////// // Остальные механизмы // ///////////////////////////////////////// Script LootContainers //Скрипт для работы разных бочек, сундуков и прочей подобной хрени.... ( // Выдаёт Амулет при открытии соответствующей бочки if ( IsEqual(GetLeverState(ToyBarrel),1) ) then ( KillScript( ) //Выдать то что надо выдать... GiveQuestItem(0,"toy") GiveMoney(0,10000) //Подождать немного... Sleep(30) //И обратно закрыть сундук нафик, да еще заблокировать его... //Чтобы скрипт не глюкал и не выдавал одно и тоже по сотне раз... SwitchLeverState(ToyBarrel,0) EnableLever(ToyBarrel,0) LootContainers(NULL) ) // Выдаёт копьё и бабки при открытии соответствующей бочки if ( IsEqual(GetLeverState(MoneyBarrel1),1) ) then ( KillScript( ) //Выдать то что надо выдать... GiveItem (0,"spear.meteoric") GiveMoney(0,1000) //Подождать немного... Sleep(30) //И обратно закрыть сундук нафик, да еще заблокировать его... //Чтобы скрипт не глюкал и не выдавал одно и тоже по сотне раз... SwitchLeverState(MoneyBarrel1,0) EnableLever(MoneyBarrel1,0) LootContainers(NULL) ) // Выдаёт бабки при открытии соответствующей бочки if ( IsEqual(GetLeverState(MoneyBarrel2),1) ) then ( KillScript( ) //Выдать то что надо выдать... GiveMoney(0,100000) //Подождать немного... Sleep(30) //И обратно закрыть сундук нафик, да еще заблокировать его... //Чтобы скрипт не глюкал и не выдавал одно и тоже по сотне раз... SwitchLeverState(MoneyBarrel2,0) EnableLever(MoneyBarrel2,0) LootContainers(NULL) ) // Выдаёт что надо при открытии 1-го сундука if ( IsEqual(GetLeverState(HChest1),1) ) then ( KillScript( ) //Выдать то что надо выдать... //Подождать немного... Sleep(30) //И обратно закрыть сундук нафик, да еще заблокировать его... //Чтобы скрипт не глюкал и не выдавал одно и тоже по сотне раз... SwitchLeverState(HChest1,0) EnableLever(HChest1,0) LootContainers(NULL) ) // Выдаёт что надо при открытии 2-го сундука if ( IsEqual(GetLeverState(HChest2),1) ) then ( KillScript( ) //Выдать то что надо выдать... //Подождать немного... Sleep(30) //И обратно закрыть сундук нафик, да еще заблокировать его... //Чтобы скрипт не глюкал и не выдавал одно и тоже по сотне раз... SwitchLeverState(HChest2,0) EnableLever(HChest2,0) LootContainers(NULL) ) ) //////////////////////////////////////////// // Дипломатия // //////////////////////////////////////////// Script Hadagan_Criminal //Сработает если игрок - крим ( if ( IsEqual(GSGetVar(0,"Hadagan_IsCriminal"),1) ) then ( KillScript( ) //Игрок - крим. Сделать ментов ему враждебными... SetDiplomacy(0,1,-1) SetDiplomacy(1,0,-1) //Вызвать не кримовский скрипт. Hadagan_NoCriminal(NULL) ) ) Script Hadagan_NoCriminal //Сработает если игрок - не крим ( if ( IsEqual(GSGetVar(0,"Hadagan_IsCriminal"),0) ) then ( KillScript( ) //Игрок - не крим. Сделать ментов ему нейтральными враждебными... SetDiplomacy(0,1,0) SetDiplomacy(1,0,0) //Вызвать кримовский скрипт. Hadagan_Criminal(NULL) ) ) Script Hadagan_Slave2Crim //Обработка противоправных действий для рабов. //В случае совершения противоправного действия //текущий статус снимается и выставляется статус крим. ( if ( //Если игрок-раб вне загона и этого раба увидел мент. Any(i,Heroes,GroupHas(GroupSee(GetPlayerUnits(1)),i)) Any(i,Heroes,Not(IsInArea(5,GetX(i),GetY(i)))) //Рабский загон возле портала. IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),0) //q4_1 неактивен. IsEqual(GSGetVar(0,"Hadagan_IsSlave"),1) ) then ( KillScript( ) //Сделать игрока кримом. ConsoleString("slave2CRIM!") GSSetVar(0,"Hadagan_IsCriminal",1) GSSetVar(0,"Hadagan_IsSlave",0) //Снять текущий статус dostup_susl_hadobjs_check1(NULL) //Изменить доступы если надо //И оживить скрипт Hadagan_Slave2Crim(NULL) ) if ( //Если игрок-раб слишком далеко от управляющего в квесте про побег из каравана IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //q4_1 активен. IsEqual(GSGetVar(0,"Hadagan_IsSlave"),1) Any(i,Heroes,GroupHas(GroupSee(GetPlayerUnits(1)),i)) //Если увидел стражник Any(i,Heroes,IsLess(20,DistanceUnitUnit(i,Reihand_Clerk))) //Если дальше 10 метров ) then ( KillScript( ) //Сделать игрока кримом. ConsoleString("q4_1_CRIM!") GSSetVar(0,"Hadagan_IsCriminal",1) GSSetVar(0,"Hadagan_IsSlave",0) //Снять текущий статус dostup_susl_hadobjs_check1(NULL) //Изменить доступы если надо //И оживить скрипт Hadagan_Slave2Crim(NULL) ) ) Script FirezAgentsReaction_GameOver //Гамоверная реакция людей Фиреза. ( if ( //Если игрок-раб вне загона и этого раба увидел мент. Any(i,Heroes,GroupHas(GroupSee(GetPlayerUnits(15)),i)) //GroupHas(GroupSee(GetPlayerUnits(15)),GetLeader()) IsEqual(GSGetVar(0,"FirezAgentsReaction_GameOver"),1) ) then ( KillScript( ) //Показать мессагу о причине гамовера... ConsoleString("GAMOVER!") SendStringEvent( 0, "tutorial msg_FirezAgentSee_gameover" ) Sleep(10) //И сделать гамовер. GodMode(0,0) //Снять гадмод если он есть. KillUnit(GetLeader()) ) ) /////////////////////////////////////////////////////////////// // Система управления доступом к точкам перехода // /////////////////////////////////////////////////////////////// Script dostup_susl_close_hadobjs //Закрыть проходы на хадаганерские объекты. ( if ( //Вызов ) then ( KillScript( ) ConsoleString("Closing hadobjs...") GSSetVar(0,"z.susl_canyon_of_death_to_susl_canyon_of_death_ujn_krepost",1) GSSetVar(0,"z.susl_canyon_of_death_to_susl_canyon_of_death_sev_krepost",1) GSSetVar(0,"z.susl_necrodesert_to_susl_necrodesert_necro_n1",1) GSSetVar(0,"z.susl_necrodesert_to_susl_necrodesert_necro_n2",1) GSSetVar(0,"z.susl_necrodesert_to_susl_necrodesert_necro_n3",1) ConsoleString("Done %).") ) ) Script dostup_susl_open_hadobjs //Открыть проходы на хадаганерские объекты. ( if ( //Вызов ) then ( KillScript( ) ConsoleString("Opening hadobjs") GSSetVar(0,"z.susl_canyon_of_death_to_susl_canyon_of_death_ujn_krepost",2) GSSetVar(0,"z.susl_canyon_of_death_to_susl_canyon_of_death_sev_krepost",2) GSSetVar(0,"z.susl_necrodesert_to_susl_necrodesert_necro_n1",2) GSSetVar(0,"z.susl_necrodesert_to_susl_necrodesert_necro_n2",2) GSSetVar(0,"z.susl_necrodesert_to_susl_necrodesert_necro_n3",2) ConsoleString("Done %).") ) ) Script dostup_susl_hadobjs_check1 //Проверялка для хадаганерских объектов. ( //Вызов if ( IsEqual(GSGetVar(0,"dostup_susl_hadaganobjs_crim"),0) ) then ( KillScript( ) ConsoleString("Executing dostup_susl_hadobjs_check2") dostup_susl_hadobjs_check2(NULL) ) if ( IsEqual(GSGetVar(0,"dostup_susl_hadaganobjs_crim"),1) IsEqual(GSGetVar(0,"Hadagan_IsCriminal"),1) ) then ( KillScript( ) ConsoleString("You are criminal! Can't enter to Hadagan objects") dostup_susl_close_hadobjs(NULL) ) if ( IsEqual(GSGetVar(0,"dostup_susl_hadaganobjs_crim"),1) IsEqual(GSGetVar(0,"Hadagan_IsCriminal"),0) ) then ( KillScript( ) ConsoleString("Executing dostup_susl_hadobjs_check2") dostup_susl_hadobjs_check2(NULL) ) ) Script dostup_susl_hadobjs_check2 //Проверялка для хадаганерских объектов. ( //Вызов if ( IsEqual(GSGetVar(0,"dostup_susl_hadaganobjs_illegal"),0) ) then ( KillScript( ) ConsoleString("Hm... All ok. Now you are welcome at Hadagan objects!") dostup_susl_open_hadobjs(NULL) ) if ( IsEqual(GSGetVar(0,"dostup_susl_hadaganobjs_illegal"),1) IsEqual(GSGetVar(0,"Hadagan_IsLegal"),0) ) then ( KillScript( ) ConsoleString("You are illegal! Can't enter to Hadagan objects") dostup_susl_close_hadobjs(NULL) ) if ( IsEqual(GSGetVar(0,"dostup_susl_hadaganobjs_illegal"),1) IsEqual(GSGetVar(0,"Hadagan_IsLegal"),1) ) then ( KillScript( ) ConsoleString("Hm... All ok. Now you are welcome at Hadagan objects!") dostup_susl_open_hadobjs(NULL) ) ) Script first_time_on_allod //Если перс прибыл с другого аллода. ( if ( IsEqual(GSGetVar(0,"Party_OnSusla"),0) ) then ( KillScript( ) ConsoleString("Welcome to Suslanger!!!") GSSetVar(0,"Party_OnSusla",1) GSSetVar(0,"Party_OnGipat",0) GSSetVar(0,"Party_OnIngos",0) GSSetVar(0,"Party_OnJigran",0) //И вызвать чекалку. dostup_susl_hadobjs_check1(NULL) //А также подновить скрипт. first_time_on_allod(NULL) ) ) /////////////////////////////////////////////// // Управление персонажами // /////////////////////////////////////////////// Script UnitBlocker //Управление блокировкой..... управления : ))) ( if ( IsAlive(GetLeader()) //Типа лидер живой IsUnitBlocked(GetLeader()) //Лидер заблокирован IsEqual(GSGetVar(0,"LeaderBlocked"),0) //Он не должен быть заблокирован ) then ( KillScript( ) ConsoleString("UnitBlocker -> unblock leader;") //Разблочить лидера BlockUnit(GetLeader(),0) //Подновить скрипт UnitBlocker(NULL) ) if ( IsAlive(GetLeader()) //Типа лидер живой Not(IsUnitBlocked(GetLeader())) //Лидер не заблокирован IsEqual(GSGetVar(0,"LeaderBlocked"),1) //Он должен быть заблокирован ) then ( KillScript( ) ConsoleString("UnitBlocker -> block leader;") //Заблочить лидера BlockUnit(GetLeader(),1) //Подновить скрипт UnitBlocker(NULL) ) if ( IsAlive(GetObjectByName("Human_HelmSlave")) //Типа юнит живой IsUnitBlocked(GetObjectByName("Human_HelmSlave")) //Юнит заблокирован IsEqual(GSGetVar(0,"HelmSlaveBlocked"),0) //Он не должен быть заблокирован ) then ( KillScript( ) ConsoleString("UnitBlocker -> unblock Human_HelmSlave;") //Разблочить юнита BlockUnit(GetObjectByName("Human_HelmSlave"),0) //Подновить скрипт UnitBlocker(NULL) ) if ( IsAlive(GetObjectByName("Human_HelmSlave")) //Типа юнит живой Not(IsUnitBlocked(GetObjectByName("Human_HelmSlave"))) //Юнит не заблокирован IsEqual(GSGetVar(0,"HelmSlaveBlocked"),1) //Он должен быть заблокирован ) then ( KillScript( ) ConsoleString("UnitBlocker -> block Human_HelmSlave;") //Заблочить юнита BlockUnit(GetObjectByName("Human_HelmSlave"),1) //Подновить скрипт UnitBlocker(NULL) ) if ( IsAlive(GetObjectByName("Human_Helm")) //Типа юнит живой IsUnitBlocked(GetObjectByName("Human_Helm")) //Юнит заблокирован IsEqual(GSGetVar(0,"HelmBlocked"),0) //Он не должен быть заблокирован ) then ( KillScript( ) ConsoleString("UnitBlocker -> unblock Human_Helm;") //Разблочить юнита BlockUnit(GetObjectByName("Human_Helm"),0) //Подновить скрипт UnitBlocker(NULL) ) if ( IsAlive(GetObjectByName("Human_Helm")) //Типа юнит живой Not(IsUnitBlocked(GetObjectByName("Human_Helm"))) //Юнит не заблокирован IsEqual(GSGetVar(0,"HelmBlocked"),1) //Он должен быть заблокирован ) then ( KillScript( ) ConsoleString("UnitBlocker -> block Human_HelmSlave;") //Заблочить юнита BlockUnit(GetObjectByName("Human_Helm"),1) //Подновить скрипт UnitBlocker(NULL) ) ) //////////////////////////////////////////// // Сюжетные // //////////////////////////////////////////// //--------------------------------// // Квест 1. // //--------------------------------// Script q1_night //Сделать ночь если активен квест 1. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon"),1) ) then ( KillScript( ) ConsoleString("q1_night executed") //Сделать ночь. FixWorldTime(0) ) ) Script q1_west_bridge //Западный мост ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon"),1) //активен квест 1 IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon.1"),1) //подзадание 1 Any(i,Heroes,IsInArea(6,GetX(i),GetY(i))) //игрок возле моста. ) then ( KillScript( ) ConsoleString("q1_west_bridge") //Выполнить пункт 1. GSSetVar(0,"q.SuslPrtlGip.q1_issled_zagon.1",2) ) ) Script q1_north_bridge //Северный мост ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon"),1) //активен квест 1 IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon.2"),1) //подзадание 2 Any(i,Heroes,IsInArea(7,GetX(i),GetY(i))) //игрок возле моста. ) then ( KillScript( ) ConsoleString("q1_north_bridge") //Выполнить пункт 2. GSSetVar(0,"q.SuslPrtlGip.q1_issled_zagon.2",2) ) ) Script q1_bridges //Оба моста обследованы ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon"),1) //активен квест 1 IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon.1"),2) //подзадание 1 IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon.2"),2) //подзадание 2 IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon.3"),0) ) then ( KillScript( ) ConsoleString("q1_bridges") //Активировать пункт 3. GSSetVar(0,"q.SuslPrtlGip.q1_issled_zagon.3",1) Sleep(2) //Перекинуть таинственную личность к точке разговора. ResetTarget(TainstvLichnost) //UMClear(TainstvLichnost) SetCP(TainstvLichnost,427.79,111.10,0) UMGuard(TainstvLichnost,427.79,111.10,0) ) ) Script q1_found //Игрок увидел злобну личностю котоая таинственная. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon"),1) //активен квест 1 IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon.3"),1) IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon.4"),0) Any(i,Heroes,GroupHas(UnitSee(i),TainstvLichnost)) //игрок возле заговорщиков ) then ( KillScript( ) ConsoleString("q1_found") //Выполнить пункт 3. GSSetVar(0,"q.SuslPrtlGip.q1_issled_zagon.3",2) //Выдать подзадание 4. GSSetVar(0,"q.SuslPrtlGip.q1_issled_zagon.4",1) ) ) Script q1_razgovor //Разговор заговорщиков. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon"),1) //активен квест 1 IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon.4"),1) IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon.5"),0) Any(i,Heroes,IsInArea(8,GetX(i),GetY(i))) //игрок возле заговорщиков ) then ( KillScript( ) ConsoleString("q1_razgovor") //Выполнить пункт 4. GSSetVar(0,"q.SuslPrtlGip.q1_issled_zagon.4",2) //Повернуть заговорщиков всех в 1 точку. //UMClear(Zagovorsh1) UMGuard(Zagovorsh1,GetX(Zagovorsh1),GetY(Zagovorsh1),0) Sleep(10) RotateTo(Zagovorsh1,429.93,111.50) //UMClear(Zagovorsh2) UMGuard(Zagovorsh2,GetX(Zagovorsh2),GetY(Zagovorsh2),0) Sleep(10) RotateTo(Zagovorsh2,429.93,111.50) Sleep(10) RotateTo(TainstvLichnost,429.93,111.50) Sleep(20) //Проиграть диалог. SendStringEvent( 0, "tutorial gzb1_zagovorshiki" ) //Отправить личность нах подальше... UMGuard(TainstvLichnost,82,163,0) //На самом деле - по направлению к пристани. Если дойдет ессно. Sleep(150) //Эффектно одождать пока ето чудило утопает подальше :) ... //Отправить надсмотров к кактусу... UMGuard(Zagovorsh1,494,97,0) UMGuard(Zagovorsh2,494,98,0) Sleep(170) //Тоже подождать //Выдать подзадание 5. GSSetVar(0,"q.SuslPrtlGip.q1_issled_zagon.5",1) ) ) Script q1_return //Возвращение в загон. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon"),1) //активен квест 1 IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon.5"),1) Any(i,Heroes,IsInArea(5,GetX(i),GetY(i))) //Загон ) then ( KillScript( ) ConsoleString("q1_return") //Выполнить пункт 5. GSSetVar(0,"q.SuslPrtlGip.q1_issled_zagon.5",2) //Выполнить квест 1 GSSetVar(0,"q.SuslPrtlGip.q1_issled_zagon",2) QuestComplete(0,"q1_issled_zagon") //Убрать таинственную личность с карты. RemoveUnitFromServer(TainstvLichnost) //Перекинуть надсмотров на их обычные места... SetCP(Zagovorsh1,431.288,113.382,0) SetCP(Zagovorsh2,431.156,109.204,0) Sleep(5) ResetTarget(Zagovorsh1) ResetTarget(Zagovorsh2) //Немного подождать... Sleep(100) //И вернуться обратно на диалоговую зону... LeaveToZone(0,"suslprtlgip_zagon",0) ) ) Script q1_fail //Провал квеста. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q1_issled_zagon"),1) //активен квест 1 IsEqual(GSGetVar(0,"Hadagan_IsCriminal"),1) //активен квест 1 ) then ( KillScript( ) ConsoleString("q1_fail") //Провалить квест GSSetVar(0,"q.SuslPrtlGip.q1_issled_zagon",3) ) ) //--------------------------------// // Квест 2. // //--------------------------------// Script q2_pre_activation //Выполнить те действия которые надо выполнять если квест 2 не активен. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki"),0) ) then ( KillScript( ) ConsoleString("q2_pre_activation") //Деактивировать нажимабельность кактуса... EnableLever(Kaktus,0) //И вещей заговорщиков EnableLever(Zagovorsh_veshi,0) ) ) Script q2_finded //Игрок нашел кактус ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki"),1) IsEqual(GSGetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki.1"),1) Any(i,Heroes,IsInArea(9,GetX(i),GetY(i))) //Кактус ) then ( KillScript( ) ConsoleString("q2_finded") //Активировать нажимабельность кактуса... EnableLever(Kaktus,1) //Выполнить подзадание 1. GSSetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki.1",2) //Выдать подзадание 2. GSSetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki.2",1) ) ) Script q2_kaktus //Игрок поюзал кактус. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki"),1) IsEqual(GSGetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki.2"),1) IsEqual(GetLeverState(Kaktus),1) ) then ( KillScript( ) ConsoleString("q2_kaktus") //Выдать квестовые шмотки GiveQuestItem(0,"sackofgold") GiveQuestItem(0,"koluchka_kaktusa") //Сделать нажимабельными вещи заговорщиков EnableLever(Zagovorsh_veshi,1) //Выполнить подзадание 2. GSSetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki.2",2) //Выдать подзадание 3. GSSetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki.3",1) ) ) Script q2_bablo //Игрок подкинул бабло. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki"),1) IsEqual(GSGetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki.3"),1) IsEqual(GetLeverState(Zagovorsh_veshi),1) ) then ( KillScript( ) ConsoleString("q2_bablo") //Отобрать бабло :). EraseQuestItem(0,17) //Выполнить подзадание 3. GSSetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki.3",2) //Выдать подзадание 4. GSSetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki.4",1) ) ) Script q2_return //Игрок вернулся в загон. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki"),1) IsEqual(GSGetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki.4"),1) Any(i,Heroes,IsInArea(5,GetX(i),GetY(i))) //Загон ) then ( KillScript( ) ConsoleString("q2_return") //Выполнить пункт 4. GSSetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki.4",2) //Выполнить квест 1 GSSetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki",2) QuestComplete(0,"q2_nadsmotrshiki") //Убрать надсмотров с карты RemoveUnitFromServer(Zagovorsh1) RemoveUnitFromServer(Zagovorsh2) //Немного подождать... Sleep(80) //И вернуться обратно на диалоговую зону... LeaveToZone(0,"suslprtlgip_zagon",0) ) ) Script q2_fail //Провал квеста. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki"),1) //активен квест 1 IsEqual(GSGetVar(0,"Hadagan_IsCriminal"),1) //активен квест 1 ) then ( KillScript( ) ConsoleString("q2_fail") //Провалить квест GSSetVar(0,"q.SuslPrtlGip.q2_nadsmotrshiki",3) ) ) //--------------------------------// // Квест 20. // //--------------------------------// Script q20_finish //Завершение квеста. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q20_kill_rat"),1) //активен квест 20 IsEqual(GSGetVar(0,"q.SuslPrtlGip.q20_kill_rat.1"),1) //и подзадание 1. IsEqual(IsAlive(AngryMouse),0) //В прочем, он наверно сдохнет ) then ( KillScript( ) ConsoleString("q20_finish") //Но идея хороша! : ))))). GSSetVar(0,"q.SuslPrtlGip.q20_kill_rat.1",2) GSSetVar(0,"q.SuslPrtlGip.q20_kill_rat",2) //Квест выполнен. QuestComplete(0,"q20_kill_rat") Sleep(50) //И вернуться "домой". LeaveToZone(0,"suslprtlgip_zagon",0) ) ) Script q20_fail //Провал квеста. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q20_kill_rat"),1) //активен квест IsEqual(GSGetVar(0,"Hadagan_IsCriminal"),1) ) then ( KillScript( ) ConsoleString("q20_fail") //Провалить квест GSSetVar(0,"q.SuslPrtlGip.q20_kill_rat",3) ) ) //--------------------------------// // Квест 21. // //--------------------------------// Script q21_attack //Напихать в него иголок.... ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q21_angry_mouse"),1) //активен квест 21 IsEqual(GSGetVar(0,"q.SuslPrtlGip.q21_angry_mouse.1"),1) //и подзадание 1. IsEnemy(AngryMouse,0) //мЫш злобствует. ) then ( KillScript( ) ConsoleString("q21_attack") //Выполнить 1-е подзадание GSSetVar(0,"q.SuslPrtlGip.q21_angry_mouse.1",2) //Выдать 2-е... GSSetVar(0,"q.SuslPrtlGip.q21_angry_mouse.2",1) //Подождать... Sleep(500) //Завершить квест... q21_finish(NULL) ) ) Script q21_finish //Завершение квеста. Вызывается. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q21_angry_mouse"),1) //активен квест ) then ( KillScript( ) ConsoleString("q21_finish") //Заставить мышА отстать. SetDiplomacy(0,4,0) SetDiplomacy(4,0,0) ResetTarget(AngryMouse) GSSetVar(0,"q.SuslPrtlGip.q21_angry_mouse.2",2) GSSetVar(0,"q.SuslPrtlGip.q21_angry_mouse",2) //Квест выполнен. QuestComplete(0,"q21_angry_mouse") Sleep(50) //И вернуться "домой". LeaveToZone(0,"suslprtlgip_zagon",0) ) ) Script q21_fail //Провал квеста. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q21_angry_mouse"),1) //активен квест IsEqual(GSGetVar(0,"Hadagan_IsCriminal"),1) ) then ( KillScript( ) ConsoleString("q21_fail") //Провалить квест GSSetVar(0,"q.SuslPrtlGip.q21_angry_mouse",3) ) ) ///////////////////////// // q4_1 // ///////////////////////// Script q4_1_start //Начало квеста. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),0) ) then ( KillScript( ) ConsoleString("q4_1_start") RemoveUnitFromServer(TainstvLichnost) //На всякий случай убрать етого отмороза с карты :). На случай если еще не... //Заблочить все точки перехода... BlockAllZonePoints(NULL) //Указать что игрок теперь типа не загонный раб :) GSSetVar(0,"sc_suslprtlgip_is_zagon_slave",0) //Инициализировать переменные... GSSetVar(0,"q4_1_marsrut1",0) GSSetVar(0,"q4_1_marsrut2",0) GSSetVar(0,"q4_1_marsrut3",0) GSSetVar(0,"q4_1_marsrut4",0) GSSetVar(0,"q4_1_marsrut5",0) GSSetVar(0,"q4_1_marsrut6",0) GSSetVar(0,"q4_1_marsrut7",0) GSSetVar(0,"q4_1_marsrut8",0) GSSetVar(0,"q4_1_marsrut9",0) GSSetVar(0,"q4_1_marsrut10",0) GSSetVar(0,"q4_1_marsrut11",0) GSSetVar(0,"q4_1_lovushk1",0) GSSetVar(0,"q4_1_lovushk2",0) RemoveUnitFromServer(TainstvLichnost) //"сформировать" караванщиков... UMGuard(Overseer1,433.09,98.46,0) SetCP(Overseer1,433.09,98.46,0) UMGuard(Overseer2,438.47,96.93,0) SetCP(Overseer2,438.47,96.93,0) UMGuard(Reihand_Clerk,419.70,87.79,0) SetCP(Reihand_Clerk,419.70,87.79,0) UMGuard(Reihand,438.69,89.11,0) SetCP(Reihand,438.69,89.11,0) UMGuard(Portal_Courier,502.00,36.29,0) //курьер который будет "телепортиться" через портал SetCP(Portal_Courier,502.00,36.29,0) //Заблокировать юнитов партии... GSSetVar(0,"LeaderBlocked",1) GSSetVar(0,"HelmSlaveBlocked",1) //BlockUnit(GetLeader(),1) //BlockUnit(GetObjectByName("Human_HelmSlave"),1) //Сказать партии следовать за управляющим UMFollow(GetLeader(),GetObjectByName("Human_HelmSlave")) UMFollow(GetObjectByName("Human_HelmSlave"),Reihand_Clerk) //Управляющий - к Рейханду... UMFollow(Reihand_Clerk,Reihand) //Охрана - за Фазилем UMFollow(Overseer1,GetLeader()) GSSetVar(0,"suslprtlgip_overseer1_isrunning",0) GSSetVar(0,"suslprtlgip_overseer2_isrunning",0) q4_1_OverseerAI(Overseer1,GetLeader(),"suslprtlgip_overseer1_isrunning") //UMFollow(Overseer2,GetObjectByName("Human_HelmSlave")) UMFollow(Overseer2,Reihand_Horse) q4_1_OverseerAI(Overseer2,Reihand_Horse,"suslprtlgip_overseer2_isrunning") Sleep(400) //Подождать пока все соберутся возле портала.... PortalOn_Incoming(400) //Включить портал в режиме прибытия... Sleep(30) //Выпустить курьера SetCP(Portal_Courier,456.39,60.94,0) UMFollow(Portal_Courier,Reihand) Sleep(5) //AddUnitUnderControl(0,Portal_Courier) //UMGuard(Portal_Courier,438.69,90.11,0) Sleep(20) //Выпустить лошадь SetCP(Reihand_Horse,456.39,60.94,0) Sleep(5) UMFollow(Reihand_Horse,Portal_Courier) Sleep(500) //Подождать пока вырубится портал итд... ResetTarget(Portal_Courier) //Отправить курьера гулять по своим делам. UMFollow(Reihand_Horse,GetObjectByName("Human_HelmSlave")) //А лошадь увязалась за Хельмом //Теперь - в принципе можно начинать двигаться к 1-й точке маршрута... GSSetVar(0,"q4_1_marsrut1",1) //Добавлялка в арею в комменте - типа для справки тут :). //AddRoundToArea( 21, 431.21, 169.21, 1 ) //Маршрут Рейханда. Точка 1. UMGuard(Reihand,440.68,169.63,0) Sleep(100) //Разблокировать Фазю UMPlayer(GetLeader()) GSSetVar(0,"LeaderBlocked",0) BlockUnit(GetLeader(),0) MoveToObject(GetLeader(),Reihand) Sleep(5) Follow(GetLeader(),Reihand) //Вызвать диалог SendStringEvent( 0, "tutorial gzb7_q4-1_clerk" ) //Выдать 1-е подзадание... GSSetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1",1) ) ) Script q4_1_trap1off //Если надо - вырубить ловушку 1. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsInArea(21,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 1 точку маршрута. IsAlive(GetObjectByID("321756")) //Нужный ключник живой IsEqual(GSGetVar(0,"sc_suslprtlgip_portaltrap1"),1) IsEqual(GSGetVar(0,"q4_1_marsrut1"),1) ) then ( KillScript( ) ConsoleString("q4_1_trap1off - main") //Заставить ключника тыркнуть рычаг tirk_lever(GetObjectByID("45633"),GetObjectByID("321756")) ) if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsInArea(21,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 1 точку маршрута. Not(IsAlive(GetObjectByID("321756"))) //Нужный ключник не очень живой.... IsEqual(GSGetVar(0,"sc_suslprtlgip_portaltrap1"),1) IsEqual(GSGetVar(0,"q4_1_marsrut1"),1) ) then ( KillScript( ) ConsoleString("q4_1_trap1off - main") //Тыркнуть другой, дальний рычаг... SwitchLeverState(GetObjectByID("45631"),1) ) ) Script q4_1_marsrut1 //Двигаемся к точке 2. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsInArea(21,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 1 точку маршрута. IsEqual(GSGetVar(0,"sc_suslprtlgip_portaltrap1"),0) //Ловушка выключена. IsEqual(GSGetVar(0,"q4_1_marsrut1"),1) //Мы двигались к 1-й точке маршрута... ) then ( KillScript( ) ConsoleString("q4_1_marsrut1") //Послать Рейханда на... //... вторую точку. Sleep(100) GSSetVar(0,"q4_1_marsrut1",2) GSSetVar(0,"q4_1_marsrut2",1) //Добавлялка в арею в комменте - типа для справки тут :). //AddRoundToArea( 22, 452.95, 211.61, 1 ) //Маршрут Рейханда. Точка 2. UMGuard(Reihand,452.95,211.61,0) ) ) Script q4_1_trap3off //Если надо - вырубить ловушку 3. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsInArea(23,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 3 точку маршрута. IsAlive(GetObjectByID("12025353")) //Нужный ключник живой IsEqual(GSGetVar(0,"sc_suslprtlgip_portaltrap3"),1) IsEqual(GSGetVar(0,"q4_1_marsrut3"),1) ) then ( KillScript( ) ConsoleString("q4_1_trap2off - main") //Заставить ключника тыркнуть рычаг tirk_lever(GetObjectByID("45625"),GetObjectByID("12025353")) ) if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsInArea(23,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 2 точку маршрута. Not(IsAlive(GetObjectByID("12025353"))) //Нужный ключник не очень живой.... IsEqual(GSGetVar(0,"sc_suslprtlgip_portaltrap3"),1) IsEqual(GSGetVar(0,"q4_1_marsrut3"),1) ) then ( KillScript( ) ConsoleString("q4_1_trap3off - main") //Тыркнуть другой, дальний рычаг... SwitchLeverState(GetObjectByID("45622"),1) ) ) Script q4_1_marsrut2 //Двигаемся к точке 3. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsInArea(22,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 2 точку маршрута. IsEqual(GSGetVar(0,"q4_1_marsrut2"),1) //Мы двигались к 3-й точке маршрута... ) then ( KillScript( ) ConsoleString("q4_1_marsrut2") //Послать Рейханда на... //... вторую точку. Sleep(150) GSSetVar(0,"q4_1_marsrut2",2) GSSetVar(0,"q4_1_marsrut3",1) //Добавлялка в арею в комменте - типа для справки тут :). //AddRoundToArea( 23, 375.18, 229.40, 1 ) //Маршрут Рейханда. Точка 3. UMGuard(Reihand,375.18,229.40,0) ) ) Script q4_1_marsrut3 //Двигаемся к точке 4. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsInArea(23,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 3 точку маршрута. IsEqual(GSGetVar(0,"sc_suslprtlgip_portaltrap3"),0) //Ловушка выключена. IsEqual(GSGetVar(0,"q4_1_marsrut3"),1) //Мы двигались к 3-й точке маршрута... ) then ( KillScript( ) ConsoleString("q4_1_marsrut3") //Послать Рейханда на... //... вторую точку. Sleep(150) GSSetVar(0,"q4_1_marsrut3",2) GSSetVar(0,"q4_1_marsrut4",1) //Добавлялка в арею в комменте - типа для справки тут :). //AddRoundToArea( 24, 344.58, 265.94, 1 ) //Маршрут Рейханда. Точка 3. UMGuard(Reihand,344.58,265.94,0) //И закрыть 1-ю ловушку... GSSetVar(0,"sc_suslprtlgip_portaltrap1",1) ) ) Script q4_1_marsrut4 //Двигаемся к точке 5. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsInArea(24,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 4 точку маршрута. IsEqual(GSGetVar(0,"q4_1_marsrut4"),1) //Мы двигались к 4-й точке маршрута... ) then ( KillScript( ) ConsoleString("q4_1_marsrut4") //Послать Рейханда на... //... вторую точку. Sleep(350) GSSetVar(0,"q4_1_marsrut4",2) GSSetVar(0,"q4_1_marsrut5",1) //Добавлялка в арею в комменте - типа для справки тут :). //AddRoundToArea( 25, 273.48, 313.74, 1 ) //Маршрут Рейханда. Точка 5. UMGuard(Reihand,273.48,313.74,0) //И закрыть 2-ю ловушку... GSSetVar(0,"sc_suslprtlgip_portaltrap3",1) ) ) Script q4_1_marsrut5 //Двигаемся к точке 6. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsInArea(25,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 5 точку маршрута. IsEqual(GSGetVar(0,"q4_1_marsrut5"),1) //Мы двигались к 5-й точке маршрута... ) then ( KillScript( ) ConsoleString("q4_1_marsrut5") //Послать Рейханда на... //... вторую точку. Sleep(250) GSSetVar(0,"q4_1_marsrut5",2) GSSetVar(0,"q4_1_marsrut6",1) //Добавлялка в арею в комменте - типа для справки тут :). //AddRoundToArea( 26, 258.62, 246.50, 1 ) //Маршрут Рейханда. Точка 5. UMGuard(Reihand,258.62,246.50,0) ) ) Script q4_1_marsrut6 //Двигаемся к точке 7. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsInArea(26,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 6 точку маршрута. IsEqual(GSGetVar(0,"q4_1_marsrut6"),1) //Мы двигались к 6-й точке маршрута... ) then ( KillScript( ) ConsoleString("q4_1_marsrut6") //Послать Рейханда на... //... вторую точку. Sleep(250) GSSetVar(0,"q4_1_marsrut6",2) GSSetVar(0,"q4_1_marsrut7",1) //Добавлялка в арею в комменте - типа для справки тут :). //AddRoundToArea( 27, 244.21, 63.64, 1 ) //Маршрут Рейханда. Точка 7. UMGuard(Reihand,244.21,63.64,0) ) ) Script q4_1_marsrut7 //Двигаемся к точке 8. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsInArea(27,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 7 точку маршрута. IsEqual(GSGetVar(0,"q4_1_marsrut7"),1) //Мы двигались к 7-й точке маршрута... ) then ( KillScript( ) ConsoleString("q4_1_marsrut7") //Послать Рейханда на... //... вторую точку. Sleep(250) GSSetVar(0,"q4_1_marsrut7",2) GSSetVar(0,"q4_1_marsrut8",1) //Добавлялка в арею в комменте - типа для справки тут :). //AddRoundToArea( 28, 128.29, 67.97, 1 ) //Маршрут Рейханда. Точка 8. UMGuard(Reihand,128.29,67.97,0) ) ) Script q4_1_marsrut8 //Двигаемся к точке 9. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsInArea(28,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 8 точку маршрута. IsEqual(GSGetVar(0,"q4_1_marsrut8"),1) //Мы двигались к 8-й точке маршрута... ) then ( KillScript( ) ConsoleString("q4_1_marsrut8") //Послать Рейханда на... //... вторую точку. Sleep(250) GSSetVar(0,"q4_1_marsrut8",2) GSSetVar(0,"q4_1_marsrut9",1) //Добавлялка в арею в комменте - типа для справки тут :). //AddRoundToArea( 29, 126.27, 87.94, 1 ) //Маршрут Рейханда. Точка 9. UMGuard(Reihand,126.27,87.94,0) ) ) Script q4_1_marsrut9 //Двигаемся к точке 10. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsInArea(29,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 9 точку маршрута. IsEqual(GSGetVar(0,"q4_1_marsrut9"),1) //Мы двигались к 9-й точке маршрута... ) then ( KillScript( ) ConsoleString("q4_1_marsrut9") //Послать Рейханда на... //... вторую точку. Sleep(250) GSSetVar(0,"q4_1_marsrut9",2) GSSetVar(0,"q4_1_marsrut10",1) //Добавлялка в арею в комменте - типа для справки тут :). //AddRoundToArea( 30, 122.06, 145.53, 1 ) //Маршрут Рейханда. Точка 10. UMGuard(Reihand,122.06,145.53,0) ) ) Script q4_1_marsrut10 //Двигаемся к точке 11. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsInArea(30,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 10 точку маршрута. IsEqual(GSGetVar(0,"q4_1_marsrut10"),1) //Мы двигались к 10-й точке маршрута... ) then ( KillScript( ) ConsoleString("q4_1_marsrut10") //Послать Рейханда на... //... вторую точку. Sleep(250) GSSetVar(0,"q4_1_marsrut10",2) GSSetVar(0,"q4_1_marsrut11",1) //Добавлялка в арею в комменте - типа для справки тут :). // AddRoundToArea( 31, 166.95, 162.97, 1 ) //Маршрут Рейханда. Точка 11. UMGuard(Reihand,166.95,162.97,0) ) ) Script q4_1_marsrut11 //Последняя точка. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsInArea(31,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 11 точку маршрута. IsEqual(GSGetVar(0,"q4_1_marsrut11"),1) //Мы двигались к 11-й точке маршрута... ) then ( KillScript( ) ConsoleString("q4_1_marsrut11") //Пришли GSSetVar(0,"q4_1_marsrut11",2) ) ) Script q4_1_prishli //Пришли к плантации. Провал квеста. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsEqual(GSGetVar(0,"q4_1_marsrut11"),2) //Мы двигались к 11-й точке маршрута... ) then ( KillScript( ) ConsoleString("q4_1_prishli") //Провалить 1-е подзадание и сам квест. GSSetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1",3) GSSetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka",3) //Перекинуть караванщиков внутрь плантации SetCP(Overseer1,193.047,180.151,0) ResetTarget(Overseer1) SetCP(Overseer2,188.928,178.246,0) ResetTarget(Overseer2) SetCP(Reihand_Clerk,189.999,172.978,0) ResetTarget(Reihand_Clerk) SetCP(Reihand,189.937,182.245,0) ResetTarget(Reihand) SetCP(Reihand_Horse,197.709,184.165,0) ResetTarget(Reihand_Horse) //Разаблочить все точки перехода... UnBlockAllZonePoints(NULL) //И Хельма разблочить. GSSetVar(0,"HelmSlaveBlocked",0) UMPlayer(GetObjectByName("Human_HelmSlave")) Sleep(10) //Прыгаем на плантацию GSSetVar(0,"q4_2_allowed",1) LeaveToZone(0,"susl_prtlgip_plantacia",1) ) ) Script q4_1_koluchka_check //Втыкание колючки :). ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... HaveItem(0,97) //Есть колючка HaveItem(0,96) //Есть куда втыкать колючку Not(IsEqual(GSGetVar(0,"q4_1_marsrut1"),2)) //Еще не начали идти в точку 2. ) then ( KillScript( ) ConsoleString("q4_1_koluchka_check") //Выполнить 1 подзадание GSSetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1",2) //И отобрать колючку //и "жо..." тоже EraseQuestItem(0,97) EraseQuestItem(0,96) //Послать лошадь куда надо Run(Reihand_Horse) UMGuard(Reihand_Horse,299.85,19.59,0) Sleep(30) //Надсмотров - бегом за ней Run(Overseer1) Run(Overseer2) UMFollow(Overseer1,Reihand_Horse) UMFollow(Overseer2,Reihand_Horse) //И Хельма разблочить. GSSetVar(0,"HelmSlaveBlocked",0) //BlockUnit(GetObjectByName("Human_HelmSlave"),0) UMPlayer(GetObjectByName("Human_HelmSlave")) Sleep(50) //И Рейханд за ними.... Run(Reihand) UMFollow(Reihand,Reihand_Horse) //Выдать 2-е. GSSetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.2",1) ) if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... HaveItem(0,97) //Есть колючка HaveItem(0,96) //Есть куда втыкать колючку IsEqual(GSGetVar(0,"q4_1_marsrut1"),2) //Уже начали идти к точке 2 Not(IsEqual(GSGetVar(0,"q4_1_marsrut3"),2)) //Еще не начали идти в точку 4. ) then ( KillScript( ) ConsoleString("q4_1_koluchka_check") //Выполнить 1 подзадание GSSetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1",2) //И отобрать колючку //и "жо..." тоже EraseQuestItem(0,97) EraseQuestItem(0,96) //Послать лошадь куда надо Run(Reihand_Horse) UMGuard(Reihand_Horse,345.98,157.52,0) Sleep(30) //Надсмотров - бегом за ней Run(Overseer1) Run(Overseer2) UMFollow(Overseer1,Reihand_Horse) UMFollow(Overseer2,Reihand_Horse) //И Хельма разблочить. GSSetVar(0,"HelmSlaveBlocked",0) //BlockUnit(GetObjectByName("Human_HelmSlave"),0) UMPlayer(GetObjectByName("Human_HelmSlave")) Sleep(50) //И Рейханд за ними.... Run(Reihand) UMFollow(Reihand,Reihand_Horse) //Выдать 2-е. GSSetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.2",1) ) if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... HaveItem(0,97) //Есть колючка HaveItem(0,96) //Есть куда втыкать колючку IsEqual(GSGetVar(0,"q4_1_marsrut3"),2) //Уже прошли точку 3 ) then ( KillScript( ) ConsoleString("q4_1_koluchka_check") //Выполнить 1 подзадание GSSetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1",2) //И отобрать колючку //и "жо..." тоже EraseQuestItem(0,97) EraseQuestItem(0,96) //Послать лошадь куда надо Run(Reihand_Horse) UMGuard(Reihand_Horse,80.99,209.66,0) Sleep(30) //Надсмотров - бегом за ней Run(Overseer1) Run(Overseer2) UMFollow(Overseer1,Reihand_Horse) UMFollow(Overseer2,Reihand_Horse) //И Хельма разблочить. GSSetVar(0,"HelmSlaveBlocked",0) //BlockUnit(GetObjectByName("Human_HelmSlave"),0) UMPlayer(GetObjectByName("Human_HelmSlave")) Sleep(50) //И Рейханд за ними.... Run(Reihand) UMFollow(Reihand,Reihand_Horse) //Выдать 2-е. GSSetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.2",1) ) ) Script q4_1_drapaem //Драпаем, что еще можно сказать :). ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.2"),1) //И подзадание нужное... Any(i,Heroes,IsLess(20,DistanceUnitUnit(Reihand_Clerk,i))) //Убёгли от плантатора ) then ( KillScript( ) ConsoleString("q4_1_drapaem") //Выполнить 2-е подзадание. GSSetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.2",2) //Сделать кримом GSSetVar(0,"Hadagan_IsCriminal",1) //Убрать статус раба GSSetVar(0,"Hadagan_IsSlave",0) //Перекинуть караванщиков внутрь плантации SetCP(Overseer1,193.047,180.151,0) ResetTarget(Overseer1) SetCP(Overseer2,188.928,178.246,0) ResetTarget(Overseer2) SetCP(Reihand_Clerk,189.999,172.978,0) ResetTarget(Reihand_Clerk) SetCP(Reihand,189.937,182.245,0) ResetTarget(Reihand) SetCP(Reihand_Horse,197.709,184.165,0) ResetTarget(Reihand_Horse) //Проиграть диалог SendStringEvent( 0, "tutorial gzb2_helm_pobeg_var1_scr1" ) SendStringEvent( 0, "tutorial gzb2_helm_pobeg_var1_scr2" ) SendStringEvent( 0, "tutorial gzb2_helm_pobeg_var1_scr3" ) //Выдать подзадание 3 GSSetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.3",1) ) ) Script q4_1_za_gorodom //Вышли за стены города ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.3"),1) //И подзадание нужное... Every(i,Heroes,Not(IsInArea(14,GetX(i),GetY(i)))) //Не в городе ) then ( KillScript( ) ConsoleString("q4_1_za_gorodom") //Выполнить 3-е подзадание. GSSetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.3",2) //Выдать подзадание 4 GSSetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.4",1) ) ) Script q4_1_logovo //Добрались до логова ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.4"),1) //И подзадание нужное... Every(i,Heroes,IsInArea(4,GetX(i),GetY(i))) //Возле логова ) then ( KillScript( ) ConsoleString("q4_1_logovo") //Выполнить 4-е подзадание. GSSetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.4",2) //Убрать Хельма из под контроля... RemoveUnitFromParty(0,"Human_HelmSlave") RemoveUnitFromControl(0,GetObjectByName("Human_HelmSlave")) //Заставить его бежать к логову Run(GetObjectByName("Human_HelmSlave")) UMGuard(GetObjectByName("Human_HelmSlave"),404.7,429.91,0) //Подождать... Sleep(150) //Убрать Хельма с карты RemoveUnitFromServer(GetObjectByName("Human_HelmSlave")) //Дать Фазе допуск в Логово.... GSSetVar(0,"sc_susl_kontrs_friendly",1) //Типа Хельм ща в логове... GSSetVar(0,"HelmSlaveIsInLogovo",1) //Разблочить точки перехода UnBlockAllZonePoints(NULL) //Выполнить квест GSSetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka",2) QuestComplete(0,"q4_1_pobeg_koluchka") ) ) Script q4_1_OverseerAI //Управлялка надсмотром //( this : object, target : object, IsRunningVar : string ) ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsLess(5,DistanceUnitUnit(this,target)) //Цель дальше 5 метров IsEqual(GSGetVar(0,IsRunningVar),0) //Не бежит ) then ( //Значит надо догнать KillScript( ) ConsoleString("q4_1_OverseerAI - RUN") //Заставить бежать. Run(this) GSSetVar(0,IsRunningVar,1) //Отметить - что теперь типа бежим. //Подновить скрипт q4_1_OverseerAI(this,target,IsRunningVar) ) if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsLess(DistanceUnitUnit(this,target),3) //Цель меньше 3 метров IsEqual(GSGetVar(0,IsRunningVar),1) //Не бежит ) then ( //Значит надо догнать KillScript( ) ConsoleString("q4_1_OverseerAI - walk") //Заставить бежать. Walk(this) GSSetVar(0,IsRunningVar,0) //Отметить - что теперь типа не бежим. //Подновить скрипт q4_1_OverseerAI(this,target,IsRunningVar) ) if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsLess(20,DistanceUnitUnit(GetLeader(),Reihand_Clerk)) //Фазиль отошел слишком далеко от управляющего. ) then ( //Значит надо догнать и замочить. KillScript( ) ConsoleString("q4_1_OverseerAI - kill Fazil") //Заставить бежать. Run(this) //Атакуем SetPlayer(GetObjectByName("Human_HelmSlave"),3) //Шоб не убили кого не надо GSSetVar(0,"Hadagan_IsCriminal",1) UMFollow(this,GetLeader()) Attack(this,GetLeader()) ) if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka.1"),1) //И подзадание нужное... IsLess(20,DistanceUnitUnit(GetObjectByName("Human_HelmSlave"),Reihand_Clerk)) //Хельм отошел слишком далеко от управляющего. ) then ( //Значит надо догнать и замочить. KillScript( ) ConsoleString("q4_1_OverseerAI - kill Helm") //Заставить бежать. Run(this) //Атакуем SetPlayer(GetLeader(),3) //Шоб не убили кого не надо GSSetVar(0,"Hadagan_IsCriminal",1) UMFollow(this,GetObjectByName("Human_HelmSlave")) Attack(this,GetObjectByName("Human_HelmSlave")) ) ) ////////////////////////// // q4_2 // ////////////////////////// Script q4_2_PeasantAI //Управлялка рабом - чтобы тока 1 дрался и не поднимал тревогу. ( if ( IsEnemy(this,0) ) then ( KillScript( ) ConsoleString("PeasantAI_ENEMY-reaction") //Убрать товарисча из группы зрителей. Ему будет не до наблюдений :). RemoveObject(Plantacia_zriteli,this) //Запомнить его объект - для дальнейших действий. q4_2_AngryPeasant = this SetPlayer(this,6) GSSetVar(0,"q4_2_draka_started",1) Sleep(10) SetDiplomacy(0,1,0) SetDiplomacy(1,0,0) SetDiplomacy(0,3,0) SetDiplomacy(3,0,0) for(i,GetPlayerUnits(3)) ( ResetTarget(i) ) for(i,GetPlayerUnits(1)) ( ResetTarget(i) ) ) ) Script q4_2_ZritelAI //Управлялка зрителем - шоб все сбежались и вылупились :). Но на нормальном расстоянии :). ( if ( IsLess(5,DistanceUnitUnit(this,q4_2_AngryPeasant)) //Если отбежали далеко ) then ( KillScript( ) ConsoleString("Zritel dogonyaet") //UMClear(this) //Walk(this) //UMGuard(this,GetX(this),GetY(this),0) Sleep(10) Run(this) UMFollow(this,q4_2_AngryPeasant) //Подождать пока не потребуется реакция AI... SleepUntil(IsLess(0,Add(IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.2"),2),IsLess(DistanceUnitUnit(this,q4_2_AngryPeasant),4)))) q4_2_ZritelAI(this) ) if ( IsLess(DistanceUnitUnit(this,q4_2_AngryPeasant),4) //Если подбежали достаточно близко ) then ( KillScript( ) ConsoleString("Zritel smotrit") //UMClear(this) Walk(this) UMGuard(this,GetX(this),GetY(this),0) SleepUntil(IsLess(0,Add(IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.2"),2),IsLess(5,DistanceUnitUnit(this,q4_2_AngryPeasant))))) q4_2_ZritelAI(this) ) if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.2"),2) //Бой закончен ) then ( KillScript( ) ConsoleString("Zritel uxodit") Walk(this) ResetTarget(this) ) ) Script q4_2_activateAI //Активировать скрипты управления рабами. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia"),1) //активен квест //IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.1"),1) //Нужное подзадание ) then ( KillScript( ) ConsoleString("q4_2_activateAI") //Запускаться скрипт будет всегда при входе в зону и активном квесте. //Активировать аишники для рабов. q4_2_PeasantAI(GetObjectByID("617463")) q4_2_PeasantAI(GetObjectByID("153729")) q4_2_PeasantAI(GetObjectByID("645637")) q4_2_PeasantAI(GetObjectByID("993088")) q4_2_PeasantAI(GetObjectByID("334400")) q4_2_PeasantAI(GetObjectByID("461614")) q4_2_PeasantAI(GetObjectByID("432427")) q4_2_PeasantAI(GetObjectByID("915890")) q4_2_PeasantAI(GetObjectByID("647795")) q4_2_PeasantAI(GetObjectByID("568756")) //Добавить всех людей на плантации в отдельную группу (будет юзится для AI зрителей :). ). //Рабы... AddObject(Plantacia_zriteli,GetObjectByID("617463")) AddObject(Plantacia_zriteli,GetObjectByID("153729")) AddObject(Plantacia_zriteli,GetObjectByID("645637")) AddObject(Plantacia_zriteli,GetObjectByID("993088")) AddObject(Plantacia_zriteli,GetObjectByID("334400")) AddObject(Plantacia_zriteli,GetObjectByID("461614")) AddObject(Plantacia_zriteli,GetObjectByID("432427")) AddObject(Plantacia_zriteli,GetObjectByID("915890")) AddObject(Plantacia_zriteli,GetObjectByID("647795")) AddObject(Plantacia_zriteli,GetObjectByID("568756")) //Надсмотры... AddObject(Plantacia_zriteli,GetObjectByID("12025362")) AddObject(Plantacia_zriteli,GetObjectByID("19665")) AddObject(Plantacia_zriteli,GetObjectByID("12025345")) AddObject(Plantacia_zriteli,GetObjectByID("251726")) AddObject(Plantacia_zriteli,GetObjectByID("12025363")) //Рейханд и управляющий... AddObject(Plantacia_zriteli,GetObjectByID("12025357")) AddObject(Plantacia_zriteli,GetObjectByID("12025356")) ) ) Script q4_2_draka //Начало драки ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.1"),1) //И подзадание нужное... IsEqual(GSGetVar(0,"q4_2_draka_started"),1) //Драка началась ) then ( KillScript( ) ConsoleString("q4_2_draka") //Выполнить подзадание GSSetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.1",2) //И выдать еще одно... GSSetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.2",1) //И сделать нажимабельным сундук. EnableLever(GetObjectByID("12025360"),1) //и еще одно... GSSetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.3",1) //Сделать всех зрителями... for(i,Plantacia_zriteli) ( q4_2_ZritelAI(i) ) GSSetVar(0,"q4_2_draka_started",2) //Запустить ждалку конца драки... ) ) Script q4_2_wait_draka //Ожидание завершения драки... ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.2"),1) //И подзадание нужное... IsEqual(GSGetVar(0,"q4_2_draka_started"),2) //Драка идет... ) then ( KillScript( ) ConsoleString("q4_2_wait_draka") Sleep(500) //Остановить драку у раба... ResetTarget(q4_2_AngryPeasant) SetPlayer(q4_2_AngryPeasant,3) ResetTarget(q4_2_AngryPeasant) SetDiplomacy(0,1,0) SetDiplomacy(1,0,0) SetDiplomacy(0,3,0) SetDiplomacy(3,0,0) ResetTarget(q4_2_AngryPeasant) //Выполнить подзадание GSSetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.2",2) //И сделать ненажимабельным сундук. EnableLever(GetObjectByID("12025360"),0) ) ) Script q4_2_key //Облутываем сундук... ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.3"),1) //И подзадание нужное... IsEqual(GetLeverState(GetObjectByID("12025360")),1) //Открыт сундук... ) then ( KillScript( ) ConsoleString("q4_2_key") GiveQuestItem(0,"plantacia_key") Sleep(30) //Выполнить подзадание GSSetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.3",2) //И сделать ненажимабельным сундук (и закрытым). SwitchLeverState(GetObjectByID("12025360"),0) EnableLever(GetObjectByID("12025360"),0) ) ) Script q4_2_crim //Сдох раб с которым дрались... ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia"),1) //активен квест IsDead(q4_2_AngryPeasant) //Раб здох... ) then ( KillScript( ) ConsoleString("q4_2_crim") //Как ни странно - выполнить подзадание... GSSetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.2",2) Sleep(15) //Но игрок- теперь крим. GSSetVar(0,"Hadagan_IsCriminal",1) dostup_susl_hadobjs_check1(NULL) ) ) Script q4_2_fail_return //Не удалось стырить ключ.... ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.2"),2) //подзадание Not(IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.3"),2)) //подзадание ) then ( KillScript( ) ConsoleString("q4_2_fail_return") //Облом - не успел стырить ключ... SendStringEvent( 0, "tutorial msg_q4_2_neuspel" ) //В этом варианте - гамовер.... возможно будет еще что-то... потом... KillUnit(GetLeader()) ) ) Script q4_2_vse_ok //И ключ стырили, и от раба отмахались... можно драпать... ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.2"),2) //подзадание IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.3"),2) //подзадание ) then ( KillScript( ) ConsoleString("q4_2_vse_ok") //Го к складу... GSSetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.4",1) ) ) Script q4_2_drapaem //Драпаем через склад... ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.4"),1) //подзадание Every(i,Heroes,IsInArea(15,GetX(i),GetY(i))) //Все "партийцы" возле входа в склад... ) then ( KillScript( ) ConsoleString("q4_2_drapaem") //Отобрать ключ... EraseQuestItem(0,95) Sleep(50) //Вылезаем через проход :). SetCP(GetLeader(),135.71,237.44,0) SetCP(GetObjectByName("Human_HelmSlave"),134.50,237.77,0) //Квест завершен... GSSetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia.4",2) Sleep(70) GSSetVar(0,"q.SuslPrtlGip.q4_2_pobeg_plantacia",2) QuestComplete(0,"q4_2_pobeg_plantacia") //Разблокировать точку перехода к плантации... GSSetVar(0,"z.suslprtlgip_to_susl_prtlgip_plantacia",2) //Выдать квест на добирание до логова.... Sleep(70) GSSetVar(0,"q.SuslPrtlGip.q5_naiti_logovo",1) //Но игрок - теперь крим. GSSetVar(0,"Hadagan_IsCriminal",1) dostup_susl_hadobjs_check1(NULL) ) ) //////////////////////// // q4_3 // //////////////////////// Script q4_3_vo_blya //Обля :). Сбежали :). ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_3_pobeg_vnagluyu"),0) //Неактивирован квест... IsEqual(GSGetVar(0,"sc_suslprtlgip_is_zagon_slave"),1) //В статусе раба в загоне... IsInArea(13,GetX(GetLeader()),GetY(GetLeader())) //На территории 3-й ловушки... IsEqual(GSGetVar(0,"sc_suslprtlgip_portaltrap3"),0) //Ловушка 3 отключена. Not(HaveItem(0,17)) //Нету бабла ) then ( KillScript( ) ConsoleString("q4_3_vo_blya") //Выполнить квест и убрать статус раба в загоне GSSetVar(0,"q.SuslPrtlGip.q4_3_pobeg_vnagluyu",2) QuestComplete(0,"q4_3_pobeg_vnagluyu") GSSetVar(0,"sc_suslprtlgip_is_zagon_slave",0) //Сделать игрока кримом... GSSetVar(0,"Hadagan_IsCriminal",1) dostup_susl_hadobjs_check1(NULL) ) if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_3_pobeg_vnagluyu"),0) //Неактивирован квест... IsEqual(GSGetVar(0,"sc_suslprtlgip_is_zagon_slave"),1) //В статусе раба в загоне... IsInArea(13,GetX(GetLeader()),GetY(GetLeader())) //На территории 3-й ловушки... IsEqual(GSGetVar(0,"sc_suslprtlgip_portaltrap3"),0) //Ловушка 3 отключена. HaveItem(0,17) //Есть бабло ) then ( KillScript( ) ConsoleString("q4_3_vo_blya") //Выполнить квест и убрать статус раба в загоне GSSetVar(0,"q.SuslPrtlGip.q4_3_pobeg_vnagluyu",2) QuestComplete(0,"q4_3_pobeg_vnagluyu") GSSetVar(0,"sc_suslprtlgip_is_zagon_slave",0) EraseQuestItem(0,17) GiveMoney(0,400) //Сделать игрока кримом... GSSetVar(0,"Hadagan_IsCriminal",1) dostup_susl_hadobjs_check1(NULL) ) ) ////////////////////////// // q22 // ////////////////////////// Script q22_begin //Встреча с ростовщиком... ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_3_pobeg_vnagluyu"),2) //Выполнен квест... IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm"),0) //Неактивирован квест... IsInArea(16,GetX(GetLeader()),GetY(GetLeader())) //Игрок на мосту в точке встречи... ) then ( KillScript( ) ConsoleString("q22_begin") //Растаман злобный SetDiplomacy(0,7,-1) SetDiplomacy(7,0,-1) //Перекинуть народ растамана куда надо.... UMGuard(Rastaman_guard1,118,282.74,0) SetCP(Rastaman_guard1,118,282.74,0) UMGuard(Rastaman,115.41,252.57,0) SetCP(Rastaman,115.41,252.57,0) UMGuard(Rastaman_guard2,118.22,248.60,0) SetCP(Rastaman_guard2,118.22,248.60,0) //Подождать... Sleep(10) //Двигаемся... UMFollow(Rastaman,GetLeader()) UMFollow(Rastaman_guard2,Rastaman) //Подождать пока растаман увидит Фазю... SleepUntil(GroupHas(UnitSee(Rastaman),GetLeader())) //Устроить разговор :). SetDiplomacy(0,7,0) SetDiplomacy(7,0,0) Sleep(10) SendStringEvent( 0, "tutorial gzb4_rostovshik_meet_scr1" ) SendStringEvent( 0, "tutorial gzb4_rostovshik_meet_scr2" ) SendStringEvent( 0, "tutorial gzb4_rostovshik_meet_scr3" ) SendStringEvent( 0, "tutorial gzb4_rostovshik_meet_scr4" ) SendStringEvent( 0, "tutorial gzb4_rostovshik_meet_scr5" ) SendStringEvent( 0, "tutorial gzb4_rostovshik_meet_scr6" ) SendStringEvent( 0, "tutorial gzb4_rostovshik_meet_scr7" ) Sleep(5) //Растаман нас уже знает GSSetVar(0,"sc_susl_rost_know_fazil",1) //И пока что не хочет вести дела... GSSetVar(0,"sc_susl_rost_friendly",0) GSSetVar(0,"sc_susl_rost_friendly_r",1) //Убрать всех "домой" SetCP(Rastaman_guard1,117,482,0) SetCP(Rastaman,103.000,490.000,0) SetCP(Rastaman_guard2,117,481,0) Sleep(10) ResetTarget(Rastaman_guard1) ResetTarget(Rastaman_guard2) ResetTarget(Rastaman) Sleep(50) //Инициализировать нужные переменные... GSSetVar(0,"q22_marsrut8",0) GSSetVar(0,"q22_marsrut9",0) GSSetVar(0,"q22_marsrut10",0) GSSetVar(0,"q22_marsrut11",0) GSSetVar(0,"q22_was_razgovor_helm",0) //Выдать квест... GSSetVar(0,"q.SuslPrtlGip.q22_find_helm",1) GSSetVar(0,"q.SuslPrtlGip.q22_find_helm.1",1) ) ) Script q22_karavan //Встреча с караваном... ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm"),1) //Квест... IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm.1"),1) //Подзадание... IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm.2"),0) //Квест... IsInArea(17,GetX(GetLeader()),GetY(GetLeader())) //Возле точки встречи с караваном... ) then ( KillScript( ) ConsoleString("q22_karavan") //Перекинуть караван за мост... SetCP(Reihand,243.80,72.05,0) UMGuard(Reihand,243.80,72.05,0) SetCP(GetObjectByName("Human_HelmSlave"),243.96,74.19,0) UMFollow(GetObjectByName("Human_HelmSlave"),Reihand) SetCP(Overseer1,245.78,76.18,0) UMFollow(Overseer1,GetObjectByName("Human_HelmSlave")) SetCP(Overseer2,242.20,76.42,0) UMFollow(Overseer2,GetObjectByName("Human_HelmSlave")) SetCP(Reihand_Clerk,244.26,78.23,0) UMFollow(Reihand_Clerk,Overseer2) SetCP(Reihand_Horse,244.44,81.89,0) UMFollow(Reihand_Horse,Reihand_Clerk) //Добавить необлутанных торговцев с "рынка" в группу отслеживания GSSetVar(0,"q22_perepolox",0) //Типа еще никого не лутали... q22_TorgovecAI(GetObjectByID("12025366")) q22_TorgovecAI(GetObjectByID("12025381")) q22_TorgovecAI(GetObjectByID("12025382")) //Подготовить группу зрителей... AddObject(Rinok_zriteli,GetObjectByID("997011")) AddObject(Rinok_zriteli,GetObjectByID("12025381")) AddObject(Rinok_zriteli,GetObjectByID("12025366")) AddObject(Rinok_zriteli,GetObjectByID("12025382")) AddObject(Rinok_zriteli,GetObjectByID("465177")) AddObject(Rinok_zriteli,GetObjectByID("979748")) AddObject(Rinok_zriteli,GetObjectByID("997021")) AddObject(Rinok_zriteli,GetObjectByID("370537")) AddObject(Rinok_zriteli,GetObjectByID("935457")) AddObject(Rinok_zriteli,GetObjectByID("996989")) AddObject(Rinok_zriteli,GetObjectByID("996990")) //И караванщиков... AddObject(Rinok_zriteli,Reihand) AddObject(Rinok_zriteli,Overseer1) AddObject(Rinok_zriteli,Overseer2) //Провалить подзадание 1 GSSetVar(0,"q.SuslPrtlGip.q22_find_helm.1",3) //Выдать подзадание 2 GSSetVar(0,"q.SuslPrtlGip.q22_find_helm.2",1) //Разрешить идти в 8-ю точку маршрута... GSSetVar(0,"q22_marsrut8",1) //AddRoundToArea( 28, 128.29, 67.97, 1 ) //Маршрут Рейханда. Точка 8. UMGuard(Reihand,128.29,67.97,0) //Чуть подождать Sleep(50) //И добавить Хельма под контроль... AddUnitUnderControl(0,GetObjectByName("Human_HelmSlave")) //И заблокировать его... GSSetVar(0,"HelmSlaveBlocked",1) ) ) Script q22_marsrut8 //Двигаемся к точке 9. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm"),1) //Квест... Not(IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm.2"),2)) //И подзадание нужное... IsInArea(28,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 8 точку маршрута. IsEqual(GSGetVar(0,"q22_marsrut8"),1) //Мы двигались к 8-й точке маршрута... ) then ( KillScript( ) ConsoleString("q22_marsrut8") //Послать Рейханда на... //... вторую точку. Sleep(450) GSSetVar(0,"q22_marsrut8",2) GSSetVar(0,"q22_marsrut9",1) //Добавлялка в арею в комменте - типа для справки тут :). //AddRoundToArea( 29, 126.27, 87.94, 1 ) //Маршрут Рейханда. Точка 9. UMGuard(Reihand,126.27,87.94,0) ) ) Script q22_marsrut9 //Двигаемся к точке 10. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm"),1) //Квест... Not(IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm.2"),2)) //И подзадание нужное... IsInArea(29,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 9 точку маршрута. IsEqual(GSGetVar(0,"q22_marsrut9"),1) //Мы двигались к 9-й точке маршрута... ) then ( KillScript( ) ConsoleString("q22_marsrut9") //Послать Рейханда на... //... вторую точку. Sleep(450) GSSetVar(0,"q22_marsrut9",2) GSSetVar(0,"q22_marsrut10",1) //Добавлялка в арею в комменте - типа для справки тут :). //AddRoundToArea( 30, 122.06, 145.53, 1 ) //Маршрут Рейханда. Точка 10. UMGuard(Reihand,122.06,145.53,0) ) ) Script q22_marsrut10 //Двигаемся к точке 11. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm"),1) //Квест... Not(IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm.2"),2)) //И подзадание нужное... IsInArea(30,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 10 точку маршрута. IsEqual(GSGetVar(0,"q22_marsrut10"),1) //Мы двигались к 10-й точке маршрута... ) then ( KillScript( ) ConsoleString("q22_marsrut10") //Послать Рейханда на... //... вторую точку. Sleep(450) GSSetVar(0,"q22_marsrut10",2) GSSetVar(0,"q22_marsrut11",1) //Добавлялка в арею в комменте - типа для справки тут :). // AddRoundToArea( 31, 166.95, 162.97, 1 ) //Маршрут Рейханда. Точка 11. UMGuard(Reihand,166.95,162.97,0) ) ) Script q22_marsrut11 //Последняя точка. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm"),1) //Квест... Not(IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm.2"),2)) //И подзадание нужное... IsInArea(31,GetX(Reihand),GetY(Reihand)) //Рейханд пришел в 11 точку маршрута. IsEqual(GSGetVar(0,"q22_marsrut11"),1) //Мы двигались к 11-й точке маршрута... ) then ( KillScript( ) ConsoleString("q22_marsrut11") //Пришли GSSetVar(0,"q22_marsrut11",2) ) ) Script q22_fail //Пришли к плантации. Провал квеста. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm"),1) //Квест... Not(IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm.2"),2)) //И подзадание нужное... IsEqual(GSGetVar(0,"q22_marsrut11"),2) //Мы двигались к 11-й точке маршрута... ) then ( KillScript( ) ConsoleString("q22_prishli") //Провалить 2-е подзадание и сам квест. GSSetVar(0,"q.SuslPrtlGip.q22_find_helm.2",3) GSSetVar(0,"q.SuslPrtlGip.q22_find_helm",3) //Перекинуть караванщиков внутрь плантации SetCP(Overseer1,193.047,180.151,0) ResetTarget(Overseer1) SetCP(Overseer2,188.928,178.246,0) ResetTarget(Overseer2) SetCP(Reihand_Clerk,189.999,172.978,0) ResetTarget(Reihand_Clerk) SetCP(Reihand,189.937,182.245,0) ResetTarget(Reihand) SetCP(Reihand_Horse,197.709,184.165,0) ResetTarget(Reihand_Horse) //Гамовер... SendStringEvent( 0, "tutorial msg_KaravanPrishel_gameover" ) Sleep(10) KillUnit(GetLeader()) ) ) Script q22_TorgovecAI //AI торговца. Его реакция на облутывание. Если при активации уже облутан - скрипт сразу здохнет. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm"),1) //Квест... Not(IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm.2"),2)) //Подзадание... //Если не входит в группу отслеживания Not(GroupHas(Rinok_torgovci,this)) //Уже облутан WasLooted(this) ) then ( KillScript( ) //Скрипт просто здох. Сразу. Потому что не нужен. ConsoleString("q22_TorgovecAI - looted before activate") ) if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm"),1) //Квест... Not(IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm.2"),2)) //Подзадание... //Если не входит в группу отслеживания Not(GroupHas(Rinok_torgovci,this)) //Не облутан (еще :D ). Not(WasLooted(this)) ) then ( KillScript( ) //Добавляем в группу... ConsoleString("q22_TorgovecAI - activated") AddObject(Rinok_torgovci,this) //Подновить скрипт q22_TorgovecAI(this) ) if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm"),1) //Квест... IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm.2"),1) //Подзадание... //Если входит в группу отслеживания GroupHas(Rinok_torgovci,this) //Облутали... WasLooted(this) IsEqual(GSGetVar(0,"q22_perepolox"),0) //Никого еще не лутали... ) then ( KillScript( ) //Бум реагировать :)... ConsoleString("q22_TorgovecAI - loot_timer...") GSSetVar(0,"q22_perepolox",1) //Типа началось... q22_oblutanniy = this //Убрать this из группы зрителей... он будет бегателем :). RemoveObject(Rinok_zriteli,this) Sleep(300) //Чуть подождать... //Начать йужосс... SendStringEvent( 0, "tutorial gzb5_aaaaa_oblutaliii_spg_t" ) For(i,Rinok_zriteli) ( q22_ZritelAI(i) ) //А управляющий - стоит на месте. UMGuard(Reihand_Clerk,GetX(Reihand_Clerk),GetY(Reihand_Clerk),0) //Хельм драпает... Run(GetObjectByName("Human_HelmSlave")) UMGuard(GetObjectByName("Human_HelmSlave"),179,78,0) ////И Хельма разблочить. //GSSetVar(0,"HelmSlaveBlocked",0) //Выполнить подзадание... GSSetVar(0,"q.SuslPrtlGip.q22_find_helm.2",2) //Выдать подзадание GSSetVar(0,"q.SuslPrtlGip.q22_find_helm.3",1) //Подождать какое-то время... Sleep(800) //Успокоить всех... GSSetVar(0,"q22_perepolox",0) ) ) Script q22_ZritelAI //Управлялка зрителем - шоб все сбежались и вылупились :). Но на нормальном расстоянии :). ( if ( IsLess(5,DistanceUnitUnit(this,q22_oblutanniy)) //Если отбежали далеко ) then ( KillScript( ) ConsoleString("Zritel dogonyaet") Sleep(10) Run(this) UMFollow(this,q22_oblutanniy) //Подождать пока не потребуется реакция AI... SleepUntil(IsLess(0,Add(IsEqual(GSGetVar(0,"q22_perepolox"),0),IsLess(DistanceUnitUnit(this,q22_oblutanniy),4)))) q22_ZritelAI(this) ) if ( IsLess(DistanceUnitUnit(this,q22_oblutanniy),4) //Если подбежали достаточно близко ) then ( KillScript( ) ConsoleString("Zritel smotrit") //UMClear(this) Walk(this) UMGuard(this,GetX(this),GetY(this),0) SleepUntil(IsLess(0,Add(IsEqual(GSGetVar(0,"q22_perepolox"),0),IsLess(5,DistanceUnitUnit(this,q22_oblutanniy))))) q22_ZritelAI(this) ) if ( IsEqual(GSGetVar(0,"q22_perepolox"),0) //Все закончилось ) then ( KillScript( ) ConsoleString("Zritel uxodit") Walk(this) ResetTarget(this) ) ) Script q22_koluchka_check //Втыкание колючки :). ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm.2"),1) //И подзадание нужное... HaveItem(0,97) //Есть колючка HaveItem(0,96) //Есть куда втыкать колючку ) then ( KillScript( ) ConsoleString("q22_koluchka_check") //Выполнить 2 подзадание GSSetVar(0,"q.SuslPrtlGip.q22_find_helm.2",2) //И отобрать колючку //и "жо..." тоже EraseQuestItem(0,97) EraseQuestItem(0,96) //Послать лошадь куда надо Run(Reihand_Horse) UMGuard(Reihand_Horse,80.99,209.66,0) Sleep(30) //Надсмотров - бегом за ней Run(Overseer1) Run(Overseer2) UMFollow(Overseer1,Reihand_Horse) UMFollow(Overseer2,Reihand_Horse) //Хельм драпает... Run(GetObjectByName("Human_HelmSlave")) UMGuard(GetObjectByName("Human_HelmSlave"),179,78,0) //И Хельма разблочить. //GSSetVar(0,"HelmSlaveBlocked",0) //BlockUnit(GetObjectByName("Human_HelmSlave"),0) //UMPlayer(GetObjectByName("Human_HelmSlave")) Sleep(50) //И Рейханд за ними.... Run(Reihand) UMFollow(Reihand,Reihand_Horse) //Выдать 3-е. GSSetVar(0,"q.SuslPrtlGip.q22_find_helm.3",1) ) ) Script q22_finish //Драпаем... :). ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm"),1) //активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm.3"),1) //И подзадание нужное... IsLess(20,DistanceUnitUnit(Reihand_Clerk,GetObjectByName("Human_HelmSlave"))) //Отбежали далеко от управляющего... ) then ( KillScript( ) ConsoleString("q22_finish") //Выполнить 3 подзадание GSSetVar(0,"q.SuslPrtlGip.q22_find_helm.3",2) //И сам квест... GSSetVar(0,"q.SuslPrtlGip.q22_find_helm",2) QuestComplete(0,"q22_find_helm") GSSetVar(0,"sc_susl_rost_friendly",1) //РОстовщик больше не злобный ) ) Script q22_razgovor //Разговор с Хельмом. ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm.2"),2) //Выполнено нужное подзадание... IsLess(DistanceUnitUnit(GetLeader(),GetObjectByName("Human_HelmSlave")),5) //Фазиль и Хельм достаточно близко... IsEqual(GSGetVar(0,"q22_was_razgovor_helm"),0) ) then ( KillScript( ) ConsoleString("q22_finish") //Перекинуть Хельма в группу игрока... SetPlayer(GetObjectByName("Human_HelmSlave"),0) //И в партию... AddUnitToParty( 0, "RedFazil::Human_HelmSlave", "Human_HelmSlave" ) //SetCurrentParty( 0, "RedFazil" ) RedeployParty(0) Sleep(10) GSSetVar(0,"HelmSlaveBlocked",0) UMPlayer(GetObjectByName("Human_HelmSlave")) //Перекинуть караванщиков внутрь плантации SetCP(Overseer1,193.047,180.151,0) ResetTarget(Overseer1) SetCP(Overseer2,188.928,178.246,0) ResetTarget(Overseer2) SetCP(Reihand_Clerk,189.999,172.978,0) ResetTarget(Reihand_Clerk) SetCP(Reihand,189.937,182.245,0) ResetTarget(Reihand) SetCP(Reihand_Horse,197.709,184.165,0) ResetTarget(Reihand_Horse) //Показать разговор... SendStringEvent( 0, "tutorial gzb3_helm_pobeg_var2_scr1" ) SendStringEvent( 0, "tutorial gzb3_helm_pobeg_var2_scr2" ) SendStringEvent( 0, "tutorial gzb3_helm_pobeg_var2_scr3" ) SendStringEvent( 0, "tutorial gzb3_helm_pobeg_var2_scr4" ) //Заблочить все точки перехода.... dostup_susl_hadobjs_check1(NULL) //И выдать q5 GSSetVar(0,"q.SuslPrtlGip.q5_naiti_logovo",1) //отметить что разговор уже был... GSSetVar(0,"q22_was_razgovor_helm",1) ) ) ////////////////////////////////// // Лошадь Рейханда // ////////////////////////////////// Script loshadR_vtikalka //Если нет колючки а лошадь облутали... ( if ( Not(HaveItem(0,97)) //Нет колючки HaveItem(0,96) //Есть куда втыкать колючку ) then ( KillScript( ) ConsoleString("loshadR_vtikalka") //Отобрать втыкалку EraseQuestItem(0,96) ) ) Script loshadR_koluchka //Если воткнули колючку и не активны 2 квеста где это юзится. ( if ( Not(IsEqual(GSGetVar(0,"q.SuslPrtlGip.q22_find_helm"),1)) //не активен квест Not(IsEqual(GSGetVar(0,"q.SuslPrtlGip.q4_1_pobeg_koluchka"),1)) //не активен квест HaveItem(0,97) //Есть колючка HaveItem(0,96) //Есть куда втыкать колючку ) then ( KillScript( ) ConsoleString("loshadR_koluchka") //Отобрать колючку //и "жо..." тоже EraseQuestItem(0,97) EraseQuestItem(0,96) //Послать лошадь куда надо Run(Reihand_Horse) UMGuard(Reihand_Horse,191,134,0) Sleep(600) //Вернуть на место Walk(Reihand_Horse) ResetTarget(Reihand_Horse) ) ) ////////////////////// // q5 // ////////////////////// Script q5_start //В принципе - инициализация... ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q5_naiti_logovo"),1) //Активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q5_naiti_logovo.1"),0) //Подзадание еще не активировалось ) then ( KillScript( ) ConsoleString("q5_start") //Собсно - элементарно заблокировать точки перехода и выдать 1-е подзадание... BlockAllZonePoints(NULL) GSSetVar(0,"q.SuslPrtlGip.q5_naiti_logovo.1",1) ) ) Script q5_za_gorodom //Если покинули город... ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q5_naiti_logovo"),1) //Активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q5_naiti_logovo.1"),1) //Подзадание Every(i,Heroes,Not(IsInArea(14,GetX(i),GetY(i)))) //Не в городе ) then ( KillScript( ) ConsoleString("q5_za_gorodom") //Выполнить 1-е подзадание. GSSetVar(0,"q.SuslPrtlGip.q5_naiti_logovo.1",2) //Выдать подзадание 2 GSSetVar(0,"q.SuslPrtlGip.q5_naiti_logovo.2",1) ) ) Script q5_logovo //Дошли до логова... ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q5_naiti_logovo"),1) //Активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q5_naiti_logovo.2"),1) //Подзадание Every(i,Heroes,IsInArea(4,GetX(i),GetY(i))) //Возле логова ) then ( KillScript( ) ConsoleString("q5_logovo") //Выполнить 2-е подзадание. GSSetVar(0,"q.SuslPrtlGip.q5_naiti_logovo.2",2) //Убрать Хельма из под контроля... RemoveUnitFromParty(0,"Human_HelmSlave") RemoveUnitFromControl(0,GetObjectByName("Human_HelmSlave")) //Заставить его бежать к логову Run(GetObjectByName("Human_HelmSlave")) UMGuard(GetObjectByName("Human_HelmSlave"),404.7,429.91,0) //Подождать... Sleep(150) //Убрать Хельма с карты RemoveUnitFromServer(GetObjectByName("Human_HelmSlave")) //Дать Фазе допуск в Логово.... GSSetVar(0,"sc_susl_kontrs_friendly",1) //Типа Хельм ща в логове... GSSetVar(0,"HelmSlaveIsInLogovo",1) //Разблочить точки перехода UnBlockAllZonePoints(NULL) //Выполнить квест GSSetVar(0,"q.SuslPrtlGip.q5_naiti_logovo",2) QuestComplete(0,"q5_naiti_logovo") ) ) ////////////////////////// // q6 // ////////////////////////// Script q6_prichal //Подошли к причалу... ( if ( IsEqual(GSGetVar(0,"q.SuslPrtlGip.q6_dobratsa_do_kaniona"),1) //Активен квест IsEqual(GSGetVar(0,"q.SuslPrtlGip.q6_dobratsa_do_kaniona.1"),1) //Подзадание Every(i,Heroes,IsInArea(3,GetX(i),GetY(i))) //Возле причала... ) then ( KillScript( ) ConsoleString("q6_prichal") //Выполнить 1-е подзадание. GSSetVar(0,"q.SuslPrtlGip.q6_dobratsa_do_kaniona.1",2) //Выдать подзадание 2 GSSetVar(0,"q.SuslPrtlGip.q6_dobratsa_do_kaniona.2",1) ) ) /////////////////////////////////////// // Тестовый скрипт // /////////////////////////////////////// Script test_script //Для различных тестов. ( if ( ) then ( KillScript( ) ConsoleString("test script launched") Sleep(100) BlockAllZonePoints(NULL) Sleep(100) UnBlockAllZonePoints(NULL) ) ) //////////////////////////////////////////// // WorldScript //////////////////////////////////////////// WorldScript ( Sleep( 2 ) //Чуть подождать чтоб не сглючило ConsoleString("______________________________________") ConsoleString("Zone: SuslPrtlGip. Status : Fine.") ConsoleString("--------------------------------------") FirstVisit( NULL ) CheckPortalIncome(NULL) //Проверка прибытия через портал - надо запускать как можно раньше //Глобальные скрипты зоны... //DebugScript(NULL) //Если надо проверить, работает ли скрипт - раскомментируйте. DoNameObjects(NULL) //Привязать идешники объектов к именным объектам SetDefZoneVars(NULL) //Выставить умолчальные для зоны переменые. Sleep( 3 ) //Чтобы другие скрипты не начали выполняться PortalOff(NULL) //Вырубить портал PlayerIsGod_CHECK(NULL) //Запустить проверяльщик и переключатель гадмода AllAlly_CHECK(NULL) //Запустить проверяльщик и переключатель нейтральности KeyPersDeathCheck(NULL) //Гамовер если здох ключевой персонаж //Скрипты добавляющие зоны на глоб мапу при подходе к зонам перехода. ukrivatel_enable(NULL) susl_prtlgip_plantacia_enable(NULL) susl_prtlgip_dock_enable(NULL) susl_bandits_logovo_enable(NULL) susl_rostovshik_enable(NULL) TechDemoZoneBlocker(NULL) //Скрипты управления механизмами в зоне... Portal_TCPA_On(NULL) Portal_TCPB_On(NULL) Teleportator(NULL) portal_traps(NULL) LootContainers(NULL) //Дипломатия Hadagan_Criminal(NULL) Hadagan_NoCriminal(NULL) Hadagan_Slave2Crim(NULL) FirezAgentsReaction_GameOver(NULL) //Управление персонажами UnitBlocker(NULL) //Другое... KillZabor(GetObjectById("1000066502")) //Это не столько убивалки сколько проверялки наличия факта убивания :). KillAngryMouse(NULL) //Проверка прибытия с другого аллода first_time_on_allod(NULL) //Сюжетные //Квест 1 q1_night(NULL) q1_west_bridge(NULL) q1_north_bridge(NULL) q1_bridges(NULL) q1_found(NULL) q1_razgovor(NULL) q1_return(NULL) q1_fail(NULL) //Квест 2 q2_pre_activation(NULL) q2_finded(NULL) q2_kaktus(NULL) q2_bablo(NULL) q2_return(NULL) q2_fail(NULL) //q20 q20_finish(NULL) q20_fail(NULL) //q21 q21_attack(NULL) q21_fail(NULL) //q4_1 q4_1_start(NULL) q4_1_trap1off(NULL) q4_1_marsrut1(NULL) q4_1_trap3off(NULL) q4_1_marsrut2(NULL) q4_1_marsrut3(NULL) q4_1_marsrut4(NULL) q4_1_marsrut5(NULL) q4_1_marsrut6(NULL) q4_1_marsrut7(NULL) q4_1_marsrut8(NULL) q4_1_marsrut9(NULL) q4_1_marsrut10(NULL) q4_1_marsrut11(NULL) q4_1_prishli(NULL) q4_1_koluchka_check(NULL) q4_1_drapaem(NULL) q4_1_za_gorodom(NULL) q4_1_logovo(NULL) //q4_2 q4_2_activateAI(NULL) q4_2_draka(NULL) q4_2_wait_draka(NULL) q4_2_key(NULL) q4_2_crim(NULL) q4_2_fail_return(NULL) q4_2_vse_ok(NULL) q4_2_drapaem(NULL) //q4_3 q4_3_vo_blya(NULL) //q22 q22_begin(NULL) q22_karavan(NULL) q22_marsrut8(NULL) q22_marsrut9(NULL) q22_marsrut10(NULL) q22_marsrut11(NULL) q22_fail(NULL) q22_koluchka_check(NULL) q22_finish(NULL) q22_razgovor(NULL) //Лошадь Рейханда + колючка = убойное сочетание (как снотворное + слабительное) loshadR_vtikalka(NULL) loshadR_koluchka(NULL) //q5 q5_start(NULL) q5_za_gorodom(NULL) q5_logovo(NULL) //q6 q6_prichal(NULL) //Можно запустить тестовый скрипт //test_script(NULL) //Если не нужен - должен быть закомментирован )