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

Внимание!

В ближайшее время на форум будет загружена новая редакция Правил форума и Пользовательского соглашения. 

Ознакомление обязательно.

_Val_ _Val_

Скриптование


Svoboда

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

Нужна помощь - при попытке выполнить такой код:
 

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



function dots:dots1()
	edit_box		= self:GetEditBox("edit_box")
	edit_box2		= self:GetEditBox("edit_box2")

clan = tostring(edit_box:GetText())
amount = tonumber(edit_box2:GetText())

--get_console():execute(clan)
--get_console():execute(amount)

--get_console():execute("Started")

if db.actor then
-- self:on_quit()
-- get_console():execute("main_menu off")
get_console():execute("Phase1")
if clan==nil then clan="stalker" end
if amount==nil then amount=1 end
--current=relation_registry:community_goodwill(clan, 0)
get_console():execute("Phase2")
relation_registry:set_community_goodwill(clan, 0, math.min(5000, amount))
get_console():execute("Phase3")
end
end

вылетает на стол с такой вот ошибкой:


[02.10.20 16:23:52.569] ********************************************************************************
[02.10.20 16:23:52.576] *********************************************************************************
[02.10.20 16:23:52.576] [print_output([CScriptEngine::lua_pcall_failed])] SCRIPT RUNTIME ERROR:
[luabind::detail::free_functions::function_dispatcher] Caught unhandled exception!
stack traceback:
	[C]: at 0x07fed88bf770
	[C]: in function 'set_community_goodwill'
	g:\stalker_shoc_na7\gamedata\scripts\ui_prestige.script:72: in function <g:\stalker_shoc_na7\gamedata\scripts\ui_prestige.script:52>
[02.10.20 16:23:52.576] *********************************************************************************
[02.10.20 16:23:52.576] 
FATAL ERROR

[error]Expression    : FATAL ERROR
[error]Function      : CScriptEngine::lua_pcall_failed
[error]File          : d:\_work\forks\ogsr-engine\ogsr_engine\common_ai\script_engine.cpp
[error]Line          : 52
[error]Description   : [CScriptEngine::lua_pcall_failed]: [luabind::detail::free_functions::function_dispatcher] Caught unhandled exception!

[02.10.20 16:23:52.576] ***************************[ScriptCrashHandler]**********************************
[02.10.20 16:23:52.576] stack traceback:
	[C]: at 0x07fed88bf770
	[C]: in function 'set_community_goodwill'
	g:\stalker_shoc_na7\gamedata\scripts\ui_prestige.script:72: in function <g:\stalker_shoc_na7\gamedata\scripts\ui_prestige.script:52>
[02.10.20 16:23:52.576] 	Locals: 
[02.10.20 16:23:52.576] 	 string (*temporary) : [luabind::detail::free_functions::function_dispatcher] Caught unhandled exception!
[02.10.20 16:23:52.576] 	End
[02.10.20 16:23:52.576] 	Locals: 
[02.10.20 16:23:52.576] 	 Table: (*temporary)
[02.10.20 16:23:52.576] 			 function (*temporary).set_community_goodwill : [[function]]
[02.10.20 16:23:52.576] 			 function (*temporary).clear_personal_relations : [[function]]
[02.10.20 16:23:52.576] 			 function (*temporary).community_goodwill : [[function]]
[02.10.20 16:23:52.576] 			 function (*temporary).change_community_goodwill : [[function]]
[02.10.20 16:23:52.576] 			 function (*temporary).set_personal_goodwill : [[function]]
[02.10.20 16:23:52.576] 			 function (*temporary).clear_personal_goodwill : [[function]]
[02.10.20 16:23:52.576] 			 function (*temporary).get_personal_goodwill : [[function]]
[02.10.20 16:23:52.576] 			 function (*temporary).change_personal_goodwill : [[function]]
[02.10.20 16:23:52.576] 	 string (*temporary) : stalker
[02.10.20 16:23:52.576] 	 number (*temporary) : 0.000000
[02.10.20 16:23:52.576] 	 number (*temporary) : 2000.000000
[02.10.20 16:23:52.576] 	End
[02.10.20 16:23:52.576] 	Locals: 
[02.10.20 16:23:52.576] 	 Userdata: self
[02.10.20 16:23:52.576] 			 userdata self.dialog : (CUIStatic): 00000000170B2A80
[02.10.20 16:23:52.576] 			 Userdata: self.owner
[02.10.20 16:23:52.576] 					 userdata self.owner.message_box : (CUIMessageBoxEx): 0000000040B32920
[02.10.20 16:23:52.576] 					 number self.owner.mbox_mode : 0.000000
[02.10.20 16:23:52.576] 					 userdata self.owner.shniaga : (CUIMMShniaga): 0000000040781180
[02.10.20 16:23:52.576] 	End
[02.10.20 16:23:52.576] *********************************************************************************
[02.10.20 16:23:52.576] ********************************************************************************


 

