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

Ковыряем ОП-2


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

И до - тоже не нужны. Кроме одного единственного момента.

Аналогично - та же деревня.

Ну, на кордоне скриптовый спавн, кроме одного из оригинала, но тоже не нужны.

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


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

alife():create() - или имя, или цифра. Если цифра - это - spawn_id.

alife():object() - имя или id в игре. Удаляется всегда объект, если его удалось получить.

по профилю ни получить ни удалить нельзя.

  • Спасибо 1
  • Полезно 1

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


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

1. Не понял про "слитно".

2. m = npc:money() or 0 -- с собой были. Из профиля.

 

3. Сейчас проверил функцию компилятором - нормально собирается. Или вставлено не так, или где-то еще что-то неправильно.

Скрипт в студию.

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

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


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

npc:money() or 0

if m ~= 0 then npc:give_money(-m)

 

- деньги у непися забираются.

 

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

 

elseif так и должно быть написано, если всунуть пробел - надо будет еще end каждый раз дописывать, и отдельную проверку для новичка добавлять. Нафига ж ?

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

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


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

Решение момента, когда в определенных местах артефакты превращаются в булыжники (Радар - около сетки, Болота - около водонапорной башни и т.д.).

 

Пра артфы ффф булыжники, в Cоли было так:

arhara_dialog.script, начиная с local tabl_art_v_buliz = { и т.д.
Для конкретно лабы - ниже - function laba_dell_art().

Вот все ненужное оттуда и убрать, как обычно:
function bla-bla-bla() много строк end - оставить function bla-bla-bla() end

Кому заняться нечем - проверьте.

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

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


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

.object = nil']Ну что я могу сказать... Освобождается возможно существующий( а возможно и нет) объект, от НЕСУЩЕСТВУЮЩЕЙ работы. Ну, бывает. На самом деле ситуаций таких тьма есть, с самого оригинала.

 

Потом Камикадзе поправил связку смартовых скриптов, чтобы освобождать с работ кого попало, если в спавне этим работам прописан кривой путь. Правда, вылетать-то оно перестало, а виснуть - нет. Но модостроители обрадовались, и пути проверять на осмысленность вообще перестали. Потом Сапсан с Шэдоуменом переписывали их для отлова патронов, зачем-то назначенных на работы в артефактах. ;)

Потом я переписывал вылет, возникающий, когда такой вот патрон с несуществующим путем таки действительно пытались заставить бегать внутри артефакта.

Потом переписал для отлова тех самых кривых путей.

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

 

В данном же случае, мы имеем некий забавный гибрид всего вышеперечисленного, наложенный на оригинал.

 

Не лечится. Пристрелить.

 

По второму вопросу - гулаг-то может быть и есть, а вот функции вычисления стейтов для него - точно нет. И что там вместо них - я представить затрудняюсь. По крайней мере маску для поиска чего-то похожего придумать не смог. А глазами искать по всем простыням gulag_*.script - откровенно лень.

 

 

Да, на счет "не лечится", можно, конечно, поробовать как-то так:

