Перейти к содержанию

Varang

Граждане
  • Постов

    775
  • Зарегистрирован

  • Посещение

Весь контент Varang

  1. Как я понимаю, Get здесь не используется: ПРИМЕР из книги: if ( ScriptRunning, CharGen == 0 ) StartScript CharGen Endif
  2. Понял. Где подсмотреть правильную, в руководстве по скриптописанию?
  3. Привет. Заново решил добраться и уже добить тот скрипт-переключатель. Проблема в том, что в этой строке находит ошибку: if ( GetScriptRunning "AI_USING_POTION_1" == 0 ). Пишет, что не знает функцию GetScriptRunning . Что не так? Вот мой конечный вариант свитчера: begin AI_USING_POTION if ( GetScriptRunning "AI_USING_POTION1" == 0 )StartScript AI_USING_POTION1StopScript AI_USING_POTIONreturnendifif ( GetScriptRunning "AI_USING_POTION2" == 0 )StartScript AI_USING_POTION2StopScript AI_USING_POTIONreturnendifif ( GetScriptRunning "AI_USING_POTION3" == 0 )StartScript AI_USING_POTION3StopScript AI_USING_POTIONreturnendifif ( GetScriptRunning "AI_USING_POTION4" == 0 )StartScript AI_USING_POTION4StopScript AI_USING_POTIONreturnendifif ( GetScriptRunning "AI_USING_POTION5" == 0 )StartScript AI_USING_POTION5StopScript AI_USING_POTIONreturnendifif ( GetScriptRunning "AI_USING_POTION6" == 0 )StartScript AI_USING_POTION6StopScript AI_USING_POTIONreturnendifif ( GetScriptRunning "AI_USING_POTION7" == 0 )StartScript AI_USING_POTION7StopScript AI_USING_POTIONreturnendifif ( GetScriptRunning "AI_USING_POTION8" == 0 )StartScript AI_USING_POTION8StopScript AI_USING_POTIONreturnendif end
  4. так и сделал. Создал тестового парня на выходе из пещер Уршилаку у одного из сейвов. Все норм регенится - и магия, и мана. Щас еще бойца запилю и усталость проверю. Проверил, все работает. УРА! Теперь осталось обдумать, развесить ли скрипт индивидуально, или через Свитчер, размножив на 5-8 копий...но этот уж потом. ПС Маг с регеном маны просто имба...боец с регеном выносливости - тоже... ПС Еще раз всем спасибо за терпеливую помощь!
  5. Я больше ничего не добавлял. Я нашел ошибку в пересейве, и написал скрипт полностью, решив, что в этом косяк, но как только я добавил блоки Магии и Усталости, опять все перестало робить (см выше) Провел тест - убрал Магию и Усталость - все снова заработало! ПС Мне уже скоро сниться будет, как я убиваю гарнизон Валенвариона в 100500 раз))))
  6. Я понял в чем косяк. Походу, локация при перезагрузке не грузилась с новым инвентарем. Потому и штука такая, щас начал заново вообще из др. этапа игры, и все получилось. Инвентарь походу добавляется 1 раз, при пересейве не работает, а в этой локации я видимо как-то уже был, хоть и не дрался с орками. Как я понял, по итогу должно быть так! begin AI_USING_POTION float timerHealthfloat timerMagickafloat timerFatigueshort doOnceif ( doOnce ); NPC мертв returnelseIf ( OnDeath ); NPC умер set doOnce to 1; фиксируем смерть returnendif if ( timerHealth > 0 ); если задан таймер задержки set timerHealth to ( timerHealth - getsecondspassed ); уменьшаем таймерelseif ( GetEffect, sEffectRestoreHealth ); еще не кончился эффектelseif ( GetHealthGetRatio < 0.5); стало мало жизни if ( GetItemCount "p_restore_health_e" > 0 ); есть в наличии бутылек Equip "p_restore_health_e" 1; выпить бутылек set timerHealth to 3; задаем три секунды таймеру elseif ( GetItemCount "p_restore_health_q" > 0 ); проверка на следующий бутылек если нет предыдущего Equip "p_restore_health_q" 1 set timerHealth to 3 elseif ( GetItemCount "p_restore_health_c" > 0 ) Equip "p_restore_health_c" 1 set timerHealth to 3 elseif ( GetItemCount "p_restore_health_s" > 0 ) Equip "p_restore_health_s" 1 set timerHealth to 3 elseif ( GetItemCount "p_restore_health_b" > 0 ) Equip "p_restore_health_b" 1 set timerHealth to 3 endifendif;----------------------------МАГИЯif ( timerMagicka > 0 ) set timerMagicka to ( timerMagicka - getsecondspassed )elseif ( GetEffect, sEffectRestoreSpellPoints )elseif ( GetMagicka < 150) if ( GetItemCount "p_restore_magicka_e" > 0 ) Equip "p_restore_magicka_e" 1 set timerMagicka to 3elseif ( GetItemCount "p_restore_magicka_q" > 0 ) Equip "p_restore_magicka_q" 1 set timerMagicka to 3elseif ( GetItemCount "p_restore_magicka_s" > 0 ) Equip "p_restore_magicka_s" 1 set timerMagicka to 3elseif ( GetItemCount "p_restore_magicka_c" > 0 ) Equip "p_restore_magicka_c" 1 set timerMagicka to 3elseif ( GetItemCount "p_restore_magicka_b" > 0 ) Equip "p_restore_magicka_b" 1 set timerMagicka to 3endifendif;-------------------Усталостьif ( timerFatigue > 0 ) set timerFatigue to ( timerFatigue - getsecondspassed )elseif ( GetEffect, sEffectRestoreFatigue )elseif ( GetFatigue < 150) if ( GetItemCount "p_restore_Fatigue_e" > 0 ) Equip "p_restore_Fatigue_e" 1 set timerFatigue to 3elseif ( GetItemCount "p_restore_Fatigue_q" > 0 ) Equip "p_restore_Fatigue_q" 1 set timerFatigue to 3elseif ( GetItemCount "p_restore_Fatigue_s" > 0 ) Equip "p_restore_Fatigue_s" 1 set timerFatigue to 3elseif ( GetItemCount "p_restore_Fatigue_c" > 0 ) Equip "p_restore_Fatigue_c" 1 set timerFatigue to 3elseif ( GetItemCount "p_restore_Fatigue_b" > 0 ) Equip "p_restore_Fatigue_b" 1 set timerFatigue to 3endifendifend КОРОЧЕ, ВСЯ ЭТА МАХИНА ВМЕСТЕ НЕ РАБОТАЕТ (ОПЯТЬ)!!! Хотя отдельно со здоровьем работала вполне....что за нах... ЧТО УЖЕ НЕ НРАВИТСЯ ЭТОМУ КС, БЛИН!!!
  7. begin AI_USING_POTION float timerHealth short doOnce if ( doOnce ); NPC мертв return elseIf ( OnDeath ); NPC умер set doOnce to 1; фиксируем смерть return endif if ( timerHealth > 0 ); если задан таймер задержки set timerHealth to ( timerHealth - getsecondspassed ); уменьшаем таймер elseif ( GetEffect, sEffectRestoreHealth ); еще не кончился эффект elseif ( GetHealthGetRatio < 0.5); стало мало жизни if ( GetItemCount "p_restore_health_e" > 0 ); есть в наличии бутылек Equip "p_restore_health_e" 1; выпить бутылек set timerHealth to 2; задаем три секунды таймеру elseif ( GetItemCount "p_restore_health_q" > 0 ); проверка на следующий бутылек если нет предыдущего Equip "p_restore_health_q" 1 set timerHealth to 2 elseif ( GetItemCount "p_restore_health_c" > 0 ) Equip "p_restore_health_c" 1 set timerHealth to 2 elseif ( GetItemCount "p_restore_health_s" > 0 ) Equip "p_restore_health_s" 1 set timerHealth to 2 elseif ( GetItemCount "p_restore_health_b" > 0 ) Equip "p_restore_health_b" 1 set timerHealth to 2 endif endif end
  8. Нет, не помогло. Как пропадает разом 3 бутылки у целителя, так оно и осталось...может, через StopScript попробовать? Вдобавок некоторые НПС стали вдруг "тупить" с выпиванием зелий...
  9. Мне так и написать в скрипте своем? Скрипт просит endif. На return ошибка. И на set
  10. Типа если здоровье 0, остановить скрипт? if ( GetHealth <= 0 ) StopScript AI_Using_Potion return endif
  11. да, но теперь я столкнулся в вашем варианте с багом, что ИИ с малым кол-м хитов, либо с зельями слабой мощности ухитряется выжирать таки по 3 зелья зараз...с эксклюзивными зельями, либо с качественными на крепких противниках такого нет. Пример, в Валенварионе есть целитель, орк - убиваю его с 2-3 ударов, 1й удар - снес больше 50%, пьет зелье, 2й удар - эффект не спасает его, т.к. броня слабая, и входящий урон слишком высок, он умирает. Открываю рюкзак - нет 3 экскл. зелий. Захожу в хижину - 2 орка-бойца, в среднем убиваю с 6-7 ударов. 2-3 удара - здоровье меньше 50 - пьет, сношу еще хиты - пьет, и так по кругу, пока не выпьет все 4 бутылки, а внести столько урона, чтобы перебить эффективность регена и качество брони\кол-ва жизней я не могу, поэтому орк живет стабильно, пока его зелья не кончатся, и тут все четко...в чем причина???
  12. begin AI_USING_POTION float timerHealth5float timerMagicka5float timerFatigue5 if ( timerHealth5 > 0 ) set timerHealth5 to ( timerHealth5 - getsecondspassed )elseif ( GetHealthGetRatio > 0.5)elseif ( GetEffect, sEffectRestoreHealth )elseif ( GetItemCount "p_restore_health_e" > 0 ) Equip "p_restore_health_e" 1 set timerHealth5 to 2returnelseif ( GetHealthGetRatio > 0.5)elseif ( GetEffect, sEffectRestoreHealth )elseif ( GetItemCount "p_restore_health_q" > 0 ) Equip "p_restore_health_q" 1 set timerHealth5 to 2returnelseif ( GetHealthGetRatio > 0.5)elseif ( GetEffect, sEffectRestoreHealth )elseif ( GetItemCount "p_restore_health_c" > 0 ) Equip "p_restore_health_c" 1 set timerHealth5 to 2returnelseif ( GetHealthGetRatio > 0.5)elseif ( GetEffect, sEffectRestoreHealth )elseif ( GetItemCount "p_restore_health_s" > 0 ) Equip "p_restore_health_s" 1 set timerHealth5 to 2returnelseif ( GetHealthGetRatio > 0.5)elseif ( GetEffect, sEffectRestoreHealth )elseif ( GetItemCount "p_restore_health_b" > 0 ) Equip "p_restore_health_b" 1 set timerHealth5 to 2returnendif;----------------------------------------------------------------------------------------if ( timerMagicka5 > 0 ) set timerMagicka5 to ( timerMagicka5 - getsecondspassed )elseif ( GetMagicka > 175) ; magicelseif ( GetEffect, sEffectRestoreSpellPoints )elseif ( GetItemCount "p_restore_magicka_b" > 0 ) Equip "p_restore_magicka_b" 1 set timerMagicka5 to 2returnelseif ( GetMagicka > 175) ; magicelseif ( GetEffect, sEffectRestoreSpellPoints )elseif ( GetItemCount "p_restore_magicka_c" > 0 ) Equip "p_restore_magicka_c" 1 set timerMagicka5 to 2returnelseif ( GetMagicka > 175) ; magicelseif ( GetEffect, sEffectRestoreSpellPoints )elseif ( GetItemCount "p_restore_magicka_s" > 0 ) Equip "p_restore_magicka_s" 1 set timerMagicka5 to 2returnelseif ( GetMagicka > 175) ; magicelseif ( GetEffect, sEffectRestoreSpellPoints )elseif ( GetItemCount "p_restore_magicka_q" > 0 ) Equip "p_restore_magicka_q" 1 set timerMagicka5 to 2returnelseif ( GetMagicka > 175) ; magicelseif ( GetEffect, sEffectRestoreSpellPoints )elseif ( GetItemCount "p_restore_magicka_e" > 0 ) Equip "p_restore_magicka_e" 1 set timerMagicka5 to 2returnendif ; -----------------------------------------------------------------------if ( timerFatigue5 > 0 ) set timerFatigue5 to ( timerFatigue5 - getsecondspassed )elseif ( GetFatigue > 150) ; fatigueelseif ( GetEffect, sEffectRestoreFatigue )elseif ( GetItemCount "p_restore_fatigue_b" > 0 ) Equip "p_restore_fatigue_b" set timerFatigue5 to 2returnelseif ( GetFatigue > 150) ; fatigueelseif ( GetEffect, sEffectRestoreFatigue )elseif ( GetItemCount "p_restore_fatigue_c" > 0 ) Equip "p_restore_fatigue_c" set timerFatigue5 to 2returnelseif ( GetFatigue > 150) ; fatigueelseif ( GetEffect, sEffectRestoreFatigue )elseif ( GetItemCount "p_restore_fatigue_s" > 0 ) Equip "p_restore_fatigue_s" set timerFatigue5 to 2returnelseif ( GetFatigue > 150) ; fatigueelseif ( GetEffect, sEffectRestoreFatigue )elseif ( GetItemCount "p_restore_fatigue_q" > 0 ) Equip "p_restore_fatigue_q" set timerFatigue5 to 2returnelseif ( GetFatigue > 150) ; fatigueelseif ( GetEffect, sEffectRestoreFatigue )elseif ( GetItemCount "p_restore_fatigue_e" > 0 ) Equip "p_restore_fatigue_e" set timerFatigue5 to 2returnendif; ------------------------------------------------------------------------- end То есть так тоже не годится, надо разделить?
  13. Примерно сообразил взаимосвязь. Как я полагаю, я могу в будущем делать аналогичную привязку на зелья лечения отравлений, паралича, развеивания, привязывая их к наличию конкретных эффектов заклинаний на НПС? Либо заставлять НПС кастовать на себя щиты и излечивания, если у них начинают выбивать здоровье?
  14. В чем плюсы-минусы, по сравнению с прежней, тоже рабочей? А то я на основе старой уже начал делать вовсю магию и усталость)) Вот тут вроде все робит: begin AI_USING_POTION float timerHealth5 if ( timerHealth5 > 0 ) set timerHealth5 to ( timerHealth5 - getsecondspassed )elseif ( GetHealthGetRatio > 0.5)elseif ( GetEffect, sEffectRestoreHealth )elseif ( GetItemCount "p_restore_health_e" > 0 ) Equip "p_restore_health_e" 1 set timerHealth5 to 2returnelseif ( GetHealthGetRatio > 0.5)elseif ( GetEffect, sEffectRestoreHealth )elseif ( GetItemCount "p_restore_health_q" > 0 ) Equip "p_restore_health_q" 1 set timerHealth5 to 2returnelseif ( GetHealthGetRatio > 0.5)elseif ( GetEffect, sEffectRestoreHealth )elseif ( GetItemCount "p_restore_health_c" > 0 ) Equip "p_restore_health_c" 1 set timerHealth5 to 2returnelseif ( GetHealthGetRatio > 0.5)elseif ( GetEffect, sEffectRestoreHealth )elseif ( GetItemCount "p_restore_health_s" > 0 ) Equip "p_restore_health_s" 1 set timerHealth5 to 2returnelseif ( GetHealthGetRatio > 0.5)elseif ( GetEffect, sEffectRestoreHealth )elseif ( GetItemCount "p_restore_health_b" > 0 ) Equip "p_restore_health_b" 1 set timerHealth5 to 2return;endif;----------------------------------------------------------------------------------------elseif ( GetMagicka > 175) ; magicelseif ( GetEffect, sEffectRestoreSpellPoints )elseif ( GetItemCount "p_restore_magicka_b" > 0 ) Equip "p_restore_magicka_b" 1 set timerHealth5 to 2returnelseif ( GetMagicka > 175) ; magicelseif ( GetEffect, sEffectRestoreSpellPoints )elseif ( GetItemCount "p_restore_magicka_c" > 0 ) Equip "p_restore_magicka_c" 1 set timerHealth5 to 2returnelseif ( GetMagicka > 175) ; magicelseif ( GetEffect, sEffectRestoreSpellPoints )elseif ( GetItemCount "p_restore_magicka_s" > 0 ) Equip "p_restore_magicka_s" 1 set timerHealth5 to 2returnelseif ( GetMagicka > 175) ; magicelseif ( GetEffect, sEffectRestoreSpellPoints )elseif ( GetItemCount "p_restore_magicka_q" > 0 ) Equip "p_restore_magicka_q" 1 set timerHealth5 to 2returnelseif ( GetMagicka > 175) ; magicelseif ( GetEffect, sEffectRestoreSpellPoints )elseif ( GetItemCount "p_restore_magicka_e" > 0 ) Equip "p_restore_magicka_e" 1 set timerHealth5 to 2return;endif ; -----------------------------------------------------------------------elseif ( GetFatigue > 150) ; fatigueelseif ( GetEffect, sEffectRestoreFatigue )elseif ( GetItemCount "p_restore_fatigue_b" > 0 ) Equip "p_restore_fatigue_b" set timerHealth5 to 2returnelseif ( GetFatigue > 150) ; fatigueelseif ( GetEffect, sEffectRestoreFatigue )elseif ( GetItemCount "p_restore_fatigue_c" > 0 ) Equip "p_restore_fatigue_c" set timerHealth5 to 2returnelseif ( GetFatigue > 150) ; fatigueelseif ( GetEffect, sEffectRestoreFatigue )elseif ( GetItemCount "p_restore_fatigue_s" > 0 ) Equip "p_restore_fatigue_s" set timerHealth5 to 2returnelseif ( GetFatigue > 150) ; fatigueelseif ( GetEffect, sEffectRestoreFatigue )elseif ( GetItemCount "p_restore_fatigue_q" > 0 ) Equip "p_restore_fatigue_q" set timerHealth5 to 2returnelseif ( GetFatigue > 150) ; fatigueelseif ( GetEffect, sEffectRestoreFatigue )elseif ( GetItemCount "p_restore_fatigue_e" > 0 ) Equip "p_restore_fatigue_e" set timerHealth5 to 2returnendif; ------------------------------------------------------------------------- end Только вот зелья усталости подозрительно часто не пьют, хотя секирами махают здорово...может, скобки наооборот надо?
  15. Olol, ваша версия с кучей ifов и endifов не робит. Сразу при вхождении в локации НПС выжирают зелья. Elseif-ы стабильно работали. В чем принципиальное разделение по if и elseif? У меня и с elsif уже теперь работало все...
  16. Задержку планирую общую для всех. Куда в итоге вставить ретурн, а то я его вместо endif воткнул, а КС поругался. Надо просто до него? А таймеры стереть вчистую, да? begin AI_USING_POTION float timerHealth5 if ( timerHealth5 > 0 ) set timerHealth5 to ( timerHealth5 - getsecondspassed )elseif ( GetHealthGetRatio > 0.5)elseif ( GetEffect, sEffectRestoreHealth )elseif ( GetItemCount "p_restore_health_e" > 0 ) Equip "p_restore_health_e" 1 set timerHealth5 to 3returnelseif ( GetHealthGetRatio > 0.5)elseif ( GetEffect, sEffectRestoreHealth )elseif ( GetItemCount "p_restore_health_q" > 0 ) Equip "p_restore_health_q" 1 set timerHealth5 to 3returnelseif ( GetHealthGetRatio > 0.5)elseif ( GetEffect, sEffectRestoreHealth )elseif ( GetItemCount "p_restore_health_c" > 0 ) Equip "p_restore_health_c" 1 set timerHealth5 to 3returnelseif ( GetHealthGetRatio > 0.5)elseif ( GetEffect, sEffectRestoreHealth )elseif ( GetItemCount "p_restore_health_s" > 0 ) Equip "p_restore_health_s" 1 set timerHealth5 to 3returnelseif ( GetHealthGetRatio > 0.5)elseif ( GetEffect, sEffectRestoreHealth )elseif ( GetItemCount "p_restore_health_b" > 0 ) Equip "p_restore_health_b" 1 set timerHealth5 to 3returnendif end
  17. Спасибо! На магию и усталость аналогично? То бишь: if ( GetMagicka < 175) ; magic if ( GetFatigue < 150) ; fatigue МЕНЯЕМ НА: if ( GetMagicka > 175) ; magic if ( GetFatigue >150) ; fatigue
  18. Понял. А почему у тебя: elseif ( GetHealthGetRatio > 0.5), а не < , как мне делали в предыдущих вариантах скрипта? Т.е. больше, а не меньше, а работает как надо? Вопрос 2: на остальные зелья мне просто копировать через endif, меняя ID зелий?
  19. То есть условие elseif ( GetHealthGetRatio < 0.5) мне в этот же скрипт не засунуть? Эффект от вашего варианта скрипта сейчас таков, что как только я захожу в локацию, НПС выпивает зелье через 3 сек, потом автоматом еще зелье, и еще зелье. Неужели сюда нельзя сразу привязать elseif ( GetHealthGetRatio < 0.5)? А схема должна быть - снесли 50% хитов - выпил зелье - ждет 3 сек (либо ждет, когда кончится эффект от предыдущего) - пьет новое, и так, пока не сдохнет или зелья не кончатся.
  20. А причем там проверка на глюк? В моем-то скрипте нет "глюка" Неужели сложно показать отдельным цветом в одном блоке, как, что и куда нужно вставить в мой конкретный скрипт, чтобы я сделал по аналогии, тем более, если вы знаете. А не задавать наводящие вопросы нубу "а что тут делает таймер" или кидать фразы вроде "сделай как я вон там, где ты все равно ни шиша не понимаешь"? Вот последняя РАБОЧАЯ версия скрипта, где благодаря предыдущей вашей помощи работает все, кроме тайминга - зелья пьются залпом зараз. Помогите уже доделать, пожалуйста, я уже устал что-то делать неправильно, дошло до того, что у меня НПС пьют зелья сразу, как я входу в локацию...дайте уже возможность человеку поиграть, а не сидеть 3й день в кс и тупо тестя 1 приевшуюся локацию по 15 разу! Спасибо.begin AI_USING_POTION float timerHealth5 if ( GetEffect, sEffectRestoreHealth ); сделать такой же блок для всех пяти переменных и, соответственно, менять айди заклинанияStopScript AI_USING_POTIONset timerHealth5 to ( timerHealth5 + getsecondspassed )if ( timerHealth5 >= 3 ) ; 3 секунд откатreturnset timerHealth5 to 0endifendif elseif ( GetItemCount "p_restore_health_e" > 0 )endifset timerHealth5 to 0Equip "p_restore_health_e" 1returnendifendif
  21. Ребят, я уже пробовал несколько раз, и ввиду того, что скрипты не писал особо никогда, плюхаюсь и не могу сделать как надо. Помогите, пожалуйста, на 1м варианте, а дальше я сам по шаблону... begin AI_USING_POTION float timerHealth5 if ( GetEffect, sEffectRestoreHealth ); сделать такой же блок для всех пяти переменных и, соответственно, менять айди заклинанияStopScript AI_USING_POTIONset timerHealth5 to ( timerHealth5 + getsecondspassed )if ( timerHealth5 >= 3 ) ; 3 секунд откатreturnset timerHealth5 to 0endifendif elseif ( GetItemCount "p_restore_health_e" > 0 )Equip "p_restore_health_e" 1endifset timerHealth5 to 1returnendifendifВот последний вариант...
  22. Ну а как бы вы сделали? Таймер в разделе питья вообще не нужен что ли? Надо же чтобы нпс перестал пить зелье на 3 сек
  23. а как остановить, return-ом? И set timerHealth5 to 1 получается, перед ним Equip, да?
  24. begin AI_USING_POTION float timerHealth5 if ( GetEffect, sEffectRestoreHealth ); сделать такой же блок для всех пяти переменных и, соответственно, менять айди заклинания StopScript AI_USING_POTION set timerHealth5 to ( timerHealth5 + getsecondspassed ) if ( timerHealth5 >= 3 ) ; 3 секунд откат return set timerHealth5 to 0 endif endif elseif ( GetItemCount "p_restore_health_e" > 0 ) endif set timerHealth5 to 0 Equip "p_restore_health_e" 1 return endif endif Скрипт почти заработал как надо. Паузы в выпивании зелья уже есть. Но блин, теперь зелья стали у НПС, походу, бесконечными - команда Equip отрабатывается без конца, давая НПС-ам новое и новое зелье, даже после окончания тех, что в запасе (у этой команды есть такая штука, еще в MCP это писалось, что если инвентарь пуст, зелье берется из "неоткуда". Походу, у меня косяк в установке на проверку таймера, в результате этой ошибки каким-то образом отменилась проверка на обязательное наличие зелья в интвентаре, без чего Equip работать не должно...
×
×
  • Создать...