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

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


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

Где оружию присваивается класс и как создать новый класс, для использования в news_data?

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

Также хочу создать класс "Пулемёты", ну и соответствующие тексты для новостей.

Поиск не помог, извините, если вопрос задавался, 300 страниц этой темы я не осилю... был бы в шапку вынесен этот вопрос...

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

Unreal_Sergey

Тебе ничего делать не надо. Создать новый класс для оружия не возможно. Наверняка у тебя автомат на классе лр300 например. Играй спокойно

Freedom

Unreal_Sergey,

классы вшиты в движок, а оружие добавлять в новости - файл news_main.script, функция function get_weapon_type(weapon), дальше разберёшься, думаю.

в АМК 1.4 моде на ТЧ можно ставить собственные тайники. В самом начале Сидорович дает такую сумку за выполнение квеста в котором нужно артефакт принести. Подскажите пожалуйста что и куда нужно прописать чтобы торговец(Сидорович или Бармен) продавал эти сумки(тайники) которые при активации становятся стационарными тайниками.

З.Ы. Я надеюсь вы меня поняли :ny_ph34r_1:

Строгое предупреждение от модератора kokkai
Поняли. Просто надо поиск юзать активнее. Сто раз уже везде обсуждали.

http://www.amk-team.ru/forum/index.php?s=&...st&p=185514

Или надо еще рассказать как прописывать в продажу?

Доброго времени.

 

Хочу радикально снизить кол-во аномалий в народной солянке. Как понял, за это отвечает amk_anoms.script? Где можно почитать, как его править?

Gideon Vi,

Там всё очень просто: есть секции разных уровней.

В них прописаны координаты x,y и z и ещё, после запятой,

указан радиус зоны (в метрах), внутри которой не будут спавниться никакие аномалии.

Снял координату на местности, внёс в секцию нужной локации, указал радиус и всё.

 

И в результате все аномалии скопятся в "разрешённой" зоне. Количество их так не снизить, надо править список, "anoms_per_level" кажется.

antreg, но в таком случае не снизится их кол-во, а изменится ареал обитания? Меня не расположение, а кол-во напрягает: нравится изначальная концепция, когда аномалии были относительной редкостью.

Количество их так не снизить, надо править список, "anoms_per_level" кажется.

В ПМ посоветовали копать функцию function generate_anoms(). Пока добились того, что динамические аномалии совсем перестали спавниться:

while cnt < 0 do

Но есть желание просто уменьшить их объем в два-три раза.

 

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

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

Gideon Vi

Не ковыряй там, где не уверен ...

Смотришь табличку "level_anoms' в 'amk_anoms.script'.

 

На примере 1-ой строки таблицы (для АМК): l01_escape={100,150,1000,{mosquito_bald=60 ,mincer=30 ,witches_galantine=10}},

 

l01_escape - это уровень, для которого предназначены следующие параметры;

 

100,150,1000 - количества вномалий на локации: минимум. максимум, лимит;

Т.е. это именно то, что тебе нужно:

Минимум (100) - сколько минимально заспавнится аномалий на локацию при дин. (ре)спавне;

Максимум (150) - сколько максимум заспанится аномалий на локацию при дин. (ре)спавне;

Лимит(1000) - предел кол-ва аномалий для локации, т.е. аномалии более спавниться не будут.

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

 

Следующие данные - это процентное соотношение типов аномалий, которые будут рандомно спавниться. Сумма (60+30+10) должна обязательно быть равна 100(%). Так что можешь и ассортиментом аккуратно(побаловаться).

 

Прим: Для НС строки указанной таблицы отличаются значениями количеств и типами/названиями переменных для аномалий и их большим ассортиментом, а суть та же.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

А можно сделать чтобы дверь Сидрыча была ВСЕГДА открыта? Нараспашку. Если да то как?

TRAMP14, в файле config\scripts\esc_trader_door.ltx убрать все и написать:

[logic]
active = ph_door@open

[ph_door@open]
closed = false
locked = false
snd_open_start = trader_door_open_start
snd_close_start = trader_door_close_start
snd_close_stop = trader_door_close_stop

Заспавнил Гг в другое место,начал новую игру ,дошёл до Сидора,а у него дверь закрыта!

Как сделать чтобы его дверь была открыта в самом начале игры?(Чтоб её можно было самому открывать\закрывать).

zoidberg123456789, пропиши ей такую логику

[logic]

active = ph_door@closed

 

[ph_door@locked]

locked = true

snd_open_start = trader_door_unlock

on_info = {+esc_trader_can_leave} ph_door@closed %=play_snd(device\door_servomotor)%

 

[ph_door@closed]

closed = true

locked = false

on_use = ph_door@open %-esc_close_door%

