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

[SoC] Ковыряемся в файлах


Halford

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

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

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


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

"А детч_менеджер не подчистит ?" - а у кого-то кровососы стали неписями ?

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


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

"При переходе на локацию некоторые НПС по новой выполняют действия: Шустрый респавниться в АТП".

 

Переписать работы и логику. Типа вот так:

-- Шустрый

{ section = "logic@esc_lager_shustryi_sleep",

idle = 0, prior = 18, state = {0, 2}, in_rest = "", out_rest = "",

predicate = function(obj_info) return ( obj_info["profile_name"] == "esc_shustryi" )

and has_alife_info( "tutorial_wounded_give_info" ) end },

{ section = "logic@esc_lager_kamp1",

idle = 0, prior = 18, state = {1}, in_rest = "", out_rest = "",

predicate = function(obj_info) return ( obj_info["profile_name"] == "esc_shustryi" )

and has_alife_info( "tutorial_wounded_give_info" ) end },

{ section = "logic@esc_lager_shustryi",

idle = 0, prior = 17, state = {0, 1, 2}, in_rest = "", out_rest = "",

predicate = function(obj_info) return ( obj_info["profile_name"] == "esc_shustryi" )

and has_alife_info( "tutorial_wounded_start" ) end },

{ section = "logic@esc_lager_shustryi",

idle = 0, prior = 16, state = {0, 1, 2}, in_rest = "", out_rest = "", online = false,

predicate = function(obj_info) return obj_info["profile_name"] == "esc_shustryi" end },

-- резерв на случай смерти Шустрого

{ section = "logic@esc_lager_sleeper2",

idle = 0, prior = 2, state = {0}, in_rest = "", out_rest = "esc_lager_guard_kill_zone" },

{ section = "logic@esc_lager_kamp1",

idle = 0, prior = 2, state = {1}, in_rest = "", out_rest = "esc_lager_guard_kill_zone" },

{ section = "logic@esc_lager_defend3", -- ХРЕНОВЫЙ. Но резерв.

idle = 0, prior = 2, state = {2}, in_rest = "", out_rest = "esc_lager_guard_kill_zone" },

Sorry, это под "расширенный формат" - оригинальные скрипты не поймут, но идея в принципе должна быть понятна.

Кстати, заодно вообще резервных работ добавить стоит.

  • Нравится 1

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


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

типа такого:

	if sect == "treasure_item" then
		local gvid = actor:game_vertex_id()
		if gvid and game_graph():valid_vertex_id( gvid ) then
			local obj = sim:create( "m_inventory_box", actor:position(), actor:level_vertex_id(), gvid )
			if obj then
				local t = amk.get_invbox_data( obj )
				t.custom = "[logic]\ncfg = scripts\\treasure_inventory_box.ltx"
				amk.set_invbox_data( t, obj )
				return
		end	end
		sim:create( "treasure_item", vector(), 0, 0, 0 )
...

actor и sim определяются как обычно где-нибудь.
Вешается на on_use()

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

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


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

Вопрос хороший и грамотный на самом деле.

 

delta прилетает извне. Сколько прошло с предыдущего вызова. Для практического применения не очень чтобы пригодно, ибо значения неудобны и весьма неравномерны.

 

watchdog - где-то в другом месте проверяется, и по результату что-то делается. Обычно любой скрипт во время апдейта пишет туда что-то свое, а если все закончил благополучно - 0. Если при проверке оказался не 0 - значит, предыдущий скрипт повис.

Это все нужно для отладки.

 

По ссылке - туда пишется строчка, которую передал скрипт при своей инициализации. Вместо amk.oau_watchdog можно было бы писать _G.watchdog, или завести отдельный пустой скрипт watchdog.script и писать watchdog.my_KeeWl_watchdog - без разницы. Главное, чтобы потом проверять его же.

 

В амк/солянке скорее не работает, чем работает, поскольку крайне неудачно выбрано место, где производится проверка.

 

 

По "Но все упирается в то, что очень часто мы просто не знаем (а очень хочется сделать...)" - нет. Проблема в подходе. Я вот, честно, тоже не знаю, как это организовать нормально.

  • Полезно 1

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


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

Способов куча на самом деле. Просто смотреть эту тему + скриптование и справочник по функциям и классам. И выбирать, какой подходит.

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


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

Например, xr_logic.pstor_store(). Или в нетпакет. Или создать специальное хранилище через factory. Или, если предмет уникален - через infoportion.

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


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

1. Да.

2. Формат нетпакета для каждого класса свой. Но это не значит, что данные нужно хранить именно в этом предмете.

 

