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

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


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

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

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

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

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

Просто интересно - редактор при загрузке постоянно устанавливается на ячейку "район Эшленда 0,0". Можно ли это как-то изменить?

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

Просто интересно - редактор при загрузке постоянно устанавливается на ячейку "район Эшленда 0,0". Можно ли это как-то изменить?

В Morrowind.ini есть параметр Editor Starting Cell, но не знаю, работает ли он.

Еще, возможно, чекбокс Skip Initial Cell Load в настройках самого редактора может влиять.

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

чекбокс Skip Initial Cell Load

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

 

Editor Starting Cell видимо не работает.. точнее, он управляет не этим.

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

  • 2 месяца спустя...
  • 1 месяц спустя...

Как два редактора открыть?

В Morrowind.ini нужно в разделе [General] сделать AllowMultipleEditors=1

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

  • 2 недели спустя...

 

Это все остается по-старому. Скрипты целевые, но с дополнительным переключателем. В диалоге запускается скрипт AI_Potion_Switcher, в котором висит похожий код. И таких скриптов, думаю, можно сделать штук восемь.

if ( GetScriptRunning "AI_USING_POTION_1" == 0 )
StartScript AI_USING_POTION_1
StopScript AI_Potion_Switcher
return
endif
if ( GetScriptRunning "AI_USING_POTION_2" == 0 )
StartScript AI_USING_POTION_2
StopScript AI_Potion_Switcher
return
endif

Привет. Заново решил добраться и уже добить тот скрипт-переключатель.

Проблема в том, что в этой строке находит ошибку: if ( GetScriptRunning "AI_USING_POTION_1" == 0 ). Пишет, что не знает функцию  GetScriptRunning . Что не так?

 

Вот мой конечный вариант свитчера:

begin AI_USING_POTION
 
if ( GetScriptRunning "AI_USING_POTION1" == 0 )
StartScript AI_USING_POTION1
StopScript AI_USING_POTION
return
endif
if ( GetScriptRunning "AI_USING_POTION2" == 0 )
StartScript AI_USING_POTION2
StopScript AI_USING_POTION
return
endif
if ( GetScriptRunning "AI_USING_POTION3" == 0 )
StartScript AI_USING_POTION3
StopScript AI_USING_POTION
return
endif
if ( GetScriptRunning "AI_USING_POTION4" == 0 )
StartScript AI_USING_POTION4
StopScript AI_USING_POTION
return
endif
if ( GetScriptRunning "AI_USING_POTION5" == 0 )
StartScript AI_USING_POTION5
StopScript AI_USING_POTION
return
endif
if ( GetScriptRunning "AI_USING_POTION6" == 0 )
StartScript AI_USING_POTION6
StopScript AI_USING_POTION
return
endif
if ( GetScriptRunning "AI_USING_POTION7" == 0 )
StartScript AI_USING_POTION7
StopScript AI_USING_POTION
return
endif
if ( GetScriptRunning "AI_USING_POTION8" == 0 )
StartScript AI_USING_POTION8
StopScript AI_USING_POTION
return
endif
 
end
Изменено пользователем Varang
Ссылка на комментарий
Поделиться на другие сайты

Пишет, что не знает функцию  GetScriptRunning . Что не так?

Функция. Я писал по памяти, забыл, как она правильно называется.

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

Функция. Я писал по памяти, забыл, как она правильно называется.

Понял. Где подсмотреть правильную, в руководстве по скриптописанию?

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

Да. В MSFD, например.

Как я понимаю, Get здесь не используется: 

ПРИМЕР из книги:

 

if ( ScriptRunning, CharGen == 0 )

       StartScript CharGen

Endif

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

  • 2 недели спустя...

Все верно.

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

СВИТЧЕР:

 

begin AI_USING_POTION
 
if ( ScriptRunning "AI_USING_POTION1" == 0 )
StartScript AI_USING_POTION1
StopScript AI_USING_POTION
return
endif
if ( ScriptRunning "AI_USING_POTION2" == 0 )
StartScript AI_USING_POTION2
StopScript AI_USING_POTION
return
endif
if ( ScriptRunning "AI_USING_POTION3" == 0 )
StartScript AI_USING_POTION3
StopScript AI_USING_POTION
return
endif
if ( ScriptRunning "AI_USING_POTION4" == 0 )
StartScript AI_USING_POTION4
StopScript AI_USING_POTION
return
endif
if ( ScriptRunning "AI_USING_POTION5" == 0 )
StartScript AI_USING_POTION5
StopScript AI_USING_POTION
return
endif
if ( ScriptRunning "AI_USING_POTION6" == 0 )
StartScript AI_USING_POTION6
StopScript AI_USING_POTION
return
endif
if ( ScriptRunning "AI_USING_POTION7" == 0 )
StartScript AI_USING_POTION7
StopScript AI_USING_POTION
return
endif
if ( ScriptRunning "AI_USING_POTION8" == 0 )
StartScript AI_USING_POTION8
StopScript AI_USING_POTION
return
endif
 
end
 
БАЗОВЫЙ СКРИПТ ( 1 из 8)
 
begin AI_USING_POTION1
 
float timerHealth
float timerMag
float timerFat
 
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 ( timerMag > 0 ); если задан таймер задержки
  set timerMag to ( timerMag - getsecondspassed ); уменьшаем таймер
