Дата: Четверг, 2012.04.19, 13:01 | Сообщение # 641
Ранг 7
Группа: Модераторы
Сообщений: 2175
Статус: Временно отсутствует
Так сходу я ошибок не увидел. Единственное, лучше не пользоваться функциями быстрого задания квестов (QObjKillUnit, QObjSeeObject и т.д.), т.к. они глючат и не всегда делают то, что подразумевалось. Из этих функций можно использовать только QStart и QFinish, т.к. дракончик у меня вылетал только про использовании QFinish. Остально лучше переписать.
- Папа, а правда, что от форумов тупеют? - ГыыЫ... сынок...ЛоЛ...
Declare script #StartQuest ( this : object ) Declare script #SubObj01 ( this : object ) Declare script #SubObj02 ( this : object ) Declare script #SubObj03 ( this : object ) Declare script #SubObj04 ( this : object )
Script #SubObj01 ( if ( Any( i , Heroes , GroupHas ( UnitSee ( i ) , GetObject( 1000309 ) ) )//Увидеть юнит ) then ( KillScript( ) GSSetVar( 0, "q.z23q2.z23q2.1", 2 )// завершаем первое подзадание успехом GSSetVar( 0, "q.z23qXX.z23q2.2", 1 )// стартуем второе подзадание #SubObj02 ( NULL ) ) ) Script #SubObj02 ( if ( IsEqual( GSGetVar( 0, "q.z23q2.z23q2.2" ) , 1 ) //Условия для выполнения второго подзадания (стартует только после выполнения первого подзадания) Any( i , Heroes , GroupHas ( UnitSee ( i ) , GetObject(1973972) ) ) //Увидеть объект //не уверен что сработает если объект (1973972) не юнит... //тут лучше делать проверку не на видимость а на расстояние от объекта //например так: //Any( i , Heroes, IsLess( DistanceUnitUnit( i , GetObject(1973972) ) , 7 ) ) //если расстояние от любого игрока до объекта <7 ) then ( KillScript( ) GSSetVar( 0, "q.z23q2.z23q2.2", 2 )// завершаем второе подзадание успехом GSSetVar( 0, "q.z23q2.z23q2.3", 1 )// стартуем третье подзадание #SubObj03 ( NULL ) ) )
Script #SubObj03 ( if ( IsEqual( GSGetVar( 0, "q.z23q2.z23q2.3" ) , 1 ) //Условия для выполнения третьего подзадания (стартует только после выполнения второго подзадания) Any( i , Heroes , GroupHas ( UnitSee ( i ) , GetObject(973972) ) ) //Увидеть объект //аналогично Not(IsAlive(GetObject (1000340))) //Убить охрану объекта ( id=973972) ) then ( Killscript( ) GSSetVar( 0, "q.z23q2.z23q2.3", 2 )// завершаем третье подзадание успехом GSSetVar( 0, "q.z23q2.z23q2.4", 1 )// стартуем четвертое подзадание #SubObj04 ( NULL ) ) )
Script #SubObj04 ( if ( IsEqual( GSGetVar( 0, "q.z23q2.z23q2.4" ) , 1 )//Условия для выполнения четвертого подзадания (стартует только после выполнения третьего подзадания) Not(IsAlive(GetObject (1973973))) //Убить его, ну и заодно забрать ключ. ) then ( KillScript( ) //QObjSeeObject( "GetObject(1973973)" ) //Увидеть объект (по квесту это ключник, у него ключ) //Если юнит убит то полюбому его кто то уже увидел, так что, проверка на "увидить" - лишняя GSSetVar( 0, "q.z23q2.z23q2.4", 2 )// завершаем четвертое подзадание успехом GSSetVar( 0, "q.z23q2.z23q2.5", 1 )// стартуем пятое подзадание #SubObj05 ( NULL ) ) )
Script #SubObj05 ( if ( IsEqual( GSGetVar( 0, "q.z23q2.z23q2.5" ) , 1 )// если выполнено 4-е задание стартуется 5-е Not(IsAlive(GetObject (1000309))) //Убить мага ) then ( KillScript( ) QFinish( ) //Финиш (Ибо как сделать дверь закрывающеюся ключом не придумал) ) )
Script #StartQuest ( if ( ) then ( KillScript( ) QStart( "z23q2" ) #SubObj01 ( NULL ) ) )
Дата: Четверг, 2012.04.19, 13:30 | Сообщение # 643
Ранг 7
Группа: Модераторы
Сообщений: 2175
Статус: Временно отсутствует
Quote (BAS)
QFinish( ) //Финиш (Ибо как сделать дверь закрывающеюся ключом не придумал)
Quote
Для того, что бы сундук (да и нет только сундук, а любой рычаг) открывался с помощью ловкости рук необходимо:
Если редактируешь моб с помощью MOBSurgeon, то на вкладке "Объекты" в разделе "Рычаги" -> "Имя твоего сундука (рычага)" в параметре "AsOpen" установить значение "5". А в параметре "Sleight" величину значения ловкости рук, при равной или больше которой, сундук будет открыт. Сохраняешь моб.
Если редактируешь моб с помощью MOB Reversing Tool, то заходи в ID_OBJECTDBFILE -> ID_OBJECTSECTION -> ID_LEVER -> ID_LEVER_SCIENCE_STATS_NEW. В этом разделе через запятую будет 3 цифры. Первую ставишь 5, вторую не трогаешь, а в третью ставишь величину навыка ловкости рук необходимую для открытия. Нажимаешь Apply Changes и сохраняешь моб.
Кстати вот остальные значения параметра "AsOpen": 0 - сундук можно открыть только с помощью скриптовой команды SwitchLeverState. 1 - открывается без условий. 5 - если я не ошибаюсь можно открыть не только с помощью ловкости рук, но и ключом. 8 - можно открыть исключительно ключом, ID которого прописан в параметре "KEY".
Инфа с gipat.ru
- Папа, а правда, что от форумов тупеют? - ГыыЫ... сынок...ЛоЛ...
Дата: Четверг, 2012.04.19, 14:02 | Сообщение # 645
Ранг 3
Группа: Пользователи
Сообщений: 106
Статус: Временно отсутствует
Врыл, Спасибо В общем ошибки я нашел. Что бы по квесту отвлечь кого-нибудь (допустим фейерверком), и подзадание "отвлечь" было выполнено необходимо создать зону idArea и если юнит окажется в этой зоне то задание считается выполненным. Или есть другие способы?