Перейти к контенту

Ковыряемся в файлах ОП 2.1


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

Надоело запоминать кому что нужно по циклическим заданиям. Написал функцию в gamedata\scripts\kgp.script:
 

Скрытый текст



function GetTextDop(section)
	local ct = cycle_task.CCycleTask()
	--' Перебираем вендоров
	TextDop = "\\n-------\\n"
	for v=0,255 do
		--' Перебираем задания вендора
		vendor_string = string.format("%03d", v)
		if not ct.task_ini:section_exist(vendor_string.."000") then break end	-- 'Вендоры кончились
		for t=0,255 do
			task_id = vendor_string..string.format("%03d", t)
			if not ct.task_ini:section_exist(task_id) then 
				if ct.task_ini:section_exist(vendor_string..string.format("%03d", t+1)) then
					abort("Task manager: numbering chain broken [%s]. Vendor task number must be continuous without gaps.", task_id)
				end
				break	--' Задания у вендора кончились
			end
			task_desc = ct.task_info[task_id]
			if task_desc.target == section then

				if ct.task_ini:line_exist(task_id, "once") then
					--'Если однократное задание выполнено, то вывести информацию зелёным цветом.
					--'Можно вообще больше не выводить.
					if task_desc.status == 6 then
						TextDop = TextDop.."\\n%c[255,1,255,1]"
					else
						TextDop = TextDop.."\\n%c[255,255,255,255]"
					end
				else
					TextDop = TextDop.."\\n%c[255,255,255,255]"
				end

				--'Вывести тип задания
				if task_desc.type == 3 or task_desc.type == 4 or task_desc.type == 5 then
					TextDop = TextDop.."ЦЗ: "
				elseif task_desc.type == 6 then
					TextDop = TextDop.."Цепь: "
				else
					TextDop = TextDop..task_desc.type..": "
				end

				--'Вывести вендора
				if story_object(task_desc.vendor) ~= nil then
					TextDop = TextDop..ct:get_vendor_name(story_object(task_desc.vendor))
				else
					TextDop = TextDop..task_desc.vendor
				end

				--'Вывести количество
				if task_desc.target_count ~= nil then
					TextDop = TextDop..": "..task_desc.target_count
				end

				--'Вывести состояние предмета
				if task_desc.target_cond then
					TextDop = TextDop..": "..task_desc.target_cond[1].."-"..task_desc.target_cond[2]
				end
			end
		end
	end
	return TextDop
end

В файле gamedata\scripts\amk\safe_storageviewer.script в функции StorageViewer:InventoryListClicked(inventoryControl) вызываю GetDopText(section):


есть такая строка
self.info_box.frame_description:SetText(descFromIni)

дописать свою
TextDop = kgp.GetTextDop(section)
descFromIni = descFromIni..TextDop
self.info_box.frame_description:SetText(descFromIni)


 

Естественно это работает только в новых рюкзаках.

Как то-же самое сделать для инвентаря ГГ?

  • Полезно 4

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


Ссылка на сообщение
(изменено)

Ещё одна фишка в продолжение предыдущего поста.

Файл gamedata\scripts\cycle_task.script -

в конце функции function CCycleTask:action_give_task(actor, npc, p1, p2) добавить:
 

Скрытый текст



	--(KGP
	if 	(task_desc.type == self.type.monster_part 
			or task_desc.type == self.type.artefact 
			or task_desc.type == self.type.find_item 
			or task_desc.type == self.type.chain)
			and (not self.task_ini:line_exist(task_id, "once")) then
		tar = task_desc.target
		tcount = task_desc.target_count
		local itemElector=safe_ItemElector.GetItemElectorClass()
		if tar ~= nil then
			if ObjNoCreate[tar] == "no" then
			else
				if tcount ~= nil then
					kgp.create_items_actor(tar,tcount)
				else
					kgp.create_items_actor(tar,1)
				end
			end
		else
		end
	end
	--KGP)

В kgp.script:


function create_items(npc,section,number)
        for i=1,number do
			alife():create(section, 
            npc:position(),
            npc:level_vertex_id(),  
            npc:game_vertex_id(),
            npc:id())
        end 
end
function create_items_actor(itm_section,number)
	this.create_items(db.actor,itm_section,number)
end


 

Взято из sak.script (думаю, что те кто это читает, знают).

Для однократных заданий предметы не создаются (что очень легко исправить;).

Забыл сказать, что создаются только новые стволы и броня. Чтобы их "убить" до нужного состояния у меня есть ещё функции.

Изменено пользователем Опричник

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...