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

Тонкости скриптов


Рекомендуемые сообщения

Похоже на то, что сбоит последний загруженный бутылек (как у анимации контейнеров).

нужно добавлять его другому НПС, вот только кому...

может попробовать добавлять/удалять бутылек Процессусу Вителлиусу ?

ГФМ делает ему сохранность трупа (нельзя убрать).

 

if ( GetItemCount "p_restore_health_e" > 0 ); есть в наличии бутылек

    "processus vitellius"->AddItem "p_restore_health_e" 1
    Equip  "p_restore_health_e" 1; выпить бутылек

    "processus vitellius"->RemoveItem "p_restore_health_e" 1

        set timerHealth to 3; задаем три секунды таймеру
  elseif ( GetItemCount "p_restore_health_q" > 0 ); проверка на следующий бутылек если нет предыдущего

 

если опять не получится, значит не судьба...

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 335
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Похоже на то, что сбоит последний загруженный бутылек (как у анимации контейнеров).

нужно добавлять его другому НПС, вот только кому...

может попробовать добавлять/удалять бутылек Процессусу Вителлиусу ?

ГФМ делает ему сохранность трупа (нельзя убрать).

 

if ( GetItemCount "p_restore_health_e" > 0 ); есть в наличии бутылек

    "processus vitellius"->AddItem "p_restore_health_e" 1

    Equip  "p_restore_health_e" 1; выпить бутылек

    "processus vitellius"->RemoveItem "p_restore_health_e" 1

        set timerHealth to 3; задаем три секунды таймеру

  elseif ( GetItemCount "p_restore_health_q" > 0 ); проверка на следующий бутылек если нет предыдущего

 

если опять не получится, значит не судьба...

 

Не знаю, тесты не однозначны. Аддамасартус и Заинсипилу робят без проблем, а в Рамимилке вылетает ошибка и скрипт не работает на первом же НПС на входе. Вылетов, правда, нет теперь.

Script Error: EXPRESSION in A_A_NPC_USING_POTION_PLEASE

Infix to postfix

 

Руководство пишет что подобные ошибки из-за синтаксиса, хз, где-то запятые или пробелы отсутствуют, что ли....Right Eval, кстати, раньше всегда была ошибка. а теперь вот это вот все...

Ссылка на комментарий
Поделиться на другие сайты

если вылеты прекратились - это хорошо.

синтаксис тут не причем, иначе ошибка бы была бы у всех.

наверно нужно, чтоб НПС был в текущей ячейке.

Ссылка на комментарий
Поделиться на другие сайты

если вылеты прекратились - это хорошо.

синтаксис тут не причем, иначе ошибка бы была бы у всех.

наверно нужно, чтоб НПС был в текущей ячейке.

 

Что значит в текущей? Если я пытаюсь зайти в Рамимилк, это разве не текущая ячейка становится? Поясни, пожалуйста.

 

ПС Кстати, в Рамимилк таже постоянно вылетает вот такая ошибка, которую я уже давно безуспешно пытаюсь устранить (в своем плагине я ловушки не менял в этой локации, в редакторе там числится заморозка, а не проклятие здоровья). Она не может провоцировать ошибку (ну мало ли)?

 

Trap spell 'dread curse: health' is invalid trap.

Object 'com_chest_Daed_ruin_01' in cell 'Ramimilk, Shrine'.

Изменено пользователем Varang
Ссылка на комментарий
Поделиться на другие сайты

скрипт локальный, но добаляет бутылек НПС в другой ячейке:

"processus vitellius"->AddItem "p_restore_health_e" 1

 

нужно либо в каждой ячейке ложить разных мертвых НПС под землю и добавлять им

либо постоянно добавлять/удалять одного НПС (морока с этим будет немалая).

 

 

если ты в этой ячейке не менял, значит смотри какой другой мод это делает.

Ссылка на комментарий
Поделиться на другие сайты

скрипт локальный, но добаляет бутылек НПС в другой ячейке:

"processus vitellius"->AddItem "p_restore_health_e" 1

 

нужно либо в каждой ячейке ложить разных мертвых НПС под землю и добавлять им

либо постоянно добавлять/удалять одного НПС (морока с этим будет немалая).

 

 

А почему тогда в первых двух пещерах норм срабатывает? Если бы была система в ошибках, я бы уже давно смирился, но дело именно в том, что где-то скрипт срабатывает без проблем, а где-то - глючит.

 

