Перейти к содержанию

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

 
 
2 минуты назад, exDeMODER сказал:

Не спорь, это бесполезно

Верно..))) :classic_rolleyes:


Группа мода в VK
Мод делался и тестировался на железе
i5-11400, 32Гб ОЗУ, Radeon RX580  Разрешение 2560 х 1440.  ВСЕ на максималке

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


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

как можно присвоить кондишн броне и оружию при попадании в инвентарь гг? 


76561198152189716.png

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


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

ian98 

local obj = db.actor:object("stalker_outfit") -- твой предмет
    if obj ~= nil then
        obj:set_condition(0.09) -- состояние предмета (9%)
    end

 

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


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

Chiliaz а куда вставлять-то? В свой скрипт и на on_item_take в bind_stalker?

 


76561198152189716.png

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


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

ian98 да хоть куда. Если выдаешь предметы в диалоге, то в <action>, если вызываешь через рестриктор, то в xr_effects.

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


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

Chiliaz А я не очень понимаю, это только для сталкерского комбеза? Пробовал сделать 

Спойлер

function set_weapon_condition()
local obj = db.actor:object("wpn_pm") -- твой предмет
    if obj ~= nil then
        obj:set_condition(0.09) -- состояние предмета (9%)
    end

 

вешал на он итем тейк. Вылет словил. 

И еще вопрос, можно ли сделать как-то так?

Спойлер

function set_weapon_condition()
local obj = isWeapon(item) and isOutfit(item)
		if isWeapon(item)  and not(get_clsid(item)==clsid.wpn_grenade_rgd5_s or get_clsid(item)==clsid.wpn_grenade_f1_s) then
		set_weapon_drop_condition(item)
		return
	end

	if isOutfit(item) then
		set_weapon_drop_condition(item)
		return
	end

function set_weapon_drop_condition(item)
	local condition  = (math.random(99)+1)/100
	if item:condition() > 0.99 then
		item:set_condition(condition)	
	end
end

 

там, скорее всего, много ошибок, потому что ничего не работает, но смысл надеюсь передан понятно: присвоить кондишн броне или оружию, когда айтем попадает в инвентарь к актору, если состояние предмета больше 99.

Изменено пользователем ian98

76561198152189716.png

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


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

ian98 если надо изменить состояние оружия выпадающего с трупов тогда надо копать death_manager и менять функцию set_weapon_drop_condition(item)

local condition  = (math.random(40)+40)/100 -- целостность оружия от 0 до 40%

Если надо поменять для всего оружия которое попадает в рюкзак к ГГ тогда в функцию actor_binder:on_item_take (obj) из bind_stalker, добавляем

if isWeapon(obj) and not(get_clsid(obj)==clsid.wpn_grenade_rgd5_s or get_clsid(obj)==clsid.wpn_grenade_f1_s) then
obj:set_condition(0.09)
end

 

Изменено пользователем Chiliaz
  • Спасибо 1

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


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

Chiliaz не вылетает, уже хорошо, правда ничего не происходит. Я на тч пробую, но думал, что с зп в этом смысле все одинаково. Видно не очень.


76561198152189716.png

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


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

ian98 всё работает и на тч и на зп


В беге за рассветом приближаешь свой закат

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


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

vader_33 вот блин, а у меня ничего не происходит. Вот это должно работать? Мне бы так. Здесь первая меняет состояние, а вторая функция должна, вроде как, разрешать это делать только один раз. Я вот прям вот это и вставлял в он итем тейк. Ничего не происходит.

Спойлер

function set_weapon_condition()
local obj = isWeapon(item) and isOutfit(item)
		if isWeapon(item)  and not(get_clsid(item)==clsid.wpn_grenade_rgd5_s or get_clsid(item)==clsid.wpn_grenade_f1_s) then
		set_weapon_drop_condition(item)
		return
	end

	if isOutfit(item) then
		set_weapon_drop_condition(item)
		return
	end

