Арканум

Здравствуйте, гость ( Вход | Регистрация )

> Правила форума — Моддинг Арканума

Арканум — В рамках здравого смысла ограничьте флуд и офф-топ;
— Называйте темы понятно и конкретно;
— Если Вы хотите узнать, где можно скачать какой-либо файл, патч, мод или саму игру Arcanum: Of Streamworks and Magick Obscura, ознакомьтесь с нашей подборкой ссылок
Просьба: Голосуйте иногда в рейтингах на форуме/сайте (низ страницы — баннеры). Для чего это делать: пропаганда игры, ведь АРКАНУМ жил, жив и будет жить;
— Для двухстороннего общения пользуйте личные сообщения или асю.

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> .pro И Игровая Механика, У меня два вопроса, которые назрели давно.
Braxton Bry
сообщение 6.12.2008, 0:55
Сообщение #1


Amazing Experiments of Doctor Komatique
Group Icon

Группа: Ветераны
Сообщений: 139
Регистрация: 13.11.2008
Пользователь №: 2 914



ВОПРОС#1
.pro редактирую WinHex. В документации к ProEdit и в мануале Otto Krupp нахожу почти идентичные вещи - в .pro есть некий адрес, отвечающий за "навешенный" на прототип скрипт с флагами. В документации к ProEdit адрес указан неверно. В мануале Otto Krupp про адрес вообще ни слова.

Я точно знаю, что это можно сделать, стоит хотя бы взглянуть на лопату с навешенным на нее скриптом.

Кто-нибудь сталкивался с подобной проблемой? Как ее решить, кроме как приклеплять в WorldEd скрипт на прототип?

Скажем так, есть схематик, по которому создается предмет. Предмет обязан быть со скриптом. Рассуждая логически, есть два решения: привязать в .pro скрипт, или написать какой-то (???) скрипт, который повесит на этот предмет скрипт в дальнейшем (вот такая суровая правда жизни).

ВОПРОС#2
Как рассчитывается damage от применения скажем, Clarington Rifle? Какие параметры PC и target влияют на дамаг? Есть ли какая-то формула, или формулы, и где их посмотреть?

и вдогонку ВОПРОС#3
Можно ли изменить анимацию выстрела? Скажем, у той же Clarington Rifle анимация выстрела - из дула вылетают непонятные ошметки, а мне хочется несколько другого. Какие файлы за это отвечают? Есть ли ограничения на размер картинки?

Сообщение отредактировал Braxton Bry - 6.12.2008, 1:23
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
san
сообщение 6.12.2008, 1:23
Сообщение #2


Некромант форума Arcanum
******

Группа: Главные администраторы
Сообщений: 3 241
Регистрация: 17.10.2006
Из: Москва
Пользователь №: 2



вопрос 2.
Насколько я знаю - формула расчёта урона, в зависимости от параметров перса и его амуниции - зарыта в движке и принципы оных - неведомы. Теоретически, видимо, их можно посчитать по неким формулам ad&d. Хотя вряд ли кто пробовал.

вопрос 1.
Я эту проблему не решил. Была она и осталась. Я - лично не знаю, как в протос "прописать" скрипт, прикреплённый к итему. Всё верно, у Отто - адреса нет, а наш товарисч - и отписал, что за адрес не уверен... Я - пробовал долго, но безрезультатно.
Выходов много. На самом деле.
- Мне вполне достаточно было - прописать эффект в effect.mes, что достаточно стабильно пишется в прото.
- Понятно, сделать предмет уникальным и в редакторе "повесить" на него скрипт.
- Весьма смутно... Тем не менее - можно попытаться запустить скрипт через .dlg. Почему б и нет. Не пробовал, вроде. А может и пробовал, не помню.

Не понятно, что нужно. Способ придумать можно, пусть и через ж..., но реально почти всё. Но.Не всё, тем не менее. Пара -тройка проблемок так и не решается...

Врочем, лучше б на вопросы ответил Gentle_Giant, он знает по теории - точно всё известное на сей день в Аркануме.


--------------------
арканум
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Braxton Bry
сообщение 6.12.2008, 1:30
Сообщение #3


Amazing Experiments of Doctor Komatique
Group Icon