function gulag:free_obj( obj_id ) -- освободить объект от работы local npc_info = self.npc_info[obj_id] local obj = npc_info and npc_info.se_obj if obj then obj.job_online_condlist, obj.job_online = nil, nil if IAmAMonster[ npc_info.class_id ] then obj:smart_terrain_task_deactivate() end -- else log( "error", "(%s):free_obj, dbg: %s, here is no object: %s (id: %s)", self.name, get_name_by_id( obj_id ) ) end local n = self.ObjectJob[obj_id] if n and n ~= 0 then -- if log_level < 9 then log( "info", "(%s):free_obj [%s]", self.name, get_name_by_id( obj_id ) ) end self.ObjectJob[obj_id] = nil self.ObjectJobPathName[obj_id] = nil local job = self.Job[n] if job then job.object = nil -- else log( "warning", "(%s):free_obj, job not assigned ! job n: %s (%s), npc: %s (id: %s)", self.name, n, #self.Job, get_name_by_id( obj_id ) ) end if self.Object_begin_job[obj_id] then local npc = self.Object[obj_id] if npc and npc ~= true then self:set_restrictions( npc, "", "" ) end local pop = self.population_comed - 1 if pop >= 0 then self.population_comed = pop else -- log( "error", "(%s):free_obj, self.population_comed = %s !", self.name, pop ) self.population_comed = 0 end end -- else log( "error", "(%s):free_obj, npc: %s (id: %s) hasn't job", self.name, get_name_by_id( obj_id ) ) end end

 

-- но так где-нибудь в другом месте вылетит.

 

Аналогично, попробовать в gulag_tasks.script заменить abort("ERROR: unrecognized gulag's type '%s'", type) на return function() return 0 end

Но тоже вылетит в другом месте.

 

Гм. Правилами форума выражаться матом запрещено, поэтому я ничего не скажу, кроме того, что аналогичное в теме обсуждается не первый раз, и все предыдущие обсуждения были снесены. С чего бы это ? Наверное, с того, что у двух человек стоят полностью идентичные наборы, и сэйв либо грузится, либо нет. Обычно такие вещи выясняются через личку.

Пожалуй, в шапку добавлю.

 

 

Для начала - поставить игру согласно инструции, поставить патч, как у автора сборки правок, поставить по инструкции автора сборку правок, и обменяться сэйвами. А потом посмотрим, будет ли что читать.

 

Кстати, о тестированиях: а кто вообще пробовал, чем отличается запуск игры с -noprefetch и без такового.

В разных ситуациях. Первая загрузка после запуска, собственно игра, повторная загрузка сэйва ?

Очень интересные тут с мест сообщения приходят...

 

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

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


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

Если сделано все, как написан в посте про пропадание чего-попало - пропадать не должно. Ни из рюкзаков, ни из неписей. Если к тому моменту оно было.

 

Хотя, стоп... Есть еще одно место, но там не пропадает, а просто прячется. Это вот самое оружие. Как раз в случае, если у неписей патронов нет. Будут посмотреть, как и это тоже отключить. У меня-то давно, так что я и забыл уже.

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


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

"критично зависящие от наличия определенного ogg-комментария"

 

Да. Все живое возбуждается прежде всего на звук. У возбудившихся рентгеновость зрения значительно возрастает. Кроме того, подбирать упавший предмет все неписи тоже ломятся прежде всего на звук.

 

Кстати, о птичках: watcher_act.script,

for o in npc:memory_sound_objects() do

check_item(o)

end

 

- ~280 строка. Нафиг. Весьма и во многом полегчает сразу.

 

Если уж нормальный, тоже 4-х летней давности, не поставить.

 

P.S. Первое псто исправлять - вот все время руки не доходят. Ни кто, часом, списочка нужного не ведет ?

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

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


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

Читать - очевидно, здесь: http://www.amk-team.ru/forum/index.php?showforum=104 ,

http://www.amk-team.ru/forum/index.php?showtopic=11568

 

Проблем - 2:

 

1. Изменение олспавна, если что-то добавлялось/удалялось приводит к изменению как минимум номеров всего.

Со всеми вытекающими.

2. Если номера не меняются, а меняются какие-то отдельные буковки/цифирки - чтобы они были восприняты - нужна НИ.

 

Такое вот неукоснительное исполнение взаимоисключающих параграфов.

Так что если в очередном патчефиксе в очередной раз сменился олспавн - идея продолжать что-то с тем, что было раньше - очень плохая идея. Как минимум, без принятия специальных мер тем, кто менял этот самый олспавн.

 

"Это будет проблемой, если он по сюжету, например Ворон, и не должен погибнуть? Или он станет смертным?"

- в этой игре - не станет.

 

Засада может быть в следующем: например, поменяли story_id чего либо, или индекс, или имя, и затем где-то вызывается функция с новым параметром. Например, создание. Будет плохо.

Например, могу представить себе одно очень хорошее западло именно против "левых правок". Все замучаются искать, но игра будет постоянно валиться, а сэйвы - биться.

 

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

 

Просто, если при сравнении олспавна в "старом патче" с "новым" - они совпадают, то пойдет и "правленный", и НИ тоже не нужна. Если не совпадают - нужно изучать подробности изменений.

 

Они - это файлы allspawn.

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

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


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

npc clear spawn - ну вот поиском по файлам этого самого.

Где найдется - там и проблема.

 

Вообще, если в логе есть что-то на тему watchdog и Reason, или sheduler tryes кого-то там - вот самое первое, которое в логе нашлось  - это как раз то, что пыталось что-то делать, но не смогло.

После этих строк, все, что идет дальше - посмертный бред игры.

Изменено пользователем Dennis_Chikin
  • Согласен 2

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


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

для нелюбопытных, ссылки из параллельной темы:

http://www.amk-team.ru/forum/index.php?showtopic=8830&p=899670- -время загрузки, -немножко лагов.

http://www.amk-team.ru/forum/index.php?showtopic=8830&p=896984- еще того же, для тех, кто умеет исправлять скрипты руками, ну или если кто сделает для остальных, и будет следить за патчефиксами, и под каждый переделывать. ;)

http://www.amk-team.ru/forum/index.php?showtopic=8830&p=898626- антислайдшоу на аномалиях.

 

upd: кажется, я вчера погорячился с хардкором - про раз в 24 реальных часа. Поменял на час реального времени. Просто 24 * 3600000 - убрать это самое 24 *, ну или вообще по вкусу.

 

p.s. И, кстати, да - результаты мне ведь интересны. Сколько секунд до, сколько после. Скажем, в том же баре... Ну или еще в какой толпе.

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

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


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

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

1. Как и всего остального. obj.m_game_vertex_id, obj.m_level_vertex_id -- этого на самом деле более, чем достаточно.
2. Очевидно, через меню.
3. http://www.amk-team.ru/forum/index.php?showtopic=6458

Основной вопрос: это декларация намерений, или поиск того, кто будет делать ? И в полной ли мере изучен раздел по ссылке ?


2 BFG: "Посмотрим, что из этого получится)"
При том, что полностью исправленный кусок выкладывался в 2011 году ! В паблик. Только подключить корректно. Ну а в скайпе - еще и когда сам Пропер там был - в 2010-ом.

 

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

 

P.S. И, да, внезапно, нормальный телепорт от Shadowman ТОЖЕ есть. Тоже с 2010.

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

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


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

А что, до сегодняшнего дня ни кто не замечал, что в loot_money.script добавили проверку на какое-то and db.actor:has_info("haker_soft_pda"), убрали проверку опций и добавили, опять же, очередное идиотское             archievements.acv_count_event("acv_mar", 50000, "Мародёр", deadmoney) ?

 

Причем не в 6-ом, а как бы не в третьем ?

 

Разумеется, с этой проверкой ни каких денег не будет.

 

Кстати, да, отрадно видеть, что авторы сего творения меня даже иногда читают, и идотский многосекундный лаг на обыске первого трупа, с дальнейшим добавлением его же к времени загрузки, таки убрали. Не прошло и скольки там лет - 5-ти ? ;)

