Справочник по функциям и классам - Страница 25 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

Справочник по функциям и классам


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

Когда пользуюсь 

getFS():update_path("$game_textures$", "trees\\elka.dds") 

то путь обрывается при первом пробеле в строке пути. Например у меня такой путь будет 

C:\Program Files (x86)\S.T.A.L.K.E.R. Тени Чернобыля\gamedata\textures\trees\elka.dds

но отображается только так

C:\Program  
Изменено пользователем Graff46

Винда, однако. Кроме того, а оно вообще разве позволяет гулять за пределы FS root ?

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

 

 

Винда, однако. Кроме того, а оно вообще разве позволяет гулять за пределы FS root ?
Все норм работает! это я тупил, проверял путь впихивая его в консоль 
get_console():execute("путь")

А консоль с пустыми пробелами не очень дружит. Насчет FS root, как то давно мне нужно было получить доступ к файлам через игру, на форумах мне говорили, что это не возможно, пока я сам не поюзал FS root, через него можно залезть в принципе к любому файлу на ОСи. Я на основе этого делаю смену времен года в игре.

Кстати, заметил не которые проблемы: метод bone_position() - для не которых монстров работает не правильно, в точности для бюрера когда пытается "колдовать", то есть кидаться предметами. Метод alive() так же иногда выдаёт false для живого объекта, замечено у зомби и ворон, по этому можно проверять наличие физ. оболочки, если метод get_physics_shell возвращает nil то объект точно живой.

Изменено пользователем НаноБот
  • Согласен 1
  • Полезно 2

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

@НаноБот, некоторые люди не отключают физ. оболочку у трупов.

@Карлан, то есть при смерти живого объекта физ. оболочка не включается? А как дальше, анимация смерти как в старых движках, типа как в старой контры.

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

void iterate_inventory(function* iterator, game_object* obj) -- перебрать предметы, принадлежащие NPC

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

bool marked_dropped(game_object*);

void mark_item_dropped(game_object*);

Не знаю, разбирал ли кто-то эти методы, но:

mark_item_dropped(item) - устанавливает пометку на выкидывание предмета из инвентаря. По сути, это отложенное выкидывание (при drop_item, предмет выкидывается сразу). Дроп происходит на апдейте того объекта (shedule_Update), в котором находится предмет. Метод вызывается для CActor, CAI_Stalker, CAI_Trader..

bool marked_dropped(item) - показывает, установлена ли метка на дроп.

 

Необходимость в отложенном дропе вызвана ситуацией, когда предметом манипулируют сразу несколько схем. Кстати, на удаление тоже не помешало бы сделать такую метку.

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

Telegram-канал RayTwitty Space

Нашёл ответ на свой вопрос: как изменить и узнать ПЕРСОНАЛЬНОЕ отношение НПС к ГГ, даже если вы ещё не встречались и он, НПС, на другой локации:

Ковыряюсь я на ТЧ в моде OGSE, т.к. там изменённый движок, добавили функции: relation_registry




function relation_registry.get_goodwill(who_id, to_whom_id)
    return GetGoodwill(who_id, to_whom_id)
end
 
function relation_registry.set_goodwill(who_id, to_whom_id, goodwill)
    ASSERT(db.actor, "relation_registry.set_goodwill: cannot call function")
    return db.actor:set_goodwill_ex(who_id, to_whom_id, goodwill)
end
 
function relation_registry.change_goodwill(who_id, to_whom_id, goodwill_change)
    ASSERT(db.actor, "relation_registry.change_goodwill: cannot call function")
    return db.actor:change_goodwill_ex(who_id, to_whom_id, goodwill_change)
end



С помощью них можно изменять и получать ПЕРСОНАЛЬНУЮ репутацию, даже если НПС на другой локации:




relation_registry.get_goodwill(3131, 0)

--получить персональную репутацию от Толика к ГГ



relation_registry.set_goodwill(3131, 0, 1000) или relation_registry.set_goodwill(3131, 0, -1000)

--установить персональную репутацию от Толика к ГГ



relation_registry.change_goodwill(3131, 0, -1000) или relation_registry.change_goodwill(3131, 0, 1000)

--изменить персональную репутацию от Толика к ГГ(отнять или прибавить к текущей)


