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

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


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

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

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
Добавлено Malandrinus,

Пост дополнил информацией из позднего обсуждения. Также по этой теме есть ссылки на посты, предоставленные пользователем Struck:

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

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

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

 

Весь гнусный оффтоп на тему кто есть непись, а кто нет вычистил.

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

Ковыряюсь я на ТЧ в моде 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
Ссылка на комментарий

Всем привет! 

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

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

 

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

Ссылка на комментарий

@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 пользователей

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

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