Alex Paen

lua скрипты и моды по изменению баланса

226 сообщений в этой теме

Лимит производства могу увеличить на раз два. Тут кстати дельные мысли возникли. На мой взгляд стоит ЗНАЧИТЕЛЬНО увеличить строительство электропутей, но снизить эксплуатацию электропоездов. Ведь по факту дизель дороже электричества, но инфраструктура отжирает свое. Надо глянуть поподробнее, жаль времени личного мало =(

0

Поделиться сообщением


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

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

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

1

Поделиться сообщением


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

ну не знаю, электричество нынче не дешевое, ВЛ потребляет порядка 35 квт в час (175р/ч) + до 10 % потери нарпряжения + обслуживание линии (+ бесконечности) + обслуживание подстанций выходит дороже дизеля ЧМЭ3 8кг/ч (200 р/ч), в нагрузке же 200 квт против 250 л при больших маштабах может оно и одинаково.

0

Поделиться сообщением


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

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

0

Поделиться сообщением


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

Вот такую твикалку сделал:

 

runFn = function (settings)
		addModifier("loadModel", function (fileName, data)
				if data.metadata.transportVehicle and data.metadata.railVehicle then
					if data.metadata.railVehicle.engines then
						if data.metadata.description  then
							if data.metadata.description.name == "Stake car"  then
								data.metadata.cost.price = 100 * (data.metadata.availability.yearFrom - 1825) * data.metadata.railVehicle.weight
								data.metadata.maintenance.runningCosts = 100 * (data.metadata.availability.yearFrom - 1825) * data.metadata.railVehicle.weight * 0.2
							end
						end
					else 
						if data.metadata.transportVehicle.seats then
							data.metadata.cost.price = 200 * data.metadata.railVehicle.topSpeed * (data.metadata.railVehicle.weight * 0.8) 
							data.metadata.maintenance.runningCosts = (200 * data.metadata.railVehicle.topSpeed * (data.metadata.railVehicle.weight * 0.8)) * 0.2
						else
							data.metadata.cost.price = 100 * (data.metadata.availability.yearFrom - 1825) * data.metadata.railVehicle.weight 
							data.metadata.maintenance.runningCosts = 100 * (data.metadata.availability.yearFrom - 1825) * data.metadata.railVehicle.weight * 0.2
						end
					end
				end

				return data
			end)
	end

 

 

Получается так, что цены на грузовые вагоны значительно отличаются от прошитых урбанами значений, например, цистерны трех размеров будут стоить 25к/113к/250к (годовое обслуживание = цена/5) , а вот пассажирские считаются по-другому и довольно мало отличаются от существующих. Обосновывал это тем, что они зарабатывают больше всех, гораздо сложней и дороже в производстве и требуют более дорогого обслуживания.

1

Поделиться сообщением


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

офф топ: 
по спойлерам я тут нынче "мастер")))

[спойлер]текст[/спойлер] существует проблема что не во всех браузерах закрывается тег если в нем есть enter, Alex убеждает меня что это не так, но сути не меняет. Так что лучше сначала создаем тег. Жмем отправить. После чего через изменить работаем внутри тега. В таком случае избежим растягивания тега на текст и/или изображение вне ковычек. Shift+еnter переход на новую строку типа <br> не считается и можно использовать.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Vitaro сказал:

Лимит производства могу увеличить на раз два. Тут кстати дельные мысли возникли. На мой взгляд стоит ЗНАЧИТЕЛЬНО увеличить строительство электропутей, но снизить эксплуатацию электропоездов. Ведь по факту дизель дороже электричества, но инфраструктура отжирает свое. Надо глянуть поподробнее, жаль времени личного мало =(

Так что там с увеличением лимита?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, 750kVolt сказал:

[спойлер]текст[/спойлер] существует проблема что не во всех браузерах закрывается тег если в нем есть enter, Alex убеждает меня что это не так, но сути не меняет. Так что лучше сначала создаем тег. Жмем отправить.

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

п.с. Потестировал свои формулы - стартовать с ж/д без пассажиров и автомобилей уже вполне можно. Теперь нужно поднять ценники на инфраструктуру и уже можно начинать играться :)

0

Поделиться сообщением


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

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

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
18 минут назад, Alex Paen сказал:

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

Ты же потом выложишь файлик с измененными ценами? Чтобы простые смертные, тоже могли играть?

0

Поделиться сообщением


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

Конечно выложу.

0

Поделиться сообщением


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

Нашёл кост-мод, но он обфусцирован. Увы.

0

Поделиться сообщением


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

А по поводу редакции стоимости нет идей?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Alex Paen сказал:

А по поводу редакции стоимости нет идей?

Формулу. Почти вывел. Эмпирическим путем. Луа версии пока нет, есть питоновская, если интересно. Если отображать с точностью как в игре, то совпадает.

