Код: |
CreateRandomizedFXSource( id : float , x1 : float , x2 : float , y1 : float , y2 : float , z1 : float , z2 : float , Volume : float , rad : float , NameWav : string )
ForIf( цикл ) PlayFX( float , float , float , float , string ) RecalcMercBriefings( ) SetDirectionToObject( nUnit : float ) SetPlayerAggression( float , float ) SetScience( object , float , float , float , float , float , float ) SetSpellAggression( Unit object , Aggression : float ) |
Цитата (Либерти): |
Возникли сложности с завершением квеста. А именно, он иногда завершается при выполнении условий, иногда нет. Еще не совсем понятно какие способы существуют для нормального и гарантированного завершения квестов. По-идее есть 2 метода: 1) QStart("z16q3") .... Qfinish( ) 2) GSSetVar( 0, "q.z16q3.z16q3", 2 ) Но как показала моя практика, оба способа не всегда срабатывают. Причем даже совместное использование обоих способов не дает гарантированный результат. Во всяком случае я с этим сегодня столкнулся. Почему квест не всегда завершается? |
Код: |
Script #Exit //1 ф-ия, запускает вторую ( if( UnitInSquare(_player, 260, 110, 270, 123) ) //игрок достигает зоны выхода then( KillScript() Sleep(5) #FinishQuest(NULL) //вызов ф-ии 2 ) ) Script #FinishQuest //2 ф-ия ( if( IsEqual(HaveItem(0, 17), 1) //есть ключевой предмет Every(i, _guards, IsDead(i)) //враги убиты IsAlive(GetObject(1020009)) //помошники живы IsAlive(GetObject(1020010)) ) then( KillScript() GSSetVar(0, "q.z16q3.z16q3", 2) Qfinish() FOR (b, _brothers) ( SetCPFast(b, 120, 53, 0 ) ) ) ) |
Код: |
GSSetVar(0, "q.z16q3.z16q3", 2)
QuestComplete(0, "q.z16q3.z16q3") |