Trust 269 Опубликовано 12 октября, 2023 (изменено) 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 МИКРО-ОПТИМИЗАЦИЯ Изменено 22 октября, 2023 пользователем Trust upd 1 Поделиться сообщением Ссылка на сообщение
0 Trust Автор вопроса 269 Опубликовано 24 октября, 2023 (изменено) Теперь переработан цикл. GetItemCount в главном цикле используется теперь всего 9 раз, вместо нескольких тысяч при большом количестве книг. Удалён счётчик и размер массива книг на обмен. Поправлены коэффициенты удачи. Теперь удача за книги дефолтная при пяти, и уходит в небольшой плюс при увеличении, и в минус при уменьшении. С удачей 1 шанс найти книги есть, но гораздо меньший. От удачи 10 шанс не зашкаливает BooksToCaps.7z Изменено 11 февраля пользователем Trust 1 Поделиться сообщением Ссылка на сообщение
0 Trust Автор вопроса 269 Опубликовано 13 октября, 2023 В файле этого сообщения в Перке сделана система отложеннго обмена книг, а значит движок игры не насилуется операциями с предметами 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 BTC-ReducedScript.esp Поделиться сообщением Ссылка на сообщение
0 Trust Автор вопроса 269 Опубликовано 15 октября, 2023 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% для большого количества слишком большой, а для малого количества слишком незначительный (УСИЛЕНИЕ ЭНТРОПИИ) BTC-ReducedScript.esp Поделиться сообщением Ссылка на сообщение
0 Trust Автор вопроса 269 Опубликовано 15 октября, 2023 В этой версии отремонтировано влияние удачи на все виды ценных книг, применена нормальная формула расширяющая процентные соотношения. Раньше удача вызывала зашкаливание количества очень ценных книг, тогда как ценные и довольно ценные в процентном соотношении не росли. Теперь удача влияет на все книги, в не слишком больших количествах. 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 BTC-ReducedScript.esp Поделиться сообщением Ссылка на сообщение
0 Trust Автор вопроса 269 Опубликовано 15 октября, 2023 Микро-оптимизация. Теперь на холостом ходу обрабатываются 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 BTC-ReducedScript.esp Поделиться сообщением Ссылка на сообщение
0 Trust Автор вопроса 269 Опубликовано 16 октября, 2023 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, что всё таки больше чем единица, согласитесь. BTC-ReducedScript.esp Поделиться сообщением Ссылка на сообщение
0 Trust Автор вопроса 269 Опубликовано 16 октября, 2023 Микро-оптимизации BTC-ReducedScript.esp Поделиться сообщением Ссылка на сообщение
0 Trust Автор вопроса 269 Опубликовано 17 октября, 2023 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 BTC-ReducedScript.esp 1 Поделиться сообщением Ссылка на сообщение
0 Trust Автор вопроса 269 Опубликовано 17 октября, 2023 LuckValue = Player.GetAV Luck If LuckValue > 10 LuckValue = 10 EndIf BTC-ReducedScript.esp Поделиться сообщением Ссылка на сообщение
0 Trust Автор вопроса 269 Опубликовано 17 октября, 2023 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 BTC-ReducedScript.esp Поделиться сообщением Ссылка на сообщение
0 Trust Автор вопроса 269 Опубликовано 18 октября, 2023 ИСПРАВЛЕНА КРИТИЧЕСКАЯ ОШИБКА И... Множитель коэффициента вынесен из цикла (микро-оптимизация) RandomMin = 1 / (fsqrt CountDivided) * CountDivided RandomMax = 2 / (fsqrt CountDivided) * CountDivided While i2 < RecycleArrSize If CountDivided > 1 RandomBooksCount = (Rand RandomMin, RandomMax) - 1 BTC-ReducedScript.esp Поделиться сообщением Ссылка на сообщение
0 Trust Автор вопроса 269 Опубликовано 19 октября, 2023 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 BTC-ReducedScript.esp scn aaaSFWbtcBookPerkScrFunc int iint LuckAffectsint LuckVal.pdf Поделиться сообщением Ссылка на сообщение
0 Trust Автор вопроса 269 Опубликовано 22 октября, 2023 Оказывается, некоторые переменные функция сохраняет, что приводит к ошибкам в текущем коде. ИСПРАВЛЕНО. UPD: я просто окунь. Функция не сохраняет квестовые переменные. Я просто задержку квестового скрипта принял за ошибку, когда создал много книг, и сразу посмотрел в инвентарь Поделиться сообщением Ссылка на сообщение
0 Trust Автор вопроса 269 Опубликовано 22 октября, 2023 Теперь в конфиге есть множитель цены ценных книг BooksToCaps.7z Поделиться сообщением Ссылка на сообщение
0 MagnuMspec 7 522 Опубликовано 9 ноября В 24.10.2023 в 18:54, Trust сказал: Теперь переработан цикл. Спасибо! Подшил.) Поделиться сообщением Ссылка на сообщение
UPD: Самая последняя версия будет помечена зелёным, как ответ на вопрос
Теперь написано так, я теперь не проверяю конфиг в If и не использую блок Else
Уменьшение обращений к диску и упрощеие блока If
МИКРО-ОПТИМИЗАЦИЯ
upd
Поделиться сообщением
Ссылка на сообщение