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

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


Halford

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

@Winsor, то есть ту таблицу с патронами можно заменить этой функцией?

 

Можно, главное правильно в используемых местах переделать обращение к этой таблице на вызов Вашей функции. Либо, чтобы не переделывать все и вся - изменить саму таблицу таким образом с использованием setmetatable __index , чтобы вызывалась Ваша функция. 

 

 

Уважаемые - по поводу проблемы с подствольником - это может кто-то подтвердить или это только моя проблема? 

Благодарю!

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

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


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

 просто так управлять неактивным типом зарядов с помощью update-части нет-пакета не получится.

Т.е. насколько я понял - такая проблема есть и в оригинале?

Если да - как и кто решал такую проблему?

Спасибо!

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


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

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

& - '&' 

< -  '<' 
> -  '>' 
" -  '\"
' - '\'' 
Также поддерживается вывод символов из стандартной ASCII таблицы (код символа до 256) в форме © - например символ копирайта. единственное - не помню, в десятичной форме надо задавать или в шестнадцатеричной код символа... код табуляции и пробела
space =

tab =

  • Полезно 2

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


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

ТЧ 1.0006+НС

Уважаемые, каким образом отловить начало разговора с Сидоровичем? для любого нормального НПС прекрасно работает xr_motivator.motivator_binder.use_callback . Для Сидоровича motivator_binder просто не биндиться...

 

====

Вопрос снимается - к Сидоровичу биндиться bind_monster

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

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


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

 

 

- ремонт реализован скриптово, в разных модах по разному , т.е. как минимум без списка модов, которые Вы используете - навряд ли Вам кто либо что подскажет. 
  • Полезно 1

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


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

ТЧ 1.0006 + НС

Уважаемые знающие, есть ли возможность отловить у item_weapon_magazined_w_gl момент смены обычного режима стрельбы на подствольник и смену типа патронов? Некий калбек, в биндере, например. Или проверять адски на апдейте его биндера?

Благодарю за информацию!

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

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


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

Уважаемые знающие, а есть ли где то описание флагов для вейпоинтов из all.spawn для ТЧ 1.0006 (p0:flags)?

Благодарю!

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


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

@Winsor, да, есть на Сталкерине.

т.е. данное поле служит для объединения в некую группу нескольких вейпоинтов в пределах группы слинкованных точек? а для чего тогда данное поле используется не в точках walk и look?

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


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

Уважаемые. возникла необходимость удалить смарт вместе с НПС, которые находятся в нем.

удаляю таким образом - 

for id, npc_info in pairs( smart.npc_info ) do
			smart:unregister_npc( npc_info.se_obj )
			alife():release(npc_info.se_obj)
		end
smart:remove_gulag(true)
alife():release(smart) 

После этого на это же место помещается еще один смарт, в котором появляются НПС. Все хорошо, вот только после нескольких таких операций в логах игры появляется такая надпись - 

- Critical: SMapLocation binded to non-existent object id=43106

где id - это id НПС, удаленного перед этим с помощью кода выше. Насколько я понимаю - когда я создаю НПС и помещаю его в смарт - он занимает ("садится на землю") на уровне некую пару gvid/lvid . А когда я делаю ему release - эта пара не освобождается, и при следующем спавне движок игры не может найти свободное "место" (свободную пару) для размещения НПС на home данного смарта? как тогда правильно удалить НПС?

если делать суицид npc:kill(npc) перед release - результат такой же.

Благодарю!

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


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

 

 

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

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


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

non-existent object id=43106

Рекомендую перед удалением вывести в лог ид удаляемого.

алгоритм такой (пусть npc.id=5)

1) удаляю нпс со смарта

2) удаляю нпс через release

3) удаляю смарт через release

4) создаю смарт

5) создаю нпс с id=6, он помещается в смарт. тут и возникает сообщение о том что SMapLocation binded to non-existent object id=5, т.е. удаленного перед этим НПС. Причем НПС свежесозданный в смарт помещается прекрасно, работа ему выдается. Вот только подойти к месту работы он не может из-за ошибки.

Ну и второй момент: удаление неписей происходит на текущей локации ?

Да.

 

p.s. такое чувство, что движок не успевает освободить MapLocation при удалении НПС. такое может быть?

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

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


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

 

 

Чего не успевает? Твой пример можно помещать в парижскую палату мер и весов из-за его сферичной ламповости и ламповой сферичности, за 9 практически лет вопрос не теряет актуальности.