Я тут попробовал сделать на основе заклинаний - вроде норм работает, ошибок нет. Да, костылек на фоне зелий, но для баланса вполне норм. Единственный минус - нет звукового и визуального эффекта. Насколько я помню, нельзя создать визуальный эффект заклинания в Морре без его четкого применения. Но можно хотя бы звук сделать (или звук восстановления, или звук выпивания при перетаскивании бутылки на персонажа)? Как привязать звук сразу после выпивания зелья? 

 

begin A_A_NPC_USING_POTION_PLEASE
 
float timerHealth
float timerMag
float timerFat
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 ); есть в наличии бутылек
     Modcurrenthealth 200
;какая-то команда звука???
RemoveItem "p_restore_health_e" 1
    set timerHealth to 3; задаем три секунды таймеру
      elseif ( GetItemCount "p_restore_health_q" > 0 ); проверка на следующий бутылек если нет предыдущего
   Modcurrenthealth 100
RemoveItem "p_restore_health_q" 1
    set timerHealth to 3
  elseif ( GetItemCount "p_restore_health_s" > 0 )
    Modcurrenthealth 50
RemoveItem "p_restore_health_s" 1
    set timerHealth to 3
  elseif  ( GetItemCount "p_restore_health_c" > 0 )
    Modcurrenthealth 25
RemoveItem "p_restore_health_c" 1
    set timerHealth to 3
  elseif  ( GetItemCount "p_restore_health_b" > 0 )
     Modcurrenthealth 15
RemoveItem "p_restore_health_b" 1
    set timerHealth to 3
  endif
endif
 
end

 

И в итоге - что делать с глобальными нацеленными, запускающимися с 1го активатора? Делать несколько активаторов и кидать их либо в помещения с НПС на входе, либо пряо под ноги там, где можно зайти с разных сторон в ячейку (или активатор сразу на входе срабатывает в ячейку в любом случае?).

Изменено пользователем Varang
Ссылка на комментарий
Поделиться на другие сайты

для первых ячеек движок еще помнит соседнюю ячейку НПС, а потом забывает.

 

 

PlaySound3D "Drink"

 

 

активатор срабатывает при в ходе в ячейку в любом месте, только работать он будет и при выходе из нее.

Ссылка на комментарий
Поделиться на другие сайты

 

для первых ячеек движок еще помнит соседнюю ячейку НПС, а потом забывает.
 
 
PlaySound3D "Drink"
 
 
активатор срабатывает при в ходе в ячейку в любом месте, только работать он будет и при выходе из нее.

 

Погоди, это проблема? Т.е. скрипт опять будет работать постоянно?

Ссылка на комментарий
Поделиться на другие сайты

глобальные скрипты работают пока их не становят.

они могут проверять выход из ячейки (для внутренних) и останавливаться, но при вхде их нужно опять запускать

Ссылка на комментарий
Поделиться на другие сайты

глобальные скрипты работают пока их не становят.

они могут проверять выход из ячейки (для внутренних) и останавливаться, но при вхде их нужно опять запускать

И как это сделать? Я могу сделать же, например, активатор, который развешает скрипты при входе на виллу Дрена на братьев Йенит и Орваса, и как-то прописать, что если я вышел с виллы, скрипт останавливается, или нет? А потом - если я вернусь, он включится по новому (если внутри еще останутся живые)?

 

Когда добавил звук и все остальные модификаторы (восстановление магии и стамины), игра стала зависать и вылетать при срабатывании скрипта! Однако, если оставить только скрипт с восстановлением здоровья - игра работает. Не перегружен ли скрипт, может, его как-то упростить?

begin A_A_NPC_USING_POTION_PLEASE
 
float timerHealth
float timerMag
float timerFat
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 ); есть в наличии бутылек
     Modcurrenthealth 200
PlaySound3D "Drink"
RemoveItem "p_restore_health_e" 1
    set timerHealth to 3; задаем три секунды таймеру
      elseif ( GetItemCount "p_restore_health_q" > 0 ); проверка на следующий бутылек если нет предыдущего
   Modcurrenthealth 100
PlaySound3D "Drink"
RemoveItem "p_restore_health_q" 1
    set timerHealth to 3
  elseif ( GetItemCount "p_restore_health_s" > 0 )
    Modcurrenthealth 50
