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

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


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

Народ, ЧТО я не правильно сделал:

if dik == DIK_keys.DIK_S then
            local mindist,i,obj,npc = 1000000
            for i = 1,65500 do
                obj = level.object_by_id(i)
                if obj == nil then
                    obj = alife():object(i)
                end

1. Почему только до 65500, а не до 65534? Впрочем, ошибки это не даст, просто пропустишь несколько объектов.

2. level.object_by_id(i) возвращает онлайновый объект, а alife():object(i) - офлайновый. С ними потом категорически не выйдет работать одинаково. Методы и свойства у них разные. Будет вылет на первом же не найденном свойстве/методе.

 

1. Как делать свои коллбеки.
Не совсем понятно, что ты имеешь в виду. Свои в каком смысле?

2. Как использовать self в своих скриптах? Что это мне даёт?
self - это объект, метод которого вызван.

Вообще, конструкция вида:

class_name:method_name(<список аргументов>)
    self ...
end

Синтаксически эквивалентна такой:

class_name.method_name(self, <список аргументов>)
    self ...
end

Т.е. self - это на самом деле скрытый первый аргумент

А делать с ним можно всё, что вздумается =)

 

3. У серверной аномалии класс cse_anomalous_zone. Какой класс у клиентской аномалии?

Почти у всех клиентский объектов класс один и тот же - game_object. Не стоит забывать ещё про класс биндера. который в некотором смысле расширяет game_object. Для АМК биндер находится в скрипте amk_anoms.script

4. Как проигрывать партикл, если известна точка, в которой должен проигрываться партикл?

 

Вообще партикл проигрывается с помощью класса particles_object. Собственно проигрывание начинается методом play_at_pos

Пример использования можно посмотреть в скрипте amk_particle.script

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

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

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

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

 

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

malandrinus,

1. Ну, например, коллбек на получение игроком кол-ва денег, меньшего 100 руб.

2. Это чё, типа для того, чтобы методы можно было делать свои?

3. Как? Сталкер и аномалия для игры одно и то же? Не видел аномалию с определённым кол-вом жизней.

4. Эхх... качать АМК надо. :)

 

Короче, спасибо.

Ссылка на комментарий
1. Ну, например, коллбек на получение игроком кол-ва денег, меньшего 100 руб.
Не уверен, есть ли способ поймать именно факт получения денег. Но допустим на получение предмета и торговлю есть в биндере актора или сталкера колбеки:

on_item_drop

on_item_take

take_item_from_box

trade_perform_operation

trade_sell_buy_item

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

 

2. Это чё, типа для того, чтобы методы можно было делать свои?
Это к какому вопросу относится?

 

3. Как? Сталкер и аномалия для игры одно и то же? Не видел аномалию с определённым кол-вом жизней.
=) А где ты видел сталкера, у которого есть методы get_anomaly_power() и enable_anomaly() ?

Да, вот так вот сделано, что для всех онлайновых объектов есть общий интерфейс в виде объекта одного класса game_object. Это поначалу сложно понять. Ещё сложнее понять, зачем так сделано. Я могу лишь предположить, что это вероятно имеет смысл в контексте мультиплеера.

В общем имеем монструозный класс, у которого есть куча методов, и из этих методов применительно к конкретно взятому игровому объекту работают только некоторые. К примеру упомянутые get_anomaly_power и enable_anomaly для сталкеров работать не будут, скорее всего просто ничего не делают, а hide_weapon скорее всего не окажет никакого действия на аномалию или монстра.

 

4. Эхх... качать АМК надо. :)
Посмотри в папке scripts, может найдёшь примеры с этой функцией в родных скриптах. Я обычно использую поиск в Total Commandere файлов, содержащих нужную строку. в данном случае particles_object или play_at_pos.
 

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

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

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

 

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