Так как времени сейчас не особо, то кидаю наработки.

 

powerCost = 0.4025*6

def line(x1, x2, x, y1, y2):
    return (x - x1)/(x2 - x1)*(y2 - y1) + y1

def speedCost(speed):
    if speed >= 55 and speed <= 68:
        return 1
    elif speed > 68:
        if speed > 68 and speed <= 74:
            return 1 + (speed - 68) * 0.000690
        elif speed > 74 and speed <= 75:
            return 1.0041400 + (speed - 74) * 0.0008295
        elif speed > 75 and speed <= 90:
            return 1.0049695 + (speed - 75) * 0.000620
        elif speed > 90 and speed <= 99:
            return 1.0142695 + (speed - 90) * 0.000804
        elif speed > 99 and speed <= 135:
            return 1.0215055 + (speed - 99) * 0.000924
        elif speed > 135 and speed <= 180:
            return 1.0547695 + (speed - 135)* 0.0009907
        elif speed > 180 and speed <= 195:
            return 1.0993510 + (speed - 180)* 0.0008337
        elif speed > 195 and speed <= 200:
            return 1.1118565 + (speed - 195)* 0.00125
        elif speed > 200 and speed <= 230:
            return 1.1181065 + (speed - 200)* 0.000894
        elif speed > 230 and speed <= 240:
            return 1.1449265 + (speed - 230)* 0.001035
        elif speed > 240 and speed <= 300:
            return 1.1552765 + (speed - 240)* 0.000825
        elif speed > 300 and speed <= 375:
            return 1.2047765 + (speed - 300)* 0.0007741
        elif speed > 375 and speed <= 500:
            return 1.262834  + (speed - 375)* 0.000679
        elif speed > 500 and speed <= 750:
            return 1.347709  + (speed - 500)* 0.00054
        elif speed > 750 and speed <= 1000:
            return 1.482709  + (speed - 750)* 0.00045
        elif speed > 1000:# and speed <= 10000:
            return 1.595709  + (speed - 1000)* 0.0001571
    elif speed < 55:
        if speed >= 54 and speed < 55:
            return 1 + (55 - speed) * 0.002485
        elif speed >= 46 and speed < 54:
            return 1.002485 + (54 - speed) * 0.00082
        elif speed >= 0 and speed < 46:# Этот участок пока не готов
            return 1.009045 + (46 - speed) * 0.0016886801
    else: return 0


power = 1
speed = 200
cost = powerCost*speedCost(speed) * power
running = cost / 6
print("spd = {:0d}\tcst = {:0.2f}\trng = {:0.3f}".format(speed, cost, running))  

 

0

Поделиться сообщением


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

Я-то про стоимости инфраструктуры никак не могу нарыть.

Меняю стоимость:

путь, э/фикация, туннель, мосты, станции, депо.

Пока приходится делать это копией конфиг.файлов, но чую что можно это сделать лишь в одном файлике mod.lua

0

Поделиться сообщением


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

Все получилось пока ортодоксальным путем через ворох конфиг файлов, но и то уже совсем иначе все выглядит по расходам.

Туннели через полкарты теперь влетят в хорошую копейку. Да и мосты тоже. Электрификация более чувствительна, как и простая прокладка пути уже тоже недешева.

Единственное пока не найду где регулируются стоимости станций.

0

Поделиться сообщением


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

Ура! Сбылась мечта, мой красный друг!

В 23.11.2016 в 20:00, Alex Paen сказал:

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

Код, который позволяет задать цену вагона в зависимости от количества мест. Конечно это только пенёк (stub), кода и требует допиливания, но он уже работает. Специально не влияет на автомотрисы и составные юниты.

P.S. оффтоп. Кто поможет, у меня на форуме включился режим замены текста типа как по клавише Insert в ворде. Как пофиксить?

 

 

local function modelCallback(fileName, data)
	if data.metadata.transportVehicle then
		if data.metadata.transportVehicle.capacities then
			if not data.metadata.transportVehicle.multipleUnitOnly and data.metadata.railVehicle and not data.metadata.railVehicle.engines then
				if data.metadata.transportVehicle.capacities[1].type == "PASSENGERS" then
					data.metadata.cost.price = data.metadata.transportVehicle.capacities[1].capacity * 10
				end
			end
		end
	end
	return data
end

function data()
return {
	info = {
		minorVersion = 0,
		severityAdd = "NONE",
		severityRemove = "NONE",
		name = _("Passenger Wagons prices rebalance"),
		description = _("Passenger Wagons prices rebalance"),
	},
	runFn = function (settings)
		addModifier("loadModel", modelCallback)
		local costs = table.copy(game.config.costs)
	end
}
end

 