Глядишь, через пару-тройку патчей и остальные поуберут. ;)

Изменено пользователем Dennis_Chikin
  • Нравится 3
  • Согласен 2

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


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

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

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

А пометить центр, например вот так:

function restrictor_binder:net_spawn( data )
	if not object_binder.net_spawn( self, data ) then return false end
	local a = self.object
	db_add( a )
	-- Не регистрироваться на апдейты, если у объекта в customdata нет секции logic вообще.
	local char_ini = get_ini( a, "<customdata>" )
	if char_ini:section_exist( "logic" ) then
		t_rest[ a:id() ] = self
		self.particle = amk_particle.amk_particle( {
			["particle"] = "anomaly2\\electra_damage_02_smoke",
			["pos"] = a:position() } )
	end
	return true
end

function restrictor_binder:net_destroy()
	if self.particle and not self.particle:is_finished() then self.particle:stop() end

	local a = self.object
	local id = a:id()
	local st = db.storage[ id ]
	if st.active_scheme then issue_event( a, st[st.active_scheme], "net_destroy" ) end
	db_del( a )
	t_rest[id] = nil
	db.storage[id] = nil
	object_binder.net_destroy( self )
end

- в bind_restrictor.script.

Туда же можно и метки добавить, как раз сразу с радиусом и названием.

 

