-
Публикаций
437 -
Пожертвование
2 098,51 ₽ -
Зарегистрирован
-
Посещение
-
Победитель дней
21
Сообщения, опубликованные Trust
-
-
14 часов назад, ХАНТЕР73 сказал:Да старая же проблема с спешал, витоматиком и обнулением. @Trust твой способ может решить эту проблему?
Или старт с запиской не работает?
Ну не знаю, я всего лишь предложил метод, а как там всё устроено -- я не знаю
-
Теперь переработан цикл.
GetItemCount в главном цикле используется теперь всего 9 раз, вместо нескольких тысяч при большом количестве книг.
Удалён счётчик и размер массива книг на обмен.
Поправлены коэффициенты удачи. Теперь удача за книги дефолтная при пяти, и уходит в небольшой плюс при увеличении, и в минус при уменьшении.
С удачей 1 шанс найти книги есть, но гораздо меньший. От удачи 10 шанс не зашкаливает
-
-
Оказывается, некоторые переменные функция сохраняет, что приводит к ошибкам в текущем коде. ИСПРАВЛЕНО.UPD: я просто окунь. Функция не сохраняет квестовые переменные. Я просто задержку квестового скрипта принял за ошибку, когда создал много книг, и сразу посмотрел в инвентарь
-
scn aaaSFWbtcBookPerkScrFunc int i int LuckAffects int LuckValue float BookRandom float Treshold1000 float Treshold725 float Treshold450 int CountForExchange int SFWBookGeneric1000Count int SFWBookGeneric725Count int SFWBookGeneric450Count int PreWarBookCount int CountDivided int DivOffset int RandomBooksCount int i2 float RandomMin float RandomMax int RecycleArrSize int PreBookArrSize Begin Function { LuckAffects } If Player.GetItemCount aaaSFWBooksFormList RecycleArrSize = ListGetCount aaaSFWbtcBooksFormList PreBookArrSize = ListGetCount aaaSFWBooksFormList LuckValue = Player.GetAV Luck If LuckValue > 10 LuckValue = 10 EndIf If LuckAffects Treshold1000 = 99 - LuckValue / 10 ; Luck 10 = 98 (2%) Treshold725 = 97 - LuckValue / 5 ; = 95 (3%) Treshold450 = 94 - LuckValue / 3.333 ; = 91 (4%) Else Treshold1000 = 98.5 ; EQ 5 = 1.5% Treshold725 = 96.0 ; = 2.5% Treshold450 = 92.5 ; = 3.5% EndIf EndIf While Player.GetItemCount aaaSFWBooksFormList If Player.GetItemCount (ListGetNthForm aaaSFWBooksFormList i) > CountForExchange CountForExchange += 1 BookRandom = Rand 0.00, 100.00 ; FLOAT If BookRandom > Treshold1000 SFWBookGeneric1000Count += 1 ElseIf BookRandom > Treshold725 SFWBookGeneric725Count += 1 ElseIf BookRandom > Treshold450 SFWBookGeneric450Count += 1 Else PreWarBookCount += 1 EndIf Else If CountForExchange Player.RemoveItem (ListGetNthForm aaaSFWBooksFormList i) CountForExchange 1 CountForExchange = 0 EndIf i += 1 If i >= PreBookArrSize i = 0 EndIf EndIf Loop If SFWBookGeneric1000Count || SFWBookGeneric725Count || SFWBookGeneric450Count ShowMessage aaaSFWbtcBooksVALUABLEmsg If SFWBookGeneric1000Count Player.AddItem SFWBookGeneric1000 SFWBookGeneric1000Count 1 ;SFWBookGeneric1000Count = 0 ; ТИП "ФУНКЦИЯ" НЕ СОХРАНЯЕТ ПЕРЕМЕННЫЕ EndIf If SFWBookGeneric725Count Player.AddItem SFWBookGeneric725 SFWBookGeneric725Count 1 ;SFWBookGeneric725Count = 0 ; ТИП "ФУНКЦИЯ" НЕ СОХРАНЯЕТ ПЕРЕМЕННЫЕ EndIf If SFWBookGeneric450Count Player.AddItem SFWBookGeneric450 SFWBookGeneric450Count 1 ;SFWBookGeneric450Count = 0 ; ТИП "ФУНКЦИЯ" НЕ СОХРАНЯЕТ ПЕРЕМЕННЫЕ EndIf EndIf If PreWarBookCount CountDivided = PreWarBookCount / RecycleArrSize DivOffset = PreWarBookCount % RecycleArrSize ;i2 = 0 ; ТИП "ФУНКЦИЯ" НЕ СОХРАНЯЕТ ПЕРЕМЕННЫЕ If DivOffset Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList (GetRandomInRange 0 RecycleArrSize)) DivOffset 1 EndIf If CountDivided RandomMin = 1 / (fsqrt CountDivided) * CountDivided - 1 RandomMax = 2 / (fsqrt CountDivided) * CountDivided - 1 If RecycleArrSize % 2 i2 = 1 Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList 0) CountDivided 1 EndIf While i2 < RecycleArrSize If CountDivided != 1 RandomBooksCount = Rand RandomMin, RandomMax ;Else ; RandomBooksCount = 0 ; ТИП "ФУНКЦИЯ" НЕ СОХРАНЯЕТ ПЕРЕМЕННЫЕ, ; в данном случае CountDivided всегда одинаково на всех итерациях EndIf Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList i2) (CountDivided - RandomBooksCount) 1 Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList (i2 + 1)) (CountDivided + RandomBooksCount) 1 i2 += 2 Loop EndIf ;PreWarBookCount = 0 ; ТИП "ФУНКЦИЯ" НЕ СОХРАНЯЕТ ПЕРЕМЕННЫЕ EndIf End
scn aaaSFWbtcBookPerkScrFunc int iint LuckAffectsint LuckVal.pdf
-
ИСПРАВЛЕНА КРИТИЧЕСКАЯ ОШИБКА
И... Множитель коэффициента вынесен из цикла (микро-оптимизация)
RandomMin = 1 / (fsqrt CountDivided) * CountDivided RandomMax = 2 / (fsqrt CountDivided) * CountDivided While i2 < RecycleArrSize If CountDivided > 1 RandomBooksCount = (Rand RandomMin, RandomMax) - 1
-
scn aaaSFWbtcBooksToCaps int HowMuchToSale ref BookListSFWbtc ref rBookSFWbtc int Count int BookPrice int iRewardXP Begin Function { HowMuchToSale } BookPrice = GetINIFloat "BooksToCapsOptions:iFixedPrice" "BooksToCaps.ini" If BookPrice < 1 BookPrice = (Player.GetAV Science)/5 + (Player.GetAV Repair)/5 + (Player.GetAV Medicine)/5 + (Player.GetAV Barter)/5 + (Player.GetAV Survival)/5 EndIf iRewardXP = GetINIFloat "BooksToCapsOptions:iRewardXP" "BooksToCaps.ini" If iRewardXP < 1 iRewardXP = 10 EndIf If aaaSFWbtcBookPerkQuest.BookPerk > 99 BookListSFWbtc = aaaSFWbtcBooksFormList Else BookListSFWbtc = aaaSFWBooksFormList EndIf ForEach rBookSFWbtc <- BookListSFWbtc Count = Player.GetItemCount rBookSFWbtc If Count < 1 Continue EndIf If Count > HowMuchToSale Count = HowMuchToSale EndIf Player.RemoveItem rBookSFWbtc Count Player.AddItem f (Count * BookPrice) RewardXP (Count * iRewardXP) aaaSFWbtcBookPerkQuest.BookPerk += Count HowMuchToSale -= Count If HowMuchToSale < 1 Break EndIf Loop If aaaSFWbtcBookPerkQuest.DoOnceBookPerk == 0 && aaaSFWbtcBookPerkQuest.BookPerk > 19 aaaSFWbtcBookPerkQuest.DoOnceBookPerk = 1 ShowMessage aaaSFWBookPerkSpoiler EndIf If aaaSFWbtcBookPerkQuest.DoOnceBookPerk == 1 && aaaSFWbtcBookPerkQuest.BookPerk > 99 aaaSFWbtcBookPerkQuest.DoOnceBookPerk = 2 Player.AddPerk aaaSFWBookPerk StartQuest aaaSFWbtcBookPerkQuest ShowMessage aaaSFWBookPerkMsg EndIf End
-
-
scn aaaSFWbtcBookPerkScrFunc int i int LuckAffects int LuckValue float BookRandom float Treshold1000 float Treshold725 float Treshold450 int CountForExchange int SFWBookGeneric1000Count int SFWBookGeneric725Count int SFWBookGeneric450Count int PreWarBookCount int CountDivided int DivOffset int RandomBooksCount int i2 float RandomMin float RandomMax int RecycleArrSize int PreBookArrSize Begin Function { LuckAffects } If Player.GetItemCount aaaSFWBooksFormList RecycleArrSize = ListGetCount aaaSFWbtcBooksFormList PreBookArrSize = ListGetCount aaaSFWBooksFormList LuckValue = Player.GetAV Luck If LuckAffects Treshold1000 = 99 - LuckValue / 10 ; Luck 10 = 98 (2%) Treshold725 = 97 - LuckValue / 5 ; = 95 (3%) Treshold450 = 94 - LuckValue / 3.333 ; = 91 (4%) Else Treshold1000 = 98.5 ; EQ 5 = 1.5% Treshold725 = 96.0 ; = 2.5% Treshold450 = 92.5 ; = 3.5% EndIf EndIf While (Player.GetItemCount aaaSFWBooksFormList) If (Player.GetItemCount (ListGetNthForm aaaSFWBooksFormList i)) > CountForExchange CountForExchange += 1 BookRandom = Rand 0.00, 100.00 ; FLOAT If BookRandom > Treshold1000 SFWBookGeneric1000Count += 1 ElseIf BookRandom > Treshold725 SFWBookGeneric725Count += 1 ElseIf BookRandom > Treshold450 SFWBookGeneric450Count += 1 Else PreWarBookCount += 1 EndIf Else If CountForExchange Player.RemoveItem (ListGetNthForm aaaSFWBooksFormList i) CountForExchange 1 CountForExchange = 0 EndIf i += 1 If i >= PreBookArrSize i = 0 EndIf EndIf Loop If SFWBookGeneric1000Count || SFWBookGeneric725Count || SFWBookGeneric450Count ShowMessage aaaSFWbtcBooksVALUABLEmsg If SFWBookGeneric1000Count Player.AddItem SFWBookGeneric1000 SFWBookGeneric1000Count 1 ;SFWBookGeneric1000Count = 0 ; ТИП "ФУНКЦИЯ" НЕ СОХРАНЯЕТ ПЕРЕМЕННЫЕ EndIf If SFWBookGeneric725Count Player.AddItem SFWBookGeneric725 SFWBookGeneric725Count 1 ;SFWBookGeneric725Count = 0 ; ТИП "ФУНКЦИЯ" НЕ СОХРАНЯЕТ ПЕРЕМЕННЫЕ EndIf If SFWBookGeneric450Count Player.AddItem SFWBookGeneric450 SFWBookGeneric450Count 1 ;SFWBookGeneric450Count = 0 ; ТИП "ФУНКЦИЯ" НЕ СОХРАНЯЕТ ПЕРЕМЕННЫЕ EndIf EndIf If PreWarBookCount CountDivided = PreWarBookCount / RecycleArrSize DivOffset = PreWarBookCount % RecycleArrSize ;i2 = 0 ; ТИП "ФУНКЦИЯ" НЕ СОХРАНЯЕТ ПЕРЕМЕННЫЕ If DivOffset Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList (GetRandomInRange 0 (RecycleArrSize + 1))) DivOffset 1 EndIf If CountDivided RandomMin = 1 / (fsqrt CountDivided) RandomMax = 2 / (fsqrt CountDivided) If RecycleArrSize % 2 i2 = 1 Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList 0) CountDivided 1 EndIf While i2 < RecycleArrSize If CountDivided > 1 RandomBooksCount = (Rand RandomMin, RandomMax) * CountDivided - 1 Else RandomBooksCount = 0 EndIf Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList i2) (CountDivided - RandomBooksCount) 1 Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList (i2 + 1)) (CountDivided + RandomBooksCount) 1 i2 += 2 Loop EndIf ;PreWarBookCount = 0 ; ТИП "ФУНКЦИЯ" НЕ СОХРАНЯЕТ ПЕРЕМЕННЫЕ EndIf End
- 1
-
-
RandomMin = 1 / (fsqrt CountDivided) RandomMax = 2 / (fsqrt CountDivided) If CountDivided > 1 RandomBooksCount = (Rand RandomMin, RandomMax) * CountDivided - 1 Else RandomBooksCount = 0 EndIf
Теперь рандомное количество книг считается без хардкода, на нормальном алгоритме.
Суть заключается в том, что при делении 1 и 2 (мин-макс) на квадратный корень от стопки, получаются Float-множители, которые я вписываю в рандом, и умножаю на них стопку. Для совсем малых чисел я отнимаю еденицу, чтобы не возникала ситуация, когда добавляемое число становится равным нулю (это в операции Эдд Айтем вызывает ошибку)
Исключение составляет корень из единицы, когда деление 2 на результат равен 2, что всё таки больше чем единица, согласитесь.
-
Микро-оптимизация. Теперь на холостом ходу обрабатываются 3 блока If вместо 6, тоесть, скрипт жрёт впустую в 2 раза меньше процессорного времени, когда книг нет
If SFWBookGeneric1000Count || SFWBookGeneric725Count || SFWBookGeneric450Count ShowMessage aaaSFWbtcBooksVALUABLEmsg If SFWBookGeneric1000Count Player.AddItem SFWBookGeneric1000 SFWBookGeneric1000Count 1 SFWBookGeneric1000Count = 0 EndIf If SFWBookGeneric725Count Player.AddItem SFWBookGeneric725 SFWBookGeneric725Count 1 SFWBookGeneric725Count = 0 EndIf If SFWBookGeneric450Count Player.AddItem SFWBookGeneric450 SFWBookGeneric450Count 1 SFWBookGeneric450Count = 0 EndIf EndIf
-
В этой версии отремонтировано влияние удачи на все виды ценных книг, применена нормальная формула расширяющая процентные соотношения.
Раньше удача вызывала зашкаливание количества очень ценных книг, тогда как ценные и довольно ценные в процентном соотношении не росли. Теперь удача влияет на все книги, в не слишком больших количествах.
scn aaaSFWbtcBookPerkScrFunc int i int LuckAffects float BookRandom float Treshold1000 float Treshold725 float Treshold450 int CountForExchange int SFWBookGeneric1000Count int SFWBookGeneric725Count int SFWBookGeneric450Count int PreWarBookCount int CountDivided int DivOffset int RandomBooksCount int i2 Begin Function { LuckAffects } while (Player.GetItemCount aaaSFWBooksFormList) If (Player.GetItemCount (ListGetNthForm aaaSFWBooksFormList i)) > CountForExchange CountForExchange += 1 If LuckAffects Treshold1000 = 99 - (Player.GetAV Luck) / 10 ; Luck 10 = 98 (2%) Treshold725 = 97 - (Player.GetAV Luck) / 5 ; = 95 (3%) Treshold450 = 94 - (Player.GetAV Luck) / 3.333 ; = 91 (4%) Else Treshold1000 = 99 Treshold725 = 97 Treshold450 = 94 EndIf BookRandom = Rand 0.00, 100.00 ; FLOAT If BookRandom > Treshold1000 SFWBookGeneric1000Count += 1 ElseIf BookRandom > Treshold725 SFWBookGeneric725Count += 1 ElseIf BookRandom > Treshold450 SFWBookGeneric450Count += 1 Else PreWarBookCount += 1 EndIf Else If CountForExchange Player.RemoveItem (ListGetNthForm aaaSFWBooksFormList i) CountForExchange 1 CountForExchange = 0 EndIf i += 1 If eval i >= (ListGetCount aaaSFWBooksFormList) i = 0 EndIf EndIf loop If SFWBookGeneric1000Count || SFWBookGeneric725Count || SFWBookGeneric450Count ShowMessage aaaSFWbtcBooksVALUABLEmsg EndIf If SFWBookGeneric1000Count Player.AddItem SFWBookGeneric1000 SFWBookGeneric1000Count 1 SFWBookGeneric1000Count = 0 EndIf If SFWBookGeneric725Count Player.AddItem SFWBookGeneric725 SFWBookGeneric725Count 1 SFWBookGeneric725Count = 0 EndIf If SFWBookGeneric450Count Player.AddItem SFWBookGeneric450 SFWBookGeneric450Count 1 SFWBookGeneric450Count = 0 EndIf If PreWarBookCount CountDivided = PreWarBookCount / (ListGetCount aaaSFWbtcBooksFormList) DivOffset = PreWarBookCount % (ListGetCount aaaSFWbtcBooksFormList) i2 = 0 If CountDivided If (ListGetCount aaaSFWbtcBooksFormList) % 2 i2 = 1 Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList 0) (CountDivided + DivOffset) 1 DivOffset = 0 EndIf While i2 < (ListGetCount aaaSFWbtcBooksFormList) If CountDivided > 30 RandomBooksCount = (Rand 0.10, 0.20) * CountDivided ElseIf CountDivided > 15 RandomBooksCount = (Rand 0.20, 0.34) * CountDivided ElseIf CountDivided > 7 RandomBooksCount = (Rand 0.34, 0.50) * CountDivided Else RandomBooksCount = (Rand 0.50, 0.75) * CountDivided EndIf Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList i2) (CountDivided - RandomBooksCount + DivOffset) 1 DivOffset = 0 Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList (i2 + 1)) (CountDivided + RandomBooksCount) 1 i2 += 2 Loop Else Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList (GetRandomInRange 0 (ListGetCount aaaSFWbtcBooksFormList + 1))) DivOffset 1 EndIf PreWarBookCount = 0 EndIf End
-
If CountDivided > 30 RandomBooksCount = (Rand 0.10, 0.20) * CountDivided ElseIf CountDivided > 15 RandomBooksCount = (Rand 0.20, 0.34) * CountDivided ElseIf CountDivided > 7 RandomBooksCount = (Rand 0.34, 0.50) * CountDivided Else RandomBooksCount = (Rand 0.50, 0.75) * CountDivided EndIf
Процент меняется от количества книг в стопке, так-как 20%-33% для большого количества слишком большой, а для малого количества слишком незначительный
(УСИЛЕНИЕ ЭНТРОПИИ)
-
В файле этого сообщения в Перке сделана система отложеннго обмена книг, а значит движок игры не насилуется операциями с предметами AddItem и RemoveItem, тоесть меньше тормозов и глюков инвентаря.
Плюс я сделал систему добавления отбраковки с хорошим рандомом
scn aaaSFWbtcBookPerkScrFunc int i float BookRandom int LuckAffects int CountForExchange int SFWBookGeneric1000Count int SFWBookGeneric725Count int SFWBookGeneric450Count int PreWarBookCount int CountDivided int DivOffset int RandomBooksCount int i2 Begin Function { LuckAffects } while (Player.GetItemCount aaaSFWBooksFormList) If (Player.GetItemCount (ListGetNthForm aaaSFWBooksFormList i)) > CountForExchange CountForExchange += 1 If LuckAffects == 1 BookRandom = GetRandomPercent + ((Player.GetAV Luck) / 2) Else BookRandom = GetRandomPercent + 2.5 EndIf If BookRandom > 101 SFWBookGeneric1000Count += 1 ElseIf BookRandom > 99 SFWBookGeneric725Count += 1 ElseIf BookRandom > 96 SFWBookGeneric450Count += 1 Else PreWarBookCount += 1 EndIf Else If CountForExchange Player.RemoveItem (ListGetNthForm aaaSFWBooksFormList i) CountForExchange 1 CountForExchange = 0 EndIf i += 1 If eval i >= (ListGetCount aaaSFWBooksFormList) i = 0 EndIf EndIf loop If SFWBookGeneric1000Count || SFWBookGeneric725Count || SFWBookGeneric450Count ShowMessage aaaSFWbtcBooksVALUABLEmsg EndIf If SFWBookGeneric1000Count Player.AddItem SFWBookGeneric1000 SFWBookGeneric1000Count 1 SFWBookGeneric1000Count = 0 EndIf If SFWBookGeneric725Count Player.AddItem SFWBookGeneric725 SFWBookGeneric725Count 1 SFWBookGeneric725Count = 0 EndIf If SFWBookGeneric450Count Player.AddItem SFWBookGeneric450 SFWBookGeneric450Count 1 SFWBookGeneric450Count = 0 EndIf If PreWarBookCount CountDivided = PreWarBookCount / (ListGetCount aaaSFWbtcBooksFormList) DivOffset = PreWarBookCount % (ListGetCount aaaSFWbtcBooksFormList) i2 = 0 If CountDivided If (ListGetCount aaaSFWbtcBooksFormList) % 2 i2 = 1 Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList 0) (CountDivided + DivOffset) 1 DivOffset = 0 EndIf While i2 < (ListGetCount aaaSFWbtcBooksFormList) RandomBooksCount = (Rand 0.20, 0.33) * CountDivided Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList i2) (CountDivided - RandomBooksCount + DivOffset) 1 DivOffset = 0 Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList (i2 + 1)) (CountDivided + RandomBooksCount) 1 i2 += 2 Loop Else Player.AddItem (ListGetNthForm aaaSFWbtcBooksFormList (GetRandomInRange 0 (ListGetCount aaaSFWbtcBooksFormList + 1))) DivOffset 1 EndIf PreWarBookCount = 0 EndIf End
-
UPD: Самая последняя версия будет помечена зелёным, как ответ на вопрос
Теперь написано так, я теперь не проверяю конфиг в If и не использую блок Else
BookPrice = GetINIFloat "BooksToCapsOptions:iFixedPrice" "BooksToCaps.ini" If BookPrice < 1 BookPrice = Ceil ((Player.GetAV Science)/5 + (Player.GetAV Repair)/5 + (Player.GetAV Medicine)/5 + (Player.GetAV Barter)/5 + (Player.GetAV Survival)/5) EndIf iRewardXP = GetINIFloat "BooksToCapsOptions:iRewardXP" "BooksToCaps.ini" If iRewardXP < 1 iRewardXP = 10 EndIf
Уменьшение обращений к диску и упрощеие блока If
МИКРО-ОПТИМИЗАЦИЯ
- 1
-
Я уже говорил, но вы забыли. Ссылка "Посетить Falcon-Lair.com.url" в архивах инсталлера должна называться на английском "Visit Falcon-Lair.com.url"
Иначе глобальный мод не ставится на системы с локалью Украинской, Беларуской, Казахской, Английской итд.
Связано это с тем, что установщик Install Shield работает в кодировке Win-1251 и наглухо не поддерживает юникод!!!
Все файлы внутри архива установщика должны именоваться на английском!!!
Так-же это должно помочь не только пользователям Виндовс с локалями их стран, но и линуксоидам.
- 1
-
2 часа назад, MagnuMspec сказал:@Trust как думаешь, почему книги могут автоматом после подбора подменяться? Лоток тут не при чем, по идее.
Тогда, если вы будете выдавать чистую книгу вместо ПреВарБук, то отдельный форм-лист создавать не надо. Так и оставьте всё как в этом фиксе, кроме выдачи PreWarBook
-
3 часа назад, MagnuMspec сказал:@Trust как думаешь, почему книги могут автоматом после подбора подменяться? Лоток тут не при чем, по идее.
Потому-что перк Книголюб перерабатывает обычные книги в ценные и отбраковку, а книга PreWarBook -- технически обычная, потому эта проблема вылазит.
У @Bulbyan 'а есть этот перк
-
Я когда пытался исправить продажу книг, я никогда в жизни не думал, что они все не довоенные, и с точки зрения лора их продавать в БС нельзя.
Что теперь делать с фиксом книг я даже не знаю. Ну... принцип был простой... чтоб работало, как задумал Вис, но без напряга.
Я ТОЧНО ЗНАЮ: ВЫ СОБРАЛИСЬ МЕНЯ УВОЛИТЬ!!111
- 2
-
ЦитатаТолько есть нюанс -- в этих списках из продажи книг есть PreWarBook, и для того, чтобы ваш мод работал более-менее правильно -- эту книгу нужно сдвинуть вконец в списке
[22:43]
Тоесть, если перка Книголюб нет, но есть дофига книг превар-бук, то автомат будет всё-равно срабатывать
[22:44]
Это можно вылечить лишь создав для него отдельный список, без ПреВар-Бук
[22:45]
Даже наличие одной этой книги позволит автомату срабатывать бесконечно
[22:46]
.....
РЕШЕНИЕ:
Скрипт -- использовать мой вариант
Список с Превар-Бук -- создать отдельный без -
edx | 0x36026F3C | RTTI: SandBoxActorPackageData: 41EE26A7 ()
00143973 (v19PGCooke01REF)
0013BC26 (Vault19a)
Судя по всему, в этом пакете интеллекта очень длинная и тяжёлая анимация, которая не успевает завершиться.
Либо что-то прямо связанное с анимацией из пакета интеллекта сандбоксинга.
Поскольку рэгдолл-контроллер имеет коллизию, и контролируется файлами анимаций, и управляется всё это пакетом интеллекта... Я и решил: Проблема в анимации пакета интеллекта.
Я сам ничего не тестил, но здесь вот всё, что я накопал из лога.
-
Аа-эээ... вы уже пофиксили это отсутствием требований к уровню. Сорян.
Не заметил 7 страниц комментов.
-
Магнум, смотри. Чтобы реализовать сохранение навыков, способностей и перков -- надо в QASmoke (тестовую ячейку) заселить непися.
Забить в конфиг джипа, что НПС могут иметь перки!!! Но добавить аннотацию в конфиг REQUIRED FOR NEW CALIFORNIA!!!
Далее, добавить все перки в Форм-Лист, и размотать его циклом If Player.HasPerk rPerk -- RefNPC.AddPerk rPerk -- но здесь надо подумать, перки имеют ранги.
Далее мы копируем статы на непися, и обнуляем игрока.
После завершения мы делаем всё то-же самое, но копируем уже статы и перки с непися на игрока (тоже, разматывая форм-лист циклом)
Причём, вместо Player и REFNPC можно указать в скрипте реф-переменные, чтобы не писать один и тот же код два раза, тоесть, можно сделать код двойного назначения.
Для того, чтоб его запускать -- скрипты можно оформить в виде функций
- 1
Кривой LOD горы в СП
в Баг-трекер SFW Ruined America (RA)
Опубликовано
ВОООТ! Из погодных модов нужно исходить, они могут править небо