Повторюсь - не успевает на одном апдейте и освободить MapLocation (gvid/lvid) от release-того мною НПС и привести на работу в гулаге на это же место новозаспавненного НПС. Если мой пример попадает в ПМиВ  - может там есть и пусть не решение, а хотя бы объяснение , почему так делать нельзя? За 9-ть лет может кто-то уже решил такую проблему? Поиск на форуме конкретно с моим возникновением данной ошибки не дал результатов. Причем данная ошибка в явном виде появляется только если НПС, которые удаляются и спавняться, находятся в онлайне. вне онлайн радиуса данная ошибка не проявляется, но при переходе в онлайн такие НПС почему то теряют логику работ (и это выглядит трашненько...)

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


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

 

 

Winsor, ты будешь смеяться, но только что в соседней теме дали ответ, к тебе тоже относится
- будьте добры, ссылку на ответ, ибо тем очень много.

 

 

Прояви чудеса дедукции.
- да простят меня модераторы  - да ладно, да не может быть, да ни разу в жизни (сарказм).... Я не спрашиваю, когда у меня появляется ошибка. я и так знаю что в онлайне, я спрашиваю - почему в онлайне не освобождаются ресурсы, и почему при переходе online/offline/online слетает логика - где в Вашем ответе конструктив хоть на один мой вопрос? Если для Вас все понятно, то для моего отсталого сознания ответ из Вашего "Прояви чудеса дедукции" абсолютно ну ни как не получается приход озарения. Если будет такая возможность - озарите меня долей Вашего сверх понимания данного вопроса, дабы и я смог понять хоть что-то из Ваших ответов. или мне нужно НПС обеспечить вечный офлайн, дабы избежать такой ошибки?

Благодарю!

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


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

 

 

FonSwong
 npc:goodwill(db.actor) - в результате - некое число. так не устраивает? с помощью пространства имен relation_registry можно влиять на отношения целиком к группировкам.

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


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

@Dennis_Chikin, я согласен, что куча ссылок. Вопрос в том и был - как корректно удалить нпс из онлайна? пробовал npc:kill(npc) а потом release(npc), просто release. пытался переводить в оффлайн, но судя по всему - это все происходило в рамках одного апдейта и поэтому вылазят странные глюки.

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


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

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

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


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

Поместить НПЦ в определенный смарт,насколько мне известно, можно только посредством прописывания специальной секции в логику:

Это я понимаю. проблема то как раз в том что на момент спавна этих данных в логике и нет. spawn_ini() на этот момент пустой, и прописывание логики уже после того как я могу получить id НПС само собой не приводит к помещению его в данный смарт.

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


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

@Dennis_Chikin

пытался делать так (все делалось для general гулага):

1) спавн нпс

2) запись в его кастомдату секции о смарте

3) npc.ini_initialized=false

    npc:fill_exclusives() 
    smart:register_npc(obj)
вроде все хорошо, нпс в смарте, даже на работы становиться. но при offline/online часть НПС (особенно если в смарте есть должности кроме kamp и sleep) - теряют эти работы , замирают на месте. если с ними рядом сделать s/l - они возвращаются к работам, но если опять офлайн/онлайн - они опять замирают. Буду благодарен, если подскажете направление, в котором разбираться.

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


Ссылка на сообщение
Ну как... Непосредственно сам процесс спавна артефактов одинаковый в обоих случаях. отличие в способе задания координат и правил спавна 

1) координаты указываются непосредственно в all.spawn полем position, спавнит их движок сразу

2) координаты спавна берутся из section2.bin  на основании параметра смещения в этом файле artefact_position_offset, спавнит движок на основании параметров аномалии.

Редактировать section2.bin можно только из sdk косвенно, указывая координаты спавна, которые потом заносятся в section2.bin. прямой редакции (аля распаковка acdc) , насколько я знаю - нет. 

  • Спасибо 1

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


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

в sounds\scripts\mаgnitofon лежит музыка радиоприемника у Сидора. Целых 5 штук но все, за исключением 2-ой пустые, вопрос: если вместо пустых файлов поставить нормальную музыку, то они будут проигрываться друг за другом? 

 

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

Во-первых, не туда прописываете. А потом удивляемся, почему не работает.

Во-вторых, ни кто ж не запрещает руками дописать в smart_terrain.exclusives то, что вам надо.

Денис, все мои эксперименты приводят к тому что НПС "зависают" (поза - руки на ширине плеч стоя :( ) - при этом дошел с дебагом до xr_logic.activate_by_section - секция и схема "замершему" сталкеру назначаются, но он ничего не делает (utils.send_to_nearest_accessible_vertex может его вводить в такой ступор?). Есть ли у Вас работающий пример прописывания правильно при скриптовом спавне НПС в конкретный смарт? Либо Вы видели где это реализовано?

Благодарю за информацию!

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


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

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