Перейти к содержанию
Авторизация  
FalkineIsaku

[CoP] Изменение прочности вещей в любой момент игры

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

 
Спойлер

Этот урок будет о том, как изменить прочность вещей гг в любой момент игры. (в теме будет в начале игры)

Спойлер

Есть два способа: Изменение оригинальной функции, или удаление старой и создание новой. (Можно оставить старую и создать новую)
Ищем в нашем файле: "function damage_actor_items_on_start", думаю тут понятно, но на всякий случай объясню:
function damage_actor_items_on_start(actor, npc)  "damage_actor_items_on_start" - можно изменить.
    local actor = db.actor  - Не трогать
    
    local obj = actor:object("helm_respirator") "helm_respirator" - это секция предмета, у которого мы хотим повысить прочность.
    if obj ~= nil then - Не трогать
        obj:set_condition(0.8)  "0.8" - Это новое состояние предмета, которое мы можем установить.
    end - Не трогать
end - Не трогать
По этой схеме вполне можно сделать новую функцию

Спойлер

Для начала расскажу как убрать стандартную активацию функции (в начале оригинала ЗП на Затоне)
Заходим в "configs\scripts\zaton\zaton_a1_logic.ltx" и просто убираем %=damage_actor_items_on_start% (она на 5 строчке)

Теперь расскажу как вызвать такую функцию снова, уже с другим именем и в другой логике.
Открываем вашу логику рестриктора, и в самое начало, после самой первой "on_info/on_game_timer" пишем: %=имя_вашей_функции%
Пример:
on_info = {+esc_start_game !surge_started} %=имя_вашей_функции%
Всё...

 

  • Лайк 1
  • Мастер! 2
  • Аплодисменты 2

А колбасу и батоны нынче хреновые делать стали...

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


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

FalkineIsaku Вставлю свои 5 копеек. Вы меняете не прочность, а состояние объекта (величина обратная износу объекта). Прочность (а точнее, степень с которой изнашивается предмет при внешних воздействиях) задается в конфиге объекта в секции с именем указанным в параметре immunities_sect.

Теперь приведу свою функцию:

Спойлер

function damage_actor_items_on_start()
	local actor = db.actor
	local slot_tab = {2,3,7,12}
	for i = 1, #slot_tab do
		local item_in_slot = actor:item_in_slot(slot_tab[i])
		if item_in_slot ~= nil then
			item_in_slot:set_condition((math.random(30)+40)/100)
		end
	end
end

 

Она меняет состояние предметов в слотах 2,3,7,12 ГГ, то есть оружия, шлема и брони. Меняет на случайное значение в диапазоне 0,4-0,7 при этом не важно какой именно предмет выдан на старте игры.

  • Лайк 1
  • Мастер! 2

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

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

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

Создать учетную запись

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

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

Войти

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

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

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