Группировка - Меню производства (QoL)

qqqqqqqqqqqqq

Житель штата
30 Июл 2025
4
0
Сервер
1
Имя персонажа
Java Fleur
CID персонажа
COI0
Проблемы(предположительно, касается не только группировок):
  1. Есть версия что % в час это недостаточно информативно.
  2. % в час не изменяется в зависимости от кол-ва игроков онлайн. (Очень серьезная недоработка на мой взгляд.) Когда мы увидели это впервые были очень расстроены из за того что ничего непонятно, это сильно вводит в заблуждение. Создается впечатление 4.5% для первой лабы это уже с учетом онлайна [<5] и не обновилось и надо подождать, а не просто релогнуться.
2.1 Также не очевидно что бывает при 0 онлайна. Думаю есть смысл добавить вопросик подсказку - "Если онлайн = 0, то производство 0% и прогресс замораживается".
3(не QoL). Крупные группировки 20-100 людей в составе наверняка имеют больше 5 игроков в онлайне однавременно. Но получают также как и малютки, думаю это не очень справедливо. Также дело в т.н. "прайм тайме" бывает время когда даже в небольших семьях 5+ игроков, и 0 в другое время, или в больших семьях 50 онлайна, но 0-10 в другое.🤔

Решение:
1. Добавить время до готовности и время до того как закончатся ресурсы. Или добавить кнопку подробнее со временем до готовности и времени до того как закончится снабжение, если по какой то причине это меню должно быть именно такого размера как сейчас.
Хочется видеть что то типа
Загруженность: ${Load}% (+${DynamicLoad}% в час)(${TimeToLoad} часов до готовности) и
Снабжение: ${Supply}% (${DynamicSupply}% в час)(Закончится через ${TimeToEnd} часов) в том же или отдельном окне.

2. Динамическое значение этих параметров.

3(не QoL). Если игроков больше пяти, то для следующих пяти производительность +10% за каждого. Если игроков больше 10 то каждый следующий дает +1%.
Прим.1: Онлайн 50 человек, тогда производительность 190.
Прим. 2: Онлайн 12 человек, тогда производительность 152%.
Это просто из головы цифры. Идея в том чтобы 5-10 онлайна давало заметный прирост, а вот 10+ уже сильно меньше но тоже было таким как бы поощрением 🤔

Возможная(!) реализация(не обязательно для ознакомления):
Боже, какой ужас, после удаления буквы удаляется и пробел перед ней🤯, писать что то это настоящая пытка 😡
1-2. Выглядит так себе, но ничего лучше я не придумал :с
Если у вас проблемы с prompt можно использовать https://www.programiz.com/javascript/online-compiler/
JavaScript:
//Ввод онлайна. В моде, думаю, можно взять значение "Производительность"/20//
var inputPlayerCount = Number(prompt("Сколько игроков онлайн?"));

/*
Ввод актуальных значений Загруженности/Снабжения каждой лабы.
Думаю в моде найти их будет несложно.
Никакой проверки на значения >100 и <0 нет, потому что, как я пон в игре такого быть не может.
*/
var inputWeedLoad = Number(prompt("Какая загруженность 1-й лабы?(0-100)"));
var inputWeedSupply = Number(prompt("Какое снабжение 1-й лабы?(0-100)"));

var inputCocaineLoad = Number(prompt("Какая загруженность 2-й лабы?(0-100)"));
var inputCocaineSupply = Number(prompt("Какое снабжение 2-й лабы?(0-100)"));

var inputMethLoad = Number(prompt("Какая загруженность 3-й лабы?(0-100)"));
var inputMethSupply = Number(prompt("Какое снабжение 3-й лабы?(0-100)"));

/*
"Базовыe" проценты для каждой лабы.
Сколько + для загруженности и - для снабжения, при 1 игроке онлайн
*/
var weedBasicPercentLoad = 0.9;
var weedBasicPercentSupply = -1.92;

var cocaineBasicPercentLoad = 0.72;
var cocaineBasicPercentSupply = -2.52;

var methBasicPercentLoad = 0.6;
var methBasicPercentSupply = -3.36;