Группа: Ветераны
Сообщений: 139
Регистрация: 13.11.2008
Пользователь №: 2 914



Цитата
прописать эффект в effect.mes

категорически не подходит, увы. Есть скрипт, который ничем не заменить.
Цитата
через ж...

а по этому пункту я уже голову сломал. Единственный выход, который я нашел, вместо схематика сделать некую "лабораторию"/"кузницу", помещая в которую предметы для изготовления, получать искомый итем путем toggle (obj) state on/off.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
san
сообщение 6.12.2008, 2:18
Сообщение #4


Некромант форума Arcanum
******

Группа: Главные администраторы
Сообщений: 3 241
Регистрация: 17.10.2006
Из: Москва
Пользователь №: 2



Цитата
сделать некую "лабораторию"/"кузницу", помещая в которую предметы для изготовления, получать искомый итем путем toggle (obj) state on/off.


Если не трудно - поподробнее... Со временем всё забывается, суть я, вроде, улавливаю, но вот только "вроде"...


--------------------
арканум
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Braxton Bry
сообщение 6.12.2008, 2:59
Сообщение #5


Amazing Experiments of Doctor Komatique
Group Icon

Группа: Ветераны
Сообщений: 139
Регистрация: 13.11.2008
Пользователь №: 2 914



Объясняю.
Нужен скрипт. Сам пока еще его не писал, но знаю как.
Создаем в ворлдеде объект типа container, вешаем на него скрипт с флагом TRANSFER. Рядом кладем наш искомый итем, вешаем на него флаг OFF и нужный скрипт.
Из мануала Тройки читаем:
Цитата
TRANSFER
when called: when an item’s owner is transferring an item to a target (either a critter or a container)
triggerer: owner
attachee: target
extra object: item
effect of RETURN AND SKIP DEFAULT: the target is not allowed to receive the item, which remains on the owner

Ну, а далее уже все просто. Ставим два кондишена на два предмета (obj) is named (num), num берем из oname.mes.
1. Когда происходит TRANSFER предмета, запускается скрипт.
2. Идет проверка на итем (obj) is named (num).
3. Если обе проверки TRUE, то toggle (obj) on/off
Указатель на наш obj можно повесить либо проверкой на принадлежность к тайлу X Y, либо сыграть глобалфлагами, но это уже извращение.

Для игрока выглядеть это будет так: ПЦ подбегает к некоему предметцу (например, наковальня), тыкает в него мышкой, открывается окно инвентаря как в сундуке. ПЦ перетаскивает туда два предмета, и получает рядом с наковальней искомый итем.

Причем вариаций может быть очень много. Например, сделать так, чтобы после того как поместим итемы в наковальню, на нее обязательно нужно будет три раза применить молот кузнеца) И так далее. Фантазия почти ничем не ограничена.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
san
сообщение 6.12.2008, 3:19
Сообщение #6


Некромант форума Arcanum
******

Группа: Главные администраторы
Сообщений: 3 241
Регистрация: 17.10.2006
Из: Москва
Пользователь №: 2



Вопрос, конечно, что за итем.
А в принципе - сваргань алтарь. Положи - два предмета - получи третий?

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

Наверное хочется, что б разные варианты разных предметов давали разный интересный резалт. Типа сундучка в Дьябле?


--------------------
арканум
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Braxton Bry
сообщение 6.12.2008, 18:11
Сообщение #7


Amazing Experiments of Doctor Komatique
Group Icon

Группа: Ветераны
Сообщений: 139
Регистрация: 13.11.2008
Пользователь №: 2 914



Нет, все не так)

По сути получение предметов путем соединения двух компонентов можно рассмотреть так:
1 проверка на наличие схематика (да/нет)
2 проверка на наличие первого компонента (да/нет) в инвентаре
3 проверка на наличие второго компонента (да/нет) в инвентаре
4 если 1=да, 2=да, 3=да, то по нажатию кнопки создание предмета