Люди, подскажите как убрать эффект рамок обзора при надевании брони со шлемом. Только плиз не клюйте сразу, знаю что где-то это мелькало но перебирать всю тему смертиподобно :(

В шпаргалке по амк v5 как нистранно темы не оказалось.

Поиск по форуму юзал, безрезультатно.

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

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

зы: в крайнем случае можно с помощью разных коллбэков отслеживать все грананты. Если вдруг граната потеряла рюкзак актора при простом апдейте, то значит, что актор её либо выбросил, либо кинул. Если выбросил, то через большое кол-во времени её всё равно можно будет поймать по id, если кинул, то скоро её уже по id не найдём. :)

сейчас и займусь разработкой сего.

 

Добавлено через 3 мин.:

kuzia, если мне не изменяет память, то там в меня АМК есть выключение сего.

Изменено пользователем IQDDD
Ссылка на комментарий

IQDDD

Monnoroch

 

Забыл написать, стоит амк 1.4.1 + оба патча + солянка 14.06 + патч

В солянке выбора нет (а жаль) так что видимо придётся через конфиги.

Подскажите плз :(

Ссылка на комментарий
Monnoroch, может быть, по коллбэку на подыхание. Если подох и был рядышком с аномалией, то значит... это значит, что он, наверное, умер в аномалии.
Ссылка на комментарий
постоянно обновлять координаты этой гранаты.
Вот только не получится узнать, нанесла ли урон ГГ. Колбек на хит актору сделать ещё никому не удалось.

 

Все, как узнать что онлайновый непись\монстер погиб в анамалии?
Колбек в биндере на смерть ставится в xr_motivator.script и bind_monster.script. Там вторым параметром идет объект - причина смерти.
 

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

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

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

 

Ссылка на комментарий
Вот только не получится узнать, нанесла ли урон ГГ. Колбек на хит актору сделать ещё никому не удалось.

 

Все проще если позиция гранаты = позиции актора - значит ГГ огреб=)

 

kuzia, амк_мод.скрипт - там найдешь раздел "Динамик_худ" и смотри в начале - там подписано,где надо.

Изменено пользователем Monnoroch
Ссылка на комментарий
Все проще если позиция гранаты = позиции актора - значит ГГ огреб=)
Тогда уж надо рассчитывать урон в зависимости от расстояние до гранаты. И как здесь учесть возможность того, что ГГ сидит в укрытии?
 

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

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

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

 

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

Monnoroch, если граната у ГГ точненько под ногами, то ему уже не нужен колбек на её взрыв. Ему нужна последняя сохранёнка.

Кроме того, координаты двух объектов не могу совпадать с точностью, в любом случае есть некоторая разница.

 

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

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

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

 

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

malandrinus, а можно еще определить от какого оружия помер НПС (по аналогии с смертью от анамалий - нужна граната).

 

То есть как киллера определить - ясно,а вот тип оружия(если человек) ?

Изменено пользователем Monnoroch
Ссылка на комментарий
То есть как киллера определить - ясно,а вот тип оружия(если человек) ?
Я полагаю, надо просто определить, какое оружие в руках у киллера в момент смерти жертвы.

У АМК есть фунция amk_offline_alife.get_npc_weapon(npc), но во-первых она полагается на готовые таблицы из мода АМК, а кроме того там алгоритм выбирает оружие исходя из его огневой мощи, которую вычисляет там же находящейся функцией get_weapon_firepower(wpn). Так что не не факт, что этот выбор будет соответствовать действительности. И вообще, это похоже преимущественно для оффлайновых неписей.

 

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

 

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

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

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

 

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

Доброго времени суток.

Возник вопрос, на Янтаре у профессора Сахарова есть задание: принести кабаний окорок. Меченый говорит, что хватит им и копыта кабана. Короче возникла проблема: задание беру, а когда беру у кабана копыто задание не выполняется, в чём может быть причина? В каких файлах нужно ковырнуть чтобы задание выполнялось?

S.T.A.L.K.E.R.

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

Вот такой вопрос:

Как я понимаю, любая вещь в рюкзаке актора - серверная. Например,граната. Их шесть в рюкзаке. Но допустим, что актор взял гранату (нажав 4, или что там у него). Теперь в рюкзаке 6 гранат, плюс у актора в руке одна граната, откуда эта граната? Какой у неё id?

 

Короче, как вычислить гранату, которой кинулся актор?

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

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

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

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

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

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

Войти

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

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

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