PlaySound3D "Drink"
RemoveItem "p_restore_health_s" 1
    set timerHealth to 3
  elseif  ( GetItemCount "p_restore_health_c" > 0 )
    Modcurrenthealth 25
PlaySound3D "Drink"
RemoveItem "p_restore_health_c" 1
    set timerHealth to 3
  elseif  ( GetItemCount "p_restore_health_b" > 0 )
     Modcurrenthealth 15
PlaySound3D "Drink"
RemoveItem "p_restore_health_b" 1
    set timerHealth to 3
  endif
endif
;---------------------------------Магия
if ( timerMag > 0 ); если задан таймер задержки
  set timerMag to ( timerMag - getsecondspassed ); уменьшаем таймер
elseif ( GetEffect, sEffectRestoreSpellPoints ); еще не кончился эффект
elseif ( GetMagicka < 150); стало мало маны
  if ( GetItemCount "p_restore_magicka_e" > 0 ); есть в наличии бутылек
    Modcurrentmagicka 300
PlaySound3D "Drink"
RemoveItem "p_restore_magicka_e" 1
        set timerMag to 3; задаем три секунды таймеру
  elseif ( GetItemCount "p_restore_magicka_q" > 0 ); проверка на следующий бутылек если нет предыдущего
        Modcurrentmagicka 150
PlaySound3D "Drink"
RemoveItem "p_restore_magicka_q" 1
    set timerMag to 3
  elseif ( GetItemCount "p_restore_magicka_s" > 0 )
           Modcurrentmagicka 75
PlaySound3D "Drink"
RemoveItem "p_restore_magicka_s" 1
    set timerMag to 3
  elseif  ( GetItemCount "p_restore_magicka_c" > 0 )
            Modcurrentmagicka 40
PlaySound3D "Drink"
RemoveItem "p_restore_magicka_c" 1
    set timerMag to 3
  elseif  ( GetItemCount "p_restore_magicka_b" > 0 )
            Modcurrentmagicka 20
PlaySound3D "Drink"
RemoveItem "p_restore_magicka_b" 1
    set timerMag to 3
  endif
endif
;----------------------------Усталость
if ( timerFat > 0 ); если задан таймер задержки
  set timerFat to ( timerFat - getsecondspassed ); уменьшаем таймер
elseif ( GetEffect, sEffectRestoreFatigue ); еще не кончился эффект
elseif ( GetFatigue < 150); стало мало сил
  if ( GetItemCount "p_restore_fatigue_e" > 0 ); есть в наличии бутылек
    Modcurrentfatigue 400
PlaySound3D "Drink"
RemoveItem "p_restore_fatigue_e" 1
        set timerFat to 3; задаем три секунды таймеру
  elseif ( GetItemCount "p_restore_fatigue_q" > 0 ); проверка на следующий бутылек если нет предыдущего
       Modcurrentfatigue 200
PlaySound3D "Drink"
RemoveItem "p_restore_fatigue_q" 1
    set timerFat to 3
  elseif ( GetItemCount "p_restore_fatigue_s" > 0 )
       Modcurrentfatigue 100
PlaySound3D "Drink"
RemoveItem "p_restore_fatigue_s" 1
    set timerFat to 3
  elseif  ( GetItemCount "p_restore_fatigue_c" > 0 )
       Modcurrentfatigue 50
PlaySound3D "Drink"
RemoveItem "p_restore_fatigue_c" 1
    set timerFat to 3
  elseif  ( GetItemCount "p_restore_fatigue_b" > 0 )
        Modcurrentfatigue 25
PlaySound3D "Drink"
RemoveItem "p_restore_fatigue_b" 1
    set timerFat to 3
  endif
endif
 
end
 
Не все ясно с командой  Modcurrent...где-то пишут, что она модифицирует здоровье, добавляя\уменьшая, где-то - что устанавливает текущее...
Изменено пользователем Varang
Ссылка на комментарий
Поделиться на другие сайты

Скрипт у вас перегружен, сносите весь блок усталости. Modcurrent модифицирует максимальное тоже.

да даже с блоком магии уже не работает, много. Если currenthealth устанавливает и максимальное, то какая команда регенит часть текущего? а просто ModHealth тогда что делает (кс не выдает ошибку в скрипте, получается, есть такая команда?).

