NoX World - форум об игре NoX

Всё остальное => Архив => Картостроение, скриптинг и моддинг => Тема начата: pss88 от 02/12/2009 23:53:57

Название: Скрипты, описание функций, команд и т. д.
Отправлено: pss88 от 02/12/2009 23:53:57
Тут можно спрашивать? Или тут только можно "делиться" знаниями? :)
Вернусь к переменным.
1) Можно ли объявлять глобальные переменные? Если да, то как? Если нет, то почему?
2) Почему на всех картах объекты присваиваются только глобальным переменным и только при инициализации карты? Можно ли их присваивать локальным? Или так не делают, потому что будут тормоза?
Название: Скрипты, описание функций, команд и т. д.
Отправлено: Deneir от 03/12/2009 10:46:13
С первым вопросом и "да" и "нет" выходит. Глобальные переменные считываются и объявляются для всех приложений в екзешнике. Это я выяснил точно. Можно их менять, можно резервировать память для своих констант, но:
1) Для этого придётся декомпелировать екзешник, что требует хорошего дизассемблера;
2) Придётся переписать екзешник с полученными изменениями, что само по себе дело гиблое, т.к. современные компьютеры используют более совершенную методику управления флагами и регистрами, нежели 9 лет назад.
3) И желание что-то менять сразу проподает, когда видишь, что дизассемблер выдаёт 700000 строк программного кода...
Название: Скрипты, описание функций, команд и т. д.
Отправлено: Dio от 03/12/2009 15:08:37
Глобальные переменные можно объявлять, они могут соддержать то же самое что и локальные, разница в том что с локальными удобно когда все происходит в одной функции, а не 9999 Глобальных переменных, разницу в производительности сложно заметить....
Объекты можно присваивать и локальным переменным, но опять таки они могут быть использованы только в данной функции
Название: Скрипты, описание функций, команд и т. д.
Отправлено: pss88 от 03/12/2009 17:14:26
Спасибо. Но как их (глобальные) объявлять-то?
Название: Скрипты, описание функций, команд и т. д.
Отправлено: Dio от 03/12/2009 17:25:20
вообще,вот пример... (в данном случае объявил в Глобал) (объект бочка)
Gvar4 = object("barrel")
Но вообще читай второй пост темы.....
Название: Скрипты, описание функций, команд и т. д.
Отправлено: pss88 от 03/12/2009 21:01:19
Т.е. просто использовать ее где-то и она объявется автоматически? Т.е. если на карте не было Gvar30, а я написал "Gvar30 = что-то", то она будет считаться объявленной и известной из всех функций (скриптов) это карты?
Название: Скрипты, описание функций, команд и т. д.
Отправлено: Katarsis от 03/12/2009 21:12:43
вообще,вот пример... (в данном случае объявил в Глобал) (объект бочка)
Gvar4 = object("barrel")
Но вообще читай второй пост темы.....


и какая же именно бочка будет заключена в переменной?
Название: Скрипты, описание функций, команд и т. д.
Отправлено: Dio от 04/12/2009 16:20:38
Которой нет на свете...
Что бы подключать объекты которые имеются, есть у них такой параметр, Как Сриптовое имя.. Skript name вроде бы, и при создании переменных надо ссылаться на это имя
Название: Скрипты, описание функций, команд и т. д.
Отправлено: Dio от 15/12/2009 15:33:13
мб доработать скриптовый язык?
Название: Скрипты, описание функций, команд и т. д.
Отправлено: TheSim от 15/12/2009 20:19:22
Можно, но что ты под этим понимаешь? Через UniMod можно вообще его заменить, а вот без патча особо ничего не сделаешь. ну синтаксис редактора поменять можно, ну функции недокументированные описать, но их мала и они не интересные
Название: Скрипты, описание функций, команд и т. д.
Отправлено: Dio от 15/12/2009 20:40:56
я бы хотел стабилизировать это все дело, например у меня скриптовый диалог работает неадекватно приходиться его по 100 раз открывать и закрывать, и еще доработка к ноксу: при обнаружение ошибки например в мод боксе игру не выбрасывало в меню, а глючный объект просто вырубался
Название: Скрипты, описание функций, команд и т. д.
Отправлено: pss88 от 16/12/2009 01:28:15
Да вообще, нужно бы, по-хорошему, для модбокса встроенные редакторы сделать. Как я понял, еще никто полностью не расшифровал коды модбокса. Так что и в ноксе это будет проблематично корректно заменить. Или все-таки кто-то расшифровал?  ;)
Название: Скрипты, описание функций, команд и т. д.
Отправлено: Katarsis от 16/12/2009 08:41:25
встроенные редакторы модбокса - это содержимое кнопочек Enchants, Doors, Inventory итд. За расшифровкой модбокса лезь на буржуйский форум - там же ж его и создали, значит, наверное, знали что делали  :)
Название: Скрипты, описание функций, команд и т. д.
Отправлено: pss88 от 16/12/2009 10:26:04
Вот именно: если бы знали - сделали бы редакторики. А то приходится самому все вбивать: чуть ошибешься - крэш.
Название: Скрипты, описание функций, команд и т. д.
Отправлено: Katarsis от 16/12/2009 16:19:28
а во что ты вбиваешь модбокс так часто? да еще и вручную? для экипировки достаточно ввести шесть пар нулей для нормального объекта (00 00 00 00 00 00) а остальных объектов, требующих модбоксов не так много, чтобы не иметь к ним рабочего варианта для копипаста...
Название: Скрипты, описание функций, команд и т. д.
Отправлено: corshyn от 04/01/2010 23:42:49
Оу, уже вникаете в скрипты? Хорошо, давно я этим не забавлялся, да и карты вроде оставались, надо будет заняться...
Я поскольку самоучка, мне приятно видеть что опыт так передаётся. Чтобы было вам свободнее в этом деле добавлю:  для многих скриптов, играет важную вещь что : "Gvar1" - это тот объект, который активирует саму функцию в игре. Это классный способ сделать ловушку. К примеру, поставить "Death Ray" со статуи или ещё чего, на "Gvar1". И получается что, статуя шарашит по тому кто нажмёт на активатор :)
Название: Скрипты, описание функций, команд и т. д.
Отправлено: Katarsis от 05/01/2010 03:37:29
Gvar1 == GetCaller()

данное выражение будет иметь значение True  :)

P.S.

скриптить я научился благодаря туториалу хорошего буржуя FF&Invisible Point с http://www.noxforum.net/ (http://www.noxforum.net/)
сам тутор лежит по адресу (http://noxhub.net/templar/index.php?page=Mapeditor_Tutorials&tuts=text3.xhtml)
P.P.S.
после того как надоело ждать аналогичного на русском языке
Название: Скрипты, описание функций, команд и т. д.
Отправлено: corshyn от 06/01/2010 21:07:25
Я тоже от туда начинал.
Название: Скрипты, описание функций, команд и т. д.
Отправлено: Katarsis от 07/01/2010 09:01:23
ты путаешь GetCaller и GetHost  :) :) :) могу еще вспомнить что Gvar1 это тот кто вызвал скрипт, а Gvar0 это тот, кто конкретно запустил скрипт - кнопка напрмер, или рычаг
Название: Скрипты, описание функций, команд и т. д.
Отправлено: Katarsis от 24/03/2010 09:19:05
Примечания: Был обнаружен такой баг: когда вы в первый раз лоадите карту  то все работает гуд, во второй скрипты не работают, а в третий  наступает креш. Если перезапустить игру цикл повториться.