Я всего лишь предлагаю заменить схематик глобалфлагом (знает ли PC как создать предмет), инвентарь PC на инвентарь obj типа container (в него PC будет помещать компоненты), а нажатие кнопки интерфейса - каким то другим действием (например, нажатие рычага, который будет являться obj типа scenery).
Ах, да, и создание предмета заменить на toggle (obj) on/off, иначе все теряет смысл. Изначально obj лежит где-нибудь на карте, где мы его поместили, например в другом контейнере, и на нем стоит флаг OFF. Соотвественно, когда мы к нему применим toggle (obj) on/off, он станет ON, то есть видим и ощущаем.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Gentle_Giant
сообщение 6.12.2008, 20:01
Сообщение #8


Говностай
Group Icon

Группа: Модераторы
Сообщений: 1 035
Регистрация: 26.10.2006
Из: Középső világ
Пользователь №: 15



Цитата(Braxton Bry @ 5.12.2008, 23:55) *
ВОПРОС#1
.pro редактирую WinHex. В документации к ProEdit и в мануале Otto Krupp нахожу почти идентичные вещи - в .pro есть некий адрес, отвечающий за "навешенный" на прототип скрипт с флагами. В документации к ProEdit адрес указан неверно.

Все правильно там указано: адрес, по которому находится описание скрипта, "плавающий" (если так можно выразится)... на сколько я помню. wink.gif Чтобы добавить скрипт, нужно т.с. "вклеить" эту секцию в прототип.
Цитата
Код
Приложение 3. Описание скриптов

Описание скрипта состоит из 12 байт, в отличие от сопротивлений и повреждений, где просто указывается значение (4 байта). Структура элемента следующая.

TScript = packed record
    Flags: DWORD;   //Флаги скрипта
    Counter0: BYTE;  //Счетчик Count 0
    Counter1: BYTE;  //Счетчик Count 1
    Counter2: BYTE;  //Счетчик Count 2
    Counter3: BYTE;  //Счетчик Count 3
    ScriptId: Integer;   //Номер скрипта
end;

В маске для скриптов используются оба DWORD отведенных под Mask (конкретные биты см. ниже)

//Первый DWORD
SCRIPT_EXAMINE = $00000001;
SCRIPT_USE = $00000002;
SCRIPT_DESTROY = $00000004;
SCRIPT_UNLOCK = $00000008;
SCRIPT_GET = $00000010;
SCRIPT_DROP = $00000020;
SCRIPT_THROW = $00000040;
SCRIPT_HIT = $00000080;
SCRIPT_MISS = $00000100;
SCRIPT_DIALOG = $00000200;
SCRIPT_FIRST_HEARTBEAT= $00000400;
SCRIPT_CATCHING_THIEF_PC= $00000800;
SCRIPT_DYING = $00001000;
SCRIPT_ENTER_COMBAT = $00002000;
SCRIPT_EXIT_COMBAT = $00004000;
SCRIPT_START_COMBAT = $00008000;
SCRIPT_END_COMBAT = $00010000;
SCRIPT_BUY_OBJECT = $00020000;
SCRIPT_RESURRECT = $00040000;
SCRIPT_HEARTBEAT = $00080000;
SCRIPT_LEADER_KILLING = $00100000;
SCRIPT_INSERT_ITEM = $00200000;
SCRIPT_WILL_KOS = $00400000;
SCRIPT_TAKING_DAMAGE = $00800000;
SCRIPT_WIELD_ON = $01000000;
SCRIPT_WIELD_OFF = $02000000;
SCRIPT_CRITTER_HITS = $04000000;
SCRIPT_NEW_SECTOR = $08000000;
SCRIPT_REMOVE_ITEM = $10000000;
SCRIPT_LEADER_SLEEPING= $20000000;
SCRIPT_BUST = $40000000;
SCRIPT_DIALOG_OVERRIDE= $80000000;
//Второй DWORD
SCRIPT_TRANSFER = $00000001;
SCRIPT_CAUGHT_THIEF = $00000002;
SCRIPT_CRITICAL_HIT = $00000004;
SCRIPT_CRITICAL_MISS = $00000008;


Указание на скрипты в прототипы я добавлял (см. приманки в Grand Fix). wink.gif


--------------------
Видеоигры преподносят как минимум один важный жизненный урок: если на пути попадаются враги, значит, ты идешь в верном направлении.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Braxton Bry
сообщение 6.12.2008, 21:38
Сообщение #9


Amazing Experiments of Doctor Komatique
Group Icon