Ну, то есть, добавления, собственно вот, такого типа, где все делать по вкусу.

self.particle = amk_particle.amk_particle( {

["particle"] = "anomaly2\\electra_damage_02_smoke", ["pos"] = a:position() } )

 

if self.particle and not self.particle:is_finished() then self.particle:stop() end

 

Под все 666 патчей и фиксов я, естественно, делать не собираюсь ничего. Кому надо - сами. Ну и что там вместо anomaly2\electra_damage_02_smoke и какие конкретно переменные - тоже сами разбирайтесь. Здесь дается для нормального кода.

 

Выглядеть будет примерно так: архив с картинками

Изменено пользователем Eugen81
процитировал
  • Спасибо 1
  • Полезно 1

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


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

Ну, в общем, скрины варианта с партиклами как бы намекают.

Но ТАКОГО я не ожидал.

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

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


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

bind_monster.script:

 

-- ОП-2: Добавлен калбек на юзанье монстра, а также для всех монстров подключена схема on_use.
-- Юзанье не подключено для класса script_trader (Василий и Сидорович) для обратной совместимости.
function generic_object_binder:use_callback(obj, who)
	if self.object:clsid() == clsid.script_trader then return end

	if self.object:alive() then
		if self.st.active_section then
		  xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "use_callback", obj, who)
		end
	else
		monster_parts.on_monster_use(obj, who) -- обыск трупа
	end
end

собственно else monster_parts.on_monster_use(obj, who) -- обыск трупа +

 

bind_stalker:

monster_parts.on_part_take(obj)

- делают то, что описано.

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

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


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

"Как снять лимит на Сон?" (скрытый пост):

 

amk_mod.script:

function test_for_need_sleep_matras(oid)
...
if amk.load_variable("block_sleep_menu",0)==0 then
  if amk.load_variable("gg_need_sleep",0)>0 or
  (has_alife_info("snp_shadows_start") and not has_alife_info("snp_shadows_done")) or
  db.debug
    then
...
  else
    amk.send_tip(game.translate_string("not_need_sleep"),nil,nil,5)
  end
else
  amk.send_tip(game.translate_string("not_need_sleep_nrg"),nil,nil,5)
end
изменить на как больше нравится.

Проверка на ЧУ - там же. 100500 раз обсуждалось.

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

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


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

Гм, вот уже то-ли 3-й, то-ли четвертый раз встречаю утверждение, что с 7-го патча появилась какая-то очередная "защита", проверяющая распакованную gamedata. Кто этот патч смотрел - оно действительно так ?

 

Да вон, хотя бы выше:

http://www.amk-team.ru/forum/index.php?showtopic=12839&p=915957

 

Перед этим было про удаление xrs_utils.getStartTime(StartTime), которое типа больше не помогает.

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

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


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

То есть, на всех новых патчах по прежнему достаточно xrs_utils.getStartTime(StartTime) - для актора, а все остальные файлы кидаются в путь ярлыка\gamedata\, и ни каких проверок "при использовании перчаток" и т.д. не появилось, так ?

То есть, все подобные посты просто сразу в мусор ?

 

Посмотрел 2-6-4: обрезанные чтение/запись пакета патронов. Ну и еще древнюю лажу в записи патронов исправили.

Проверки gamedata там не вижу.

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

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


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

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

AMK-Team.ru

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