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

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

Опубликовано
08.07.2016 09:03:44, krezozavr сказал(-а):
Я абсолютный ламер в скайримовских скриптах

1 вам тогда не скрипт а квест скорее нужен, посмотрите квесты.

2 чтобы сделать что-либо прийдется разобраться, тк готового ответа скорее всего нету.

3 и зачем это надо? Смысл такого = оперативную память компа засорять?

  • Нравится 1
Опубликовано
09.07.2016 20:46:25, EdgeNito12 сказал(-а):
3 и зачем это надо? Смысл такого = оперативную память компа засорять?

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

Опубликовано
11.07.2016 18:38:51, krezozavr сказал(-а):
Ну раз человек ищет ответ на какой-то вопрос

1 я же ответил вам: вам  не скрипт а квест нужен, к которому вы пропишите куски кода/скрипта. Я незнаю, понадобится ли вам править "behavior"-инструкции поведения(непомню как называются),

Но тут вопрос может оказаться глубоко в skyrim.exe

И поэтому 2

-что вы хотите получить - может можно как-то обойти это - например референсом компаньон, но тут нужно поподробнее.

2 зачем это надо? - имелось ввииду, что сложность исправления(чтобы вот каждый компаньон в любом месте мог ждать вас ) помоему несоразмерна получаемому результату(ну ждет он вас - что это дает???)

  • Нравится 1
Опубликовано
12.07.2016 17:40:39, EdgeNito12 сказал(-а):

2 зачем это надо? - имелось ввииду, что сложность исправления(чтобы вот каждый компаньон в любом месте мог ждать вас ) помоему несоразмерна получаемому результату(ну ждет он вас - что это дает???)

Ну в целом ситуация такая. 100500 раз пройденный сюжет Ская мну уже малоинтересен. Используется игра чисто как этакий средневеково-фэнтезийный сим. Отыгрыш роли- ГГ охотник, промышляет добычей шкур, мяса и рыбы (никаких грабежей и мародёрства). Для торговли используется плагин yourmarketstall- торговля в реальном времени и месте с собственного "ларька". Прикол в том, что за торговый стол можно посадить компаньона... Ну вроде всё логично, муж-добытчик на охоте, жена торгует. Но неудобство в том, что когда компаньон торгует- он какбэ числится в режиме ожидания, т.е. каждые 72 часа нужно успеть снять выручку и хоть немного прогулять её, прежде чем снова посадить торговать. Не успел-всё, компаньон встал и ушёл домой, а всё заработанное помножилось на ноль) Вот такая загогулина)

Опубликовано
13.07.2016 09:24:34, krezozavr сказал(-а):

Ну в целом ситуация такая. 100500 раз пройденный сюжет Ская мну уже малоинтересен. Используется игра чисто как этакий средневеково-фэнтезийный сим. Отыгрыш роли- ГГ охотник, промышляет добычей шкур, мяса и рыбы (никаких грабежей и мародёрства). Для торговли используется плагин yourmarketstall- торговля в реальном времени и месте с собственного "ларька". Прикол в том, что за торговый стол можно посадить компаньона... Ну вроде всё логично, муж-добытчик на охоте, жена торгует. Но неудобство в том, что когда компаньон торгует- он какбэ числится в режиме ожидания, т.е. каждые 72 часа нужно успеть снять выручку и хоть немного прогулять её, прежде чем снова посадить торговать. Не успел-всё, компаньон встал и ушёл домой, а всё заработанное помножилось на ноль) Вот такая загогулина)

Похорошему тут надо квест делать(ну он не будет числиться как квест) и пытаться танцевать оттуда. Немного непонял - "компаньон торгует" шта?? вашим скриптом? или как он вообще делает такое?

  • Нравится 1
Опубликовано
13.07.2016 09:24:34, krezozavr сказал(-а):

Ну в целом ситуация такая. 100500 раз пройденный сюжет Ская мну уже малоинтересен. Используется игра чисто как этакий средневеково-фэнтезийный сим. Отыгрыш роли- ГГ охотник, промышляет добычей шкур, мяса и рыбы (никаких грабежей и мародёрства). Для торговли используется плагин yourmarketstall- торговля в реальном времени и месте с собственного "ларька". Прикол в том, что за торговый стол можно посадить компаньона... Ну вроде всё логично, муж-добытчик на охоте, жена торгует. Но неудобство в том, что когда компаньон торгует- он какбэ числится в режиме ожидания, т.е. каждые 72 часа нужно успеть снять выручку и хоть немного прогулять её, прежде чем снова посадить торговать. Не успел-всё, компаньон встал и ушёл домой, а всё заработанное помножилось на ноль) Вот такая загогулина)

Нужно просто вписать другое время ожидания и перекомпилировать скрипт. http://i.imgur.com/tcCmOzN.png

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

  • Нравится 1
Опубликовано (изменено)
16.07.2016 11:36:20, EdgeNito12 сказал(-а):
"компаньон торгует" шта?? вашим скриптом? или как он вообще делает такое?

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

 

16.07.2016 12:31:29, werr сказал(-а):
Нужно просто вписать другое время ожидания и перекомпилировать скрипт.

Вот спасибо :good2:  Завтра попробую, а может и сегодня вечером.

 

 