ПС Я, кстати, потестил, вместо ModCurrentHealth 15 в последнем блоке поставил 1500 - однако 1500 здоровья у бандитки из Аддамасартуса не стало, она отрегенила ХП до максимума (а всего у нее порядка 88 ХП) и потом все равно быстро померла. Так все же точно, что делает эта команда  - регенит на указанное число в рамках текущего ХП или устанавливает максимум?

 

И как мне поступить м магией и усталостью тогда? Запускать отдельные скрипты внутри моего?

Изменено пользователем Varang
Ссылка на комментарий
Поделиться на другие сайты

да даже с блоком магии уже не работает, много. Если currenthealth устанавливает и максимальное, то какая команда регенит часть текущего? а просто ModHealth тогда что делает (кс не выдает ошибку в скрипте, получается, есть такая команда?).

ПС Я, кстати, потестил, вместо ModCurrentHealth 15 в последнем блоке поставил 1500 - однако 1500 здоровья у бандитки из Аддамасартуса не стало, она отрегенила ХП до максимума (а всего у нее порядка 88 ХП) и потом все равно быстро померла. Так все же точно, что делает эта команда  - регенит на указанное число в рамках текущего ХП или устанавливает максимум?

 

И как мне поступить м магией и усталостью тогда? Запускать отдельные скрипты внутри моего?

А да, modhealth максимальное.

Да оставьте только блок здоровья и тестируйте. Messagebox ов туда напихайте, чтоб видеть какая стадия скрипта сейчас.

Ссылка на комментарий
Поделиться на другие сайты

@Varang
Проблема с Equip заключается в том, что трибунал ее исправил для использования брони и оружия.
А то, что бутылек при использовании исчезнет движок видимо не учитывает и по этому сбоит.
Попробуй в старом скрипте перед Equip добавлять какой-нибудь другой бутылек (например p_reflection_s).

Ссылка на комментарий
Поделиться на другие сайты

@Varang

Проблема с Equip заключается в том, что трибунал ее исправил для использования брони и оружия.

А то, что бутылек при использовании исчезнет движок видимо не учитывает и по этому сбоит.

Попробуй в старом скрипте перед Equip добавлять какой-нибудь другой бутылек (например p_reflection_s).

 

а причем тут бутылек отражения???

Ссылка на комментарий
Поделиться на другие сайты

Если движок сбоит на последнем бутыльке в инвентаре, то можно попробовать добавить любой другой который ты не будешь использовать.

Гарантии ни какой, но есть небольшая вероятность что это поможет.

 

    AddItem "p_burden_s" 1
    Equip  "p_restore_health_e" 1; выпить бутылек

    RemoveItem "p_burden_s" 1

Изменено пользователем olol
Ссылка на комментарий
Поделиться на другие сайты

Если движок сбоит на последнем бутыльке в инвентаре, то можно попробовать добавить любой другой который ты не будешь использовать.

Гарантии ни какой, но есть небольшая вероятность что это поможет.

 

    AddItem "p_burden_s" 1

    Equip  "p_restore_health_e" 1; выпить бутылек

    RemoveItem "p_burden_s" 1

 

При юзании Equip прошлый раз он сбоил сразу при начале скрипта в Рамимилке.

Но этот вариант я щас тоже потестил, он не робит. Думаю, об адекватном юзании Equip все ж можно забыть, увы, движок не не может и не будет адекватно обрабатывать эту функцию.

Ты мне лучше растолкуй четко, как нормально сделать в моей ситуации направленные скрипты на НПС, уже имеющих на себе висящие скрипты? Т.е. как сделать грамотные активаторы, не парализующие всю игру. На примере Дрена и братьев Йенит, например (локация вилла Дрена)? И как запустить ModCurrentMagicka  и ModCurrentFatugue грамотно, не перегружая скрипт, где здоровье, но через него же?

 

Костыль с ModCurrentH\M\F мне пока кажется более перспективным, думаю, есть смысл больше на нем сосредоточиться. Я могу "занусуть" скрипт с зельями магии в скрипт зелий здоровья? Вот так:

 

 

begin A_A_NPC_USING_POTION_HEALTH

float timerHealth

short doOnce

Short OnPCHitMe

 
If (OnPCHitMe == 1)

StartScript  "A_A_NPC_USING_POTION_MAGIC"

endif

 

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 ); есть в наличии бутылек

     Modcurrenthealth 200

PlaySound3D "Drink"

