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

Вопросы по 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 пользователей онлайн

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