snd_open_start = trader_door_open_start

snd_close_start = trader_door_close_start

snd_close_stop = trader_door_close_stop

 

[ph_door@open]

closed = false

locked = false

on_use = ph_door@closed

on_info = {+esc_close_door} ph_door@closed

snd_open_start = trader_door_open_start

snd_close_start = trader_door_close_start

snd_close_stop = trader_door_close_stop

 

Прошу помощи у специалистов.

Давным-давно, "когда еще людей на свете не было" :), Vano_Santuri в этой теме предложил вариант определения координат ГГ через выход в меню и кнопку "Титры":

function main_menu:OnButton_credits_clicked()

local text

local vid

local gvid

local a = vector()

local text

a = db.actor:position()

vid = db.actor:level_vertex_id()

gvid = db.actor:game_vertex_id()

text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid

news_manager.send_tip(db.actor, text, nil, nil, 30000)

end

 

Мне захотелось получать еще и направление взгляда и я чуть-чуть переработал код:

function main_menu:OnButton_credits_clicked()

local vid = db.actor:level_vertex_id()

local gvid = db.actor:game_vertex_id()

local a = db.actor:position()

local dir = db.actor:direction()

local text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nDirX= "..dir.x.."\\nDirY= "..dir.y.."\\nDirZ= "..dir.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid

news_manager.send_tip(db.actor, text, nil, nil, 30000)

end

 

Все работает, цифирки исправно выдаются на экран. Однако у меня появились два вопроса.

1. Все ли здесь верно?

2. При задании стартовой позиции ГГ в all.spawn и начале новой игры direction у меня вроде бы вообще не учитывается. Влияет только параметр upd:o_torso. Так и должно быть?

Даёшь новый сюжет СТАЛКЕР-2!

У меня сегодня просто день вопросов.

Слышал, что в "Зове Припяти" в скрипте db.script есть таблица level_doors = {}, которая содержит список всех дверей на уровне, чтобы НПС могли, бегая по этому уровню, открывать нужные двери. В "ТЧ" такого нет. Можно ли каким-либо образом изменить логику двери (например, Сидоровича), чтобы ее с любой стороны могли открывать НПС? Если подскажете, как это сделать, то дальше можно не читать. :)

Запасной вариант есть - спавн рестриктора возле двери и отслеживание входа в него НПС. Но он мне кажется более сложным и что-то пока не работает.

1. В all.spawn на нужном уровне (в моем случае - на Затоне) размещаю рестриктор с такой секцией логики:

[logic]

active = sr_idle

[sr_idle]

on_actor_inside = %+ship_open_door%

on_actor_outside = %-ship_open_door%

 

2. Выделенный жирным инфопоршень регистрирую в одном из файлов с инфопоршнями.

 

3. Вношу изменения (также выделены жирным) в логику двери:

[logic]

active = ph_door@closed

 

[ph_door@locked]

locked = false

snd_open_start = trader_door_unlock

on_info = {+esc_trader_can_leave} ph_door@closed %=play_snd(device\door_servomotor)%

 

[ph_door@closed]

closed = true

locked = false

on_info = {+ship_open_door} ph_door@open

on_use = ph_door@open %-esc_close_door%

snd_open_start = trader_door_open_start

snd_close_start = trader_door_close_start

snd_close_stop = trader_door_close_stop

 

[ph_door@open]

closed = false

locked = false

on_info = {+esc_close_door} ph_door@closed

on_info = {-ship_open_door} ph_door@closed

on_use = ph_door@closed

snd_open_start = trader_door_open_start

snd_close_start = trader_door_close_start

snd_close_stop = trader_door_close_stop

 

 

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

 

KD87, Charsi, спасибо за помощь в решении прошлого вопроса.

 

Даёшь новый сюжет СТАЛКЕР-2!

Каким образом можно узнать, достиг ли НПС прописанного ему вейпоинта?

Freedom

_Призрак_, Проще туда сунуть спейс_рестриктор и вызвать функцию... (Это вариант, как альтернатива, если нет предусмотренного метода)

Что-то кончается, что-то начинается...

Дело в том что я сделал очень интересный дебагер - при наведении на НПС прицела, на экран выводится информация о нем - имя, айди, сид (если есть), смарт, количество НПС в сматре, активную логику, бест_дангер и здоровье + в логе сохраняется позиция НПС и его гейм/левел вертикс. На случай когда АИ-сетка глючит. Но во время тестов я понял что хотелось бы знать на какой вейпоинт идет НПС и достиг ли он его.

 

Поэтому вариант со спейсами не прокатит

Изменено пользователем _Призрак_

Freedom

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

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

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

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

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

Войти

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

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

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