Вот чего ОГСРу неймётся, кто-нить может объяснить? Какое исключение и где именно?

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

AMD Ryzen 5 3600, 32GB DDR4-3200, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, CoP SGM Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM, ОП-2.2 ZC!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

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


Ссылка на сообщение

@dsh, в dialogs.script в НА7 вступление в Долг так же реализовано, потому решил использовать этот же метод для своего экстренно-читерского исправлятора отношений; собственно кусок скрипта:
 

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



-----------------------------------------------------------------------------------
-- Dolg Community
-----------------------------------------------------------------------------------
function actor_in_dolg(actor, npc)
	if db.actor then
		return db.actor:character_community() == "actor_dolg"
	end
	return false
end

function actor_not_in_dolg(actor, npc)
	return not actor_in_dolg(actor, npc)
end

function actor_set_dolg(actor, npc)
	printf("ACTOR NOW IN [DOLG] COMMUNITY")
	if db.actor then
		db.actor:set_character_community("actor_dolg", 0, 0)
		update_info_portions_dolg()

		if not db.actor:has_info("mil_leader_quest2_complete") then
			relation_registry.set_community_goodwill ("freedom", db.actor:id(), -5000)
		elseif relation_registry.community_goodwill("freedom", db.actor:id()) > 0 then
			relation_registry.set_community_goodwill ("freedom", db.actor:id(), 0)
		end
	end
	return true
end

function actor_clear_community(actor, npc)
	printf("ACTOR NOW IN [NEUTRAL] COMMUNITY")
	if db.actor then
		db.actor:set_character_community("actor", 0, 0)
	end
	return true
end

 

 

 

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

AMD Ryzen 5 3600, 32GB DDR4-3200, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, CoP SGM Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM, ОП-2.2 ZC!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

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


Ссылка на сообщение

@dsh, или ты меня в двоеточие вместо точки ткнул? тут я мог накосячить ибо ЛУА после Паскаля воспринимается очень хреново...

Всем помогавшим - Спасибо! Нашёл, где накосячил

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

AMD Ryzen 5 3600, 32GB DDR4-3200, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, CoP SGM Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM, ОП-2.2 ZC!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

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


Ссылка на сообщение

@UriZzz, неа, просто транслятор ЛУА ругался на двоеточие между relation_registry и методом set_community_goodwill, а там положено быть точке; всё равно спасибо и удаляюсь кодить дальше...

  • Спасибо 1
Скрытый текст

AMD Ryzen 5 3600, 32GB DDR4-3200, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, CoP SGM Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM, ОП-2.2 ZC!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

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


Ссылка на сообщение

@bastor, из очевидного: не вижу кода удаления статика, только добавления (я ж не телепат и не "крутой хацкер"!); также, если у тебя GetCustomStatic(k), то и RemoveCustomStatic должен иметь параметр-указатель кого-что удалять (не всё же подряд и не случайный!)

Изменено пользователем Black_Raven_03
Скрытый текст

AMD Ryzen 5 3600, 32GB DDR4-3200, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, CoP SGM Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM, ОП-2.2 ZC!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

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


Ссылка на сообщение

День добрый, прошу помощи!
Написал такой код:

if has_alife_info("freeplay") and level.name == "l11_pripyat" then -- если во фриплее и на Припяти
		for id = 1, 65535 do
			local lobj = level.object_by_id(id)
			if (get_clsid(lobj) == clsid.zone_bfuzz_s or get_clsid(lobj) == clsid.zone_galant_s or get_clsid(lobj) == clsid.zone_mbald_s or get_clsid(lobj) == clsid.zone_mincer_s) and distance_between_safe(lobj, level.vertex_in_direction(nil,vector():set(-45,-2,-85),9)) < 900 then -- если класса грави-аномалий и ближе 30 метров от вертекса костра у гаражей
				alife():set_switch_online(id, false) -- отключить онлайн
				alife():set_switch_offline(id, true) -- включаем офлайн
					alife():release(lobj, true) -- посылаем на разрушение
			end
		end
	end

в биндере сталкера (знаю, что плохая затея, но так нужно) на движке ОГСР (точнее в моде-аддоне Ганслингер для чистого ТЧ) , чтобы удалить аномалии (две) вечно "съедающие" механика.
Аномалии остались на месте, механик мёртв и возникает закономерный вопрос - что я натворил не так? Пожалуйста, ткните носом в мои ошибки!

Уточнение: убрать клиентский объект по координатам я могу, а вот работать с серверными пока не научился

Изменено пользователем Black_Raven_03
дополнение
Скрытый текст

AMD Ryzen 5 3600, 32GB DDR4-3200, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, CoP SGM Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM, ОП-2.2 ZC!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

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


Ссылка на сообщение

@dsh,  @UriZzz, @Kirgudu, спасибо, что откликнулись и извините, что так плохо сформулировал вопрос (плохо соображал, когда писал)
@dsh мне нужно удалить эти аномалии, только если О-Сознание убичтожено Стрелком/Меченым, не раньше;
@UriZzz да - механик (Шуруп) притопал в Припять со Складов, причём с Лукашом и Кэпом из уникальных НеПиСей и ещё пятью статисами из фрименов;
@Kirgudu, м-да, это я сильно тупанул с номером вертекса - мне должно было хватить vector():set(x,y,z) для сравнения расстояния;
не помню - с какого бодуна я решил перестраховаться с поиском смарта с костром, к которому квад и пытаеться "рассесться", попадая в "мясорубку".

переписал нафиг - от греха подальше:

if has_alife_info("freeplay") and level.name == "l11_pripyat" then -- если во фриплее и на Припяти
		for i = 1, 65535 do
			local svobj = alife().object(i)
			local clobj = level.object_by_id(svobj.id)
			if (get_clsid(clobj) == clsid.zone_bfuzz_s or get_clsid(clobj) == clsid.zone_galant_s or get_clsid(clobj) == clsid.zone_mbald_s or get_clsid(clobj) == clsid.zone_mincer_s) and distance_between_safe(clobj, level.vertex_in_direction(nil,vector():set(-45,-2,-85),9)) < 900 then -- если класса грави-аномалий и ближе 30 метров от вертекса костра у гаражей
				alife():set_switch_online(i, false) -- отключить онлайн
				alife():set_switch_offline(i, true) -- включаем офлайн
--				if actor:position():distance_to(clobj:position()) > 9 then -- если есть 3 метра до Меченого
					alife():release(svobj, true) -- посылаем на разрушение
--				end
			end
		end
	end

надеюсь теперь будет цивилизованнее

Изменено пользователем Black_Raven_03
Скрытый текст

AMD Ryzen 5 3600, 32GB DDR4-3200, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, CoP SGM Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM, ОП-2.2 ZC!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

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


Ссылка на сообщение

@Zander_driver, @Okichi удалять надо и статичные и динамические аномалии, ещё и синхронизируя с другими скриптами по несколько раз в секунду (соотв. имя и вертексы будут менятся, а одиночный экшн не повторит выполнения - отсюда и биндер... пока...)
@Zander_driver про квадрат расстояния понял - банально не заметил, когда переписывал, спасибки что повторил

Изменено пользователем Black_Raven_03
Скрытый текст

AMD Ryzen 5 3600, 32GB DDR4-3200, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, CoP SGM Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM, ОП-2.2 ZC!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

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


Ссылка на сообщение

Доброго времени суток, прошу помощи!

Делаю правку к Новому Арсеналу 7 (движок ОГСР от сен 2020, без возможности смены версии) с таким кодом:

	local sect = wpn:section()
	local sil_sect = get_string( sect, "silencer_name" )

	if not sil_sect then
		return
	end

	local sil_obj = level.object_by_id(0)
	db.actor:inventory_for_each( function( temp_sil, db.actor)
		if temp_sil and db.actor:is_in_ruck(temp_sil) and temp_sil:is_silencer() and temp_sil:section() == sil_sect then
			sil_obj = temp_sil
		end
	end )

, на что получаю ошибку "invalid key to next"

Вопрос: а куда копать-то?

 

Правка: сделал через iterate_inventory - больше не вылетает...

Изменено пользователем Black_Raven_03
Дополнение
Скрытый текст

AMD Ryzen 5 3600, 32GB DDR4-3200, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, CoP SGM Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM, ОП-2.2 ZC!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

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


Ссылка на сообщение
6 часов назад, Zander_driver сказал:

Достаточно объявления local sil_obj

Привычка: приучил себя по совету:rtfm: небезизвестного Kamikazze:489: всегда инициализировать переменные в ЛуаДжите

Как позже выяснилось, проблема была в inventory_for_each - метод (почему-то:az1000106:) не мог перейти на след. предмет! :31:

Изменено пользователем Black_Raven_03
Скрытый текст

AMD Ryzen 5 3600, 32GB DDR4-3200, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, CoP SGM Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM, ОП-2.2 ZC!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

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


Ссылка на сообщение

@Zander_driver @Kirgudu , огромное спасибо за предупреждение - учту и сделаю выводы

7 часов назад, abramcumner сказал:

 вообще не распарсился lua в ЗП.

а какая связь между ЗП и ТЧ-ориентированным ОГСР-движком?! я же специально указал год сборки движка - 2020! ЛуаДжиты же разные!

Изменено пользователем Black_Raven_03
Скрытый текст

AMD Ryzen 5 3600, 32GB DDR4-3200, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, CoP SGM Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM, ОП-2.2 ZC!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

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


Ссылка на сообщение

Снова нужна помошь, опять Новый Арсенал 7, соотв. ОГСР 2020г.
Мне нужно найти и удалить один предмет в инвентаре из нескольких одинаковых, когда делаю так:
 

local item, sil_items
		db.actor:iterate_ruck(
			function(dummy, item)
				if item.section == sil_sect then
					table.insert(sil_items, item:id())
				end
			end
		)
		if sil_items[1] ~= nil then 
			db.actor:mark_item_dropped(level.object_by_id(sil_items[1]))
			alife():release(alife():object(sil_items[1]))
		else
			return
		end

получаю ошибку вида "attempt to index a local sil_items (a nil value)"
Что я натворил не так?!

Изменено пользователем Black_Raven_03
Скрытый текст

AMD Ryzen 5 3600, 32GB DDR4-3200, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, CoP SGM Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM, ОП-2.2 ZC!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

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


Ссылка на сообщение

@Norman Eisenherz , забыл написать (мой косяк) - размер-то таблицы меняется, при этом нужно будет (позже, когда с одним тестовым отработаю) удалять только часть (больше одного, но не все) серверных предметов для этой таблицы.
@Kirgudu , м-да, как ты и написал, мне с самого начала следовало явно проинициализировать переменные (хреново мои мозги поздно вечером работают).

  • Нравится 1
Скрытый текст

AMD Ryzen 5 3600, 32GB DDR4-3200, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, CoP SGM Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM, ОП-2.2 ZC!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

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


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

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