RemoveItem "p_restore_health_e" 1

    set timerHealth to 3; задаем три секунды таймеру

      elseif ( GetItemCount "p_restore_health_q" > 0 ); проверка на следующий бутылек если нет предыдущего

   Modcurrenthealth 100

PlaySound3D "Drink"

RemoveItem "p_restore_health_q" 1

    set timerHealth to 3

  elseif ( GetItemCount "p_restore_health_s" > 0 )

    Modcurrenthealth 50

PlaySound3D "Drink"

RemoveItem "p_restore_health_s" 1

    set timerHealth to 3

  elseif  ( GetItemCount "p_restore_health_c" > 0 )

    Modcurrenthealth 25

PlaySound3D "Drink"

RemoveItem "p_restore_health_c" 1

    set timerHealth to 3

  elseif  ( GetItemCount "p_restore_health_b" > 0 )

     Modcurrenthealth 15

PlaySound3D "Drink"

RemoveItem "p_restore_health_b" 1

    set timerHealth to 3

  endif

endif

end
 
И ВОТ НА МАГИЮ: 
 
begin A_A_NPC_USING_POTION_MAGIC
float timerMag

short doOnce

 

if ( doOnce ); NPC мертв

  return

elseIf ( OnDeath ); NPC умер

 set doOnce to 1; фиксируем смерть

 return

endif

;---------------------------------Магия

if ( timerMag > 0 ); если задан таймер задержки

  set timerMag to ( timerMag - getsecondspassed ); уменьшаем таймер

elseif ( GetEffect, sEffectRestoreSpellPoints ); еще не кончился эффект

elseif ( GetMagicka < 150); стало мало маны

  if ( GetItemCount "p_restore_magicka_e" > 0 ); есть в наличии бутылек

    Modcurrentmagicka 300

PlaySound3D "Drink"

RemoveItem "p_restore_magicka_e" 1

        set timerMag to 3; задаем три секунды таймеру

  elseif ( GetItemCount "p_restore_magicka_q" > 0 ); проверка на следующий бутылек если нет предыдущего

        Modcurrentmagicka 150

PlaySound3D "Drink"

RemoveItem "p_restore_magicka_q" 1

    set timerMag to 3

  elseif ( GetItemCount "p_restore_magicka_s" > 0 )

           Modcurrentmagicka 75

PlaySound3D "Drink"

RemoveItem "p_restore_magicka_s" 1

    set timerMag to 3

  elseif  ( GetItemCount "p_restore_magicka_c" > 0 )

            Modcurrentmagicka 40

PlaySound3D "Drink"

RemoveItem "p_restore_magicka_c" 1

    set timerMag to 3

  elseif  ( GetItemCount "p_restore_magicka_b" > 0 )

            Modcurrentmagicka 20

PlaySound3D "Drink"

RemoveItem "p_restore_magicka_b" 1

    set timerMag to 3

  endif

endif

end
Изменено пользователем Varang
Ссылка на комментарий
Поделиться на другие сайты

направленный скрипт это глобальный скрипт, он работает пока его не остановят или он сам не остановится.

если ты хочешь активатором в ячейке запускать направленный скрипт, то скрипт должен проверять выход из ячейки:

if ( CellChanged )

StopScript  "A_A_NPC_USING_POTION_HEALTH"

 
 
для магии ты опять проверяешь на 150 !
Ссылка на комментарий
Поделиться на другие сайты

 

 
 
для магии ты опять проверяешь на 150 !

 

 

А какая разница, если не работает вообще? Тем более, маг Аддамасартуса усилен, у него щас 180 магии, а скрипт на магию не робит все равно. Про активаторы понял, спасибо!

Может, сделать какую-то иную, более совершенную проверку? Я тестил, если вводить в скрипт переменную 

Short OnPCHitMe  и проверку атакой:
 
If (OnPCHitMe == 1)

StartScript  "A_A_NPC_USING_POTION_MAGIC"

endif

 
То игра либо игнорирует запуск скрипта магии, либо вообще виснет. Где косяк теперь?
 
Просто надо понять, какой скрипт будет 99% нормально работать, прежде чем вешать его на индивидуальные копии через активаторы.
Изменено пользователем Varang
Ссылка на комментарий
Поделиться на другие сайты

если в локальном скрипте скрипте возникают проблемы, то ты переносишь часть скрипта в другой глобальный и получаешь дополнительные проблемы, зачем?

 

если проблема со звуком, то можно добавить проверку или использовать не 3D.

 

