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

 
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  
Сейчас онлайн стрима нет!
Сейчас на сервере никого нет!

Обязательно все ознакомьтесь с новыми Правилами Портала!

Актуальные новости:
IP сервера изменён! Новый IP: 45.144.64.229. Сервер также доступен через Westwood Online (XWIS, игру через сервер)


Важные темы:
Как играть по сети? Понятное руководство!
Правила Сервера NoxWorld.
Как помочь форуму финансово?

Автор Тема: Скрипты, описание функций, команд и т. д.  (Прочитано 12772 раз)

0 Пользователей и 1 Гость смотрят эту тему.

pss88

  • Постоялец
  • **
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 81
    • Просмотр профиля
    • Awards

Тут можно спрашивать? Или тут только можно "делиться" знаниями? :)
Вернусь к переменным.
1) Можно ли объявлять глобальные переменные? Если да, то как? Если нет, то почему?
2) Почему на всех картах объекты присваиваются только глобальным переменным и только при инициализации карты? Можно ли их присваивать локальным? Или так не делают, потому что будут тормоза?
Записан

Deneir

  • aka Horrrendus
  • Постоялец
  • **
  • Карма: 9
  • Оффлайн Оффлайн
  • Сообщений: 93
  • Царь Драконов
  • Awards За захватывающую повесть Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • http://arcanumnoxclan.ucoz.ru
    • Awards

С первым вопросом и "да" и "нет" выходит. Глобальные переменные считываются и объявляются для всех приложений в екзешнике. Это я выяснил точно. Можно их менять, можно резервировать память для своих констант, но:
1) Для этого придётся декомпелировать екзешник, что требует хорошего дизассемблера;
2) Придётся переписать екзешник с полученными изменениями, что само по себе дело гиблое, т.к. современные компьютеры используют более совершенную методику управления флагами и регистрами, нежели 9 лет назад.
3) И желание что-то менять сразу проподает, когда видишь, что дизассемблер выдаёт 700000 строк программного кода...
Записан
Если Драконы превращают быль в сказку, то Драконьи Цари обращают в Легенду жизнь.

Dio

  • Глобальный модератор
  • Старожил
  • **
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 1274
  • Некромансеры "живы"!
  • Awards Орден 'За заслуги перед форумом I степени' Активным участникам сходок - 2013 За разгадку главного секрета Nox За релиз ЮниМода За набор курсоров для Windows Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Глобальные переменные можно объявлять, они могут соддержать то же самое что и локальные, разница в том что с локальными удобно когда все происходит в одной функции, а не 9999 Глобальных переменных, разницу в производительности сложно заметить....
Объекты можно присваивать и локальным переменным, но опять таки они могут быть использованы только в данной функции
Записан
Пользуйтесь UniMod-ом.

pss88

  • Постоялец
  • **
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 81
    • Просмотр профиля
    • Awards

Спасибо. Но как их (глобальные) объявлять-то?
Записан

Dio

  • Глобальный модератор
  • Старожил
  • **
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 1274
  • Некромансеры "живы"!
  • Awards Орден 'За заслуги перед форумом I степени' Активным участникам сходок - 2013 За разгадку главного секрета Nox За релиз ЮниМода За набор курсоров для Windows Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

вообще,вот пример... (в данном случае объявил в Глобал) (объект бочка)
Gvar4 = object("barrel")
Но вообще читай второй пост темы.....
Записан
Пользуйтесь UniMod-ом.

pss88

  • Постоялец
  • **
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 81
    • Просмотр профиля
    • Awards

Т.е. просто использовать ее где-то и она объявется автоматически? Т.е. если на карте не было Gvar30, а я написал "Gvar30 = что-то", то она будет считаться объявленной и известной из всех функций (скриптов) это карты?
Записан

Katarsis

  • Старожил
  • *****
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 726
  • Возрождение
  • Awards Медаль 'За написание статьи о маге' Активным участникам сходок - 2013 3 конкурс карт - лучший геймплей 3 конкурс карт - выбор администрации Знак 'Создателю самых уютных болот'
    • Просмотр профиля
    • Awards

вообще,вот пример... (в данном случае объявил в Глобал) (объект бочка)
Gvar4 = object("barrel")
Но вообще читай второй пост темы.....


и какая же именно бочка будет заключена в переменной?
Записан

Dio

  • Глобальный модератор
  • Старожил
  • **
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 1274
  • Некромансеры "живы"!
  • Awards Орден 'За заслуги перед форумом I степени' Активным участникам сходок - 2013 За разгадку главного секрета Nox За релиз ЮниМода За набор курсоров для Windows Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Которой нет на свете...
Что бы подключать объекты которые имеются, есть у них такой параметр, Как Сриптовое имя.. Skript name вроде бы, и при создании переменных надо ссылаться на это имя
Записан
Пользуйтесь UniMod-ом.

Dio

  • Глобальный модератор
  • Старожил
  • **
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 1274
  • Некромансеры "живы"!
  • Awards Орден 'За заслуги перед форумом I степени' Активным участникам сходок - 2013 За разгадку главного секрета Nox За релиз ЮниМода За набор курсоров для Windows Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

мб доработать скриптовый язык?
Записан
Пользуйтесь UniMod-ом.

