Hexen 2 Russian Fans Суббота
2024-04-27
01:41:48
Приветствую Вас Гость | RSS Главная страница | Скрипты! - Страница 2 - Форум | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: DraculaX, RaVeN, Reiko  
Форум » Редактирование игр » Редактирование игр Heretic, Hexen » Скрипты!
Скрипты!
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
blink что за фигня я вроде прикреплял

Добавлено (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, Ты не поверишь biggrin
Все равно не понимаю при чем тут колокол? и mapvar0? и что делает переменная bell? wacko одни вопросы
P.S. после десятого удара я через каждые 2 удара бегал смотреть не открылась ли дверь. crazy не открылась.
 
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, Ударил по колоколу, враги умерли побежал за ключом и опять dry
Можно ли переделать скрипты? Чтобы дверь открывалась просто ключом, а после убийства Традуктуса опустился пол?
 
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
У меня два вопроса:
первый -- хочется сделать скрипт на смену освещения сектора в течение некоторого времени, сделать некий цикл с минимумом и максимумом, и рядом промежуточных состояний. Тут как я понимаю самый важный момент -- написать скрипт "часов", ну а потом к определенным их показаниям привязать извменения освещения. Так вот, как это сделать, а? biggrin
второй вопрос (м.б. частично связан с декорейтом, но думаю тут без скриптов не обойтись) -- необходимо чтобы некий актор притягивал к себе другой актор, причем это будет состояние атаки. Чтото типа вампирессы из сакреда biggrin . По простому я так понял это не сделать, на отталкивание можно придумать много разных вариантов, а вот на притягивание... wacko


 
HereticДата: Понедельник, 2012-12-31, 14:22:54 | Сообщение # 29
Ψ ωοrld ξνil Ψ
Группа: Администраторы
Сообщений: 1165
Статус: Offline
Цитата (Heretic)
второй вопрос (м.б. частично связан с декорейтом, но думаю тут без скриптов не обойтись) -- необходимо чтобы некий актор притягивал к себе другой актор

Похоже, я понял как это сделать. По крайней мере в общих чертах biggrin


 
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
 
Форум » Редактирование игр » Редактирование игр Heretic, Hexen » Скрипты!
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:


Hexen 2 Russian Fans © 2006-2024 Хостинг от uCoz