Группа: Ветераны
Сообщений: 139
Регистрация: 13.11.2008
Пользователь №: 2 914



Хорошо. Хорошо что это возможно. Теперь у меня следующий вопрос: что значит "вклеить"?
Посмотрел на взрывчатую приманку.

Изображение

01 - признак наличия опциональной секции
0С 00 00 00 - размер элемента
02 00 00 00 - количество элементов
05 00 00 00 - неизвестные байты
00 00 00 00 00 00 00 00 67 60 00 00 - первый элемент
00 00 00 00 00 00 00 00 67 60 00 00 - второй элемент
02 00 00 00 - неизвестные байты
80 01 00 00 - первый DWORD битовой маски
00 00 00 00 - второй DWORD битовой маски

Я правильно все понял?

Теперь вопросы:
1) Где здесь указаны Counter0 etc.?
2) Как мне прочитать битовую маску? Получается, что 80 01 00 00 - это указание на SCRIPT_DIALOG_OVERRIDE ($80000000) и SCRIPT_END_COMBAT (00010000)?
3) что за неизвестные байты?

По поводу пункта 2 Отто Крупп пишет:
Цитата
1st byte - 1st bit (1 for Get, 2 for Drop, 4 for Throw, 8 for Hit)

Цитата
2nd byte – 2nd bit (1 for Miss, 2 for Dialog, 4 for First Heartbeat, 8 for Catching Thief Pc)

Следует ли понимать 80 01 00 00 - первый DWORD битовой маски, как указание на HIT и MISS?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Gentle_Giant
сообщение 6.12.2008, 22:29
Сообщение #10


Говностай
Group Icon

Группа: Модераторы
Сообщений: 1 035
Регистрация: 26.10.2006
Из: Középső világ
Пользователь №: 15



Цитата(Braxton Bry @ 6.12.2008, 20:38) *
Теперь у меня следующий вопрос: что значит "вклеить"?

Вставить определенное количество байт после определенного смещения (в твоем hex-редакторе должно быть что-то типа "insert"), тем самым добавив секцию скрипта; далее эту секцию нужно отредактировать под свои нужды.

Цитата(Braxton Bry @ 6.12.2008, 20:38) *
Где здесь указаны Counter0 etc.?

В примере они явно равны нулям. Я точно не помню, но вроде бы счетчики идут после флагов, и подряд. Счетчики - полезная штука но в прототипах используется нечасто.


По использованию счетчиков...
Например, есть скрипт на DIALOG:
Цитата
description ""
MAX_LINES_ALLOCATED 10

0. dialog Counter 0

1. return and SKIP default

Вешаешь в WorldEd этот скрипт мобам (NPC) на диалог. Первому NPC в разделе скриптов указываешь Counter 0 = 10, второму = 20, третьему = 30 и т.п. Тогда первый NPC начнет разговор с 10-ой строчки диалога, второй - с 20-ой, третьий - с 30-ой и т.п., причем реплики будут браться из одного диалогового файла и будет задействован один скрипт. Удобно, и полезно, когда делаешь однотипных "буратин" (стражники, например).


Цитата(Braxton Bry @ 6.12.2008, 20:38) *
Следует ли понимать 80 01 00 00 - первый DWORD битовой маски, как указание на HIT и MISS?

Надо полагать. smile3.gif Всегда можно проверить в ProView:
Цитата
HIT=30304, Counter: 0, 0, 0, 0 Flags: 0x00000000
MISS=30304, Counter: 0, 0, 0, 0 Flags: 0x00000000


Тут главное эксперементировать и сразу проверять в ProView, до тех пор, пока в крайнем правом окошке ProView не увидишь то, что нужно - тогда на тебя снизойдет озарение. wink.gif Хотя я как-то сначала без этой программы обходился. smile3.gif


P.S. Я могу что-то забыть, потому что последний раз этим занимался год назад - привязывал скрипт на HIT к Клинку Прикосновения Вампира для второго минификса GF. smile3.gif


--------------------
Видеоигры преподносят как минимум один важный жизненный урок: если на пути попадаются враги, значит, ты идешь в верном направлении.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V  1 2 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 16.10.2021, 23:08

Группа Арканум Клуба В Контакте

арканум