Скрипты!
|
|
DraculaX | Дата: Пятница, 2011-05-20, 16:56:52 | Сообщение # 16 |
Sεrpεñτ Rιdεr
Группа: Хранители
Сообщений: 2435
Статус: Offline
| Shadowcaster, дык ты карту нам выложи, я посмотрю. Может быть там действительно нет никакого смысла.
Только тот кто прошел тяжелое испытание сможет получить аудиенцию у Эйдолона ©
|
|
| |
Shadowcaster | Дата: Пятница, 2011-05-20, 17:17:49 | Сообщение # 17 |
Стремящийся
Группа: Пользователи
Сообщений: 33
Статус: Offline
| что за фигня я вроде прикреплял Добавлено (2011-05-20, 17:08:29) --------------------------------------------- http://www.moddb.com/downloads/start/7222 Добавлено (2011-05-20, 17:17:49) --------------------------------------------- карта 03
|
|
| |
DraculaX | Дата: Пятница, 2011-05-20, 20:58:51 | Сообщение # 18 |
Sεrpεñτ Rιdεr
Группа: Хранители
Сообщений: 2435
Статус: Offline
| Всё ясно... Shadowcaster, сколько всего раз бил по колоколу? Истина оказалась даже ближе, чем я думал. Тут две основные переменные - mapvar0 и bell. Первая встречается в скриптах 1, 4, 12, 18 и в нашем скрипте 8. В скриптах 4 и 12 переменной mapvar0 задаётся равенство единичке. Code Script 4 (void) { printbold(s:"REGINALD HAS BEEN DEFEATED"); mapvar0 = 1; }
Script 12 (void) { mapvar0 = 1; print(s:"EMERALD KEY"); } Самое ужасное, что смысла в этом нет, так как у нас есть скрипт 1 Code Script 1 open { mapvar0 = 1; Этот срипт срабатывает сразу после запуска карты, и наша переменная уже вначале становится равной единице. Больше она нигде не фигурирует и её значение не меняется. Время поджимает, мне надо бежать, допишу позже! Может, в воскресенье... а пока протестируйте 10 или больше ударов по колоколу!
Только тот кто прошел тяжелое испытание сможет получить аудиенцию у Эйдолона ©
|
|
| |
Shadowcaster | Дата: Суббота, 2011-05-21, 15:47:54 | Сообщение # 19 |
Стремящийся
Группа: Пользователи
Сообщений: 33
Статус: Offline
| DraculaX, Ты не поверишь Все равно не понимаю при чем тут колокол? и mapvar0? и что делает переменная bell? одни вопросы P.S. после десятого удара я через каждые 2 удара бегал смотреть не открылась ли дверь. не открылась.
|
|
| |
DraculaX | Дата: Вторник, 2011-05-24, 01:22:43 | Сообщение # 20 |
Sεrpεñτ Rιdεr
Группа: Хранители
Сообщений: 2435
Статус: Offline
| Shadowcaster, ты не поверишь. Переменная - это такая штука, которую можно назвать как угодно и менять её значение в зависимости от нужды. В данном случае есть переменная mapvar0, но можно её назвать хоть trankvilizator. К переменной привязываются условия. Например, если переменная parasha равна единице, открывается дверь. Если parasha равна двойке, опускается пол... и т.д. От того она и называется переменной, что её можно менять.
Итак, по скриптам на карте у нас имеется следующее - переменная mapvar0 изначально равна единице. Один раз ударили по колоколу, она стала равна нулю ( mapvar0 = 0; ). Далее бежим за Emerald Key. При подхвате ключа срабатывает скрипт 12, который возвращает переменной равенство единице ( mapvar0 = 1; ). Каждый удар по колоколу срабатывает только при переменной mapvar0 равной единице, и увеличивает на единицу переменную bell ( bell++; ) Т.е. если наша переменная mapvar0 равная нулю, то хоть обстучись головой об колокол, ничего не произойдёт.
А дальше в нашем скрипте идут условия:
if(bell == 1) - т.е. если переменная bell равна единице, то mapvar0 = 0; Thing_Destroy(49); print(s:"YOU HAVE KILLED YOUR ENEMIES"); terminate;, т.е. переменная mapvar0 приравнивается к нулю (т.е. удар по колоколу больше не будет действовать, пока не приравняем mapvar0 снова к единице), убиваем всех монстров с tid=49 и выводим сообщение "YOU HAVE KILLED YOUR ENEMIES". А потом убиваем скрипт с помощью параметра terminate;
if(bell == 3) - т.е. если переменная bell равна трём (после трёх ударов), то mapvar0 = 0; prepared = 1; print(s:"YOU ARE PREPARED FOR BATTLE"); terminate;, что произойдёт (подсказка - prepared - это ещё одна переменная)?
И главный вопрос: if(bell == 7) - т.е. если переменная bell равна семи, что произойдёт?
Только тот кто прошел тяжелое испытание сможет получить аудиенцию у Эйдолона ©
Сообщение отредактировал DraculaX - Вторник, 2011-05-24, 01:38:43 |
|
| |
DraculaX | Дата: Вторник, 2011-05-24, 01:30:31 | Сообщение # 21 |
Sεrpεñτ Rιdεr
Группа: Хранители
Сообщений: 2435
Статус: Offline
| Quote (Shadowcaster) P.S. после десятого удара я через каждые 2 удара бегал смотреть не открылась ли дверь. не открылась. А никакая дверь и не должна открыться. Я перечислял все возможные варианты событий, происходящих после ударов по колоколу. Читай внимательнее.
Только тот кто прошел тяжелое испытание сможет получить аудиенцию у Эйдолона ©
|
|
| |
DraculaX | Дата: Вторник, 2011-05-24, 01:43:43 | Сообщение # 22 |
Sεrpεñτ Rιdεr
Группа: Хранители
Сообщений: 2435
Статус: Offline
| Мой вердикт, после изучения скриптов: скрипты написаны неграмотно и много косяков (перечислять которые бесполезно), поэтому разбирать их не имеет смысла. Предложите мне другие примеры для разбора, если хотите понять как всё устроено в скриптах.
P.S.: Эта тема называется Скрипты, так что, здесь обсуждаем скрипты, а не пытаемся понять как работает какой-то там колокол.
Только тот кто прошел тяжелое испытание сможет получить аудиенцию у Эйдолона ©
Сообщение отредактировал DraculaX - Вторник, 2011-05-24, 01:50:47 |
|
| |
Shadowcaster | Дата: Вторник, 2011-05-24, 14:01:21 | Сообщение # 23 |
Стремящийся
Группа: Пользователи
Сообщений: 33
Статус: Offline
| DraculaX, Ударил по колоколу, враги умерли побежал за ключом и опять Можно ли переделать скрипты? Чтобы дверь открывалась просто ключом, а после убийства Традуктуса опустился пол?
|
|
| |
DraculaX | Дата: Вторник, 2011-05-24, 16:00:33 | Сообщение # 24 |
Sεrpεñτ Rιdεr
Группа: Хранители
Сообщений: 2435
Статус: Offline
| Можно сделать всё, что угодно. Но какой смысл ковырять чужие, да притом ещё и старые вады? Проще создать новый.
Если автор этого вада решил сделать так, значит так и должно быть. На всё воля автора.
Только тот кто прошел тяжелое испытание сможет получить аудиенцию у Эйдолона ©
Сообщение отредактировал DraculaX - Вторник, 2011-05-24, 16:04:34 |
|
| |
Reiko | Дата: Среда, 2011-06-01, 18:44:41 | Сообщение # 25 |
Темный воин внешнего мира
Группа: Модераторы
Сообщений: 2482
Статус: Offline
| Раз уж такая пьянка пошла, то как декомпилировать файлы скриптов *.o ?
аниме спасет мир :3
|
|
| |
Morg | Дата: Пятница, 2011-08-26, 10:19:06 | Сообщение # 26 |
Неизвестный
Группа: Пользователи
Сообщений: 2
Статус: Offline
| ACS скрипты же...
Вщщь!
|
|
| |
LeonidM | Дата: Пятница, 2012-04-20, 16:52:43 | Сообщение # 27 |
Начинающий
Группа: Пользователи
Сообщений: 6
Статус: Offline
| Написал скрипт, пытаюсь запустить карту и думбилдер пишет что ошибка в скрипте. Что не так?
Скрипт: Code SCRIPT 1 (void) { 76:TeleportOther ( 3, 4, 1 ); terminate; }
Сообщение отредактировал LeonidM - Пятница, 2012-04-20, 18:16:16 |
|
| |
Heretic | Дата: Понедельник, 2012-12-31, 01:45:16 | Сообщение # 28 |
Ψ ωοrld ξνil Ψ
Группа: Администраторы
Сообщений: 1165
Статус: Offline
| У меня два вопроса: первый -- хочется сделать скрипт на смену освещения сектора в течение некоторого времени, сделать некий цикл с минимумом и максимумом, и рядом промежуточных состояний. Тут как я понимаю самый важный момент -- написать скрипт "часов", ну а потом к определенным их показаниям привязать извменения освещения. Так вот, как это сделать, а? второй вопрос (м.б. частично связан с декорейтом, но думаю тут без скриптов не обойтись) -- необходимо чтобы некий актор притягивал к себе другой актор, причем это будет состояние атаки. Чтото типа вампирессы из сакреда . По простому я так понял это не сделать, на отталкивание можно придумать много разных вариантов, а вот на притягивание...
|
|
| |
Heretic | Дата: Понедельник, 2012-12-31, 14:22:54 | Сообщение # 29 |
Ψ ωοrld ξνil Ψ
Группа: Администраторы
Сообщений: 1165
Статус: Offline
| Цитата (Heretic) второй вопрос (м.б. частично связан с декорейтом, но думаю тут без скриптов не обойтись) -- необходимо чтобы некий актор притягивал к себе другой актор Похоже, я понял как это сделать. По крайней мере в общих чертах
|
|
| |
Reiko | Дата: Понедельник, 2012-12-31, 15:54:17 | Сообщение # 30 |
Темный воин внешнего мира
Группа: Модераторы
Сообщений: 2482
Статус: Offline
| Цитата (Heretic) первый -- хочется сделать скрипт на смену освещения сектора в течение некоторого времени, сделать некий цикл с минимумом и максимумом, и рядом промежуточных состояний. Тут как я понимаю самый важный момент -- написать скрипт "часов", ну а потом к определенным их показаниям привязать извменения освещения. Так вот, как это сделать, а? ммм можно так попробывать - вначале у нас день, проходит минут 15 (900 сек)и наступает ночь. Значит скрипт примерно такой: delay(900*35); //35 тиков=1сек Light_Fade(Таг сектора, 0, 60); // затемняет сектор(а) delay(900*35); // проходит еще 15 мин Light_Fade(ХЗ, 192, 60); //да будет свет! restart;
что-то вроде этого
аниме спасет мир :3
|
|
| |