Не работает(  Выставил 999, но как было 72 часа, так и осталось, и новая игра не помогла(

Изменено пользователем krezozavr
  • 1 месяц спустя...
Опубликовано
15.02.2016 10:41:45, crimm сказал(-а):

Здравствуйте, подскажите как можно создать цепочку эффектов в заклинании или зелье, например, выпиваешь зелье и тебе сначала регенит здоровье минуту, потом ману минуту, потом выносливость минуту. заранее благодарен

задавал вопрос никто не ответил (

Опубликовано (изменено)
29.08.2016 21:35:21, crimm сказал(-а):

задавал вопрос никто не ответил (

Пишете собственный заскриптованный магический эффект, добавляете его в бутылку или заклинание. Первое заклинание применяете сразу в скрипте. Последующие через RegisterForSingleUpdate с заданным временными интервалами.

Изменено пользователем zilav
  • Нравится 1
Опубликовано
29.08.2016 21:35:21, crimm сказал(-а):

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

.....задавал вопрос никто не ответил (

у спелла все просто: делается 3 эффекта:

1  на восстановление здоровья,

2 ... маны,

2 ... сил.

и все они должны быть наложены/применены к цели(тоесть кастеру) одновременно. У эффектов должны быть в условиях действия следующее: если эффект восстановления здоровья действует, то этот эффект не действует == такое условие должно быть у самого эффекта а не у спелла. и время действия эффектов соответственно: на здоровье =x сек, на ману = 2x сек, на силы = 3x сек. те пока действует эффект на здоровье, самый кратковременный из них - остальные неработают по причине условий: эффект восстановление здоровья присутствует на кастере.

общая мысль такая. вожно и через скрипт, но не обязательно.

  • Нравится 2
  • 3 недели спустя...
Опубликовано
26.09.2016 02:48:24, AlienSoul сказал(-а):

Кто ни будь знает, скрипт, который сможет запретить пользоваться 3D картой? чтобы нельзя было залезть в неё ни через кнопку M, ни через Твин меню!

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

  • Нравится 1
Опубликовано
26.09.2016 22:32:51, werr сказал(-а):

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

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

Опубликовано
27.09.2016 10:52:04, AlienSoul сказал(-а):

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

Странно, не припоминаю ничего по скриптам, что бы могло так работать. Хотя, если он юзает сксе для этого - хз. Ну тогда я не прав.

И сразу встречный вопрос: у тебя есть готовое решение на руках, что мешает его посмотреть и проанализировать? Зачем тогда задавать вопрос?
  • Нравится 1
Опубликовано
28.09.2016 04:18:59, werr сказал(-а):

Странно, не припоминаю ничего по скриптам, что бы могло так работать. Хотя, если он юзает сксе для этого - хз. Ну тогда я не прав.

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

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

Опубликовано
28.09.2016 08:46:42, AlienSoul сказал(-а):

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

если хочешь - напиши код тогда сюда. посмотрим.

  • Нравится 1
Опубликовано
28.09.2016 10:28:36, werr сказал(-а):

если хочешь - напиши код тогда сюда. посмотрим.

Воть

Scriptname RTT_Menu extends SKI_ConfigBase

RTT Property ReadingTakesTime Auto 

bool isModActive = false
bool isReadingActive = true
bool isCraftingActive = true
bool isContainerActive = true
bool isLockpickActive = true
bool isTrainingActive = true
bool isLevelUpActive = true
bool isInventoryActive = true
bool isMagicActive = true
bool isJournalActive = true
bool isMapActive = true
bool isBarterActive = true
bool isGiftActive = true

int isModActiveID
int isReadingActiveID
int isCraftingActiveID
int isContainerActiveID
int isLockpickActiveID
int isTrainingActiveID
int isLevelUpActiveID
int isInventoryActiveID
int isMagicActiveID
int isJournalActiveID
int isMapActiveID
int isBarterActiveID
int isGiftActiveID

int showMessageID
int dontShowMessageID
int expertiseReducesTimeID
int cantReadID
int readMultID
int readingIncreasesSpeechID
int readingIncreaseMultID
int spellLearnTimeID
int cantLootID
int lootMultID
int pickpocketMultID
int cantPickID
int pickMultID
int headCraftTimeID
int armorCraftTimeID
int handsCraftTimeID
int feetCraftTimeID
int shieldCraftTimeID
int jewelryCraftTimeID
int battleAxeCraftTimeID
int bowCraftTimeID
int daggerCraftTimeID
int greatswordCraftTimeID
int maceCraftTimeID
int staffCraftTimeID
int swordCraftTimeID
int warhammerCraftTimeID
int warAxeCraftTimeID
int weaponCraftTimeID
int miscCraftTimeID
int armorImproveTimeID
int weaponImproveTimeID
int potionCraftTimeID
int enchantingTimeID
int trainingMultID
int trainingTimeID
int cantLevelUpID
int levelUpMultID
int levelUpTimeID
int inventoryMultID
int cantInventoryID
int eatTimeID
int magicMultID
int cantMagicID
int journalMultID
int cantJournalID
int mapMultID
int cantMapID
int barterMultID
int giftMultID

int saveID
int loadID

import FISSFactory

Function InitMod()
if ( isModActive )
  ReadingTakesTime.StartReading = Utility.GetCurrentRealTime()
  ReadingTakesTime.StopReading = Utility.GetCurrentRealTime()
  if ( isReadingActive )
   RegisterForMenu("Book Menu")
  else
   UnregisterForMenu("Book Menu")
  endIf
  if ( isCraftingActive )
   RegisterForMenu("Crafting Menu")
  else
   UnregisterForMenu("Crafting Menu")
  endIf
  if ( isContainerActive )
   RegisterForMenu("ContainerMenu")
   ;RegisterForCrosshairRef()
  else
   UnregisterForMenu("ContainerMenu")
   ;UnregisterForCrosshairRef()
  endIf
  if ( isLockpickActive )
   RegisterForMenu("Lockpicking Menu")
  else
   UnregisterForMenu("Lockpicking Menu")
  endIf
  if ( isTrainingActive )
   RegisterForMenu("Training Menu")
  else
   UnregisterForMenu("Training Menu")
  endIf
  if ( isLevelUpActive )
   RegisterForMenu("StatsMenu")
  else
   UnregisterForMenu("StatsMenu")
  endIf
  if ( isInventoryActive )
   RegisterForMenu("InventoryMenu")
  else
   UnregisterForMenu("InventoryMenu")
  endIf
  if ( isMagicActive )
   RegisterForMenu("MagicMenu")
  else
   UnregisterForMenu("MagicMenu")
  endIf
  if ( isJournalActive )
   RegisterForMenu("Journal Menu")
   ReadingTakesTime.StartReading = Utility.GetCurrentRealTime()
   ReadingTakesTime.StopReading = Utility.GetCurrentRealTime()
  else
   UnregisterForMenu("Journal Menu")
  endIf
  if ( isMapActive )
   RegisterForMenu("MapMenu")
  else
   UnregisterForMenu("MapMenu")
  endIf
  if ( isBarterActive )
   RegisterForMenu("BarterMenu")
  else
   UnregisterForMenu("BarterMenu")
  endIf
  if ( isGiftActive )
   RegisterForMenu("GiftMenu")
  else
   UnregisterForMenu("GiftMenu")
  endIf
else
  UnregisterForAllMenus()
  UnregisterForCrosshairRef()
endIf
ReadingTakesTime.InitStats(isModActive)
EndFunction

Function SaveSettings()
FISSInterface fiss = FISSFactory.getFISS()
If !fiss
  debug.MessageBox("$FISS not installed. Saving disabled")
  return
endif
fiss.beginSave("LTT\\LTTSettings.xml", "LivingTakesTime")

fiss.saveBool("isModActive", isModActive)
fiss.saveBool("isReadingActive", isReadingActive)
fiss.saveBool("isCraftingActive", isCraftingActive)
fiss.saveBool("isContainerActive", isContainerActive)
fiss.saveBool("isLockpickActive", isLockpickActive)
fiss.saveBool("isTrainingActive", isTrainingActive)
fiss.saveBool("isLevelUpActive", isLevelUpActive)
fiss.saveBool("isInventoryActive", isInventoryActive)
fiss.saveBool("isMagicActive", isMagicActive)
fiss.saveBool("isJournalActive", isJournalActive)
fiss.saveBool("isMapActive", isMapActive)
fiss.saveBool("isBarterActive", isBarterActive)
fiss.saveBool("isGiftActive", isGiftActive)
fiss.saveBool("cantLoot", ReadingTakesTime.cantLoot)
fiss.saveBool("cantPick", ReadingTakesTime.cantPick)
fiss.saveBool("showMessage", ReadingTakesTime.showMessage)
fiss.saveBool("dontShowMessage", ReadingTakesTime.dontShowMessage)
fiss.saveBool("expertiseReducesTime", ReadingTakesTime.expertiseReducesTime)
fiss.saveBool("cantRead", ReadingTakesTime.cantRead)
fiss.saveBool("readingIncreasesSpeech", ReadingTakesTime.readingIncreasesSpeech)
fiss.saveBool("cantLevelUp", ReadingTakesTime.cantLevelUp)
fiss.saveBool("cantInventory", ReadingTakesTime.cantInventory)
fiss.saveBool("cantMagic", ReadingTakesTime.cantMagic)
fiss.saveBool("cantJournal", ReadingTakesTime.cantJournal)
fiss.saveBool("cantMap", ReadingTakesTime.cantMap)

fiss.saveFloat("readMult", ReadingTakesTime.readMult)
fiss.saveFloat("readingIncreaseMult", ReadingTakesTime.readingIncreaseMult)
fiss.saveFloat("spellLearnTime", ReadingTakesTime.spellLearnTime)
fiss.saveFloat("headCraftTime", ReadingTakesTime.headCraftTime)
fiss.saveFloat("armorCraftTime", ReadingTakesTime.armorCraftTime)
fiss.saveFloat("handsCraftTime", ReadingTakesTime.handsCraftTime)
fiss.saveFloat("feetCraftTime", ReadingTakesTime.feetCraftTime)
fiss.saveFloat("shieldCraftTime", ReadingTakesTime.shieldCraftTime)
fiss.saveFloat("jewelryCraftTime", ReadingTakesTime.jewelryCraftTime)
fiss.saveFloat("battleAxeCraftTime", ReadingTakesTime.battleAxeCraftTime)
fiss.saveFloat("bowCraftTime", ReadingTakesTime.bowCraftTime)
fiss.saveFloat("daggerCraftTime", ReadingTakesTime.daggerCraftTime)
fiss.saveFloat("greatswordCraftTime", ReadingTakesTime.greatswordCraftTime)
fiss.saveFloat("maceCraftTime", ReadingTakesTime.maceCraftTime)
fiss.saveFloat("staffCraftTime", ReadingTakesTime.staffCraftTime)
fiss.saveFloat("swordCraftTime", ReadingTakesTime.swordCraftTime)
fiss.saveFloat("warhammerCraftTime", ReadingTakesTime.warhammerCraftTime)
fiss.saveFloat("warAxeCraftTime", ReadingTakesTime.warAxeCraftTime)
fiss.saveFloat("weaponCraftTime", ReadingTakesTime.weaponCraftTime)
fiss.saveFloat("miscCraftTime", ReadingTakesTime.miscCraftTime)
fiss.saveFloat("armorImproveTime", ReadingTakesTime.armorImproveTime)
fiss.saveFloat("weaponImproveTime", ReadingTakesTime.weaponImproveTime)
fiss.saveFloat("enchantingTime", ReadingTakesTime.enchantingTime)
fiss.saveFloat("potionCraftTime", ReadingTakesTime.potionCraftTime)
fiss.saveFloat("lootMult", ReadingTakesTime.lootMult)
fiss.saveFloat("pickMult", ReadingTakesTime.pickMult)
fiss.saveFloat("pickpocketMult", ReadingTakesTime.pickpocketMult)
fiss.saveFloat("trainingMult", ReadingTakesTime.trainingMult)
fiss.saveFloat("trainingTime", ReadingTakesTime.trainingTime)
fiss.saveFloat("levelUpMult", ReadingTakesTime.levelUpMult)
fiss.saveFloat("levelUpTime", ReadingTakesTime.levelUpTime)
fiss.saveFloat("inventoryMult", ReadingTakesTime.inventoryMult)
fiss.saveFloat("eatTime", ReadingTakesTime.eatTime)
fiss.saveFloat("magicMult", ReadingTakesTime.magicMult)
fiss.saveFloat("journalMult", ReadingTakesTime.journalMult)
fiss.saveFloat("mapMult", ReadingTakesTime.mapMult)
fiss.saveFloat("barterMult", ReadingTakesTime.barterMult)
fiss.saveFloat("giftMult", ReadingTakesTime.giftMult)

string saveResult = fiss.endSave()
if saveResult != ""
  debug.Trace(saveResult)
endif
EndFunction

Function LoadSettings()
FISSInterface fiss = FISSFactory.getFISS()
If !fiss
  debug.MessageBox("FISS not installed. Loading disabled")
  return
endif
fiss.beginLoad("LTT\\LTTSettings.xml")

isModActive = fiss.loadBool("isModActive")
isReadingActive = fiss.loadBool("isReadingActive")
isCraftingActive = fiss.loadBool("isCraftingActive")
isContainerActive = fiss.loadBool("isContainerActive")
isLockpickActive = fiss.loadBool("isLockpickActive")
isTrainingActive = fiss.loadBool("isTrainingActive")
isLevelUpActive = fiss.loadBool("isLevelUpActive")
isInventoryActive = fiss.loadBool("isInventoryActive")
isMagicActive = fiss.loadBool("isMagicActive")
isJournalActive = fiss.loadBool("isJournalActive")
isMapActive = fiss.loadBool("isMapActive")
isBarterActive = fiss.loadBool("isBarterActive")
isGiftActive = fiss.loadBool("isGiftActive")
ReadingTakesTime.cantLoot = fiss.loadBool("cantLoot")
ReadingTakesTime.cantPick = fiss.loadBool("cantPick")
ReadingTakesTime.showMessage = fiss.loadBool("showMessage")
ReadingTakesTime.dontShowMessage = fiss.loadBool("dontShowMessage")
ReadingTakesTime.expertiseReducesTime = fiss.loadBool("expertiseReducesTime")
ReadingTakesTime.cantRead = fiss.loadBool("cantRead")
ReadingTakesTime.readingIncreasesSpeech = fiss.loadBool("readingIncreasesSpeech")
ReadingTakesTime.cantLevelUp = fiss.loadBool("cantLevelUp")
ReadingTakesTime.cantInventory = fiss.loadBool("cantInventory")
ReadingTakesTime.cantMagic = fiss.loadBool("cantMagic")
ReadingTakesTime.cantJournal = fiss.loadBool("cantJournal")
ReadingTakesTime.cantMap = fiss.loadBool("cantMap")

ReadingTakesTime.readMult = fiss.loadFloat("readMult")
ReadingTakesTime.readingIncreaseMult = fiss.loadFloat("readingIncreaseMult")
ReadingTakesTime.spellLearnTime = fiss.loadFloat("spellLearnTime")
ReadingTakesTime.headCraftTime = fiss.loadFloat("headCraftTime")
ReadingTakesTime.armorCraftTime = fiss.loadFloat("armorCraftTime")
ReadingTakesTime.handsCraftTime = fiss.loadFloat("handsCraftTime")
ReadingTakesTime.feetCraftTime = fiss.loadFloat("feetCraftTime")
ReadingTakesTime.shieldCraftTime = fiss.loadFloat("shieldCraftTime")
ReadingTakesTime.jewelryCraftTime = fiss.loadFloat("jewelryCraftTime")
ReadingTakesTime.battleAxeCraftTime = fiss.loadFloat("battleAxeCraftTime")
ReadingTakesTime.bowCraftTime = fiss.loadFloat("bowCraftTime")
ReadingTakesTime.daggerCraftTime = fiss.loadFloat("daggerCraftTime")
ReadingTakesTime.greatswordCraftTime = fiss.loadFloat("greatswordCraftTime")
ReadingTakesTime.maceCraftTime = fiss.loadFloat("maceCraftTime")
ReadingTakesTime.staffCraftTime = fiss.loadFloat("staffCraftTime")
ReadingTakesTime.swordCraftTime = fiss.loadFloat("swordCraftTime")
ReadingTakesTime.warhammerCraftTime = fiss.loadFloat("warhammerCraftTime")
ReadingTakesTime.warAxeCraftTime = fiss.loadFloat("warAxeCraftTime")
ReadingTakesTime.weaponCraftTime = fiss.loadFloat("weaponCraftTime")
ReadingTakesTime.miscCraftTime = fiss.loadFloat("miscCraftTime")
ReadingTakesTime.armorImproveTime = fiss.loadFloat("armorImproveTime")
ReadingTakesTime.weaponImproveTime = fiss.loadFloat("weaponImproveTime")
ReadingTakesTime.enchantingTime = fiss.loadFloat("enchantingTime")
ReadingTakesTime.potionCraftTime = fiss.loadFloat("potionCraftTime")
ReadingTakesTime.lootMult = fiss.loadFloat("lootMult")
ReadingTakesTime.pickMult = fiss.loadFloat("pickMult")
ReadingTakesTime.pickpocketMult = fiss.loadFloat("pickpocketMult")
ReadingTakesTime.trainingMult = fiss.loadFloat("trainingMult")
ReadingTakesTime.trainingTime = fiss.loadFloat("trainingTime")
ReadingTakesTime.levelUpMult = fiss.loadFloat("levelUpMult")
ReadingTakesTime.levelUpTime = fiss.loadFloat("levelUpTime")
ReadingTakesTime.inventoryMult = fiss.loadFloat("inventoryMult")
ReadingTakesTime.eatTime = fiss.loadFloat("eatTime")
ReadingTakesTime.magicMult = fiss.loadFloat("magicMult")
ReadingTakesTime.journalMult = fiss.loadFloat("journalMult")
ReadingTakesTime.mapMult = fiss.loadFloat("mapMult")
ReadingTakesTime.barterMult = fiss.loadFloat("barterMult")
ReadingTakesTime.giftMult = fiss.loadFloat("giftMult")

string loadResult = fiss.endLoad()
if loadResult != ""
  debug.Trace(loadResult)
endif
InitMod()
EndFunction

int function GetVersion()
return 6
endFunction

event OnConfigInit()
ModName = "Living Takes Time"

Pages = new string[7]
Pages[0] = "General"
Pages[1] = "Reading"
Pages[2] = "Crafting"
Pages[3] = "Looting"
Pages[4] = "Training"
Pages[5] = "Preparing"
Pages[6] = "Trading"

ReadingTakesTime.StartReading = Utility.GetCurrentRealTime()
ReadingTakesTime.StopReading = Utility.GetCurrentRealTime()

UnregisterForAllMenus()
;UnregisterForCrosshairRef()
RegisterForMenu("Book Menu")
RegisterForMenu("Crafting Menu")
RegisterForMenu("ContainerMenu")
;RegisterForCrosshairRef()
RegisterForMenu("Lockpicking Menu")
RegisterForMenu("Training Menu")
RegisterForMenu("StatsMenu")
RegisterForMenu("InventoryMenu")
RegisterForMenu("MagicMenu")
RegisterForMenu("Journal Menu")
RegisterForMenu("MapMenu")
RegisterForMenu("BarterMenu")
RegisterForMenu("GiftMenu")

ReadingTakesTime.showMessage = True
ReadingTakesTime.dontShowMessage = True
ReadingTakesTime.cantRead = True
ReadingTakesTime.readMult = 1
ReadingTakesTime.armorCraftTime = 4
ReadingTakesTime.weaponCraftTime = 4
ReadingTakesTime.armorImproveTime = 1
ReadingTakesTime.weaponImproveTime = 1
ReadingTakesTime.enchantingTime = 1
ReadingTakesTime.potionCraftTime = 1
ReadingTakesTime.cantLoot = True
ReadingTakesTime.lootMult = 1
ReadingTakesTime.cantPick = True
ReadingTakesTime.pickMult = 1
ReadingTakesTime.trainingMult = 1
ReadingTakesTime.trainingTime = 2
ReadingTakesTime.cantLevelUp = True
ReadingTakesTime.levelUpMult = 1
ReadingTakesTime.levelUpTime = 1
ReadingTakesTime.cantInventory = True
ReadingTakesTime.inventoryMult = 1
ReadingTakesTime.eatTime = 5
ReadingTakesTime.cantMagic = True
ReadingTakesTime.magicMult = 1
ReadingTakesTime.cantJournal = True
ReadingTakesTime.journalMult = 1
ReadingTakesTime.cantMap = True
ReadingTakesTime.mapMult = 1
ReadingTakesTime.barterMult = 1
ReadingTakesTime.giftMult = 1

isModActive = false
isReadingActive = true
isCraftingActive = true
isContainerActive = true
isLockpickActive = true
isTrainingActive = true
isLevelUpActive = true
isInventoryActive = true
isMagicActive = true
isJournalActive = true
isMapActive = true
isBarterActive = true
isGiftActive = true

endEvent

event OnVersionUpdate(int version)
    if (version > 2)
  ReadingTakesTime.isInventoryActive = isInventoryActive
  ReadingTakesTime.headCraftTime = 3
  ReadingTakesTime.armorCraftTime = 6
  ReadingTakesTime.handsCraftTime = 3
  ReadingTakesTime.feetCraftTime = 3
  ReadingTakesTime.shieldCraftTime = 4
  ReadingTakesTime.jewelryCraftTime = 2
  ReadingTakesTime.battleAxeCraftTime = 4
  ReadingTakesTime.bowCraftTime = 4
  ReadingTakesTime.daggerCraftTime = 3
  ReadingTakesTime.greatswordCraftTime = 4
  ReadingTakesTime.maceCraftTime = 4
  ReadingTakesTime.staffCraftTime = 2
  ReadingTakesTime.swordCraftTime = 4
  ReadingTakesTime.warhammerCraftTime = 4
  ReadingTakesTime.warAxeCraftTime = 4
  ReadingTakesTime.weaponCraftTime = 2
  ReadingTakesTime.miscCraftTime = 0.5
  ReadingTakesTime.chopTime = 5
    endIf
if (version > 3)
  ReadingTakesTime.expertiseReducesTime = True
  ReadingTakesTime.readingIncreasesSpeech = True
  ReadingTakesTime.readingIncreaseMult = 1
    endIf
if (version > 4)
  ReadingTakesTime.pickpocketMult = 1
endIf
if (version > 5)
  Pages[0] = "$General"
  Pages[1] = "$Reading"
  Pages[2] = "$Crafting"
  Pages[3] = "$Looting"
  Pages[4] = "$Training"
  Pages[5] = "$Preparing"
  Pages[6] = "$Trading"
  ReadingTakesTime.spellLearnTime = 2
  InitMod()
    endIf
endEvent

event OnGameReload()
parent.OnGameReload() ; Don't forget to call the parent!
InitMod()
endEvent

event OnPageReset(string page)
if (page == "")
      LoadCustomContent("LivingTakesTime/LTThome.dds",26,23)
         return
     else
         UnloadCustomContent()
     endIf
if (page == "$General")
  SetCursorFillMode(TOP_TO_BOTTOM)
  AddHeaderOption("$Options")
  isModActiveID = AddToggleOption("$Activate Mod?", isModActive)
  showMessageID = AddToggleOption("$Show message notifications?", ReadingTakesTime.showMessage)
  dontShowMessageID = AddToggleOption("$No notifications if no time has passed?", ReadingTakesTime.dontShowMessage)
  expertiseReducesTimeID = AddToggleOption("$Expertise reduces time?", ReadingTakesTime.expertiseReducesTime)
  SetCursorPosition(1)
  AddHeaderOption("$Save & Load")
  FISSInterface fiss = FISSFactory.getFISS()
  int SaveFlag = OPTION_FLAG_NONE
  int LoadFlag = OPTION_FLAG_NONE
  if !fiss
   SaveFlag = OPTION_FLAG_DISABLED
   LoadFlag = OPTION_FLAG_DISABLED
  else
   fiss.beginLoad("LTT\\LTTSettings.xml")
   if fiss.endLoad() != ""
    LoadFlag = OPTION_FLAG_DISABLED
   endIf
  endif
  saveID = AddTextOption("$Save settings", "", SaveFlag)
  loadID = AddTextOption("$Load settings", "", LoadFlag)
elseif (page == "$Reading")
  SetCursorFillMode(TOP_TO_BOTTOM)
  AddHeaderOption("$Options")
  isReadingActiveID = AddToggleOption("$Reading Takes Time?", isReadingActive)
  readMultID = AddSliderOption("$Time Multiplier", ReadingTakesTime.readMult,"$x{2}")
  cantReadID = AddToggleOption("$Block read while in combat?", ReadingTakesTime.cantRead)
  readingIncreasesSpeechID = AddToggleOption("$Reading increases speech?", ReadingTakesTime.readingIncreasesSpeech)
  readingIncreaseMultID = AddSliderOption("$Reading increase Multiplier", ReadingTakesTime.readingIncreaseMult,"$x{2}")
  spellLearnTimeID = AddSliderOption("$Learning Spell Time", ReadingTakesTime.spellLearnTime,"${1} hour(s)")
elseIf (page == "$Crafting")
  SetCursorFillMode(TOP_TO_BOTTOM)
  AddHeaderOption("$Options")
  isCraftingActiveID = AddToggleOption("$Crafting Takes Time?", isCraftingActive)
  AddHeaderOption("$Armors, Shields and Jewels")
  armorImproveTimeID = AddSliderOption("$Improving Time", ReadingTakesTime.armorImproveTime,"${1} hour(s)")
  headCraftTimeID = AddSliderOption("$Helmet & Circlet Crafting Time", ReadingTakesTime.headCraftTime,"${1} hour(s)")
  armorCraftTimeID = AddSliderOption("$Cuirass & Clothes Crafting Time", ReadingTakesTime.armorCraftTime,"${1} hour(s)")
  handsCraftTimeID = AddSliderOption("$Bracers & Gloves Crafting Time", ReadingTakesTime.handsCraftTime,"${1} hour(s)")
  feetCraftTimeID = AddSliderOption("$Boots & Shoes Crafting Time", ReadingTakesTime.feetCraftTime,"${1} hour(s)")
  shieldCraftTimeID = AddSliderOption("$Shield Crafting Time", ReadingTakesTime.shieldCraftTime,"${1} hour(s)")
  jewelryCraftTimeID = AddSliderOption("$Jewelry Crafting Time", ReadingTakesTime.jewelryCraftTime,"${1} hour(s)")
  AddHeaderOption("$Tanning, Smelting and Misc")
  miscCraftTimeID = AddSliderOption("$Crafting Time", ReadingTakesTime.miscCraftTime,"${1} hour(s)")
  AddHeaderOption("$Enchanting")
  enchantingTimeID = AddSliderOption("$Crafting Time", ReadingTakesTime.enchantingTime,"${1} hour(s)")
  AddHeaderOption("$Potions, Poisons and Food")
  potionCraftTimeID = AddSliderOption("$Crafting Time", ReadingTakesTime.potionCraftTime,"${1} hour(s)")
  SetCursorPosition(5)
  AddHeaderOption("$Weapons")
  weaponImproveTimeID = AddSliderOption("$Improving Time", ReadingTakesTime.weaponImproveTime,"${1} hour(s)")
  battleAxeCraftTimeID = AddSliderOption("$Battle Axe Crafting Time", ReadingTakesTime.battleAxeCraftTime,"${1} hour(s)")
  bowCraftTimeID = AddSliderOption("$Bow Crafting Time", ReadingTakesTime.bowCraftTime,"${1} hour(s)")
  daggerCraftTimeID = AddSliderOption("$Dagger Crafting Time", ReadingTakesTime.daggerCraftTime,"${1} hour(s)")
  greatswordCraftTimeID = AddSliderOption("$Greatsword Crafting Time", ReadingTakesTime.greatswordCraftTime,"${1} hour(s)")
  maceCraftTimeID = AddSliderOption("$Mace Crafting Time", ReadingTakesTime.maceCraftTime,"${1} hour(s)")
  staffCraftTimeID = AddSliderOption("$Staff Crafting Time", ReadingTakesTime.staffCraftTime,"${1} hour(s)")
  swordCraftTimeID = AddSliderOption("$Sword Crafting Time", ReadingTakesTime.swordCraftTime,"${1} hour(s)")
  warhammerCraftTimeID = AddSliderOption("$Warhammer Crafting Time", ReadingTakesTime.warhammerCraftTime,"${1} hour(s)")
  warAxeCraftTimeID = AddSliderOption("$War Axe Crafting Time", ReadingTakesTime.warAxeCraftTime,"${1} hour(s)")
  weaponCraftTimeID = AddSliderOption("$Ammo Crafting Time", ReadingTakesTime.weaponCraftTime,"${1} hour(s)")
elseIf (page == "$Looting")
  SetCursorFillMode(LEFT_TO_RIGHT)
  AddHeaderOption("$Containers, Dead Bodies and Pickpocket")
  AddHeaderOption("$Lockpicking")
  isContainerActiveID = AddToggleOption("$Looting Takes Time?", isContainerActive)
  isLockpickActiveID = AddToggleOption("$Lockpicking Takes Time?", isLockpickActive)
  lootMultID = AddSliderOption("$Time Multiplier", ReadingTakesTime.lootMult,"$x{2}")
  pickMultID = AddSliderOption("$Time Multiplier", ReadingTakesTime.pickMult,"$x{2}")
  cantLootID = AddToggleOption("$Block looting while in combat?", ReadingTakesTime.cantLoot)
  cantPickID = AddToggleOption("$Block lockpicking while in combat?", ReadingTakesTime.cantPick)
  pickpocketMultID = AddSliderOption("$Pickpocket Time Multiplier", ReadingTakesTime.pickpocketMult,"$x{2}")
elseIf (page == "$Training")
  SetCursorFillMode(LEFT_TO_RIGHT)
  AddHeaderOption("$Training")
  AddHeaderOption("$Level Up")
  isTrainingActiveID = AddToggleOption("$Training Takes Time?", isTrainingActive)
  isLevelUpActiveID = AddToggleOption("$Leveling Up Takes Time?", isLevelUpActive)
  trainingMultID = AddSliderOption("$Time Multiplier", ReadingTakesTime.trainingMult,"$x{2}")
  levelUpMultID = AddSliderOption("$Time Multiplier", ReadingTakesTime.levelUpMult,"$x{2}")
  trainingTimeID = AddSliderOption("$Training Time", ReadingTakesTime.trainingTime,"${1} hour(s)")
  SetCursorFillMode(TOP_TO_BOTTOM)
  levelUpTimeID = AddSliderOption("$Level Up Time", ReadingTakesTime.levelUpTime,"${1} hour(s)")
  cantLevelUpID = AddToggleOption("$Block leveling while in combat?", ReadingTakesTime.cantLevelUp)
elseIf (page == "$Preparing")
  SetCursorFillMode(LEFT_TO_RIGHT)
  AddHeaderOption("$Inventory")
  AddHeaderOption("$Magic")
  isInventoryActiveID = AddToggleOption("$Inventory Takes Time?", isInventoryActive)
  isMagicActiveID = AddToggleOption("$Magic Menu Takes Time?", isMagicActive)
  inventoryMultID = AddSliderOption("$Time Multiplier", ReadingTakesTime.inventoryMult,"$x{2}")
  magicMultID = AddSliderOption("$Time Multiplier", ReadingTakesTime.magicMult,"$x{2}")
  cantInventoryID = AddToggleOption("$Block inventory while in combat?", ReadingTakesTime.cantInventory)
  cantMagicID = AddToggleOption("$Block magic menu while in combat?", ReadingTakesTime.cantMagic)
  SetCursorFillMode(TOP_TO_BOTTOM)
  eatTimeID = AddSliderOption("$Eating Time", ReadingTakesTime.eatTime,"${0} Minute(s)")
  SetCursorFillMode(LEFT_TO_RIGHT)
  AddHeaderOption("$Journal")
  AddHeaderOption("$Map")
  isJournalActiveID = AddToggleOption("$Journal Takes Time?", isJournalActive)
  isMapActiveID = AddToggleOption("$Map Takes Time?", isMapActive)
  journalMultID = AddSliderOption("$Time Multiplier", ReadingTakesTime.journalMult,"$x{2}")
  mapMultID = AddSliderOption("$Time Multiplier", ReadingTakesTime.mapMult,"$x{2}")
  cantJournalID = AddToggleOption("$Block journal while in combat?", ReadingTakesTime.cantJournal)
  cantMapID = AddToggleOption("$Block map menu while in combat?", ReadingTakesTime.cantMap)
elseIf (page == "$Trading")
  SetCursorFillMode(LEFT_TO_RIGHT)
  AddHeaderOption("$Barter")
  AddHeaderOption("$Gift")
  isBarterActiveID = AddToggleOption("$Barter Takes Time?", isBarterActive)
  isGiftActiveID = AddToggleOption("$Gifting Takes Time?", isGiftActive)
  barterMultID = AddSliderOption("$Time Multiplier", ReadingTakesTime.barterMult,"$x{2}")
  giftMultID = AddSliderOption("$Time Multiplier", ReadingTakesTime.giftMult,"$x{2}")

endIf
endEvent

event OnOptionSelect(int option)
if (option == saveID)
  Bool Choice = ShowMessage("$Save Settings?", True, "$Save", "$Cancel")
  if (Choice)
   SaveSettings()
   ForcePageReset()
  endif
endif
if (option == loadID)
  Bool Choice = ShowMessage("$Load Settings?", True, "$Load", "$Cancel")
  if (Choice)
   LoadSettings()
   ForcePageReset()
  endif
endif
if ( option == isModActiveID )
  isModActive= !isModActive
  SetToggleOptionValue(isModActiveID , isModActive)
  InitMod()
elseif ( option == isReadingActiveID )
  isReadingActive = !isReadingActive
  SetToggleOptionValue(isReadingActiveID, isReadingActive)
  if ( isReadingActive )
   RegisterForMenu("Book Menu")
  else
   UnregisterForMenu("Book Menu")
  endIf
elseif ( option == isCraftingActiveID )
  isCraftingActive = !isCraftingActive
  SetToggleOptionValue(isCraftingActiveID, isCraftingActive )
  if ( isCraftingActive )
   RegisterForMenu("Crafting Menu")
  else
   UnregisterForMenu("Crafting Menu")
  endIf
elseif ( option == isContainerActiveID )
  isContainerActive = !isContainerActive
  SetToggleOptionValue(isContainerActiveID, isContainerActive )
  if ( isContainerActive )
   RegisterForMenu("ContainerMenu")
   ;RegisterForCrosshairRef()
  else
   UnregisterForMenu("ContainerMenu")
   ;UnregisterForCrosshairRef()
  endIf
elseif ( option == isLockpickActiveID )
  isLockpickActive = !isLockpickActive
  SetToggleOptionValue(isLockpickActiveID, isLockpickActive )
  if ( isLockpickActive )
   RegisterForMenu("Lockpicking Menu")
  else
   UnregisterForMenu("Lockpicking Menu")
  endIf
elseif ( option == isTrainingActiveID )
  isTrainingActive = !isTrainingActive
  SetToggleOptionValue(isTrainingActiveID, isTrainingActive )
  if ( isTrainingActive)
   RegisterForMenu("Training Menu")
  else
   UnregisterForMenu("Training Menu")
  endIf
elseif ( option == isLevelUpActiveID )
  isLevelUpActive = !isLevelUpActive
  SetToggleOptionValue(isLevelUpActiveID, isLevelUpActive )
  if ( isLevelUpActive )
   RegisterForMenu("StatsMenu")
  else
   UnregisterForMenu("StatsMenu")
  endIf
elseif ( option == isInventoryActiveID)
  isInventoryActive = !isInventoryActive
  ReadingTakesTime.isInventoryActive = isInventoryActive
  SetToggleOptionValue(isInventoryActiveID, isInventoryActive )
  if ( isInventoryActive )
   RegisterForMenu("InventoryMenu")
  else
   UnregisterForMenu("InventoryMenu")
  endIf
elseif ( option == isMagicActiveID)
  isMagicActive = !isMagicActive
  SetToggleOptionValue(isMagicActiveID, isMagicActive )
  if ( isMagicActive )
   RegisterForMenu("MagicMenu")
  else
   UnregisterForMenu("MagicMenu")
  endIf
elseif ( option == isJournalActiveID)
  isJournalActive = !isJournalActive
  SetToggleOptionValue(isJournalActiveID, isJournalActive )
  if ( isJournalActive )
   RegisterForMenu("Journal Menu")
   ReadingTakesTime.StartReading = Utility.GetCurrentRealTime()
   ReadingTakesTime.StopReading = Utility.GetCurrentRealTime()
  else
   UnregisterForMenu("Journal Menu")
  endIf
elseif ( option == isMapActiveID )
  isMapActive = !isMapActive
  SetToggleOptionValue(isMapActiveID, isMapActive )
  if ( isMapActive )
   RegisterForMenu("MapMenu")
  else
   UnregisterForMenu("MapMenu")
  endIf
elseif ( option == isBarterActiveID )
  isBarterActive = !isBarterActive
  SetToggleOptionValue(isBarterActiveID, isBarterActive )
  if ( isBarterActive )
   RegisterForMenu("BarterMenu")
  else
   UnregisterForMenu("BarterMenu")
  endIf
elseif ( option == isGiftActiveID )
  isGiftActive = !isGiftActive
  SetToggleOptionValue(isGiftActiveID, isGiftActive )
  if ( isGiftActive )
   RegisterForMenu("GiftMenu")
  else
   UnregisterForMenu("GiftMenu")
  endIf
elseif ( option == cantLootID )
  ReadingTakesTime.cantLoot = !ReadingTakesTime.cantLoot
  SetToggleOptionValue(cantLootID, ReadingTakesTime.cantLoot)
elseif ( option == cantPickID )
  ReadingTakesTime.cantPick = !ReadingTakesTime.cantPick
  SetToggleOptionValue(cantPickID, ReadingTakesTime.cantPick)
elseif ( option == showMessageID )
  ReadingTakesTime.showMessage = !ReadingTakesTime.showMessage
  SetToggleOptionValue(showMessageID , ReadingTakesTime.showMessage)
elseif ( option == dontShowMessageID )
  ReadingTakesTime.dontShowMessage = !ReadingTakesTime.dontShowMessage
  SetToggleOptionValue(dontShowMessageID, ReadingTakesTime.dontShowMessage )
elseif ( option == expertiseReducesTimeID )
  ReadingTakesTime.expertiseReducesTime = !ReadingTakesTime.expertiseReducesTime
  SetToggleOptionValue(expertiseReducesTimeID, ReadingTakesTime.expertiseReducesTime )
elseif ( option == cantReadID)
  ReadingTakesTime.cantRead = !ReadingTakesTime.cantRead
  SetToggleOptionValue(cantReadID, ReadingTakesTime.cantRead)
elseif ( option == readingIncreasesSpeechID)
  ReadingTakesTime.readingIncreasesSpeech = !ReadingTakesTime.readingIncreasesSpeech
  SetToggleOptionValue(readingIncreasesSpeechID, ReadingTakesTime.readingIncreasesSpeech)
elseif ( option == cantLevelUpID)
  ReadingTakesTime.cantLevelUp = !ReadingTakesTime.cantLevelUp
  SetToggleOptionValue(cantLevelUpID, ReadingTakesTime.cantLevelUp)
elseif ( option == cantInventoryID)
  ReadingTakesTime.cantInventory = !ReadingTakesTime.cantInventory
  SetToggleOptionValue(cantInventoryID, ReadingTakesTime.cantInventory)
elseif ( option == cantMagicID)
  ReadingTakesTime.cantMagic = !ReadingTakesTime.cantMagic
  SetToggleOptionValue(cantMagicID, ReadingTakesTime.cantMagic)
elseif ( option == cantJournalID)
  ReadingTakesTime.cantJournal = !ReadingTakesTime.cantJournal
  SetToggleOptionValue(cantJournalID, ReadingTakesTime.cantJournal)
elseif ( option == cantMapID)
  ReadingTakesTime.cantMap = !ReadingTakesTime.cantMap
  SetToggleOptionValue(cantMapID, ReadingTakesTime.cantMap)
endIf
endEvent

event OnOptionSliderOpen(int option)
if (option == readMultID )
  SetSliderDialogStartValue(ReadingTakesTime.readMult)
  SetSliderDialogDefaultValue(1.00)
  SetSliderDialogRange(0.00, 4.00)
  SetSliderDialogInterval(0.05)

elseif (option == readingIncreaseMultID )
  SetSliderDialogStartValue(ReadingTakesTime.readingIncreaseMult)
  SetSliderDialogDefaultValue(1.0)
  SetSliderDialogRange(0.0, 10.0)
  SetSliderDialogInterval(0.1)
 
elseif (option == spellLearnTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.spellLearnTime)
  SetSliderDialogDefaultValue(2.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseif (option == headCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.headCraftTime)
  SetSliderDialogDefaultValue(3.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseif (option == armorCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.armorCraftTime)
  SetSliderDialogDefaultValue(6.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseif (option == handsCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.handsCraftTime)
  SetSliderDialogDefaultValue(3.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseif (option == feetCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.feetCraftTime)
  SetSliderDialogDefaultValue(3.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseif (option == shieldCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.shieldCraftTime)
  SetSliderDialogDefaultValue(4.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseif (option == jewelryCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.jewelryCraftTime)
  SetSliderDialogDefaultValue(2.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == battleAxeCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.battleAxeCraftTime)
  SetSliderDialogDefaultValue(4.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == bowCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.bowCraftTime)
  SetSliderDialogDefaultValue(4.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == daggerCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.daggerCraftTime)
  SetSliderDialogDefaultValue(3.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == greatswordCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.greatswordCraftTime)
  SetSliderDialogDefaultValue(4.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == maceCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.maceCraftTime)
  SetSliderDialogDefaultValue(4.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == staffCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.staffCraftTime)
  SetSliderDialogDefaultValue(2.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == swordCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.swordCraftTime)
  SetSliderDialogDefaultValue(4.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == warhammerCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.warhammerCraftTime)
  SetSliderDialogDefaultValue(4.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == warAxeCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.warAxeCraftTime)
  SetSliderDialogDefaultValue(4.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == weaponCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.weaponCraftTime)
  SetSliderDialogDefaultValue(2.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == miscCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.miscCraftTime)
  SetSliderDialogDefaultValue(1.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == armorImproveTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.armorImproveTime)
  SetSliderDialogDefaultValue(1.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == weaponImproveTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.weaponImproveTime)
  SetSliderDialogDefaultValue(1.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == enchantingTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.enchantingTime)
  SetSliderDialogDefaultValue(1.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == potionCraftTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.potionCraftTime)
  SetSliderDialogDefaultValue(1.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == lootMultID )
  SetSliderDialogStartValue(ReadingTakesTime.lootMult)
  SetSliderDialogDefaultValue(1.00)
  SetSliderDialogRange(0.00, 4.00)
  SetSliderDialogInterval(0.05)

elseIf (option == pickMultID )
  SetSliderDialogStartValue(ReadingTakesTime.pickMult)
  SetSliderDialogDefaultValue(1.00)
  SetSliderDialogRange(0.00, 4.00)
  SetSliderDialogInterval(0.05)
 
elseIf (option == pickpocketMultID )
  SetSliderDialogStartValue(ReadingTakesTime.pickpocketMult)
  SetSliderDialogDefaultValue(1.00)
  SetSliderDialogRange(0.00, 4.00)
  SetSliderDialogInterval(0.05)

elseIf (option == trainingMultID )
  SetSliderDialogStartValue(ReadingTakesTime.trainingMult)
  SetSliderDialogDefaultValue(1.00)
  SetSliderDialogRange(0.00, 4.00)
  SetSliderDialogInterval(0.05)

elseIf (option == trainingTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.trainingTime)
  SetSliderDialogDefaultValue(2.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == levelUpMultID )
  SetSliderDialogStartValue(ReadingTakesTime.levelUpMult)
  SetSliderDialogDefaultValue(1.00)
  SetSliderDialogRange(0.00, 4.00)
  SetSliderDialogInterval(0.05)

elseIf (option == levelUpTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.levelUpTime)
  SetSliderDialogDefaultValue(1.0)
  SetSliderDialogRange(0.0, 24.0)
  SetSliderDialogInterval(0.1)

elseIf (option == inventoryMultID )
  SetSliderDialogStartValue(ReadingTakesTime.inventoryMult)
  SetSliderDialogDefaultValue(1.00)
  SetSliderDialogRange(0.00, 4.00)
  SetSliderDialogInterval(0.05)

elseIf (option == eatTimeID )
  SetSliderDialogStartValue(ReadingTakesTime.eatTime)
  SetSliderDialogDefaultValue(5)
  SetSliderDialogRange(0, 60)
  SetSliderDialogInterval(1)

elseIf (option == magicMultID )
  SetSliderDialogStartValue(ReadingTakesTime.magicMult)
  SetSliderDialogDefaultValue(1.00)
  SetSliderDialogRange(0.00, 4.00)
  SetSliderDialogInterval(0.05)

elseIf (option == journalMultID )
  SetSliderDialogStartValue(ReadingTakesTime.journalMult)
  SetSliderDialogDefaultValue(1.00)
  SetSliderDialogRange(0.00, 4.00)
  SetSliderDialogInterval(0.05)

elseIf (option == mapMultID )
  SetSliderDialogStartValue(ReadingTakesTime.mapMult)
  SetSliderDialogDefaultValue(1.00)
  SetSliderDialogRange(0.00, 4.00)
  SetSliderDialogInterval(0.05)

elseIf (option == barterMultID )
  SetSliderDialogStartValue(ReadingTakesTime.barterMult)
  SetSliderDialogDefaultValue(1.00)
  SetSliderDialogRange(0.00, 4.00)
  SetSliderDialogInterval(0.05)

elseIf (option == giftMultID )
  SetSliderDialogStartValue(ReadingTakesTime.giftMult)
  SetSliderDialogDefaultValue(1.00)
  SetSliderDialogRange(0.00, 4.00)
  SetSliderDialogInterval(0.05)

endIf
endEvent

event OnOptionSliderAccept(int option, float value)
    if (option == readMultID )
        ReadingTakesTime.readMult = value
        SetSliderOptionValue(readMultID, ReadingTakesTime.readMult, "$x{2}")

    elseIf (option == readingIncreaseMultID )
        ReadingTakesTime.readingIncreaseMult = value
        SetSliderOptionValue(readingIncreaseMultID , ReadingTakesTime.readingIncreaseMult, "$x{2}")

    elseIf (option == spellLearnTimeID )
        ReadingTakesTime.spellLearnTime = value
        SetSliderOptionValue(spellLearnTimeID , ReadingTakesTime.spellLearnTime, "${1} hour(s)")

    elseIf (option == headCraftTimeID )
        ReadingTakesTime.headCraftTime = value
        SetSliderOptionValue(headCraftTimeID , ReadingTakesTime.headCraftTime, "${1} hour(s)")

    elseIf (option == armorCraftTimeID )
        ReadingTakesTime.armorCraftTime = value
        SetSliderOptionValue(armorCraftTimeID , ReadingTakesTime.armorCraftTime, "${1} hour(s)")

    elseIf (option == handsCraftTimeID )
        ReadingTakesTime.handsCraftTime = value
        SetSliderOptionValue(handsCraftTimeID , ReadingTakesTime.handsCraftTime, "${1} hour(s)")

    elseIf (option == feetCraftTimeID )
        ReadingTakesTime.feetCraftTime = value
        SetSliderOptionValue(feetCraftTimeID , ReadingTakesTime.feetCraftTime, "${1} hour(s)")

    elseIf (option == shieldCraftTimeID )
        ReadingTakesTime.shieldCraftTime = value
        SetSliderOptionValue(shieldCraftTimeID , ReadingTakesTime.shieldCraftTime, "${1} hour(s)")

    elseIf (option == jewelryCraftTimeID )
        ReadingTakesTime.jewelryCraftTime = value
        SetSliderOptionValue(jewelryCraftTimeID , ReadingTakesTime.jewelryCraftTime, "${1} hour(s)")

    elseIf (option == battleAxeCraftTimeID )
        ReadingTakesTime.battleAxeCraftTime = value
        SetSliderOptionValue(battleAxeCraftTimeID, ReadingTakesTime.battleAxeCraftTime, "${1} hour(s)")

    elseIf (option == bowCraftTimeID )
        ReadingTakesTime.bowCraftTime = value
        SetSliderOptionValue(bowCraftTimeID, ReadingTakesTime.bowCraftTime, "${1} hour(s)")

    elseIf (option == daggerCraftTimeID )
        ReadingTakesTime.daggerCraftTime = value
        SetSliderOptionValue(daggerCraftTimeID, ReadingTakesTime.daggerCraftTime, "${1} hour(s)")

    elseIf (option == greatswordCraftTimeID )
        ReadingTakesTime.greatswordCraftTime = value
        SetSliderOptionValue(greatswordCraftTimeID, ReadingTakesTime.greatswordCraftTime, "${1} hour(s)")

    elseIf (option == maceCraftTimeID )
        ReadingTakesTime.maceCraftTime = value
        SetSliderOptionValue(maceCraftTimeID, ReadingTakesTime.maceCraftTime, "${1} hour(s)")

    elseIf (option == staffCraftTimeID )
        ReadingTakesTime.staffCraftTime = value
        SetSliderOptionValue(staffCraftTimeID, ReadingTakesTime.staffCraftTime, "${1} hour(s)")

    elseIf (option == swordCraftTimeID )
        ReadingTakesTime.swordCraftTime = value
        SetSliderOptionValue(swordCraftTimeID, ReadingTakesTime.swordCraftTime, "${1} hour(s)")

    elseIf (option == warhammerCraftTimeID )
        ReadingTakesTime.warhammerCraftTime = value
        SetSliderOptionValue(warhammerCraftTimeID, ReadingTakesTime.warhammerCraftTime, "${1} hour(s)")

    elseIf (option == warAxeCraftTimeID )
        ReadingTakesTime.warAxeCraftTime = value
        SetSliderOptionValue(warAxeCraftTimeID, ReadingTakesTime.warAxeCraftTime, "${1} hour(s)")

    elseIf (option == weaponCraftTimeID )
        ReadingTakesTime.weaponCraftTime = value
        SetSliderOptionValue(weaponCraftTimeID, ReadingTakesTime.weaponCraftTime, "${1} hour(s)")

    elseIf (option == miscCraftTimeID )
        ReadingTakesTime.miscCraftTime = value
        SetSliderOptionValue(miscCraftTimeID, ReadingTakesTime.miscCraftTime, "${1} hour(s)")

    elseIf (option == armorImproveTimeID )
        ReadingTakesTime.armorImproveTime = value
        SetSliderOptionValue(armorImproveTimeID , ReadingTakesTime.armorImproveTime, "${1} hour(s)")

    elseIf (option == weaponImproveTimeID )
        ReadingTakesTime.weaponImproveTime = value
        SetSliderOptionValue(weaponImproveTimeID , ReadingTakesTime.weaponImproveTime, "${1} hour(s)")

    elseIf (option == enchantingTimeID )
        ReadingTakesTime.enchantingTime = value
        SetSliderOptionValue(enchantingTimeID, ReadingTakesTime.enchantingTime, "${1} hour(s)")

    elseIf (option == potionCraftTimeID )
        ReadingTakesTime.potionCraftTime = value
        SetSliderOptionValue(potionCraftTimeID, ReadingTakesTime.potionCraftTime, "${1} hour(s)")

    elseIf (option == lootMultID )
        ReadingTakesTime.lootMult = value
        SetSliderOptionValue(lootMultID, ReadingTakesTime.lootMult, "$x{2}")

    elseIf (option == pickMultID )
        ReadingTakesTime.pickMult = value
        SetSliderOptionValue(pickMultID, ReadingTakesTime.pickMult, "$x{2}")

    elseIf (option == pickpocketMultID )
        ReadingTakesTime.pickpocketMult = value
        SetSliderOptionValue(pickpocketMultID, ReadingTakesTime.pickpocketMult, "$x{2}")

    elseIf (option == trainingMultID )
        ReadingTakesTime.trainingMult = value
        SetSliderOptionValue(trainingMultID, ReadingTakesTime.trainingMult, "$x{2}")

    elseIf (option == trainingTimeID )
        ReadingTakesTime.trainingTime = value
        SetSliderOptionValue(trainingTimeID, ReadingTakesTime.trainingTime, "${1} hour(s)")

    elseIf (option == levelUpMultID )
        ReadingTakesTime.levelUpMult = value
        SetSliderOptionValue(levelUpMultID, ReadingTakesTime.levelUpMult, "$x{2}")

    elseIf (option == levelUpTimeID )
        ReadingTakesTime.levelUpTime = value
        SetSliderOptionValue(levelUpTimeID, ReadingTakesTime.levelUpTime, "${1} hour(s)")

    elseIf (option == inventoryMultID )
        ReadingTakesTime.inventoryMult = value
        SetSliderOptionValue(inventoryMultID, ReadingTakesTime.inventoryMult , "$x{2}")

    elseIf (option == eatTimeID )
        ReadingTakesTime.eatTime = value
        SetSliderOptionValue(eatTimeID, ReadingTakesTime.eatTime, "${0} Minute(s)")

    elseIf (option == magicMultID )
        ReadingTakesTime.magicMult = value
        SetSliderOptionValue(magicMultID, ReadingTakesTime.magicMult, "$x{2}")

    elseIf (option == journalMultID )
        ReadingTakesTime.journalMult = value
        SetSliderOptionValue(journalMultID, ReadingTakesTime.journalMult, "$x{2}")

    elseIf (option == mapMultID )
        ReadingTakesTime.mapMult = value
        SetSliderOptionValue(mapMultID, ReadingTakesTime.mapMult, "$x{2}")

    elseIf (option == barterMultID )
        ReadingTakesTime.barterMult = value
        SetSliderOptionValue(barterMultID, ReadingTakesTime.barterMult, "$x{2}")

    elseIf (option == giftMultID )
        ReadingTakesTime.giftMult = value
        SetSliderOptionValue(giftMultID, ReadingTakesTime.giftMult, "$x{2}")

    endIf
endEvent

event OnOptionDefault(int option)
if (option == isModActiveID )
  isModActive = true ; default value
  SetToggleOptionValue(isModActiveID , isModActive)
elseif (option == isReadingActiveID )
  isReadingActive = true ; default value
  SetToggleOptionValue(isReadingActiveID , isReadingActive)
elseif (option == isCraftingActiveID )
  isCraftingActive = true ; default value
  SetToggleOptionValue(isCraftingActiveID , isCraftingActive)
elseif (option == showMessageID )
  ReadingTakesTime.showMessage = true ; default value
  SetToggleOptionValue(showMessageID , ReadingTakesTime.showMessage)
elseif (option == dontShowMessageID )
  ReadingTakesTime.dontShowMessage = true ; default value
  SetToggleOptionValue(dontShowMessageID, ReadingTakesTime.dontShowMessage )
elseif (option == expertiseReducesTimeID )
  ReadingTakesTime.expertiseReducesTime = true ; default value
  SetToggleOptionValue(expertiseReducesTimeID, ReadingTakesTime.expertiseReducesTime )
elseif (option == cantReadID)
  ReadingTakesTime.cantRead = true ; default value
  SetToggleOptionValue(cantReadID, ReadingTakesTime.cantRead)
elseif (option == readingIncreasesSpeechID)
  ReadingTakesTime.readingIncreasesSpeech = true ; default value
  SetToggleOptionValue(readingIncreasesSpeechID, ReadingTakesTime.readingIncreasesSpeech)
elseif (option == cantLootID)
  ReadingTakesTime.cantLoot= true ; default value
  SetToggleOptionValue(cantLootID, ReadingTakesTime.cantLoot)
elseif (option == cantPickID)
  ReadingTakesTime.cantPick= true ; default value
  SetToggleOptionValue(cantPickID, ReadingTakesTime.cantPick)
elseif (option == cantLevelUpID)
  ReadingTakesTime.cantLevelUp= true ; default value
  SetToggleOptionValue(cantLevelUpID, ReadingTakesTime.cantLevelUp)
elseif (option == cantInventoryID)
  ReadingTakesTime.cantInventory= true ; default value
  SetToggleOptionValue(cantInventoryID, ReadingTakesTime.cantInventory)
elseif (option == cantMagicID)
  ReadingTakesTime.cantMagic= true ; default value
  SetToggleOptionValue(cantMagicID, ReadingTakesTime.cantMagic)
elseif (option == cantJournalID)
  ReadingTakesTime.cantJournal= true ; default value
  SetToggleOptionValue(cantJournalID, ReadingTakesTime.cantJournal)
elseif (option == cantMapID)
  ReadingTakesTime.cantMap= true ; default value
  SetToggleOptionValue(cantMapID, ReadingTakesTime.cantMap)
endIf
endEvent

event OnOptionHighlight(int option)
if (option == isModActiveID )
  SetInfoText("$Activate or deactivate the mod.")
elseif (option == isReadingActiveID || option == isCraftingActiveID || option == isContainerActiveID || option == isLockpickActiveID || option == isTrainingActiveID|| option == isLevelUpActiveID|| option == isInventoryActiveID|| option == isMagicActiveID|| option == isJournalActiveID|| option == isMapActiveID|| option == isBarterActiveID|| option == isGiftActiveID)
  SetInfoText("$Activate or deactivate this module.")
elseif (option == readMultID|| option == lootMultID|| option == pickMultID|| option == pickpocketMultID|| option == trainingMultID|| option == levelUpMultID|| option == inventoryMultID|| option == magicMultID|| option == journalMultID|| option == mapMultID|| option == barterMultID|| option == giftMultID)
  SetInfoText("$Multiplier used to calculate the time spent in this menu.")
elseif (option == spellLearnTimeID|| option == headCraftTimeID|| option == armorCraftTimeID|| option == handsCraftTimeID|| option == feetCraftTimeID|| option == shieldCraftTimeID|| option == jewelryCraftTimeID|| option == battleAxeCraftTimeID|| option == bowCraftTimeID|| option == daggerCraftTimeID|| option == greatswordCraftTimeID|| option == maceCraftTimeID|| option == staffCraftTimeID|| option == swordCraftTimeID|| option == warhammerCraftTimeID|| option == warAxeCraftTimeID|| option == weaponCraftTimeID|| option == miscCraftTimeID|| option == armorImproveTimeID|| option == weaponImproveTimeID|| option == potionCraftTimeID|| option == enchantingTimeID|| option == trainingTimeID|| option == levelUpTimeID|| option == eatTimeID)
  SetInfoText("$Time spent when performing this action.")
elseif (option == cantReadID || option == cantLootID|| option == cantPickID|| option == cantLevelUpID|| option == cantInventoryID|| option == cantMagicID|| option == cantJournalID|| option == cantMapID)
  SetInfoText("$Block this action while in combat.")
elseif (option == readingIncreasesSpeechID )
  SetInfoText("$Reading increases speech.")
elseif (option == readingIncreaseMultID )
  SetInfoText("$Reading increase multiplier.")
elseif (option == showMessageID )
  SetInfoText("$Show notification messages with the time spent.")
elseif (option == dontShowMessageID )
  SetInfoText("$RTT_DONTSHOWMESSAGE_HIGHLIGHT")
elseif (option == expertiseReducesTimeID )
  SetInfoText("$RTT_EXPERTIESEREDUCESTIME_HIGHLIGHT")
endIf
endEvent

Опубликовано
29.09.2016 05:15:23, AlienSoul сказал(-а):

Воть

А ты уверен, что это нужный скрипт? Это скрипт МСМ-меню в котором присваиваются значения переменным и регистрируются меню. Я конечно не изучал все 1200 строк кода, но мне кажется, что отключение карты происходит где-то в другом месте. Ищи в других скриптах такие функции, как:

1) "IsInCombat" - проверяет, находится ли НПС или Игрок в бою. Раз в бою карта не работает, значит эта функция вполне может использоваться в коде.

2) "IsMenuOpen" - проверяет, открыто ли меню. Тоже вполне может быть использовано автором, чтобы проверить, открыл ли игрок меню карты. В качестве переменной в этой функции должно быть слово "MapMenu".

Как вариант, ещё может использоваться функция "IsInMenuMode", хотя вряд ли.

  • Нравится 1
Опубликовано
29.09.2016 22:45:38, I.L.Pron сказал(-а):

А ты уверен, что это нужный скрипт?

Значит этот скрипт

Scriptname RTT extends Quest

Message Property RTT_Message  Auto
Message Property RTT_CantRead  Auto

Bool Property isInventoryActive  Auto

;reading
Bool Property cantRead Auto
Float Property readMult Auto
Bool Property readingIncreasesSpeech Auto
Float Property readingIncreaseMult Auto
Float Property spellLearnTime Auto
;crafting
Float Property headCraftTime Auto
Float Property armorCraftTime Auto
Float Property handsCraftTime Auto
Float Property feetCraftTime Auto
Float Property shieldCraftTime Auto
Float Property jewelryCraftTime Auto

Float Property battleAxeCraftTime Auto
Float Property bowCraftTime Auto
Float Property daggerCraftTime Auto
Float Property greatswordCraftTime Auto
Float Property maceCraftTime Auto
Float Property staffCraftTime Auto
Float Property swordCraftTime Auto
Float Property warhammerCraftTime Auto
Float Property warAxeCraftTime Auto
Float Property weaponCraftTime Auto

Float Property miscCraftTime Auto

Float Property weaponImproveTime Auto
Float Property armorImproveTime Auto
Float Property enchantingTime Auto
Float Property potionCraftTime Auto

int openArmorsImproved = 0
int openWeaponsImproved = 0
int openEnchantings = 0
int openPotions = 0
int openPoisons = 0
int closeArmorsImproved = 0
int closeWeaponsImproved = 0
int closeEnchantings = 0
int closePotions = 0
int closePoisons = 0

Bool crafting = False
;looting
Bool Property cantLoot Auto
Float Property lootMult Auto
Float Property pickpocketMult Auto
Bool Property cantPick Auto
Float Property pickMult Auto
Float Property chopTime Auto
Float Property mineTime Auto
Float Property harvestTime Auto
Bool isRegisteredForEvents = False
;training
Float Property trainingMult Auto
Float Property trainingTime Auto
int openTraining = 0
int closeTraining = 0
Bool Property cantLevelUp Auto
Float Property levelUpMult Auto
Float Property levelUpTime Auto
int openLevel = 0
int closeLevel = 0
;preparing
Bool Property cantInventory Auto
Float Property inventoryMult Auto
Float Property eatTime Auto
int openEat = 0
int closeEat = 0
int openSpell = 0
Bool Property cantMagic Auto
Float Property magicMult Auto
Bool Property cantJournal Auto
Float Property journalMult Auto
Bool Property cantMap Auto
Float Property mapMult Auto
;trading
Float Property barterMult Auto
Float Property giftMult Auto
;general
Bool Property showMessage Auto
Bool Property dontShowMessage Auto
Bool Property expertiseReducesTime Auto
GlobalVariable Property GameHour Auto
GlobalVariable Property TimeScale Auto
Bool CloseBook = False
Float Property StartReading  Auto
Float Property StopReading  Auto
Actor LastTarget = None
Bool _isModActive = False

Event OnInit()

EndEvent

Function InitStats(Bool Active)
_isModActive = Active
openEat = Game.QueryStat("Food Eaten")
openSpell = Game.QueryStat("Spells Learned")
openArmorsImproved = Game.QueryStat("Armor Improved")
openWeaponsImproved = Game.QueryStat("Weapons Improved")
openEnchantings = Game.QueryStat("Magic Items Made")
openPotions = Game.QueryStat("Potions Mixed")
openPoisons = Game.QueryStat("Poisons Mixed")
UnregisterForTrackedStatsEvent()
EndFunction

Function TimeCalc(Float PassedTime)
Int Hours = Math.Floor(PassedTime)
Int Minutes =  Math.Floor((PassedTime - Hours)*60)
if (dontShowMessage == false || Hours !=0 || Minutes != 0)
  if(showMessage)
   ;RTT_Message.Show(Hours,Minutes)
   if (Hours != 0)
    Debug.Notification("Времени прошло: "+Hours+"ч. "+Minutes+"м.")
   endif
   if (Hours == 0)
    Debug.Notification("Времени прошло: "+Minutes+"м.")
   endif
  endif
endif
GameHour.Mod(PassedTime)
EndFunction

Float Function ExpertiseMultiplier(String Skill)
if (!expertiseReducesTime)
  return 1
endif
Float SkillPoints = Game.GetPlayer().GetActorValue(Skill)
if (SkillPoints<0)
  SkillPoints = 0
elseif (SkillPoints>150)
  SkillPoints = 150
endif
return (100-(SkillPoints/2))/100
EndFunction

Function SkillIncrease(String Skill, Float Increase)
ActorValueInfo aVI = ActorValueInfo.GetActorValueInfobyName(Skill)
aVI.AddSkillExperience(Increase)
EndFunction

Function CloseInCombat()
CloseBook = True
if(showMessage)
  ;RTT_CantRead.Show()
  ;function Input.TapKey (dxKeycode)
  Debug.Notification("$I can't do that while in combat!")
  ;Debug.Notification(Input.GetNumKeysPressed())
 
endif
while (Utility.IsInMenuMode())
  Input.TapKey(15)
  ;Input.TapKey(41)
  Utility.WaitMenuMode(0.15)
endwhile
EndFunction

;deprecated since SKSE 1.7.1
Event OnCrosshairRefChange (ObjectReference ref)
LastTarget = ref as Actor
EndEvent

Bool Function isPlayerPickpocketing()
Bool isPickpocketing = False
LastTarget = Game.GetCurrentCrosshairRef() as Actor
if (LastTarget && !LastTarget.isDead() && Game.GetPlayer().isSneaking())
  isPickpocketing = True
endif
return isPickpocketing
EndFunction

Function ItemAdded (Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)
int type = akBaseItem.GetType()
if akSourceContainer ;if items come from a container they're not crafted and we should skip, this fixes problems with jaggarfeld and such
  return
endif
if crafting
  if ( type == 26)
   Armor a = akBaseItem as Armor
   if a.isHelmet() || a.isClothingHead()
    TimeCalc(headCraftTime*ExpertiseMultiplier("Smithing"))
   elseif a.isCuirass() || a.isClothingBody()
    TimeCalc(armorCraftTime*ExpertiseMultiplier("Smithing"))
   elseif a.isGauntlets() || a.isClothingHands()
    TimeCalc(handsCraftTime*ExpertiseMultiplier("Smithing"))
   elseif a.isBoots() || a.isClothingFeet()
    TimeCalc(feetCraftTime*ExpertiseMultiplier("Smithing"))
   elseif a.isShield()
    TimeCalc(shieldCraftTime*ExpertiseMultiplier("Smithing"))
   elseif a.isJewelry() || a.isClothingRing()
    TimeCalc(jewelryCraftTime*ExpertiseMultiplier("Smithing"))
   else
    ;whatever is left
    TimeCalc(armorCraftTime*ExpertiseMultiplier("Smithing"))
   endif
  elseif ( type == 41)
   Weapon w = akBaseItem as Weapon
   if w.isBattleAxe()
    TimeCalc(battleAxeCraftTime*ExpertiseMultiplier("Smithing"))
   elseif w.isBow()
    TimeCalc(bowCraftTime*ExpertiseMultiplier("Smithing"))
   elseif w.isDagger()
    TimeCalc(daggerCraftTime*ExpertiseMultiplier("Smithing"))
   elseif w.isGreatSword()
    TimeCalc(greatswordCraftTime*ExpertiseMultiplier("Smithing"))
   elseif w.isMace()
    TimeCalc(maceCraftTime*ExpertiseMultiplier("Smithing"))
   elseif w.isStaff()
    TimeCalc(staffCraftTime*ExpertiseMultiplier("Smithing"))
   elseif w.isSword()
    TimeCalc(swordCraftTime*ExpertiseMultiplier("Smithing"))
   elseif w.isWarhammer()
    TimeCalc(warhammerCraftTime*ExpertiseMultiplier("Smithing"))
   elseif w.isWarAxe()
    TimeCalc(warAxeCraftTime*ExpertiseMultiplier("Smithing"))
   else
    ;ammo and whatever is left
    TimeCalc(weaponCraftTime*ExpertiseMultiplier("Smithing"))
   endif
  elseif ( type == 32 || type == 52 ) ;misc and soul gems
   ;filter for added and removed workbenches
   Form[] Exclusions = new Form[26]
   Exclusions[0] = Game.GetFormFromFile(0x000030DF, "HearthFires.esm");House - Workbench
   Exclusions[1] = Game.GetFormFromFile(0x00003121, "HearthFires.esm");House - Remove Workbench
   Exclusions[2] = Game.GetFormFromFile(0x000030E7, "HearthFires.esm");Main Hall - Workbenches
   Exclusions[3] = Game.GetFormFromFile(0x00003122, "HearthFires.esm");Main Hall - Remove Workbenches
   Exclusions[4] = Game.GetFormFromFile(0x0000312B, "HearthFires.esm");Entryway - Workbench
   Exclusions[5] = Game.GetFormFromFile(0x0000312C, "HearthFires.esm");Entryway - Remove Workbench
   Exclusions[6] = Game.GetFormFromFile(0x00003ADA, "HearthFires.esm");Bedrooms - Workbench
   Exclusions[7] = Game.GetFormFromFile(0x00003ADB, "HearthFires.esm");Bedrooms - Remove Workbench
   Exclusions[8] = Game.GetFormFromFile(0x00003ADC, "HearthFires.esm");Greenhouse - Workbench
   Exclusions[9] = Game.GetFormFromFile(0x00003ADD, "HearthFires.esm");Greenhouse - Remove Workbench
   Exclusions[10] = Game.GetFormFromFile(0x00003ADE, "HearthFires.esm");Enchanter's Tower - Workbench
   Exclusions[11] = Game.GetFormFromFile(0x00003ADF, "HearthFires.esm");Enchanter's Tower - Remove Workbench
   Exclusions[12] = Game.GetFormFromFile(0x00003AE0, "HearthFires.esm");Storage Room - Workbench
   Exclusions[13] = Game.GetFormFromFile(0x00003AE1, "HearthFires.esm");Storage Room - Remove Workbench
   Exclusions[14] = Game.GetFormFromFile(0x00003AE2, "HearthFires.esm");Trophy Room - Workbench
   Exclusions[15] = Game.GetFormFromFile(0x00003AE3, "HearthFires.esm");Trophy Room - Remove Workbench
   Exclusions[16] = Game.GetFormFromFile(0x00003AE4, "HearthFires.esm");Alchemy Laboratory - Workbench
   Exclusions[17] = Game.GetFormFromFile(0x00003AE5, "HearthFires.esm");Alchemy Laboratory - Remove Workbench
   Exclusions[18] = Game.GetFormFromFile(0x00003AE6, "HearthFires.esm");Armory - Workbench
   Exclusions[19] = Game.GetFormFromFile(0x00003AE7, "HearthFires.esm");Armory - Remove Workbench
   Exclusions[20] = Game.GetFormFromFile(0x00003AE8, "HearthFires.esm");Kitchen - Workbench
   Exclusions[21] = Game.GetFormFromFile(0x00003AE9, "HearthFires.esm");Kitchen - Remove Workbench
   Exclusions[22] = Game.GetFormFromFile(0x00003AEA, "HearthFires.esm");Library - Workbench
   Exclusions[23] = Game.GetFormFromFile(0x00003AEB, "HearthFires.esm");Library - Remove Workbench
   Exclusions[24] = Game.GetFormFromFile(0x00003AEC, "HearthFires.esm");Cellar - Workbench
   Exclusions[25] = Game.GetFormFromFile(0x00003AED, "HearthFires.esm");Cellar - Remove Workbench
   int i = Exclusions.length
   while i
    i -=1
    if akBaseItem == Exclusions
     return
    endif
   endwhile
   if akBaseItem.HasKeywordString("BYOHHouseCraftingCategoryBuilding")
    ;Debug.Notification("building "+akBaseItem.GetFormID()+" "+akBaseItem.getname())
    Game.GetPlayer().AddItem(akBaseItem)
   elseif akBaseItem.HasKeywordString("BYOHHouseCraftingCategoryContainers")
    ;Debug.Notification("container "+akBaseItem.GetFormID()+" "+akBaseItem.getname())
   elseif akBaseItem.HasKeywordString("BYOHHouseCraftingCategoryFurniture")
    ;Debug.Notification("furniture "+akBaseItem.GetFormID()+" "+akBaseItem.getname())
   elseif akBaseItem.HasKeywordString("BYOHHouseCraftingCategoryWeaponRacks")
    ;Debug.Notification("weaponrack "+akBaseItem.GetFormID()+" "+akBaseItem.getname())
   elseif akBaseItem.HasKeywordString("BYOHHouseCraftingCategoryShelf")
    ;Debug.Notification("shelf "+akBaseItem.GetFormID()+" "+akBaseItem.getname())
   elseif akBaseItem.HasKeywordString("BYOHHouseCraftingCategoryExterior")
    ;Debug.Notification("exterior "+akBaseItem.GetFormID()+" "+akBaseItem.getname())
   elseif miscCraftTime > 0
    ;Debug.Notification("misc "+akBaseItem.GetFormID()+" "+akBaseItem.getname())
    TimeCalc(miscCraftTime*ExpertiseMultiplier("Smithing"))
   endif
  endif
endif
EndFunction

Function ItemRemoved (Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer)
if _isModActive
  if akBaseItem.GetType() == 46 && eatTime > 0
   Potion p = akBaseItem as Potion
   Form[] Exclusions = new Form[3]
   Exclusions[0] = Game.GetFormFromFile(0x05B864, "Chesko_Frostfall.esp");Soothe
   Exclusions[1] = Game.GetFormFromFile(0x05B867, "Chesko_Frostfall.esp");Bask
   Exclusions[2] = Game.GetFormFromFile(0x05B869, "Chesko_Frostfall.esp");Revel
   int i = Exclusions.length
   while i
    i -=1
    if akBaseItem == Exclusions
     return
    endif
   endwhile
   if p.isFood() && openEat < Game.QueryStat("Food Eaten")
    openEat = Game.QueryStat("Food Eaten")
    Float PassedTime =  aiItemCount*(eatTime/100/3*5)
    TimeCalc(PassedTime)
   endif
  endif
  if akBaseItem.GetType() == 27 && spellLearnTime > 0
   Book b = akBaseItem as Book
   if b.GetSpell() && openSpell < Game.QueryStat("Spells Learned")
    openSpell = Game.QueryStat("Spells Learned")
    TimeCalc(spellLearnTime*ExpertiseMultiplier("Speechcraft"))
   endif
  endif
endif
EndFunction

Event OnMenuOpen(String MenuName)
If MenuName == "Book Menu"
  if Game.GetPlayer().IsInCombat() && cantRead
   CloseInCombat()
  else
   if UI.IsMenuOpen("InventoryMenu") && isInventoryActive
    StopReading = Utility.GetCurrentRealTime()
    Float PassedTime = ((StopReading-StartReading)*TimeScale.GetValue()/(60*60*24)*24)*inventoryMult
    TimeCalc(PassedTime)
   endif
   StartReading  = Utility.GetCurrentRealTime()
  endif
ElseIf MenuName == "ContainerMenu"
  if Game.GetPlayer().IsInCombat() && cantLoot
   CloseInCombat()
  else
   StartReading  = Utility.GetCurrentRealTime()
  endif
ElseIf MenuName == "Lockpicking Menu"
  if Game.GetPlayer().IsInCombat() && cantPick
   CloseInCombat()
  else
   StartReading  = Utility.GetCurrentRealTime()
  endif
ElseIf MenuName == "Crafting Menu"
  ;RegisterForTrackedStatsEvent()
  openArmorsImproved = Game.QueryStat("Armor Improved")
  openWeaponsImproved = Game.QueryStat("Weapons Improved")
  openEnchantings = Game.QueryStat("Magic Items Made")
  openPotions = Game.QueryStat("Potions Mixed")
  openPoisons = Game.QueryStat("Poisons Mixed")
  crafting = True
ElseIf MenuName == "Training Menu"
  StartReading  = Utility.GetCurrentRealTime()
  openTraining = Game.QueryStat("Training Sessions")
ElseIf MenuName == "StatsMenu"
  if Game.GetPlayer().IsInCombat() && cantLevelUp
   CloseInCombat()
  else
   StartReading  = Utility.GetCurrentRealTime()
   openLevel = Game.GetPlayer().getLevel()
  endif
ElseIf MenuName == "InventoryMenu"
  if Game.GetPlayer().IsInCombat() && cantInventory
   CloseInCombat()
  else
   StartReading  = Utility.GetCurrentRealTime()
   openEat = Game.QueryStat("Food Eaten")
   openSpell = Game.QueryStat("Spells Learned")
  endif
ElseIf MenuName == "MagicMenu"
  if Game.GetPlayer().IsInCombat() && cantMagic
   CloseInCombat()
  else
   StartReading  = Utility.GetCurrentRealTime()
  endif
ElseIf MenuName == "Journal Menu"
  if Game.GetPlayer().IsInCombat() && cantJournal
   CloseInCombat()
  else
   StartReading  = Utility.GetCurrentRealTime()
  endif
ElseIf MenuName == "MapMenu"
  if Game.GetPlayer().IsInCombat() && cantMap
   CloseInCombat()
  else
   StartReading  = Utility.GetCurrentRealTime()
  endif
ElseIf MenuName == "BarterMenu"
  StartReading  = Utility.GetCurrentRealTime()
ElseIf MenuName == "GiftMenu"
  StartReading  = Utility.GetCurrentRealTime()
EndIf
EndEvent

Event OnMenuClose(String MenuName)
If !CloseBook
  If MenuName == "Book Menu"
   StopReading  = Utility.GetCurrentRealTime()
   Float PassedTime = ((StopReading-StartReading)*TimeScale.GetValue()/(60*60*24)*24)*readMult
   TimeCalc(PassedTime*ExpertiseMultiplier("Speechcraft"))
   if (readingIncreasesSpeech)
    SkillIncrease("Speechcraft", (StopReading-StartReading)*readingIncreaseMult)
   endif
   if UI.IsMenuOpen("InventoryMenu") && isInventoryActive
    StartReading = Utility.GetCurrentRealTime()
   endif
  ElseIf MenuName == "ContainerMenu"
   StopReading  = Utility.GetCurrentRealTime()
   Float PassedTime = ((StopReading-StartReading)*TimeScale.GetValue()/(60*60*24)*24)*lootMult
   if isPlayerPickpocketing()
    PassedTime = (((StopReading-StartReading)*TimeScale.GetValue()/(60*60*24)*24)*pickpocketMult)*ExpertiseMultiplier("Pickpocket")
   endif
   TimeCalc(PassedTime)
  ElseIf MenuName == "Lockpicking Menu"
   StopReading  = Utility.GetCurrentRealTime()
   Float PassedTime = ((StopReading-StartReading)*TimeScale.GetValue()/(60*60*24)*24)*pickMult
   TimeCalc(PassedTime*ExpertiseMultiplier("Lockpicking"))
  ElseIf MenuName == "Crafting Menu"
   ;UnregisterForTrackedStatsEvent()
   closeArmorsImproved = Game.QueryStat("Armor Improved")
   if (closeArmorsImproved - openArmorsImproved) > 0
    TimeCalc(armorImproveTime*ExpertiseMultiplier("Smithing"))
   endif
   closeWeaponsImproved = Game.QueryStat("Weapons Improved")
   if (closeWeaponsImproved - openWeaponsImproved) > 0
    TimeCalc(weaponImproveTime*ExpertiseMultiplier("Smithing"))
   endif
   closeEnchantings = Game.QueryStat("Magic Items Made")
   if (closeEnchantings - openEnchantings) > 0
    TimeCalc(enchantingTime*ExpertiseMultiplier("Enchanting"))
   endif
   closePotions = Game.QueryStat("Potions Mixed")
   if (closePotions - openPotions) > 0
    TimeCalc(potionCraftTime*ExpertiseMultiplier("Alchemy"))
   endif
   closePoisons = Game.QueryStat("Poisons Mixed")
   if (closePoisons - openPoisons) > 0
    TimeCalc(potionCraftTime*ExpertiseMultiplier("Alchemy"))
   endif
   crafting = False
  ElseIf MenuName == "Training Menu"
   StopReading  = Utility.GetCurrentRealTime()
   Float PassedTime = ((StopReading-StartReading)*TimeScale.GetValue()/(60*60*24)*24)*trainingMult
   closeTraining = Game.QueryStat("Training Sessions")
   PassedTime = PassedTime + ((closeTraining - openTraining )*trainingTime)
   TimeCalc(PassedTime)
  ElseIf MenuName == "StatsMenu"
   StopReading  = Utility.GetCurrentRealTime()
   Float PassedTime = ((StopReading-StartReading)*TimeScale.GetValue()/(60*60*24)*24)*levelUpMult
   closeLevel = Game.GetPlayer().getLevel()
   PassedTime = PassedTime + ((closeLevel - openLevel)*levelUpTime)
   TimeCalc(PassedTime)
  ElseIf MenuName == "InventoryMenu"
   StopReading  = Utility.GetCurrentRealTime()
   Float PassedTime = ((StopReading-StartReading)*TimeScale.GetValue()/(60*60*24)*24)*inventoryMult
   TimeCalc(PassedTime)
  ElseIf MenuName == "MagicMenu"
   StopReading  = Utility.GetCurrentRealTime()
   Float PassedTime = ((StopReading-StartReading)*TimeScale.GetValue()/(60*60*24)*24)*magicMult
   TimeCalc(PassedTime)
  ElseIf MenuName == "Journal Menu"
   StopReading  = Utility.GetCurrentRealTime()
   Float PassedTime = ((StopReading-StartReading)*TimeScale.GetValue()/(60*60*24)*24)*journalMult
   TimeCalc(PassedTime)
  ElseIf MenuName == "MapMenu"
   StopReading  = Utility.GetCurrentRealTime()
   Float PassedTime = ((StopReading-StartReading)*TimeScale.GetValue()/(60*60*24)*24)*mapMult
   TimeCalc(PassedTime)
  ElseIf MenuName == "BarterMenu"
   StopReading  = Utility.GetCurrentRealTime()
   Float PassedTime = ((StopReading-StartReading)*TimeScale.GetValue()/(60*60*24)*24)*barterMult
   TimeCalc(PassedTime)
  ElseIf MenuName == "GiftMenu"
   StopReading  = Utility.GetCurrentRealTime()
   Float PassedTime = ((StopReading-StartReading)*TimeScale.GetValue()/(60*60*24)*24)*giftMult
   TimeCalc(PassedTime)
  EndIf
Else
  CloseBook = False
EndIf
EndEvent

Event OnTrackedStatsEvent(string asStatFilter, int aiStatValue)
;if (asStatFilter == "Armor Improved")
; TimeCalc(armorImproveTime*ExpertiseMultiplier("Smithing"))
;elseif (asStatFilter == "Weapons Improved")
; TimeCalc(weaponImproveTime*ExpertiseMultiplier("Smithing"))
;elseif (asStatFilter == "Magic Items Made")
; TimeCalc(enchantingTime*ExpertiseMultiplier("Enchanting"))
;elseif (asStatFilter == "Potions Mixed")
; TimeCalc(potionCraftTime*ExpertiseMultiplier("Alchemy"))
;elseif (asStatFilter == "Poisons Mixed")
; TimeCalc(potionCraftTime*ExpertiseMultiplier("Alchemy")) 
;endif
EndEvent

Опубликовано

Да, похоже на то. Вот нужная тебе функция из этого скрипта:

 

Function CloseInCombat()
 while (Utility.IsInMenuMode()) ; до тех пор, пока мы находимся в меню будем делать следующее:
   Input.TapKey(15)                 ; принудительно нажимаем на кнопку "15" (это кнопка Tab)
   Utility.WaitMenuMode(0.15) ; пока игра не закрыла меню, приостанавливаем остальные скрипты (видимо, чтобы избежать глюков)
 endwhile
EndFunction

 

Как несложно заметить, автор использовал одну из SКSE-функций обрабатывающих ввод (Input). Соответствие номеров и клавиш можно посмотреть здесь

Сама функция втыкается в ивэнт открытия окна:

 

Event OnMenuOpen(String MenuName) ;произошло событие - открытие какого-то меню

 If MenuName == "MapMenu" ; проверяем, не меню ли карты открылось, если да, то делаем следующее:

   if Game.GetPlayer().IsInCombat() ; проверяем, находится ли игрок в бою, если да, то делаем следующее:
    CloseInCombat() ; вызываем функцию, которая принудительно закрывает меню.
  endif

endif

EndEvent

 

Лишнее из кода выкинул, оставил только суть.

  • Нравится 2
Опубликовано
30.09.2016 16:50:00, I.L.Pron сказал(-а):
 

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

 

 

Все верно написано. AlienSoul, добавлю только, что предложенный скрипт вешался на квест, поэтому и этот следует вешать туда же, следи.

  • Нравится 2

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

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

Создать аккаунт

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

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

Войти

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

Войти
×
×
  • Создать...