if ( GetSoundPlaying "Drink" == 0 )

  PlaySound "Drink"

endif

 

 

Для магии лучше запомнить начальное значение и потом следить за ее изменением:

 

short doInit

Float MaxMagicka

 

if ( doInit )
  Set MaxMagicka to GetMagicka

endif
 
...

elseif ( GetMagicka / MaxMagicka 

Ссылка на комментарий
Поделиться на другие сайты

 

если в локальном скрипте скрипте возникают проблемы, то ты переносишь часть скрипта в другой глобальный и получаешь дополнительные проблемы, зачем?

 

 

 

О чем я писал выше, что надо все проверить на работоспособность, прежде чем размножать на глобалки. Потому как при смене локалки меняется 1 скрипт на все, в в нацеленных их будет несколько десятков, и все разные.

 

 

 

Для магии лучше запомнить начальное значение и потом следить за ее изменением:

 

short doInit

Float MaxMagicka

 

if ( doInit )

  Set MaxMagicka to GetMagicka

endif
 
...

elseif ( GetMagicka / MaxMagicka < 0.5); стало мало маны

 

Объясни, где это будет находиться в скриптах выше, пожалуйста, на пальцах, я пока очень плохо понимаю принцип работы этой новой схемы. Как это связано с его отстраненным запуском?

Проблема текущего скрипта именно в перегрузе, пока не добавляешь блок магии + усталости (или даже что-то одно), все работает довольно стабильно. 

Изменено пользователем Varang
Ссылка на комментарий
Поделиться на другие сайты

Ни какого перегруза быть не должно, если не работает при добавлении магии, то наверно она и одна работать не будет.

 

 

begin A_A_NPC_USING_POTION_HEALTH
short doOnce
short doInit
Float MaxMagicka
float timerHealth
float timerMag
float f
 
if ( doOnce ); NPC мертв
  return
elseIf ( OnDeath ); NPC умер
  set doOnce to 1; фиксируем смерть
  return
elseif ( doInit == 0 )
  Set MaxMagicka to GetMagicka
  set doInit to 1; запоминаем начальную величину магии
endif
if ( timerHealth > 0 ); если задан таймер задержки
  set timerHealth to ( timerHealth - getsecondspassed ); уменьшаем таймер
elseif ( GetEffect, sEffectRestoreHealth ); еще не кончился эффект
elseif ( GetHealthGetRatio   if ( GetItemCount "p_restore_health_e" > 0 ); есть в наличии бутылек
    Modcurrenthealth 200
    if ( GetSoundPlaying "Drink" == 0 )
      PlaySound "Drink"
    endif
    RemoveItem "p_restore_health_e" 1
    set timerHealth to 3; задаем три секунды таймеру
  elseif ( GetItemCount "p_restore_health_q" > 0 ); проверка на следующий бутылек если нет предыдущего
...
endif
 
Set f to GetMagicka / MaxMagicka
if ( timerMag > 0 ); если задан таймер задержки
  set timerMag to ( timerMag - getsecondspassed ); уменьшаем таймер
elseif ( GetEffect, sEffectRestoreSpellPoints ); еще не кончился эффект
elseif ( f   if ( GetItemCount "p_restore_magicka_e" > 0 ); есть в наличии бутылек
    Modcurrentmagicka 300
    if ( GetSoundPlaying "Drink" == 0 )
      PlaySound "Drink"
    endif
    RemoveItem "p_restore_magicka_e" 1
    set timerMag to 3; задаем три секунды таймеру
  elseif ( GetItemCount "p_restore_magicka_q" > 0 ); проверка на следующий бутылек если нет предыдущего

 

...
Ссылка на комментарий
Поделиться на другие сайты

Ни какого перегруза быть не должно, если не работает при добавлении магии, то наверно она и одна работать не будет.

буду тестить, а doIHIT что за переменная?
Ссылка на комментарий
Поделиться на другие сайты

Названия переменным можно давать любые кроме ключевых слов.

doInit - типа однократная начальная инициализация.

Ссылка на комментарий
Поделиться на другие сайты

Ни какого перегруза быть не должно, если не работает при добавлении магии, то наверно она и одна работать не будет.

Ну оптимизация у вас, факап. Там где можно обойтись двумя переменными заводится целых пять. И деление в каждом кадре.

Нужно боольше doOnce, больше таймеров! Давай 500 делений в кадре?

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...