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

Вопросы по TES Construction Set


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

 

begin AI_USING_POTION
 
float timerHealth5
float timerMagicka5

float timerFatigue5

short doOnce

 

if ( doOnce ); NPC мертв

  return

elseIf ( OnDeath ); NPC умер

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

 return

endif

 

Нет, не помогло. Как пропадает разом 3 бутылки у целителя, так оно и осталось...может, через StopScript попробовать?

 

Вдобавок некоторые НПС стали вдруг "тупить" с выпиванием зелий...

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

  • Ответов 2.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

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

не вижу причины, добавь сообщение для проверки:

 

Equip "p_restore_health_e"

MessageBox "выпил p_restore_health_e"

set timerHealth to 2

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

не вижу причины, добавь сообщение для проверки:

 

Equip "p_restore_health_e"

MessageBox "выпил p_restore_health_e"

set timerHealth to 2

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

 

Как я понял, по итогу должно быть так!

 

begin AI_USING_POTION
 
 
 
float timerHealth
float timerMagicka
float timerFatigue
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 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
  endif
endif
;----------------------------МАГИЯ
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 3
elseif ( GetItemCount "p_restore_magicka_q" > 0 )
    Equip "p_restore_magicka_q" 1
        set timerMagicka to 3
elseif ( GetItemCount "p_restore_magicka_s" > 0 )
    Equip "p_restore_magicka_s" 1
        set timerMagicka to 3
elseif ( GetItemCount "p_restore_magicka_c" > 0 )
    Equip "p_restore_magicka_c" 1
        set timerMagicka to 3
elseif ( GetItemCount "p_restore_magicka_b" > 0 )
    Equip "p_restore_magicka_b" 1
        set timerMagicka to 3
endif
endif
;-------------------Усталость
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 3
elseif ( GetItemCount "p_restore_Fatigue_q" > 0 )
    Equip "p_restore_Fatigue_q" 1
        set timerFatigue to 3
elseif ( GetItemCount "p_restore_Fatigue_s" > 0 )
    Equip "p_restore_Fatigue_s" 1
        set timerFatigue to 3
elseif ( GetItemCount "p_restore_Fatigue_c" > 0 )
    Equip "p_restore_Fatigue_c" 1
        set timerFatigue to 3
elseif ( GetItemCount "p_restore_Fatigue_b" > 0 )
    Equip "p_restore_Fatigue_b" 1
        set timerFatigue to 3
endif
endif
end
 
КОРОЧЕ, ВСЯ ЭТА МАХИНА ВМЕСТЕ НЕ РАБОТАЕТ (ОПЯТЬ)!!! Хотя отдельно со здоровьем работала вполне....что за нах...
 
ЧТО УЖЕ НЕ НРАВИТСЯ ЭТОМУ КС, БЛИН!!! ]:->
Изменено пользователем Varang
Ссылка на комментарий
Поделиться на другие сайты

ты добавил только одну выделенную строку между указанными ?

Я больше ничего не добавлял. Я нашел ошибку в пересейве, и написал скрипт полностью, решив, что в этом косяк, но как только я добавил блоки Магии и Усталости, опять все перестало робить (см выше)

 

Провел тест - убрал Магию и Усталость - все снова заработало!

 

ПС Мне уже скоро сниться будет, как я убиваю гарнизон Валенвариона в  100500 раз))))

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

для отладки нужно зайти в дом и сохраниться

потом сделать и подключить тестовый плаг

в нем ставишь на улицу перед домом нужных тебе неписей со скриптами

 

загружаешь сохранение, выходишь из дома и проверяешь

и что получилось я не понял

 

 

не люблю я скрипты, вечно в них какие-то нюансы.

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

для отладки нужно зайти в дом и сохраниться

потом сделать и подключить тестовый плаг

в нем ставишь на улицу перед домом нужных тебе неписей со скриптами

 

загружаешь сохранение, выходишь из дома и проверяешь

и что получилось я не понял

 

 

не люблю я скрипты, вечно в них какие-то нюансы.

так и сделал. Создал тестового парня на выходе из пещер Уршилаку у одного из сейвов. Все норм регенится - и магия, и мана. Щас еще бойца запилю и усталость проверю.

Проверил, все работает. УРА!

Теперь осталось обдумать, развесить ли скрипт индивидуально, или через Свитчер, размножив на 5-8 копий...но этот уж потом.

 

ПС Маг с регеном маны просто имба...боец с регеном выносливости - тоже...

 

ПС Еще раз всем спасибо за терпеливую помощь!

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

