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

[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

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.

Как с помощью скрипта узнать, на каком расстоянии от ГГ взорвалась граната и коцанула ли она его?

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

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

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

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

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

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

 

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

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

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

kuzia, в амк опциях.

 

Все, как узнать что онлайновый непись\монстер погиб в анамалии?

IQDDD

Monnoroch

 

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

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

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

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

 

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

 

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

 

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

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

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

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

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

 

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

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

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

 

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

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

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

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

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

 

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

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

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

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

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

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

Войти

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

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

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