/*
Вычисление динамических % в час, остатка времени, и ~~Строка которую хотелось бы видеть в игре~~

*/
if (inputPlayerCount == 0) {
    console.log(`Прогресс вроде и без моей помощи замораживается.
    В значениях которые вычисляются в зависимости от онлайна и актуального процента готовности
    можно 0 поставить всё равно никто не увидит.`);
} else if (inputPlayerCount > 5) {
    var playerCount = 5
  
    calc(playerCount,
         inputWeedLoad,
         inputWeedSupply,
         inputCocaineLoad,
         inputCocaineSupply,
         inputMethLoad,
         inputMethSupply)

} else {
    var playerCount = inputPlayerCount
  
    calc(playerCount,
        inputWeedLoad,
        inputWeedSupply,
        inputCocaineLoad,
        inputCocaineSupply,
        inputMethLoad,
        inputMethSupply)
}

function calc(playerCount,
         inputWeedLoad,
         inputWeedSupply,
         inputCocaineLoad,
         inputCocaineSupply,
         inputMethLoad,
         inputMethSupply) {
    /*Вычисление процентов для первой лабы с учетом онлайна. В случае с 3 игроками
    2.7 для загруженности и
    -5,76 для снабжения.*/
    var weedDynamicPercentLoad = weedBasicPercentLoad * playerCount;
    var weedDynamicPercentSupply = weedBasicPercentSupply * playerCount;
    /*Вычисление времени с учетом онлайна для первой лабы*/
    var weedTimeToLoad = (100-inputWeedLoad)/weedDynamicPercentLoad;
    var weedTimeToEnd = -inputWeedSupply/weedDynamicPercentSupply;
  
    console.log('\nМеню производства травы')
    console.log(`Загруженность: ${inputWeedLoad}% (+${weedDynamicPercentLoad.toFixed(2)}% в час)(${weedTimeToLoad.toFixed(1)} часов до готовности)` )
    console.log(`Снабжение: ${inputWeedSupply}% (${weedDynamicPercentSupply.toFixed(2)}% в час)(Закончится через ${weedTimeToEnd.toFixed(1)} часов)` )
  
    /*Вычисление процентов для второй лабы с учетом онлайна*/
    var cocaineDynamicPercentLoad = cocaineBasicPercentLoad * playerCount;
    var cocaineDynamicPercentSupply = cocaineBasicPercentSupply * playerCount;
    /*Вычисление времени с учетом онлайна для второй лабы*/
    var cocaineTimeToLoad = (100-inputCocaineLoad)/cocaineDynamicPercentLoad;
    var cocaineTimeToEnd = -inputCocaineSupply/cocaineDynamicPercentSupply;
  
    console.log('\nМеню производства кокса')
    console.log(`Загруженность: ${inputCocaineLoad}% (+${cocaineDynamicPercentLoad.toFixed(2)}% в час)(${cocaineTimeToLoad.toFixed(1)} часов до готовности)` )
    console.log(`Снабжение: ${inputCocaineSupply}% (${cocaineDynamicPercentSupply.toFixed(2)}% в час)(Закончится через ${cocaineTimeToEnd.toFixed(1)} часов)` )
    /*Вычисление процентов для 3-й лабы с учетом онлайна*/
    var methDynamicPercentLoad = methBasicPercentLoad * playerCount;
    var methDynamicPercentSupply = methBasicPercentSupply * playerCount;
    /*Вычисление времени с учетом онлайна для 3-й лабы*/
    var methTimeToLoad = (100-inputMethLoad)/methDynamicPercentLoad;
    var methTimeToEnd = -inputMethSupply/methDynamicPercentSupply;
  
    console.log('\nМеню производства мета')
    console.log(`Загруженность: ${inputMethLoad}% (+${methDynamicPercentLoad.toFixed(2)}% в час)(${methTimeToLoad.toFixed(1)} часов до готовности)` )
    console.log(`Снабжение: ${inputMethSupply}% (${methDynamicPercentSupply.toFixed(2)}% в час)(Закончится через ${methTimeToEnd.toFixed(1)} часов)` )
}
3.1 Значение в ф2-Группировка-Информация-Производство-Производительность вычислить не сложно, я думаю.
3.2 Как и для 1-2, но проценты в час нужно умножить на значение из пути в 3.1 и поделить на 100. Время зависит от % в час поэтому делать с ним ничего не надо.
Прим.1: Онлайн 50 человек, производительность 190, тогда для третьей лабы
var methDynamicPercentLoad = methBasicPercentLoad * playerCount*190/100; // methDynamicPercentLoad = 5.7%, вместо 3% для 5 игроков или 100%
var methDynamicPercentSupply = methBasicPercentSupply * playerCount*190/100; // methDynamicPercentSupply = -31.92% вместо -16.8% для 5 игроков или 100%
 
Последнее редактирование: