Арканум

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

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

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

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> Как Реализовать Перезарядку Оружия., Скудные средства ScrMaker в действии.
Braxton Bry
сообщение 8.12.2008, 1:52
Сообщение #1


Amazing Experiments of Doctor Komatique
Group Icon

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



Теория:

Код

//сброс global variable0
0: if global variable0==7
          then global variable0==0

//проверка - если произошла перезарядка, то возвращаем скорость триггерера в исходное значение
1: if global variable0==0
          then stat 11 of triggerer: adjust by 5

//если патроны в магазине кончились, то есть global variable==6, то переход на линию 4
2: if global variable0==6
          then goto line4
    else global variable0=global variable0+1

3: return and skip default

//здесь можно вставить звук перезарядки оружия вместо (num). Кстати, можно в Арканум вставлять звуки помимо существующих или нет?
4: play sound (num) at triggerer

//триггерер изображает популярный в фоллауте жест
5: have triggerer perform animation 12

//уменьшаеи скорость триггерера, вроде как "отнимаем action points". При следующем выстреле будет потрачено больше AP
6: stat 11 of triggerer: adjust by -5

7: return and skip default


Вешается скрипт на HIT и MISS, то есть учитывается каждый выстрел. Можно еще напрячься и повесить на CRITICAL HIT и CRITICAL MISS, но возни очень много с ними. Практически реализовать это тоже не слишком сложно. Возможно, стоит сделать проверку триггерера на скорость, чтобы она не стала внезапно отрицательной. Или снимать процент со скорости. Самая большая задача - сидеть и вешать этот скрипт каждому прототипу огнестрельного оружия. Время это займет прилично.

Так вот у меня вопрос - стоит ли овчинка выделки?

Популярный в Фоллауте жест - это когда криттер делает поклон в одну четверть, отклянчивает зад, вытягивает руки и делает вращательные движения типа "наматывание проволоки". Этим простым и незамысловатым движением криттер открывает ящики, шкафчики, ворует, лечит, использует компьютер и другие не менее интересные и полезные вещи.
Самое удивительное, что никто не жаловался. А попробуйте изобразить такие па в жизни. На мой взгляд, очень глупо выглядит.

Работает или нет - понятия не имею. В теории все замечательно выходит) Возможно, будет разница между реалтаймом и пошаговым режимами.

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


Говностай
Group Icon

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



Что за гвара 0? Где она устанавливается (в скрипте)? Почему именно глобал, а не локал?


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


Amazing Experiments of Doctor Komatique
Group Icon

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



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

С глобал варами вообще засада. Потому что если в висинити будут хотя бы два криттера, имеющих огнестрельное оружие, то для каждого надо будет завести свою глобал вару.

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

а все переменные по умолчанию 0, не так ли? тогда к чему ее где-то в скрипте устанавливать?

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


Говностай
Group Icon

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



Цитата(Braxton Bry @ 8.12.2008, 1:20) *
Проще конечно взять локал вар, но будет ли она сохраняться для каждого нового вызова скрипта?

Да.

Цитата(Braxton Bry @ 8.12.2008, 1:20) *
С глобал варами вообще засада. Потому что если в висинити будут хотя бы два криттера, имеющих огнестрельное оружие, то для каждого надо будет завести свою глобал вару.

... Поэтому лучше использовать локал вару.

Должен быть какой-то инкремент на подсчет выстрелов, например:
Код
0. Local 0 = Local 0 + 1 // Сделан выстрел...

1. IF Local 0 <= 5 // Проверка на кол-во выстрелов.
    THEN do nothing
    ELSE goto line X

/*
Если сделано 6 выстрелов, то переход на строчку с скрипта, где анимация, уменьшение скорости и установка Local 0 = 0.
*/

2. return and RUN default


Ну, это так, в теории. smile3.gif Возможно лучше использовать Counter'ы.


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


Amazing Experiments of Doctor Komatique
Group Icon

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



все правильно, да. Ну раз можно с локал варами, тогда остается ровно одна проблема - развешать этот скрипт в прототипы.
А нужен ли он народу?

Цитата
else global variable0=global variable0+1


вот мой инкремент!

Уменьшению скорости обязательно должно следовать ее обратное увеличение, поэтому я настаиваю на этих строках:
Цитата
//сброс global variable0
0: if global variable0==7
then global variable0==0

//проверка - если произошла перезарядка, то возвращаем скорость триггерера в исходное значение
1: if global variable0==0
then stat 11 of triggerer: adjust by 5

Естественно, заменяя global на local.

Но это все лирика и сотрясание воздуха. Кому нужен этот скрипт? Реально тактическую составляющую, даже минимальную, в пошаговый режим он не внесет. Или внесет? Пока что получается красивая теория, почти как опыты в пробирке.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Gentle_Giant
сообщение 8.12.2008, 2:43
Сообщение #6


Говностай
Group Icon

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



Цитата(Braxton Bry @ 8.12.2008, 1:38) *
Цитата
else global variable0=global variable0+1


вот мой инкремент!

Это не будет работать - вара спрятана за условием; строго говоря ее вообще не существует. Инкремент должен быть в первой строчке.


P.S. Рекомендую использовать ScriptEd от Dj Unique. wink.gif


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


Amazing Experiments of Doctor Komatique
Group Icon

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



да, эта штука гораздо удобнее чем сцрмейкер. Спасибо.

Попробую написать и потестить.


УПД: удобнее то удобнее, но скрипт написаный в сокманки, отлично себя зарекомендовавший в игре, наотказ не хочет компилиться в скриптеде. Он, видите ли, не признает вычитание

(5): invalid action opcode "Local 8 = 11 - Local 0"

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


Говностай
Group Icon

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



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

Ты попробуй скрипт просто к мобу в WorldEd привяжи, протестируй (создай тестовый мод с картой).


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


Amazing Experiments of Doctor Komatique
Group Icon

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



Зачем для моба counter? Это нецелевое расходование средств) Нам ведь нужно только учитывать количество вылетевших патронов. Это HIT и MISS.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Gentle_Giant
сообщение 8.12.2008, 3:13
Сообщение #10


Говностай
Group Icon

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



Цитата(Braxton Bry @ 8.12.2008, 1:50) *
УПД: удобнее то удобнее, но скрипт написаный в сокманки, отлично себя зарекомендовавший в игре, наотказ не хочет компилиться в скриптеде. Он, видите ли, не признает вычитание

(5): invalid action opcode "Local 8 = 11 - Local 0"


У меня эта строчка комплится. smile3.gif
Настроить, наверное, надо, у меня примерно так в ScriptEd.ini:
Код
[General]
DATPath=D:\GAMES\ARCANUM
DLG_Editor=D:\Games\Arcanum Modding\DLG Debugger\dlgdebug.exe
MES_Editor=D:\Games\Arcanum Modding\MES Editor\mesedit.exe
Read File List=0
Debug Mode=0
Use Compressed Data=1
OpcodeBoxMaxItems=25
Generate Dialogue Lines=0

[Files]
Open_DLG_LastDir=D:\Games\Arcanum\data\scr
Save_DLG_LastDir=D:\Games\Arcanum\data\scr
LastModuleDir=TestMod

Главное - путь к DAT'ам в каталоге с игрой.


Цитата(Braxton Bry @ 8.12.2008, 2:05) *
Зачем для моба counter? Это нецелевое расходование средств) Нам ведь нужно только учитывать количество вылетевших патронов. Это HIT и MISS.

Один моб = одна ед. огнестрельного оружия в игре, но на всех один скрипт... wink.gif


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

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

 



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

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

арканум