Перейти к содержанию

Работа со скриптами в Arcanum


Blake

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

Опубликовано

Что то я не вкурил в скриптах про склонность к магии и технологии.

С хорошей подачи ув. Positiff

Можем лицезреть такое

description "Helm of Light WIELD ON"
MAX_LINES_ALLOCATED 10

0. magic/tech: adjust Counter 0 by item Attachee used by Triggerer: store in Local 0

1. IF Local 0 <= 1
THEN return and RUN default

2. Counter 1 = 79 + Local 0

3. script eye candy: play Counter 1 on Triggerer

4. return and RUN default

5. script eye candy: stop Counter 1 on Triggerer

6. return and RUN default

Тут чем больше склонность к магии тем в +(плюс).

Вопрос :- А как сделать к технологии подобный скрипт?

Я догадался что нужно использовать эту строчку

magic/tech: adjust (num) by item (obj) used by (obj) on (obj): store in (num) 

Но я все равно не понимаю - как ?

UPD - ошибся, понял что это скрипт на проверку отношения к игроку кого то и т.д. Короче не то.

Первый нужно разбирать.

Народ примеры хоть чего то есть?

Человек - это звучит горько.

Мы родились - распался СССР, пошли в школу - начался дефолт, поступили в универ - начался кризис, закончим универ - конец света. Ну прям поколение лохов.

  • Ответов 96
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Опубликовано

Тут чем больше склонность к магии тем в +(плюс).

Вопрос :- А как сделать к технологии подобный скрипт?

Я догадался что нужно использовать эту строчку

magic/tech: adjust (num) by item (obj) used by (obj) on (obj): store in (num) 

Но я все равно не понимаю - как ?

:tiredness:

Этот скрипт и эта строчка - универсальны. Их работа зависит от маг/тех склонности того предмета, к которому этот скрипт прицеплен.

Цепляем этот скрипт к магическому предмету - эффект будет зависеть от магии.

Цепляем этот скрипт к технологическому предмету - эффект будет зависеть от технологии.

 

 

Народ примеры хоть чего то есть?

Заряженное Кольцо, эффект которого в оригинальном Аркануме зависит от склонности персонажа к технологии.

29005Tech_Charged_Ring_WIELD_ON.scr

Борітеся – поборете, Вам Бог помагає!

За вас Правда, за вас Слава і Воля святая!

Опубликовано

gamer_777

Спасибо.

Только как в поговорке - смотрю на скрипт, вижу фигню.

 

Все таки это не мое, не понимаю последовательность строк.

Пишу:

0. magic/tech: adjust Counter 0 by item Attachee used by Triggerer: store in Local 0
1. IF Local 0 <= 1
THEN return and RUN default
2. Counter 1 = 79 + Local 0
3. script eye candy: play Counter 1 on Triggerer
4. return and RUN default
5. script eye candy: stop Counter 1 on Triggerer
6. return and RUN default

Добавил это:

1. IF Triggerer has item named 2401
THEN do nothing
ELSE goto line 6
2. drain 1 charges from Triggerer

На выходе получаю:

0. magic/tech: adjust Counter 0 by item Attachee used by Triggerer: store in Local 0
1. IF Triggerer has item named 2401
THEN do nothing
ELSE goto line 6
2. drain 1 charges from Triggerer
3. IF Local 0 <= 1
THEN return and RUN default
4. Counter 1 = 79 + Local 0
5. script eye candy: play Counter 1 on Triggerer
6. return and RUN default
7. script eye candy: stop Counter 1 on Triggerer
8. return and RUN default

При тесте работы - ошибок нет.

Но в игре - хаос.

Шлем отнивает - батарейку - если одевать предмет.

Но и радиус света при каждом одевании предмета увеличивается.

Если предмет снять - свет на персонаже остается.

Человек - это звучит горько.

Мы родились - распался СССР, пошли в школу - начался дефолт, поступили в универ - начался кризис, закончим универ - конец света. Ну прям поколение лохов.

Опубликовано

При тесте работы - ошибок нет.

Но в игре - хаос.

Шлем отнивает - батарейку - если одевать предмет.

Но и радиус света при каждом одевании предмета увеличивается.

Если предмет снять - свет на персонаже остается.

Чтобы твой скрипт правильно работал, к шлему должен быть прицеплен ещё один скрипт на Wield Off. И этот второй скрипт должен выглядеть так:

 

0. call script attached to Attachee at point 24 at line 7 with triggerer Triggerer
1. return and RUN default

Если такого скрипта на шлеме нет - сделай.

Если такой скрипт уже есть, но его код немного отличается - сделай скрипт точно таким, как я написал.

 

 

 

P.S.

Это может не подействовать на тех сейвах, где уже произошёл баг и на персонаже осталось освещение после снятия шлема.

Борітеся – поборете, Вам Бог помагає!

За вас Правда, за вас Слава і Воля святая!

Опубликовано

gamer_777

Заработал, спасибо.

Но так как это просто эксперименты для разбирательства работы скрипта(для меня).

Я понял как заработал - OFF скрипт. Только не понял :- Что такое, point 24 ? Откуда оно берется?.

call script attached to (obj) at point (num) at line (num) with triggerer (obj)

От куда мы знаем что там должно быть 24, а не 1 или 99.

 

***

А что с этим скриптом не так?

0. call script 30354 at line 0 with triggerer Triggerer and attachee Attachee in 100 seconds
1. IF Triggerer has item named 2401
THEN do nothing
ELSE goto line 6
2. drain 1 charges from Triggerer
3. script eye candy: stop 78 on Triggerer
4. script eye candy: play 78 on Triggerer
5. return and RUN default
6. script eye candy: stop 78 on Triggerer
7. return and RUN default

>> 30354 - это номер файла скрипта. 30354_Electric_Light_WIELD_ON.scr

И понятно, что этот скрипт будет вызываться каждый 100 секунд если если...

>> Далее понятно, идет проверка на наличие предмета.

>> Сколько будет использоваться - 1

>> Ну и сам номер скрипта 78 в \Arcanum\data\rules\ScriptEyeCandy.mes

Который ссылается на Арт в \Arcanum\data\art\eye_candy\Electric-Light_f.art

 

Почему выкл потом вкл и потом снова выкл ?!

Вот сюда я и хотел прилепить:

magic/tech: adjust (num) by item (obj) used by (obj): store in (num)

То есть получить что то вроде:

0.call script 30354 at line 0 with triggerer Triggerer and attachee Attachee in 100 seconds
1. IF Triggerer has item named 2401
THEN do nothing
ELSE goto line 6
2. drain 1 charges from Triggerer
3. magic/tech: adjust Counter 0 by item Attachee used by Triggerer: store in Local 0
4. IF Triggerer has item named 2401
THEN do nothing
ELSE goto line 6
5. drain 1 charges from Triggerer
6. IF Local 0 <= 1
THEN return and RUN default
7. Counter 1 = 79 + Local 0
8. script eye candy: play Counter 1 on Triggerer
9. return and RUN default
10. script eye candy: stop Counter 1 on Triggerer
11. return and RUN default

И вылетает ошибка:

Unable to determine action OPCODE for all script (num) at line (num) with (obj) (obj) and (obj) (obj) in (num) seconds

on line 0

Error parsing script: Unknown opcode "0. all script 30354 at line 0 with triggerer Triggerer and attachee Attachee in 100 seconds" on line 0

 

Есть идеи?

Человек - это звучит горько.

Мы родились - распался СССР, пошли в школу - начался дефолт, поступили в универ - начался кризис, закончим универ - конец света. Ну прям поколение лохов.

Опубликовано

Рекомендуется внимательно прочитать официальный мануал по моддингу от Тройки.

Там есть ответы на вопросы. Например, полезно посмотреть там таблицу номеров Script Attachment Points, описание команды "return and RUN default" и т.д. и т.п.

 

 

 

 

P.S.

ScriptEd - это инструмент для опытных моддеров. ScriptEd не терпит пропущенных пробелов и прочих опечаток пользователя.

Борітеся – поборете, Вам Бог помагає!

За вас Правда, за вас Слава і Воля святая!

Опубликовано

gamer_777

Спасибо, от сюда я и черпал понимания как что работает, а вот про таблицу спасибо.

И все равно одних описаний мало.

 

PS. видать это не мое.

Человек - это звучит горько.

Мы родились - распался СССР, пошли в школу - начался дефолт, поступили в универ - начался кризис, закончим универ - конец света. Ну прям поколение лохов.

  • 1 год спустя...