TheSim

  • Клан "NoX Craft"
  • Постоялец
  • *
  • Карма: 31
  • Оффлайн Оффлайн
  • Сообщений: 287
  • Awards Активным участникам сходок - 2013 За релиз ЮниМода Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Можно, но что ты под этим понимаешь? Через UniMod можно вообще его заменить, а вот без патча особо ничего не сделаешь. ну синтаксис редактора поменять можно, ну функции недокументированные описать, но их мала и они не интересные
Записан

Dio

  • Глобальный модератор
  • Старожил
  • **
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 1274
  • Некромансеры "живы"!
  • Awards Орден 'За заслуги перед форумом I степени' Активным участникам сходок - 2013 За разгадку главного секрета Nox За релиз ЮниМода За набор курсоров для Windows Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

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

pss88

  • Постоялец
  • **
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 81
    • Просмотр профиля
    • Awards

Да вообще, нужно бы, по-хорошему, для модбокса встроенные редакторы сделать. Как я понял, еще никто полностью не расшифровал коды модбокса. Так что и в ноксе это будет проблематично корректно заменить. Или все-таки кто-то расшифровал?  ;)
Записан

Katarsis

  • Старожил
  • *****
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 726
  • Возрождение
  • Awards Медаль 'За написание статьи о маге' Активным участникам сходок - 2013 3 конкурс карт - лучший геймплей 3 конкурс карт - выбор администрации Знак 'Создателю самых уютных болот'
    • Просмотр профиля
    • Awards

встроенные редакторы модбокса - это содержимое кнопочек Enchants, Doors, Inventory итд. За расшифровкой модбокса лезь на буржуйский форум - там же ж его и создали, значит, наверное, знали что делали  :)
Записан

pss88

  • Постоялец
  • **
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 81
    • Просмотр профиля
    • Awards

Вот именно: если бы знали - сделали бы редакторики. А то приходится самому все вбивать: чуть ошибешься - крэш.
Записан

Katarsis

  • Старожил
  • *****
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 726
  • Возрождение
  • Awards Медаль 'За написание статьи о маге' Активным участникам сходок - 2013 3 конкурс карт - лучший геймплей 3 конкурс карт - выбор администрации Знак 'Создателю самых уютных болот'
    • Просмотр профиля
    • Awards

а во что ты вбиваешь модбокс так часто? да еще и вручную? для экипировки достаточно ввести шесть пар нулей для нормального объекта (00 00 00 00 00 00) а остальных объектов, требующих модбоксов не так много, чтобы не иметь к ним рабочего варианта для копипаста...
Записан

corshyn

  • Постоялец
  • **
  • Карма: 2
  • Оффлайн Оффлайн
  • Сообщений: 65
  • Подпись под аватаром
    • Просмотр профиля
    • Awards

Оу, уже вникаете в скрипты? Хорошо, давно я этим не забавлялся, да и карты вроде оставались, надо будет заняться...
Я поскольку самоучка, мне приятно видеть что опыт так передаётся. Чтобы было вам свободнее в этом деле добавлю:  для многих скриптов, играет важную вещь что : "Gvar1" - это тот объект, который активирует саму функцию в игре. Это классный способ сделать ловушку. К примеру, поставить "Death Ray" со статуи или ещё чего, на "Gvar1". И получается что, статуя шарашит по тому кто нажмёт на активатор :)
« Последнее редактирование: 04/01/2010 23:46:08 от corshyn »
Записан

Katarsis

  • Старожил
  • *****
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 726
  • Возрождение
  • Awards Медаль 'За написание статьи о маге' Активным участникам сходок - 2013 3 конкурс карт - лучший геймплей 3 конкурс карт - выбор администрации Знак 'Создателю самых уютных болот'
    • Просмотр профиля
    • Awards

Gvar1 == GetCaller()

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

P.S.

скриптить я научился благодаря туториалу хорошего буржуя FF&Invisible Point с http://www.noxforum.net/
сам тутор лежит по адресу
P.P.S.
после того как надоело ждать аналогичного на русском языке
Записан

corshyn

  • Постоялец
  • **
  • Карма: 2
  • Оффлайн Оффлайн
  • Сообщений: 65
  • Подпись под аватаром
    • Просмотр профиля
    • Awards

Я тоже от туда начинал.
Spoiler (click to show/hide)
Записан

Katarsis

  • Старожил
  • *****
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 726
  • Возрождение
  • Awards Медаль 'За написание статьи о маге' Активным участникам сходок - 2013 3 конкурс карт - лучший геймплей 3 конкурс карт - выбор администрации Знак 'Создателю самых уютных болот'
    • Просмотр профиля
    • Awards

ты путаешь GetCaller и GetHost  :) :) :) могу еще вспомнить что Gvar1 это тот кто вызвал скрипт, а Gvar0 это тот, кто конкретно запустил скрипт - кнопка напрмер, или рычаг
Записан

Katarsis

  • Старожил
  • *****
  • Карма: 99
  • Оффлайн Оффлайн
  • Сообщений: 726
  • Возрождение
  • Awards Медаль 'За написание статьи о маге' Активным участникам сходок - 2013 3 конкурс карт - лучший геймплей 3 конкурс карт - выбор администрации Знак 'Создателю самых уютных болот'
    • Просмотр профиля
    • Awards

Примечания: Был обнаружен такой баг: когда вы в первый раз лоадите карту  то все работает гуд, во второй скрипты не работают, а в третий  наступает креш. Если перезапустить игру цикл повториться.
Записан
Расширенный поиск  
 

Страница сгенерирована за 0.068 секунд. Запросов: 21.