elseif ( GetEffect, sEffectRestoreSpellPoints ); еще не кончился эффект
elseif ( GetMagicka < 150); стало мало маны
  if ( GetItemCount "p_restore_magicka_e" > 0 ); есть в наличии бутылек
    Equip "p_restore_magicka_e" 1; выпить бутылек
        set timerMag to 3; задаем три секунды таймеру
  elseif ( GetItemCount "p_restore_magicka_q" > 0 ); проверка на следующий бутылек если нет предыдущего
    Equip "p_restore_magicka_q" 1
    set timerMag to 3
  elseif ( GetItemCount "p_restore_magicka_c" > 0 )
    Equip "p_restore_magicka_c" 1
    set timerMag to 3
  elseif  ( GetItemCount "p_restore_magicka_s" > 0 )
    Equip "p_restore_magicka_s" 1
    set timerMag to 3
  elseif  ( GetItemCount "p_restore_magicka_b" > 0 )
    Equip "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 ); есть в наличии бутылек
    Equip "p_restore_fatigue_e" 1; выпить бутылек
        set timerFat to 3; задаем три секунды таймеру
  elseif ( GetItemCount "p_restore_fatigue_q" > 0 ); проверка на следующий бутылек если нет предыдущего
    Equip "p_restore_fatigue_q" 1
    set timerFat to 3
  elseif ( GetItemCount "p_restore_fatigue_c" > 0 )
    Equip "p_restore_fatigue_c" 1
    set timerFat to 3
  elseif  ( GetItemCount "p_restore_fatigue_s" > 0 )
    Equip "p_restore_fatigue_s" 1
    set timerFat to 3
  elseif  ( GetItemCount "p_restore_fatigue_b" > 0 )
    Equip "p_restore_fatigue_b" 1
    set timerFat to 3
  endif
endif
end

ЗАПИСЬ В СТРОКЕ КОМАНДЫ ФРАЗЫ из Dialogue

 

startscript AI_USING_POTION

 

Где ошибка?

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

Может, в AI_Using_Potion1? Там все команды работают только если таймер больше 0, но он изначально 0 и нигде не меняется.

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

Может, в AI_Using_Potion1? Там все команды работают только если таймер больше 0, но он изначально 0 и нигде не меняется.

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

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

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

У меня они вообще не работают. Теперь я тоже не понимаю. Хотя нет, понимаю. Мы это уже обсуждали. Equip глючит при использовании в бою.

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

У меня они вообще не работают. Теперь я тоже не понимаю. Хотя нет, понимаю. Мы это уже обсуждали. Equip глючит при использовании в бою.

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

 

Еще и стала вылетать при тестах ошибка : Script Error Expression AI_Using potion

 

В общем, игра упорно не хочет отрабатывать скрипт на уже запущенных с модом персонажах,  только новых при пересохранении, либо на довольно старых сейвах где-то с середины игры. Видимо, в этом как-то замешан тот факт, что мы с вами изначально делали эту функцию как локальную переменную, и она уже запорола каким-то образом большую часть ячеек в игре (?). 

 

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

 

begin AI_USING_POTION
 
if ( ScriptRunning "AI_USING_POTION1" == 0 )
StartScript AI_USING_POTION1
StopScript AI_USING_POTION
return
endif
if ( ScriptRunning "AI_USING_POTION2" == 0 )
endif ( ScriptRunning "AI_USING_POTION1" == 1 )
StartScript AI_USING_POTION2
StopScript AI_USING_POTION
return
endif
Изменено пользователем Varang
Ссылка на комментарий
Поделиться на другие сайты

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

Кроме Equip, там все работает. Но лучше потыкайте olol'а, он вам скрипт писал.

Может, разные версии скрипта повесить на Нпс вручную, и парочку сделать запускаемые через меню диалогов?

Попробуйте.

 

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

Endif не требует никаких аргументов. Что вы имели в виду? Можете попробовать в начало вставить

if ( MenuMode == 1 )
return
endif
Изменено пользователем Муурн Шепард
Ссылка на комментарий
Поделиться на другие сайты

 

Кроме Equip, там все работает. Но лучше потыкайте olol'а, он вам скрипт писал.

Попробуйте.

 

Endif не требует никаких аргументов. Что вы имели в виду? Можете попробовать в начало вставить

if ( MenuMode == 1 )
return
endif

Что вы имеете ввиду под нерабочим Equip, если все зелья пьются ИИ четко в бою после снижения здоровья\маны?

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

А что вы имели в виду тут?

Что вы имеете ввиду под нерабочим Equip, если все зелья пьются ИИ четко в бою после снижения здоровья\маны?

Во время тестов я этого не заметил.

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

А что вы имели в виду тут?

Во время тестов я этого не заметил.

Тогда все закончилось удачно, скрипт, благодаря терпению Олол, таки заработал. При тесте его последние полчаса, я также столкнулся с такой проблемой - его упорно не используют персонажи, на которых уже висит какой-то скрипт, например, заскриптованные на атаку Ординаторы в Альд-Даэдрот. Вот у меня и вопрос, можно ли повесить на них именной скрипт через скрипт (как бы глупо это не звучало)? 

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

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

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

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

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

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

Войти

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

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

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