Стоит помнить, что кроме персональной репутации, существует общая формула,где значения складываются, для вычисления враг/нейтрал/друг(файл game_relations.ltx):


; отношение персонажа к актеру (или другому NPC) вычисляется по формуле

; attitude = personal_goodwill + //личное отношение персонажа к актеру (если раньше не встречались, то 0)

; community_goodwill + //отношение группировки персонажа лично к актеру (если раньше контактов не было, то 0)

; community_to_community + //отношение группировки персонажа к группировке актера из [communities_relations]

; reputation_goodwill + //отношение репутации персонажа к репутации актера из [reputation_relations]

; rank_goodwill //отношение ранга персонажа к рангу актера из [rank_relations]


Изменено пользователем FonSwong
@FonSwong, к выше написанному я бы добавил, что к OGSE это имеет опосредованное отношение. Те возможности, которые ты описал, добавлены в x-ray extensions.
  • Согласен 1

Не нашёл описание полезного класса reader, может кто то поделится знаниями со всеми?

@Graff46, пять лет назад говорили, что reader похож на net_packet. Может что то изменилось?

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на описание класса sound_object в шапке темы дохлая. Не плохо-бы восстановить...

  • Согласен 1

Всем привет! 

Как узнать (функция?), что на поясе у ГГ появился определённый артефакт? У самого что-то мозгов не хватает...

Почитал "шапку" темы, ответ не нашёл. 

 

П.С.: Не знаю, где лучше задать вопрос, здесь или в "Ковырянии".

@Fagot.,

на чистом движке это проблематично. С правками можно. Там есть функция для получения предмета с пояса и также колбек на появление предмета на поясе.

  • Полезно 1
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

void set_queue_size(int <queue_size>) – установить размер очереди при стрельбе из автоматического оружия

 

Как этот метод можно использовать? 

Можно использовать в скриптовом оружие, в точности  wpn:set_queue_size(0) блокирует огонь, а wpn:set_queue_size(1(или -1 для автооружия)) разблокирует. Работает для всех классов, с ножом не проверял.

 

Используется М139 с блоком вращающих стволов, в моём ПЗРК, много где можно использовать, где надо заблокировать огонь.
Изменено пользователем НаноБот

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Сейчас анализирую и перерабатываю формулы учета защиты броников, и дошел до damages.ltx наконец.
 
Формат:

bone = p1,p2,p3

bone - кость
p1 - коэффициент на который умножается расчет хита (протекция умножается на кондицию) при нанесении хита по этой кости, итоговый коэффициент которых учавствует в общей формуле формирования хита, то есть вроде как крепость кости
p2 - защита самой кости, умножается на кондицию броника, то есть вроде как защита броника
p3 - пуля на вылет, в целом все равно какой коэффициент, важно само наличие коэффициента, на самом деле он должен быть 0/1, то есть true/false
 
Парадокс в том, что в оригинале даже куртка новичка непробиваема (исходя из каких-то более интересных формул расчета защиты), и когда я написал более менее вменяемые формулы расчетов для монстров и сталкеров - в игре стали одни терминаторы.

Поэтому надо оформлять как-то так (пример для левой руки в куртке):

bip01_l_hand     = 1.0, 0.05, 1

Первый всегда единица очевидно потому, что хватает одной настройки протекции, и первый параметр в damages вообще не надо трогать, всегда ставьте единицу, меньше будет возни с перестройкой конфигов. Второй чрезвычайно важен, он может сделать непися в лохмотьях неубиваемым, за ним категорически советую следить! Третий - по желанию, но лучше в движке переделать на рандом при 1, иначе бить в эту кость будет бесполезно(!).

 

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

  • Нравится 3
  • Полезно 1

 

 

Не помогает даже

Как-раз помогает. Чтобы не быть голословным - я включил этот коллбек две недели назад и на протяжении этого времени, как могу, тестирую игру. Монстры со всем своим скарбом сохраняются замечательно. Укажу, что в пакеты писать ничего не пробовал, изначально пишу в память, но сам факт работы коллбеков на лицо, и да, в движке я ничего специально не делал. Сохраняю их как и остальные объекты всем полным циклом, у меня функции наподобие save_obj/load_obj.

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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

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