Народ, проблема с фарготом в сейда нин. После того, как он засовывает деньги в пень - он остается стоять в болоте. а не уходит. Изза чего это может быть? Скрипты что на фарготе, что на пне стандартные, (на фаргота я хочу просто другой скрипт повесить, но сперва эту бы проблему решить. Пень не тронут, стоит как и стоял. 

На фаргота подвешено у меня еще участие в паре квестов, но подвеска в виде диалогов. Журнал квеста с хрискаром был изменен, но я вернул ему прежний вид (удалил изменения через МЕЕ)

Это стандартный скрипт

begin LocalState

;used on objects just to track a locak var
short state

end LocalState

 

 

Этот скрипт я хочу подвесить на фаргота

 

begin fargoth_script
short state
short drunk
float timer
if ( MenuMode == 1 )
 return
endif
if ( state == 0 )
 additem "key_fargoth" 1
 set state to 1
endif
if ( GetJournalIndex "MS_Lookout" < 100 )
 return
endif
if ( drunk == 1 )
 set timer to ( timer + GetSecondsPassed )
 if ( timer > 3 )
  if ( GetFatigue > 80 )
   modcurrentfatigue -100
   if ( GetFatigue < 0 )
    Say  "vo\w\m\Hit_WM012.mp3" "Ooph!"
   endif
  endif
  set timer to 0
 endif
 return
endif
if ( drunk == 0 )
 additem "potion_comberry_brandy_01" 5
 removeitem "common_shirt_04" 1
 removeitem "common_shoes_04" 1
 setdisposition 50
 setspeed 20
 aiwander 256 0 0 0 0 40 0 0 40 30 0
 set drunk to 1
endif
end 

 

Но и в 1 и во втором случае наступает стопор у фаргота с остановкой после закладки в пне

 

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

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

Если действует глобалка, подскажите, какая именно, чтоб я проверил по оригиналу изменения

lookOutScript. Это не глобалка, а локальный скрипт, повешенный на активатор, спрятанный в модельке маяка. Причем от скриптов на Фарготе он совсем не зависит, потому даже не знаю, в чем может быть проблема.

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

lookOutScript. Это не глобалка, а локальный скрипт, повешенный на активатор, спрятанный в модельке маяка. Причем от скриптов на Фарготе он совсем не зависит, потому даже не знаю, в чем может быть проблема.

 

Ок, спасибо, проверю. Сейчас просто собираю большой скомпилированный квестопак по Сейда Нин, работаю в основном с буржуйскими модами и где то проскочило маленький …. Вроде и рельеф не меняется, и объекты, а чтото глючит. 

ПыСы. спасиб, отлагало. У меня еще Свафнир стоит, и на него я тоже повесил модельку маяка, ибо та башня что на нем была за маяк не прокатывает. Скорее всего дело было в этом, изменил название статика на свафнирском маяке - все пошло норм

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

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

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

ChargenDagger висит на самом кинжале, для отработки ударов. А нужен именно тот, кто выдает сообщение: "возьмите кинжал". Будем искать. Просто сообщение надо подвесить дополнительное в канцелярии при запуске новой игры, когда уже пройдена идентификация.

ПыСы. Все, спасиб большое за наводку. Стал отсматривать все скрипты этой серии - нашел

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

Сообщение на экран выводится командой MessageBox, например:

begin ScriptBlaBlaBla

short once

if ( MenuMode == 1 )
return
endif

if ( once == 0 )
if ( GetDistance, Player <= 200 )
MessageBox "Проклятье! Опять вылез этот назойливый месседж-бокс!" "Да ладно, не злись, так положено."
Set once to 1

endif
endif

end

Вешается на любой активатор либо вставляется новой секцией в нужный скрипт.

ЗЫ: я опоздун.





 

Изменено пользователем РЕДМЕНЪ
Ссылка на комментарий
Поделиться на другие сайты

Сообщение на экран выводится командой MessageBox, например:

begin ScriptBlaBlaBla

short once

if ( MenuMode == 1 )
return
endif

if ( once == 0 )
if ( GetDistance, Player <= 200 )
MessageBox "Проклятье! Опять вылез этот назойливый месседж-бокс!" "Да ладно, не злись, так положено."
Set once to 1

endif
endif

end

Вешается на любой активатор либо вставляется новой секцией в нужный скрипт.

 

ЗЫ: я опоздун.

 

 

 

 

 

 

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

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

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

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

Собственно вопрос. Нету ли какой то так сказать(пропатченой) более стабильной версии CS в которой все возможно работают м? А то та что из коробки, уже задолбала своими вечными мелкими лагами(залипание окон, выделение 1500 статиков и проч и проч)

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

Хочу повесть на кричура скрипт, который заставляет его прекращать сражение и следовать за ГГ при определённых условиях. Но как быть с возвратом в нормальное состояние при прекращении выполнения условия?

 

 

if (условие для следования)

if ( status == 0 )

StopCombat

AIFollow, Player, 0, 0, 0, 0

set status to 1

endif

endif

 

if (условие для прекращения следования)

if ( status == 1 )

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

set status to 0

endif

endif

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

Локальный скрипт меняет параметры только своего актера. У вас же у всех кричеров здоровье до 0 не падает, когда вы одного убиваете?

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

Установки боя актера устанавливает то, с какой вероятностью актер будет атаковать игрока. Mod/Set Fight действует и на те копии, которые появятся после того, как вы вызвали эти функции. 

 

Примечание: Когда вы используете эти функции, помните, что они изменяют не только копию объекта, НО И сам объект. То есть если вы встретите нового актера с тем же ID, у него будут новые установки alarm/Fight. Также после ухода из ячейки с актером, у которого старые значения, поспите три дня (актер выгрузится из памяти) и снова войдите вы эту ячейку. Актер будет иметь уже новые значения, взятые из информации об объекте (Информация с форумов / Cortex)

 

Это из МСФД

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

Хм, логично. А сделать какое-нибудь заклятие на постоянный эффект с "Усмирить существо" и добавить его скриптом сработает?

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

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

Вы сможете оставить комментарий после входа в



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

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