function set_weapon_drop_condition(item)
	local condition  = (math.random(99)+1)/100
	if item:condition() > 0.99 then
		item:set_condition(condition)	
	end
end

 

проверил скрипт чекером. Он мне сказал, что не хватает end в конце. Поставил. Проверил. Все ок. В bind stalker подключил скрипт название_скрипта.название_функции() и ничего не происходит:(

Изменено пользователем ian98

76561198152189716.png

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


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

ian98 объект не передается в функцию


Дополнено 0 минут спустя
26 минут назад, ian98 сказал:

а вторая функция должна, вроде как, разрешать это делать только один раз

вторая как раз и меняет, тут нет того, что разрешает что-то делать один раз. 

Функции isOutfit в тч нету, если она у вас не добавлена - вылетит

Изменено пользователем vader_33

В беге за рассветом приближаешь свой закат

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


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

vader_33 добавлена. В скрипт _g.script.

Спойлер

function isOutfit(object)
    local id = get_clsid(object)
    if id == nil then return false end

    if id == equ_stalker_s then return true
    elseif id == clsid.equ_stalker then return true
    elseif id == clsid.equ_scientific then return true
    elseif id == clsid.equ_military then return true
    elseif id == clsid.equ_exo then return true
    else return false end
end

 

Ну как же, состояние предмета изменится только, если оно выше 99, т.е один раз. Или нет? Ну понятно, что предмет, который дважды получил состояние 100 - дважды получит случайное состояние от 1 до 99, но в тч нет ремонта, кроме бага с артами, но и сет из 5 артефактов еще надо собрать.

Изменено пользователем ian98

76561198152189716.png

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


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

ian98 я подумал, что имелась в виду проверка на предметы актора, что отработает функция один раз только при поднятии предмета, а не на все предметы актора. А так да, пойдет. Можно одну проверку сделать и на оружие и на костюмы 

if (isWeapon(item)  and not(get_clsid(item)==clsid.wpn_grenade_rgd5_s or get_clsid(item)==clsid.wpn_grenade_f1_s) )  or isOutfit(item) then

Изменено пользователем vader_33

В беге за рассветом приближаешь свой закат

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


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

vader_33 Да, только у меня вылетает. С последним вариантом. Что-то с ним не так.


76561198152189716.png

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


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

ian98 а что в логе?


В беге за рассветом приближаешь свой закат

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


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

vader_33 так, ошибся, вылета нет, но и не работает ничего.

Сейчас вот так выглядит.

Спойлер

function set_weapon_condition()
local obj = isWeapon(item) and isOutfit(item)
		if isWeapon(item)  and not(get_clsid(item)==clsid.wpn_grenade_rgd5_s or get_clsid(item)==clsid.wpn_grenade_f1_s) or isOutfit(item) then
		set_weapon_drop_condition(item)
		return
	end

function set_weapon_drop_condition(item)
	local condition  = (math.random(99)+1)/100
	if item:condition() > 0.99 then
		item:set_condition(condition)	
	end
    end
end

 

 


76561198152189716.png

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


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

ian98 в set_weapon_condition() объект надо передавать


Дополнено 0 минут спустя

ian98 и условие неправильно скопировали


В беге за рассветом приближаешь свой закат

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


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

vader_33 

Спойлер

function set_weapon_condition()
local obj = isWeapon(item) and isOutfit(item)
		if (isWeapon(item)  and not(get_clsid(item)==clsid.wpn_grenade_rgd5_s or get_clsid(item)==clsid.wpn_grenade_f1_s) )  or isOutfit(item) then
		set_weapon_drop_condition(obj)
		return
	end

function set_weapon_drop_condition(obj)
	local condition  = (math.random(99)+1)/100
	if item:condition() > 0.99 then
		item:set_condition(condition)	
	end
    end
end

 

 


76561198152189716.png

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


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

ian98 в первую функцию function set_weapon_condition(), которая в биндере прописана. Из биндера передавать в нее. Откуда условие на оружие и броню должно брать item? function set_weapon_condition(item) . local obj = isWeapon(item) and isOutfit(item) вообще не нужен, сразу с функции берите item

Изменено пользователем vader_33

В беге за рассветом приближаешь свой закат

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


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

vader_33 аааааа, зачем(

Спойлер

function set_weapon_condition(obj)
local obj = isWeapon(item) and isOutfit(item)
		if (isWeapon(item)  and not(get_clsid(item)==clsid.wpn_grenade_rgd5_s or get_clsid(item)==clsid.wpn_grenade_f1_s) )  or isOutfit(item) then
		set_weapon_drop_condition(item)
		return
	end

function set_weapon_drop_condition(item)
	local condition  = (math.random(99)+1)/100
	if item:condition() > 0.99 then
		item:set_condition(condition)	
	end
    end
end

 

 

Изменено пользователем ian98

76561198152189716.png

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


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

ian98 
 

Спойлер



function set_weapon_condition(item)
	if (isWeapon(item)  and not(get_clsid(item)==clsid.wpn_grenade_rgd5_s or get_clsid(item)==clsid.wpn_grenade_f1_s) )  or isOutfit(item) then
		set_weapon_drop_condition(item)
	end
end

function set_weapon_drop_condition(item)
	local condition  = (math.random(99)+1)/100
		if item:condition() > 0.99 then
			item:set_condition(condition)	
		end	
end


 

 


В беге за рассветом приближаешь свой закат

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


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

vader_33 

function set_weapon_condition()
		if (isWeapon(item)  and not(get_clsid(item)==clsid.wpn_grenade_rgd5_s or get_clsid(item)==clsid.wpn_grenade_f1_s) )  or isOutfit(item) then
		set_weapon_drop_condition(item)
		return
	end

function set_weapon_drop_condition(item)
	local condition  = (math.random(99)+1)/100
	if item:condition() > 0.99 then
		item:set_condition(condition)	
	end
    end
end

 


Дополнено 3 минуты спустя

vader_33 vader_33 все равно не работает, блин...


76561198152189716.png

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


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

ian98 блин, в четвертый раз пишу, с биндера в функцию в скобках надо передавать объект function set_weapon_condition(item). И в бинд_сталкере соответственно скрипт.set_weapon_condition(obj)


Дополнено 1 минуту спустя

ian98 https://ap-pro.ru/forums/topic/92-cop-modostroy-voprosnica/?do=findComment&comment=86056

  • Смех 1

В беге за рассветом приближаешь свой закат

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


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

vader_33 Мне в бинд сталкер прописать - скрипт.set_weapon_condition(obj)

а сам скрипт такой

Спойлер

function set_weapon_condition(item)
	if (isWeapon(item)  and not(get_clsid(item)==clsid.wpn_grenade_rgd5_s or get_clsid(item)==clsid.wpn_grenade_f1_s) )  or isOutfit(item) then
		set_weapon_drop_condition(item)
	end
end

function set_weapon_drop_condition(item)
	local condition  = (math.random(99)+1)/100
		if item:condition() > 0.99 then
			item:set_condition(condition)	
		end	
end

 

попробую сейчас так.

ДААААА! НАКОНЕЦ-ТА. 50 раз перезапускал игру за сегодня. Не меньше...


Дополнено 6 минуты спустя

vader_33 Одно только непонятно, почему с броней не работает-то? По крайней мере с бандитской курткой. Не хватает клсидов? В _g isOutfit сделал, вроде правильно все там? Посмотрю с другими костюмами еще. С оружием класс) Получил сломанный обрез за зачистку логова собак.

Изменено пользователем ian98

76561198152189716.png

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


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

if id == equ_stalker_s then return true

clsid.equ_stalker_s

  • Смущение 1

В беге за рассветом приближаешь свой закат

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


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

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

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

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

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

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

Войти

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

Войти

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

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