И, да, pstor - это для онлайна. Нетпакет - преимущественно для офлайна (хотя можно и в онлайне).

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


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

Для начала - уточнить: на локации, или в онлайне ?

 

Если на локации - изучать amk_offline_alife из amk-мода. Или task_manager.

Если в онлайне - они отсортированы в db.script, и дальше добавить проверку по clsid() для монстров/community() для неписей.

 

Upd: Тогда лучше для начала se_respawn.script изучить тщательно. Правда там принцип совершенно обратный: если ГГ близко - ничего не спавнится. И это правильно: если монстры/неписи появляются из воздуха прямо перед игроком - это странно выглядит.

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

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


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

Zander_driver, а это:

return function(gulag)

return 2

- вообще как ???

 

Оно даже запускаться не должно.

 

А большую статью - ну вот как только руки дойдут - так и сразу.

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

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


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

Sorry, моя невнимательность.

Но теперь вопрос: проверялось все-таки с первым вариантом, или вот этот, с добавленными строками ?

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


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

У меня такое не компилится.

 

И, да, специально с этим не разбирался, но как раз general_lager может быть исключением: только state 0 и 1, где 1 - рэйд.

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

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


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

Точнее, если для смарта в custom data по какой-то причине нет секции smart_terrain, то проверяются только стэйты 0 и 1.

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


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

"Если отключить death_manager script, то предметы спавнятся через character_desc_#.xml. Проблема в том, что не все патроны спавнятся после смерти."

 

А если точнее, то они удаляются, кроме, почему-то, пистолетных. На 1.006 это хорошо видно в его родном логе.

  • Согласен 1

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


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

"jaba_gulag _kamp_center" - сдается мне, джентльмены, что здесь странное.

 

Ибо

if path_field == "center_point" then

local path_name = self.name .. "_" .. self.ltx:r_string( active_section, path_field )

if level.patrol_path_exists( path_name .. "_task" ) then return path_name .. "_task"

else return path_name

end

else return self.name .. "_" .. self.ltx:r_string( active_section, path_field )

end

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

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


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

Немножко срачика - это, в принципе, не хорошо, и не плохо. Плохо, когда много, или когда он совсем от темы уходит.

 

Ну, в общем, я бы все-таки хотел сказать, что иногда, наверное, стоит и скрипты посмотреть (кстати, предыдущей темы про remark тоже касается). Там можно увидеть - как оно работает.

Иногда гораздо лучше и понятнее, чем в вики расписано <<чтобы непись делал "ку", вот здесь с такой циферкой вот такая загогулина, а после нее нецензурное сочетание арифметических знаков с кракозябрами>>.

 

А сам формат темы - он, к сожалению, определяется еще и форматом форумным. Базу данных, например, здесь не забабахать. cvs/snv встроенного, с дублирующим доступом  через ftp - тоже нет.

 

Логичный способ "а ну вот быстро сделали мне" - по понятной причине не проходит: ни кто ни кому не должен.

И вот, кстати, выложить весь allspawn с "найдите 10 ошибок" - слава слонопотаму, не влезет. ;) А влез бы - опять же ни кто смотреть не будет по той же причине, что и "а ну быстро сделали мне".

 

Вопрос: что остается ? А остается таки смотреть, как сделано в оригинале/у кого-то еще, и пытаться понять, как оно работает. И вот когда остается совсем маленький кусочек, где, собственно, непонятный затык и происходит - тогда уже его - сюда. Чтобы разобрали и объяснили.

Под это форум подходит идеально.

 

К чему я это ? А  тому, что хотелки ограничиваются прежде всего имеющимися техническими возможностями во-первых, интересностью этих самых хотелок кому-то еще - во-вторых. Осознав эти самые возможности - и наступает счастье. Не полное, но какое уж есть.

 

Такие дела, да...

  • Нравится 1

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


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

В разработке НС расписывал. Там ошибка в скрипте + параметры гвоздями прибитые.

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


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

По респавну надо смотреть конкретный скрипт.

Оригинальный работает, мягко говоря, странно. А лазили в них, кажется, все, кому было не лень. И добавляли своего странного.

 

По сякоборщику - оригинальный сякоуборщик вроде бы не трогает то, у чего есть sid. И это правильно. Более того, я бы рекомендовал снести все таблицы к чертовой бабушке, и использовать эти самые sid'ы.

Заодно и amk-офлайн будет меньше странного делать.

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

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


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

"! DetailPathManager has failed : from"

 

Нет такого пути.

 

НУ и 45 неписей под смартом - это, конечно, жесть. Дело тут даже не в памяти, а в самой идее работ (их назначения и апдейта).

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


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

AMK-Team.ru

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