Код: |
Script _имя скрипта_
( if ( _Условие, при котором выполнится скрипт_ // можно оставить пустым ) then ( KillScript() // нужен для того, чтобы скрипт сработал только 1 раз // иначе будет выполняться 1 раз в цикл _Действия внутри скрипта_ ) ) |
Код: |
DeclareScript _имя скрипта_ ( _имя переменной1_ : _тип_ , _имя переменной2_ : _тип_) |
Код: |
GlobalVars (
_имя переменной1_ : _тип_ , _имя переменной2_ : _тип_ , // ... _имя переменнойN_ : _тип_ ) |
Код: |
GlobalVars (
NULL : object, i : object, Heroes : group, _имя переменной1_ : _тип_ , _имя переменной2_ : _тип_ , // ... _имя переменнойN_ : _тип_ ) DeclareScript _имя скрипта1_ ( _имя переменной1_ : _тип_ , _имя переменной2_ : _тип_) DeclareScript _имя скрипта2_ ( ) DeclareScript _имя скрипта3_ ( this : object ) Script _имя скрипта1_ ( if ( _Условие, при котором выполнится скрипт_ ) then ( KillScript() _Действия внутри скрипта_ ) ) Script _имя скрипта2_ ( if ( _Условие, при котором выполнится скрипт_ ) then ( KillScript() _Действия внутри скрипта_ ) ) Script _имя скрипта3_ ( if ( _Условие, при котором выполнится скрипт_ ) then ( KillScript() _Действия внутри скрипта_ ) ) WorldScript ( Sleep( 2 ) _имя скрипта3_( NULL ) ) |
Код: |
if ( fBool )// ошибка скрипта! if ( IsEqual(fBool , 1) )// а так сработает |
Код: |
DeclareScript #Follow#2 ( this : object , oGoing : object )
Script #Follow#1 ( if ( Any( i , Heroes, IsLess( DistanceUnitUnit( i , oGoing ) , 7 ) ) ) then ( KillScript() fDist = 15 For( VSS#i#val , Heroes ) ( // ошибка скрипта, т.к. в цикле не принимается переменная oGoing ! #FindPlayer ( VSS#i#val , oGoing ) ) Sleep(2) UMFollow ( oGoing , oPlayer ) #Follow#2 ( oPlayer , oGoing ) ) ) |
Код: |
GlobalVars ( NULL : object, VSS#i#val : object, i : object, Bailings : group ) DeclareScript Start_quest ( this : object ) Script Start_quest ( if ( ) then ( KillScript( ) QStart( "z23q2" ) QObjSeeUnit( "GetObject(1000309)" ) QObjSeeObject( "GetObject(1973972)" ) QObjSeeObject( "GetObject(973972)" ) QObjKillUnit( "GetObject (1000340)" ) QObjKillUnit( "GetObject(1000309)" ) ) ) Script Start_quest_2 ( if ( IsDead( GetObject (1973973) ) ) then ( QFinish( ) Sart_quest_3(NULL) ) ) Script Start_quest_3 ( if ( ) then ( QObjSeeUnit( "GetObject(1973973)" ) QObjKillUnit( "GetObject (1973973)" ) WorldScript ( Sleep( 2 ) AddObject( Bailings, GetObject(1000309) ) Start_quest(NULL) Start_quest_2(NULL) Start_quest_3(NULL) ) |
Код: |
GlobalVars ( NULL : object, VSS#i#val : object, i : object, Bailings : group, LMP Bailing Gipath Mage 8 : object ) DeclareScript Start_quest DeclareScript Start_quest_1 ( this : object ) DeclareScript Start_quest_2 ( this : object ) DeclareScript Start_quest_3 ( this : object ) DeclareScript Start_quest_4 ( this : object ) DeclareScript Start_quest_5 ( this : object ) Script Start_quest ( if ( ) then ( KillScript( ) QStart( "z23q2" ) GsSetVarMax(0,"q.z23q2.z23q2.1",1) QObjSeeUnit( "GetObject(1000309)" ) Start_quest_1(NULL) ) ) Script Start_quest_1 ( if ( Any(IsDead( "GetObject(1000309)" : object ) : 0) ) then ( KillScript( ) GsSetVarMax(0,"q.z23q2.z23q2.1",2) GsSetVarMax(0,"q.z23q2.z23q2.2",1) QObjSeeObject( "GetObject(1973972)" ) Start_quest_2(NULL) ) ) Script Start_quest_3 ( if ( Any(IsDead( "GetObject(1973972)" : object ) : 0) ) then ( KillScript( ) GsSetVarMax(0,"q.z23q2.z23q2.2",3) GsSetVarMax(0,"q.z23q2.z23q2.3",2) QObjSeeObject( "GetObject(973972)" ) QObjKillUnit( "GetObject (1000340)" ) Start_quest_4 ) ) Script Start_quest_4 ( if ( Any(IsDead( "GetObject(1000340)" : object ) : 1) ) then ( KillScript( ) GsSetVarMax(0,"q.z23q2.z23q2.3",4) GsSetVarMax(0,"q.z23q2.z23q2.4",3) QObjKillGroup("Bailings" : group ) Start_quest_5 ) ) Script Start_quest_5 ( if ( Any(IsDead( "Bailings" : group ) : 1) ) then ( KillScript( ) QObjSeeUnit( "GetObject(1973973)" ) QObjKillUnit( "GetObject (1973973)" ) QFinish( ) ) ) WorldScript ( Sleep( 2 ) LMP Bailing Gipath Mage 8 = GetObjectByID( "1000309" ) AddObject( Bailings, GetObject(1000309) ) ) |
Код: |
GlobalVars ( NULL : object, VSS#i#val : object, i : object, Bailings : group ) DeclareScript KillBailings#2#1 ( this : object ) DeclareScript KillBailings#2#2 ( this : object ) DeclareScript KillBailings#2#3 ( this : object ) DeclareScript KillBailings#2#4 ( this : object ) DeclareScript Close ( this : object ) Script KillBailings#2#1 ( if ( ) then ( KillScript( ) QStart( "z23q2" ) QObjSeeUnit( "GetObject(1000309)" ) ) ) Script KillBailings#2#2 ( if ( ) then ( KillScript( ) QObjSeeObject( "GetObject(1973972)" ) ) ) Script KillBailings#2#3 ( if ( ) then ( KillScript( ) QObjSeeObject( "GetObject(973972)" ) QObjKillUnit( "GetObject (1000340)" ) ) ) Script KillBailings#2#4 ( if ( ) then ( KillScript( ) QObjKillGroup( "grp" : Balings ) ) ) Script Close ( if ( ) then ( KillScript( ) QObjSeeUnit( "GetObject(1973973)" ) QObjKillUnit( "GetObject (1973973)" ) QFinish( ) ) ) WorldScript ( Sleep( 2 ) AddObject( Bailings, GetObject(1000309) ) KillBailings#2#1( NULL ) KillBailings#2#2( NULL ) KillBailings#2#3( NULL ) KillBailings#2#4( NULL ) Close( NULL ) ) |
Код: |
Script Kill QStart(zXqY) QObjSeeUnit ( id ) QObjSeeObject ( id ) QObjSeeObject ( id ) QObjKillUnit( id ) QObjKillUnit( id ) QObjSeeUnit( id ) QObjKillUnit( id ) QFinish() |
Код: |
Script Kill QStart(zXqY) QObjSeeUnit ( id ) QObjSeeObject ( id ) QObjSeeObject ( id ) QObjKillUnit( id ) QObjKillUnit( id ) QObjKillGroup("GrouoName") QObjSeeUnit( id ) QObjKillUnit( id ) QFinish() WorldScript ( Sleep( 2 ) AddObject( Bailings, GetObject(1000309) ) Kill(NULL) ) |
Код: |
GlobalVars ( NULL : object, VSS#i#val : object, i : object, Bailings : group, LMP Bailing Gipath Mage 8 : object ) DeclareScript KillBailing#1#1 ( this : object ) DeclareScript KillBailing#1#2 ( this : object ) DeclareScript KillBailing#1#3 ( this : object ) DeclareScript KillBailing#1#4 ( this : object ) DeclareScript KillBailing#1#5 ( this : object ) DeclareScript KillBailing#1#6 ( this : object ) DeclareScript KillBailing#1#7 ( this : object ) DeclareScript KillBailing#1#8 ( this : object ) Script KillBailing#1#1 ( if ( ) then ( KillScript( ) QStart("z23q2") GSSetVarMax( 0, "q.z23q2.z23q2.1",1 ) QObjSeeUnit( "GetObject(1000309)" ) KillBailing#1#2(NULL) ) ) Script KillBailing#1#2 ( if ( ) then ( KillScript( ) GSSetVarMax( 0,"q.z23q2.z23q2.1" ,2 ) GSSetVarMax( 0,"q.z23q2.z23q2.2" ,1 ) QObjSeeObject( "GetObject(1973972)" ) KillBailing#1#3(NULL) ) ) Script KillBailing#1#3 ( if ( ) then ( KillScript( ) GsSetVarMax( 0,"q.z23q2.z23q2.2" ,2 ) GsSetVarMax( 0,"q.z23q2.z23q2.3" ,1 ) QObjSeeObject( "GetObject(973972)" ) KillBailings#1#4 ) ) Script KillBailings #1#4 ( if ( ) then KillScript( ) GsSetVarMax( 0,"q.z23q2.z23q2.3" ,2 ) GsSetVarMax( 0,"q.z23q2.z23q2.4" ,1 ) QObjKillUnit( "GetObject (1000340)" ) KillBailing#1#5(NULL) ) ) Script KillBailing#1#5 ( if ( Every(i,Bailings,Not(IsAlive(i))) ) then ( KillScript( ) GsSetVarMax( 0,"q.z23q2.z23q2.4" ,2 ) GsSetVarMax( 0,"q.z23q2.z23q2.5" ,1 ) QObjKillGroup( Bailings ) KillBailing#1#6 ) ) Script KillBailing#1#6 ( if ( ) then ( KillScript( ) GsSetVarMax( 0,"q.z23q2.z23q2.5" ,2 ) GsSetVarMax( 0,"q.z23q2.z23q2.6" ,1 ) QObjSeeObject( "GetObject(1973973)" ) KillBailing#1#7 ) ) Script KillBailing#1#7 ( if ( ) then ( KillScript( ) GsSetVarMax( 0,"q.z23q2.z23q2.6" ,2 ) GsSetVarMax( 0,"q.z23q2.z23q2.7" ,1 ) QObjKillUnit( "GetObject (1973973)" ) KillBailing#1#8 ) ) Script KillBailing#1#8 ( if ( ) then ( KillScript( ) GsSetVarMax( 0,"q.z23q2.z23q2.7" ,2 ) GsSetVarMax( 0,"q.z23q2.z23q2.8" ,1 ) QFinish( ) ) ) WorldScript ( ConsoleString("Test!") Sleep( 2 ) LMP Bailing Gipath Mage 8 = GetObjectByID( "1000309" ) AddObject( Bailings, GetObject( 1000309 ) ) KillBailing#1#1( NULL ) KillBailing#1#2( NULL ) KillBailing#1#3( NULL ) KillBailing#1#4( NULL ) KillBailing#1#5( NULL ) KillBailing#1#6( NULL ) KillBailing#1#7( NULL ) KillBailing#1#8( NULL ) ) |
Код: |
GlobalVars ( NULL : object, VSS#i#val : object, i : object, Bailings : group, LMP Bailing Gipath Mage 8 : object ) DeclareScript KillBailing#1#1 ( this : object ) DeclareScript KillBailing#1#2 ( this : object ) DeclareScript KillBailing#1#3 ( this : object ) DeclareScript KillBailing#1#4 ( this : object ) DeclareScript KillBailing#1#5 ( this : object ) DeclareScript KillBailing#1#6 ( this : object ) DeclareScript KillBailing#1#7 ( this : object ) DeclareScript KillBailing#1#8 ( this : object ) Script KillBailing#1#1 ( if ( QObjSeeUnit( "GetObject(1000309)" ) ) then ( KillScript( ) QStart("z23q2") GSSetVarMax( 0, "q.z23q2.z23q2.1",1 ) KillBailing#1#2(NULL) ) ) Script KillBailing#1#2 ( if ( QObjSeeObject( "GetObject(1973972)" ) ) then ( KillScript( ) GSSetVarMax( 0,"q.z23q2.z23q2.1" ,2 ) GSSetVarMax( 0,"q.z23q2.z23q2.2" ,1 ) KillBailing#1#3(NULL) ) ) Script KillBailing#1#3 ( if ( QObjSeeObject( "GetObject(973972)" ) ) then ( KillScript( ) GsSetVarMax( 0,"q.z23q2.z23q2.2" ,2 ) GsSetVarMax( 0,"q.z23q2.z23q2.3" ,1 ) KillBailings#1#4 ) ) Script KillBailings #1#4 ( if ( QObjKillUnit( "GetObject (1000340)" ) ) then KillScript( ) GsSetVarMax( 0,"q.z23q2.z23q2.3" ,2 ) GsSetVarMax( 0,"q.z23q2.z23q2.4" ,1 ) KillBailing#1#5(NULL) ) ) Script KillBailing#1#5 ( if ( Every(i,Bailings,Not(IsAlive(i))) QObjKillGroup( Bailings ) ) then ( KillScript( ) GsSetVarMax( 0,"q.z23q2.z23q2.4" ,2 ) GsSetVarMax( 0,"q.z23q2.z23q2.5" ,1 ) KillBailing#1#6 ) ) Script KillBailing#1#6 ( if ( QObjSeeObject( "GetObject(1973973)" ) ) then ( KillScript( ) GsSetVarMax( 0,"q.z23q2.z23q2.5" ,2 ) GsSetVarMax( 0,"q.z23q2.z23q2.6" ,1 ) KillBailing#1#7 ) ) Script KillBailing#1#7 ( if ( QObjKillUnit( "GetObject (1973973)" ) ) then ( KillScript( ) GsSetVarMax( 0,"q.z23q2.z23q2.6" ,2 ) GsSetVarMax( 0,"q.z23q2.z23q2.7" ,1 ) KillBailing#1#8 ) ) Script KillBailing#1#8 ( if ( ) then ( KillScript( ) GsSetVarMax( 0,"q.z23q2.z23q2.7" ,2 ) GsSetVarMax( 0,"q.z23q2.z23q2.8" ,1 ) QFinish( ) ) ) WorldScript ( ConsoleString("Test!") Sleep( 2 ) LMP Bailing Gipath Mage 8 = GetObjectByID( "1000309" ) AddObject( Bailings, GetObject( 1000309 ) ) KillBailing#1#1( NULL ) KillBailing#1#2( NULL ) KillBailing#1#3( NULL ) KillBailing#1#4( NULL ) KillBailing#1#5( NULL ) KillBailing#1#6( NULL ) KillBailing#1#7( NULL ) KillBailing#1#8( NULL ) ) |
Код: |
QStart("z23q2") //Начать квест QObjSeeObject( "GetObject(1973972)" ) //Увидеть юнит QObjSeeObject( "GetObject(1973972)" ) //Увидеть объект QObjSeeObject( "GetObject(973972)" ) //Увидеть объект QObjKillUnit( "GetObject (1000340)" ) //Убить охрану объекта ( id=973972) Вот тут следовало бы прописать "применить предмет на объект" но я еще мал. QObjKillGroup( Bailings ) //Убить группу QObjSeeObject( "GetObject(1973973)" ) //Увидеть объект (по квесту это ключник, у него ключ) QObjKillUnit( "GetObject (1973973)" ) //Убить его, ну и заодно забрать ключ. QFinish( ) //Финиш (Ибо как сделать дверь закрывающеюся ключом не придумал) |
Код: |
GlobalVars ( //Объявляем глобальные переменные
NULL : object, //NULL особая переменная для загрузки скриптов в WorldScript i : object, //Данный символ будет считаться объектом KeyKeeper : object, //Что бы не писать GetObject( 1973973 ) мы заменяяем его на KeyKeeper Ohrana : group, //Тоже, что описано выше, но только для группы, короче слово Ohrana теперь название группы Bailings : group, Heroes : group ) DeclareScript Quest1 ( this : object ) //Declare script объявление имён скриптов и присвоение им переменной(ых) в данном случае this DeclareScript Quest2 ( this : object ) DeclareScript Quest3 ( this : object ) DeclareScript Quest4 ( this : object ) DeclareScript Quest5 ( this : object ) DeclareScript Quest6 ( this : object ) DeclareScript Quest7 ( this : object ) DeclareScript Quest8 ( this : object ) DeclareScript Quest9 ( this : object ) DeclareScript Quest10 ( this : object ) Script Quest1 //Старт скрипта ( if //Если ( GroupSize( GroupCross( GroupSee( Heroes ) , Bailings ) ) //Группа Heroes видит группу Bailings ) then //Тогда ( KillScript( ) //Убить скрипт если этого не написать, то этот скрипт при выполнении условия IF будет бесконечно повторяться жёстко вешая игру GsSetVar( 0 , "q.z23q2.z23q2.1" , 2 ) // Выполнить подзадание 1 GsSetVar( 0 , "q.z23q2.z23q2.2" , 1 ) // Запустить подзадание 2 Quest2( this ) //Подгрузить необходимый скрипт. Нет нужды подгружать их все сразу через WorldScript это только добавит лишних тормозов ) ) Script Quest2 ( if ( Any( i , Heroes , IsLess( DistanceUnitUnit( i , GetObject( 1973972 ) ) , 8 ) ) //У любого из группы Heroes дистанция до объекта (в данном случае это магический огонь) меньше 8 ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.2" , 2 ) GsSetVar( 0 , "q.z23q2.z23q2.3" , 1 ) Quest3( this ) ) ) Script Quest3 ( if ( Any( i , Heroes , IsLess( DistanceUnitUnit( i , GetObject( 973972 ) ) , 8 ) ) ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.3" , 2 ) GsSetVar( 0 , "q.z23q2.z23q2.4" , 1 ) GsSetVar( 0 , "q.z23q2.z23q2.5" , 1 ) Quest4( this ) Quest5( this ) Quest6( this ) ) ) Script Quest4 ( if ( Every( i , Ohrana , IsDead( i ) ) //Каждый из группы Ohrana отбросил копыта ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.4" , 2 ) ) ) Script Quest5 ( if ( IsEqual( GetLeverState( GetObject( 973972 ) ) , 1 ) //Положение рычага ( в данном случае алтарь "магический огонь" ) равно 1, то есть он активирован ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.5" , 2 ) ) ) Script Quest6 ( if ( IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.4" ) , 2 ) //Проверка выполнено ли подзадание 4 IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.5" ) , 2 ) //Проверка выполнено ли подзадание 5 ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.6" , 1 ) Quest7( this ) ) ) Script Quest7 ( if ( Every( i , Bailings , IsDead( i ) ) //Проверка убиты ли все члены группы Bailings ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.6" , 2 ) GsSetVar( 0 , "q.z23q2.z23q2.7" , 1 ) Quest8( this ) ) ) Script Quest8 ( if ( GroupHas( GroupSee( Heroes ) , KeyKeeper ) //Любой из группы Heroes увидел хранителя ключа ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.7" , 2 ) GsSetVar( 0 , "q.z23q2.z23q2.8" , 1 ) Quest9( this ) ) ) Script Quest9 ( if ( HaveItem( 0 , 111 ) //Есть ли у игрока 0 ( сервер ) ключ от портала? ( я присвоил ему ID 111 ) ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.8" , 2 ) GsSetVar( 0 , "q.z23q2.z23q2.9" , 1 ) Quest10( this ) ) ) Script Quest10 ( if ( IsEqual( GetLeverState( GetObject( 100000 ) ) , 1 ) //Активирован ли портал? То есть рычаг в положении 1 ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.9" , 2 ) GsSetVar( 0 , "q.z23q2.z23q2" , 2 ) //Квест завершён QuestComplete( 0 , "z23q2" ) //Пригласить дракончика полетать возле игрока :) ) ) WorldScript ( //WorldScript это уникальный тип скрипта который загружается при старте карты Sleep( 2 ) //Подождать немного чтобы не сглючило KeyKeeper = GetObject( 1973973 ) //KeyKeeper - это объект 1973973 AddObject( Ohrana , GetObject( 1000340 ) ) // Добавить в группу Ohrana объект 1000340 AddObject( Bailings , GetObject( 1973972 ) ) Quest1( NULL ) //Подгрузить первый скрипт (в данном случае Quest1 при старте карты) ) |
Код: |
Quest2( this ) //Подгрузить необходимый скрипт. Нет нужды подгружать их все сразу через WorldScript это только добавит лишних тормозов |
Цитата: |
Допустим, игрок нашёл указанных персонажей, Quest1 выполнился, Quest2 запущен и ждёт своего часа. И тут игрок вместо того чтобы дальше выполнять задание внезапно решает сбегать на базу пересобрать батарейку, или ещё куда сбегать, ну приспичило ему. Внимание вопрос - кто при следующем посещении локации запустит quest2? %). Понятно что это актуально больше для синглплеера, но и в мульти можно огрести веселый багодром %). |
Код: |
GlobalVars ( //Объявляем глобальные переменные
NULL : object, //NULL особая переменная для загрузки скриптов в WorldScript i : object, //Данный символ будет считаться объектом KeyKeeper : object, //Что бы не писать GetObject( 1973973 ) мы заменяяем его на KeyKeeper Ohrana : group, //Тоже, что описано выше, но только для группы, короче слово Ohrana теперь название группы Bailings : group, Heroes : group ) DeclareScript Quest1 ( this : object ) //Declare script объявление имён скриптов и присвоение им переменной(ых) в данном случае this DeclareScript Quest2 ( this : object ) DeclareScript Quest3 ( this : object ) DeclareScript Quest4 ( this : object ) DeclareScript Quest5 ( this : object ) DeclareScript Quest6 ( this : object ) DeclareScript Quest7 ( this : object ) DeclareScript Quest8 ( this : object ) DeclareScript Quest9 ( this : object ) DeclareScript Quest10 ( this : object ) Script Quest1 //Старт скрипта ( if //Если ( Not( IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.1" ) , 2 ) ) GroupSize( GroupCross( GroupSee( Heroes ) , Bailings ) ) //Группа Heroes видит группу Bailings ) then //Тогда ( KillScript( ) //Убить скрипт если этого не написать, то этот скрипт при выполнении условия IF будет бесконечно повторяться жёстко вешая игру GsSetVar( 0 , "q.z23q2.z23q2.1" , 2 ) // Выполнить подзадание 1 GsSetVar( 0 , "q.z23q2.z23q2.2" , 1 ) // Запустить подзадание 2 ) ) Script Quest2 ( if ( Not( IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.2" ) , 2 ) ) IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.1" ) , 2 ) Any( i , Heroes , IsLess( DistanceUnitUnit( i , GetObject( 1973972 ) ) , 8 ) ) //У любого из группы Heroes дистанция до объекта (в данном случае это магический огонь) меньше 8 ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.2" , 2 ) GsSetVar( 0 , "q.z23q2.z23q2.3" , 1 ) ) ) Script Quest3 ( if ( Not( IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.3" ) , 2 ) ) IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.2" ) , 2 ) Any( i , Heroes , IsLess( DistanceUnitUnit( i , GetObject( 973972 ) ) , 8 ) ) ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.3" , 2 ) GsSetVar( 0 , "q.z23q2.z23q2.4" , 1 ) GsSetVar( 0 , "q.z23q2.z23q2.5" , 1 ) ) ) Script Quest4 ( if ( Not( IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.4" ) , 2 ) ) IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.3" ) , 2 ) Every( i , Ohrana , IsDead( i ) ) //Каждый из группы Ohrana отбросил копыта ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.4" , 2 ) ) ) Script Quest5 ( if ( Not( IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.5" ) , 2 ) ) IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.3" ) , 2 ) IsEqual( GetLeverState( GetObject( 973972 ) ) , 1 ) //Положение рычага ( в данном случае алтарь "магический огонь" ) равно 1, то есть он активирован ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.5" , 2 ) ) ) Script Quest6 ( if ( Not( IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.6" ) , 1 ) ) Not( IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.6" ) , 2 ) ) IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.4" ) , 2 ) //Проверка выполнено ли подзадание 4 IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.5" ) , 2 ) //Проверка выполнено ли подзадание 5 ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.6" , 1 ) ) ) Script Quest7 ( if ( Not( IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.6" ) , 2 ) ) IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.6" ) , 1 ) Every( i , Bailings , IsDead( i ) ) //Проверка убиты ли все члены группы Bailings ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.6" , 2 ) GsSetVar( 0 , "q.z23q2.z23q2.7" , 1 ) ) ) Script Quest8 ( if ( Not( IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.7" ) , 2 ) ) IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.6" ) , 2 ) GroupHas( GroupSee( Heroes ) , KeyKeeper ) //Любой из группы Heroes увидел хранителя ключа ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.7" , 2 ) GsSetVar( 0 , "q.z23q2.z23q2.8" , 1 ) ) ) Script Quest9 ( if ( Not( IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.8" ) , 2 ) ) IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.7" ) , 2 ) HaveItem( 0 , 111 ) //Есть ли у игрока 0 ( сервер ) ключ от портала? ( я присвоил ему ID 111 ) ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.8" , 2 ) GsSetVar( 0 , "q.z23q2.z23q2.9" , 1 ) ) ) Script Quest10 ( if ( Not( IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.9" ) , 2 ) ) IsEqual( GsGetVar( 0 , "q.z23q2.z23q2.8" ) , 2 ) IsEqual( GetLeverState( GetObject( 100000 ) ) , 1 ) //Активирован ли портал? То есть рычаг в положении 1 ) then ( KillScript( ) GsSetVar( 0 , "q.z23q2.z23q2.9" , 2 ) GsSetVar( 0 , "q.z23q2.z23q2" , 2 ) //Квест завершён QuestComplete( 0 , "z23q2" ) //Пригласить дракончика полетать возле игрока :) ) ) WorldScript ( //WorldScript это уникальный тип скрипта который загружается при старте карты Sleep( 2 ) //Подождать немного чтобы не сглючило KeyKeeper = GetObject( 1973973 ) //KeyKeeper - это объект 1973973 AddObject( Ohrana , GetObject( 1000340 ) ) // Добавить в группу Ohrana объект 1000340 AddObject( Bailings , GetObject( 1973972 ) ) Quest1( NULL ) //Подгрузить скрипт (в данном случае Quest1 при старте карты) Quest2( NULL ) Quest3( NULL ) Quest4( NULL ) Quest5( NULL ) Quest6( NULL ) Quest7( NULL ) Quest8( NULL ) Quest9( NULL ) Quest10( NULL ) ) |
Цитата: |
Sagrer я кстати забыл, а в сингле все скрипты висят в памяти или таким же макаром сбрасываются при перезаходе на карту? |
Код: |
GlobalVars (
NULL : object, VSS#i#val : object, i : object, Garpii : group ) DeclareScript Garpii ( this : object ) Script Garpii ( if ( ) then ( //GetPlayerUnits( nDiplomacyGroup : float ) GroupCross( grpA : group , grpB : group ) : group// GroupSub( GetPlayerUnits( 2 ) , Garpii ) ) ) |