Опубликовано
А есть адекватный редактор скриптов с возможностью сохранять всё свое безобразие в какой-нибудь TXT ?

ScriptEd 1.0 beta 2 by Dj Unique: File → Save Script As… → Plain Text (*.txt)

И москаль, и хохол — хитрые люди, и хитрость обоих выражается в притворстве: первый любит притворяться дураком, а второй умным. © В.О. Ключевский.

  • 7 месяцев спустя...
Опубликовано

Друзья!

Спешу поделиться своей радостью! :yahoo:

Я наконец-то сумел с помощью скриптов реализовать аналог "HeartBeat" для неживых объектов.

Более того, смог сделать так, что этот "хёртбит" работает только тогда, когда объект выключен. Это позволяет без труда включать выключеные объекты в соответствии с заданными условиями.

Поразительно!

 

Прикреплять файлы я, к сожалению, не умею, по этому если кому-то интересно - пишите в ЛС.

Искренне ваш, Алкор.

  • 1 год спустя...
Опубликовано
Приветствую! Помогите написать скрипт. Мне нужно, чтобы после float line 200 above Attachee, npc сам со мной заговорил.
Конкретнее пиши всё. В каком скрипте у тебя находится строчка "float line 200 above Attachee"? Это один из скриптов нужного тебе NPC или какой-то другой скрипт?
Technology.gifArachnid-2.gif
  • 4 недели спустя...
Опубликовано

Ковыряю свой скрипт, на этот раз симулирующий разлет дроби у дробовика. Алгоритм такой, что при стрельбе в даль 5 дробинок распределяются по криттерам поблизости от цели.

 

Вот по распрделению дробинок и вопрос:

Кандидаты в цели - не-союзные не-лежачие криттеры в прямой видимости на расстоянии < 13. Каждый проходит импровизированную проверку попадания-уклонения, а перед ней - на сколько сильно он отстоит от прямой между стреляющим и целью. Для этого использую неравенство треугольника (расстояния стреляющий-цель, стреляющий-криттер и цель-криттер) - сумма двух кратчайших сторон минус длина длиннейшей. Разность больше одного - криттер отметается и смотрим следуюший.

 

Внимание, вопрос: почему тогда здесь был задет второй кайт, если он отстоит от прямой существенно дальше, чем надо, чтобы он был отброшен по признаку расстояния? Это у игры такая геометрия, или я напортачил в скрипте (который я для приличия все же несколько раз перепроверил)?

Скриншот

Опубликовано
Ковыряю свой скрипт, на этот раз симулирующий разлет дроби у дробовика. Алгоритм такой, что при стрельбе в даль 5 дробинок распределяются по криттерам поблизости от цели.

 

Кандидаты в цели - не-союзные не-лежачие криттеры в прямой видимости на расстоянии < 13. Каждый проходит импровизированную проверку попадания-уклонения, а перед ней - на сколько сильно он отстоит от прямой между стреляющим и целью. Для этого использую неравенство треугольника (расстояния стреляющий-цель, стреляющий-криттер и цель-криттер) - сумма двух кратчайших сторон минус длина длиннейшей. Разность больше одного - криттер отметается и смотрим следуюший.

 

Внимание, вопрос: почему тогда здесь был задет второй кайт, если он отстоит от прямой существенно дальше, чем надо, чтобы он был отброшен по признаку расстояния? Это у игры такая геометрия, или я напортачил в скрипте (который я для приличия все же несколько раз перепроверил)?

Если я верно понял твои объяснения, то нет ничего удивительного в том, что второй кайт был задет. Особенно если учесть, что в Аркануме сетка координат задаётся гексагональными ячейками, а так же учесть их относительно большой размер. На глаз у тебя между стреляющим и целью расстояние составляет 9 клеток, между целью и криттером - 3 клетки, между стреляющим и криттером - 11 клеток. А это вполне удовлетворяет твоему условию: 9 + 3 - 11 = 1.

 

В принципе ты можешь легко посмотреть какие точно расстояния у тебя между целями. Просто добавь к скрипту файл диалога с 16 строчками, в которых запиши номера от 0 до 15. Поле сохранения расстояния между какими-то двумя существами в переменную Local 0, отобрази его командой "print line Local 0 above Triggerer".

Technology.gifArachnid-2.gif

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

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

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

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...