1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
19 минут назад, Devilhunter сказал:

P.S. оффтоп. Кто поможет, у меня на форуме включился режим замены текста типа как по клавише Insert в ворде. Как пофиксить?

Эмм я думаю виновата та же клавиша Insert. :D

20 минут назад, Devilhunter сказал:

Код, который позволяет задать цену вагона в зависимости количества мест.

Учитывая особенности наших вагонов, не помешал бы мод, который снижал бы цену и\или стоимость обслуживания вагонов в зависимости от их массы (т.е. снижал стоимость обслуживания для тяжёлых вагонов).

1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, Alex сказал:

Эмм я думаю виновата та же клавиша Insert. :D

ХМ...действительно. Но я ведь пробовал её нажимать. :wacko:

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, Devilhunter сказал:

capacities[1]

А можно на будущее для общего развития - что значит эта единица в скобках? Я ставил без нее и, понятное дело, игруха сразу же отругивала луа и вываливалась.

Ну и еще - в конфиге рельс параметры завязаны на локальную переменную t - тоже не вышло поправить стоимость скриптом.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Alex Paen сказал:

А можно на будущее для общего развития - что значит эта единица в скобках? Я ставил без нее и, понятное дело, игруха сразу же отругивала луа и вываливалась.

Ну и еще - в конфиге рельс параметры завязаны на локальную переменную t - тоже не вышло поправить стоимость скриптом.

Я сам без единицы не понимал почему не работает, пока не нашёл мод Klorid realcapacity из ТФ. Там был цикл для изменения вместимости в 4 раза. Я не понимал зачем цикл. Невнимательно разглядывая код для пассажирских вагонов не заметил лишних фигурных скобок. Присмотрелся к коду грузовых вагонов и понял, что капаситис это список/массив/таблица/ну вы поняли.

transportVehicle = {
			carrier = "RAIL",
			capacities = {
				{ type = "COAL", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 2, maxHeight = 1.88 } } },
				{ type = "IRON_ORE", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 3, maxHeight = 1.88 } } },
				{ type = "STONE", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 4, maxHeight = 1.88 } } },
				{ type = "GRAIN", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 5, maxHeight = 1.88 } } },
				{ type = "SLAG", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 6, maxHeight = 1.88 } } },
			},
			loadSpeed = 3
		},

Если убрать из кода выше строку 

if data.metadata.transportVehicle.capacities[1].type == "PASSENGERS" then

но оставить 

data.metadata.cost.price = data.metadata.transportVehicle.capacities[1].capacity * 10

то цена для вагона в примере будет определяться вместимостью угля.

Т.е. capacities[1] это type = "COAL", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 2, maxHeight = 1.88 } } 

capacities[2] это type = "IRON_ORE", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 3, maxHeight = 1.88 } }

А само capacities это (весь список)

				{ type = "COAL", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 2, maxHeight = 1.88 } } },
				{ type = "IRON_ORE", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 3, maxHeight = 1.88 } } },
				{ type = "STONE", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 4, maxHeight = 1.88 } } },
				{ type = "GRAIN", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 5, maxHeight = 1.88 } } },
				{ type = "SLAG", capacity = 52, loadIndicator = { type = "LEVEL", params = { id = 6, maxHeight = 1.88 } } },

Поэтому у capacities нет .capacity

1

Поделиться сообщением


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

Кстати. Вдруг кому поможет. Learn Lua in 15 Minutes

За 15 минут я его не осилил, но часа-полтора хватило чтобы неспешно разобраться в базовых принципах ЛУА. Это если вы разбираетесь в программировании в принципе, если нет, то посоветовать могу другое.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
55 минут назад, Devilhunter сказал:

Кстати. Вдруг кому поможет. Learn Lua in 15 Minutes

За 15 минут я его не осилил, но часа-полтора хватило чтобы неспешно разобраться в базовых принципах ЛУА. Это если вы разбираетесь в программировании в принципе, если нет, то посоветовать могу другое.

А есть вариант для чайников?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, INC(RED)IBLE сказал:

А есть вариант для чайников?

Lua для чайников не видел, может где и есть, но есть программирование для чайников на примере С++, Java, Python 2, Python 3.

Вот там реально для чайников или для тех у кого сильно умные книжки вызывают скуку и они забрасывают изучения языка. Ведь для начала очень важно знать и понимать сами принципы программирования нежели знать язык.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, Devilhunter сказал:

Lua для чайников не видел, может где и есть, но есть программирование для чайников на примере С++, Java, Python 2, Python 3.

Вот там реально для чайников или для тех у кого сильно умные книжки вызывают скуку и они забрасывают изучения языка. Ведь для начала очень важно знать и понимать сами принципы программирования нежели знать язык.

Можно ссылок?

0

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

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

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

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу