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

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


Svoboда

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

Я помню, в моде АМК неписи крайне активно шарились по чужим тайникам, если они не были спрятаны черт знает куда. А сейчас играю в Зов Чернобыля, где такого нет. Вопрос - какой скрипт в АМК отвечал за обшаривание неписями тайников и как его без каких-либо загвоздок адаптировать к Зову Чернобыля? Если укажете хотя бы название скрипта(скриптов) - буду крайне признателен

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

@CRAZY_STALKER666, если будут - то я обращусь сюда, чтобы помогли узнать причину) Спасибо большое.

 

@CRAZY_STALKER666, кстати, а за что вообще отвечает этот скрипт?

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

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

Срочно нужна помощь! Как можно уменьшить нагрузку от аномалий в ЗП? Многие люди говорят, что из-за огромного количества аномалий на локациях ЗП бывают лаги при включении урона неписям от аномалий. Вот я и хочу поправить данный глюк, ибо нормальную симуляцию хочу - без поблажек неписям. Второй вопрос - можно ли в ЧН отредактировать что-то, чтобы заставить неписей во время выброса прятаться по укрытиям или получать урон?а то пофигисты какие-то все, кроме ГГ...

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

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

Спасайте! Скриптов вообще не знаю, но хочу адаптировать к моду CoC схему дин.аномалий из мода АМК. Вопрос - надо ли мне создавать отдельный скриптовый файл и копировать в него связанную с аномалиями байду из файла amk.scripts(как я понял, отвечающие за спавн аномалий функции)? И есть ли у кого-то в наличии схема из того же АМК, с помощью которой контроллер превращает нормальных сталкеров в зомбированных? Буду очень благодарен, если скинете ее. Ну и напоследок - ходят по всему интернету слухи, будто в АМК научили сталкеров обходить аномалии. Если скинете мне ее и объясните примерно, как с ней ведут себя сталкеры - век не забуду.

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

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

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

 

Стоп, я кажется слегка разобрался. Вот, видимо, функция, которая отвечает за зомбирование.

 

self.chtime=time_global()+2000


if self.object:clsid()==clsid.controller_s and self.object:alive() then
amk.mylog("zombifying")
local npc=self.object:get_enemy()
if npc then
if npc:id()~=db.actor:id() and npc:clsid()==clsid.script_stalker and self.object:see(npc) and
npc:character_community()~="zombied" and self.object:position():distance_to(npc:position())<30 then

local sobj=alife():object( npc:id() )
if sobj and sobj.online then
local zomb=amk.load_table("zombies")
zomb[sobj.id]={master=self.object:id(),comm=npc:character_community(),gw=npc:goodwill(db.actor)}
amk.save_table("zombies",zomb)
npc:set_character_community("zombied",0,0)
local orgtbl=amk.read_stalker_params(sobj)
if (not string.find(orgtbl.profile,"_zombi")) then
orgtbl.profile=orgtbl.profile.."_zombi"
end
amk.mylog("zombied "..npc:name().." profile "..orgtbl.profile)
amk.write_stalker_params(orgtbl,sobj)
end
end
end
end

 

 

Я разобрался с видимостью врага, дистанцией до него и т.д. Но я не понимаю, каким боком к этой функции относится время и куда сохраняется зомбирование непися? Ну и самое главное - что такое amk.mylog?

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

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

@naxac, понял. То есть никакие доп.функции из АМК мне не придется адаптировать?

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

@naxac, ого, классно сделано! И относительно понятно для человека, никогда не писавшего скрипты. Представить себе не могу, чтобы я без твоей помощи делал.

@naxac, смотри, я постарался поменять кое-что в соотвествии с твоими функциями. Просьба поправить, если где-то что-то не так(я скрипты только начал изучать)

 

self.chtime=time_global()+2000
		if self.object:clsid()==clsid.controller_s and self.object:alive() then
			local npc=self.object:get_enemy()
			if npc then
				if npc:id()~=db.actor:id() and npc:clsid()==clsid.script_stalker and self.object:see(npc) and 
				   npc:character_community()~="zombied" and self.object:position():distance_to(npc:position())<30 then
        
					local sobj=alife():object( npc:id() )
					if sobj and sobj.online then
						local zomb=load_pstor_table("zombies")
						zomb[sobj.id]={master=self.object:id(),comm=npc:character_community(),gw=npc:goodwill(db.actor)}
						save_pstor_table("zombies",zomb)															
						npc:set_character_community("zombied",0,0)
						local orgtbl=pstor_load_all(sobj)
						if (not string.find(orgtbl.profile,"_zombi")) then
							orgtbl.profile=orgtbl.profile.."_zombi"
						end
						pstor_save_all(orgtbl,sobj)
					end
				end
			end
		end
===============================Реализация функций для скрипта(вынести в отдельный файл!)=======================================

function save_pstor_table(pk, tbl, obj)
	local tp
	for k, v in pairs(tbl) do
		if v == true then
			pk:w_u8(pstor_true)
		elseif v == false then
			pk:w_u8(pstor_false)
		else
			tp = type(v)
			if tp == "number" then
				pk:w_u8(pstor_number)
				pk:w_float(v)
			elseif tp == "string" then
				pk:w_u8(pstor_string)
				pk:w_stringZ(v)
			elseif tp == "table" then
				pk:w_u8(pstor_table)
				xr_logic.save_pstor_table(pk, v, obj)
			elseif tp == "userdata" then
				pk:w_u8(pstor_custom)
				pk:w_stringZ(v.classname == k and "" or v.classname)
				v:save(pk)
			else
				abort("xr_logic.save_pstor_table for %s: not registered type '%s' encountered [ %s :: %s ]",
					obj:name(), tv, k, utils.to_str(v))
			end
		end
		pk:w_stringZ(k)
	end
	pk:w_u8(pstor_end_table)
end

function load_pstor_table(pk, tbl, obj)
	local k, v, n
	while true do
		n = pk:r_u8()
		if n == pstor_end_table then
			return tbl
		else
			if n == pstor_true then
				v = true
			elseif n == pstor_false then
				v = false
			elseif n == pstor_number then
				v = pk:r_float()
			elseif n == pstor_string then
				v = pk:r_stringZ()
			elseif n == pstor_table then
				v = {}
				xr_logic.load_pstor_table(pk, v, obj)
			elseif n == pstor_custom then
				local cls = reader:r_stringZ()
				if cls == "" then cls = k end
				v = pstor_custom_impl[cls]()
				v:load(pk)
			else
				abort("У объекта [%s] повреждён пстор, этим сохранением нельзя пользоваться - удалите его и переиграйте с предыдущего.", obj:name())
				v = nil
			end
			k = pk:r_stringZ()
			tbl[k] = v
		end
	end
end

function pstor_save_all(obj, packet)
	local npc_id = obj:id()
	local pstor = db.storage[npc_id].pstor
	if not pstor then
		pstor = {}
		db.storage[npc_id].pstor = pstor
	end
	save_pstor_table(packet, pstor, obj)
end

function pstor_load_all(obj, reader)
	local npc_id = obj:id()
	local pstor = db.storage[npc_id].pstor
	if not pstor then
		pstor = {}
		db.storage[npc_id].pstor = pstor
	end
	if (not db.actor) and npc_id ~= 0 then
		abort("Не создан актор. Возможно, синтаксическая ошибка в bind_stalker.script")
	end
	load_pstor_table(reader, pstor, obj)
end 

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

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

@naxac, я совсем запутался. Вот смотри, у меня есть указанный тобой файл, для своего удобства я оставил в нем только твои функции. А как мне их теперь применить в самом скрипте зомбирования? Мне надо переименовывать что-то или как? Ведь в скрипте имя функции одно, а в файле xr_logic другое.

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

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

Народ, никак не могу из указанного мной скрипта найти функции - такие, как amk.write, amk.read... Все скрипты перерыл, они упоминаются - но алгоритмы самих функций не могу найти. Вопрос - где находятся объявления этих функций и можно ли переписать скрипт без их использования?

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

@Kondr48, я хочу поиграть в мод CoC, который по сути является платформой для собственных модов. Поэтому я хотел перенести из АМК зомбирование неписей контролёром. Но поскольку ссылок тут на другие функции, судя по всему, целая туча, мне проще всего будет использовать весь файл скрипта. За информацию большое спасибо, она мне еще пригодится в будущем.

Изменено пользователем MegaStalker
  • Не нравится 1

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

Народ,к вам вопрос. Есть ли какие-либо аналоги нет-пакетов в ванильном сталкере и можно ли использовать их вместо аналогов из модов?(опыта в скриптах почти ноль) И в каком файле эти функции лежат? Я просто хочу вместо функций АМК и ОГСЕ использовать функции самой игры, если это реально - адаптировать самостоятельно скрипты я не смогу.

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

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

Народ, а есть ли здесь шарящие в скриптах? Я просто хочу применить пару скриптовых баз для CoC(ogse_signals и amk), поскольку там лежат нужные мне функции, а выдирать из файлов их отдельно побаиваюсь. К тому же нужна адаптация. Вот надеюсь, что мне кто-то расскажет, как проделать эту адаптацию своими руками - потому что скрипты я более-менее понимаю, но сам никогда не писал, могу только выбрать нужные файлы(которые мне, собственно говоря, и надо адаптировать).

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

@dsh, хорошо, за это большое спасибо. А с функциями от АМК могут возникнуть какие-то проблемы, если брать ТОЛЬКО файл amk.scripts? Или же можно обойтись и без него? Просто я выдирал зомбирование неписей из АМК и там были вызывались связанные с нет пакетами функции от АМК. Хочу узнать, есть ли им замена в скриптах оригинальных игр.

 

И да, еще один вопрос. Что такое RvP?

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

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

Народ, к вам такой вопрос по поводу алайфа из АМК и новостей оттуда же. В общем, я скопировал связанные с ними и еще парочку скриптов(на починку оружия и на обшаривание НПС трупов и тайников) в патч 1.0007. Все норм работает, стволы чинятся, сталкеры забирают все, что плохо лежит(в том числе и из ящиков в деревне новичков и т.д.). Так вот, мне кто-то может сказать, когда должна заработать эта симуляция жизни с новостями? А то я уже вернулся с флешкой Шустрого, но пока что никаких новостей в игре нету.

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

@Dennis_Chikin скинул файлы, которые мне подсказали: amk_death_lists.scripts, amk_names_lists.scripts, amk_news_lists.scripts, amk_unique_news_lists.scripts, amk.scripts, amk_mod.scripts и amk_offline_alife.script. Скрипты с алкоголизмом, ремонтом и обшариванием тайников НПС еще, но мне лень искать имена этих файлов(где-то записаны, а где - не знаю).

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

В общем, народ, я ничего не понимаю. Как мне правильно подключить скрипты этих новостей, чтобы они работали? Потому что я не понимаю, как это делать((

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


Ссылка на сообщение
1 час назад, Dennis_Chikin сказал:

По обоим последним постам: вы требуете угадать, что у вас в кармане.

Смотрите имеющиеся моды, и разбирайтесь, как оно там работает.

 

has_alife_info("info")  - дожно быть прописано это самое инфо, причем не использующееся где-то еще. И, да, можно в net_spawn(), но сначала определиться, что именно надо. И, да, как правило, все нужное уже где-то сделано.

 

Про "как подключить скрипты" - тоже, понять, что именно надо, и написать в соответствующем месте код для подключения. При этом понимая, что скопированный откуда-то скрипт вполне может потребовать еще чего-то оттуда же. Новости из amk требуют код из amk.script, и тот в свою очередь ссылается еще на десяток скриптов.

Да я это понимаю, я просто не понимаю, где конкретно подключаются скрипты. В патче уже есть сильно урезанный набор скриптов от АМК, т.е. все нужные файлы там есть, а вот где подключать скрипты - не понимаю. Совсем. Можешь какой-то пример привести, что именно надо прописывать(я про код)? Потому что в скриптах не шарю совсем, никогда ими не занимался - только редактировал конфиги.

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

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

Здраствуйте. Попытался подключить для себя динамические новости к последней версии OGSM на Тени Чернобыля и добавить в них некрологи из АМК. В файле bind.stalker я, как и положено, прописал функцию для запуска этих самых новостей в игре через секцию actor_binder:update. , в файле news_main эти некрологи прописал, но игра обиделась за мои действия со скриптами и вместо запуска выплюнула следующий лог:

 

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

FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...ow of chernobyl\gamedata\scripts\bind_stalker.script:465: attempt to call field 'show_news_main' (a nil value)

 Как я понял, она не видит функцию(хотя она есть в файле) show_news_main. В чем проблема? Огромная просьба помочь, т.к. в скриптах я абсолютно не шарю, попытался разобраться в файлах и подключить по примеру. Архив с файлами для новостей и сам файл из OGSM прилагаются, смотрите ссылку ниже. 

 

 

  • Сочувствую 2

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

@AndreySol, попробую, потом напишу результат.

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

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

 

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

Изменено пользователем MegaStalker
  • Не нравится 1

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

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


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

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