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

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

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

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

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


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

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

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

Dio

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

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

Dio

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

Переменные
Переменные бывают двух типов локальные и глобальные, разница в том что глобальные применяются в любых функциях и вообще отвечают за глобальные параметры, а локальные переменные переменные могут быть использованы только в данном случае.
Глобальные переменные могут быть объявлены где угодно и они могут содержать свойство, объект, значение, вайпоинт и остальное.
Вот пример глобальной переменной (в ней заключен объект "ядовитая капуста (полип)")
Gvar5 = object("polyp")Внимание крайне не рекомендую использовать переменные от Gvar1 до Gvar3, скрипт может не работать...
Локальные переменные применяются в какой либо функции, и только в ней. Они задаются непосредственно в скрипте, а так же должны быть заданы в окошке variables.
вот пример локальной переменой в окошке variables
var0[1]Число в квадратных скобках обозначает количество значений и фрагментов которое может вместить переменная.(если значение больше одного то это массив)
Вот пример переменной в скрипте. (в ней заключено значение 1)
var1 = 1
Записан
Пользуйтесь UniMod-ом.

Dio

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

В этой главе за основу скриптов я буду брать кнопки рычаги и т. д.
что бы при нажатие рычага(кнопки) активировался какойто скрипт надо: залезть на эту страничку выбрать тип, например buttons и ввести в строку Script name имя вашего скрипта, потом нажать кнопку Sumbit и появятся заветные хексы, которые надо будет вставить у вашей кнопки в мод бокс...
Простейший скрипт перемещения объекта когда он нажимает кнопку или входите в какую то зону(триггер)
var0 = GetCaller()
var1 = Waypoint("A")
MoveObject(var0,GetWaypointX(var1),GetWaypointY(var1))
в переменной var0 в данном случае хранится информация о том кто нажал кнопку (или вошел в зону - короче запустил скрипт),  в переменной var1 хранится информация о вейпоинте A (на который и будет перемещаться объект) его кстати надо создать. Следующая строка с функцией Moveobject говорит нам что объект (var0) переместиться в икс-координаты и игрек-координаты вейпоинта A.
Добавления на игрока каких нибудь эффектов(заклиннаний)
Прежде всего надо сказать что список всех эффектов и спеллов лежит в папкe ...NoxToolsscripts unctiondescs файл соответствующий (effect)
Сделаем например так что бы когда вы нажимали кнопку на вас ложился шок
var0 = GetCaller()
Enchant(var0,"ENCHANT_SHOCK",f0)
return
Все вам здесь должно быть все знакома кроме функции Enchant(var0,"ENCHANT_SHOCK",f0) var0 это тот на кого ложиться шок, дальше строка ENCHANT_SHOCK это как раз тот самый шок, последние значение F0 обозначает длительность заклинания, я предполагаю что F это секунды, а 0 это время длительности (0 бесконечность) так если Шок длиться 100 секунд то это будет выглядеть так f100.
Вы можете так же добавить перемещение объекта вместе с наложением Шока, вообще на кнопке вроде может быть сколько угодно функций...
                                        Добавление спеллов (изучение)
команда Adwardspell
Пример(для кнопки):
var0 = GetCaller()
AwardSpell(var0,"SPELL_SHOCK")
return
Помня материял изученного вы легко все поймете, на первом месте переменная кому дается спелл, а на втором сам спелл. Все спеллы вы можете найти ...NoxToolsscripts unctiondescs файл соответствующий (Adwardspell)
« Последнее редактирование: 01/12/2009 19:31:42 от Dio »
Записан
Пользуйтесь UniMod-ом.

Ужасающий

  • Постоялец
  • ***
  • Карма: 21
  • Оффлайн Оффлайн
  • Сообщений: 142
  • Awards Медаль 'За честную игру' За написание статей Орден 'За заслуги перед форумом I степени' За модификацию Nox Мастер баланса За хороший Tutorial. (Nekon)
    • Просмотр профиля
    • Awards

Здесь я опишу принцип работы некторых непонятных функций:

SetProperty

Эта фунция позволяет присваивать юнитам (монстрам и неписям) способность вызывать скрипт по проишествии определённого события (например юнит увидел врага или убит)

SetProperty( Arg, Arg, Arg )
SetProperty( юнит, тип события, номер вызывемого скрипта на карте)
образец правильного написания: SetProperty(var1,5,5)

Типы событий:

3: See Enemy
4: Looking for Enemy
5: On Death
6: On Change of Course(Not so sure)
7: When Hurt
9: On Collision
10: Hear Enemy
13: Lost Enemy

Таким образом, SetProperty(var1,5,5) означает: вызвать скрипт номер 5, если юнит var1 умрёт

SetDialog

Эта функция даёт способность юниту говорить - т.е если навести на неё курсор появится иконка разговора, а если - шёлкнуть вызовется скрипт

SetDialog(Arg,Arg,Arg,Arg)
SetDialog(юнит с которым можно будет говорить, тип диалога, вызываемый в начале диалога номер скрипта, вызываемый в конце диалога номер скрипта)
образец правильного написания:SetDialog(var2,"NORMAL",24,15)

SetDialog(var2,"NORMAL",24,15)-  это значит что с юнитом var2 теперь можно разговаривать, тип диалога обычный, в начале разговора будет вызываться скрипт номер 24 на карте, а в конце номер 15
Записан

TheSim

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

По этому поводу предлагаю переименовать SetProperty в SetUnitScript - понятней будет

Также:

в параметрах функций f10 - это значит что число не целое, а дробное (10.0)

Еще для справки -в стандартном ноксе может быть всего 1024 переменные одновременно (т.е. глобальные + все скрипты которые выполняются в данный момент !setFrameTimer - скрипты считаются выполняющимися!)

Кстати, господа - редактор - чтука динамическая - если что-либо поправить в ScriptFunctionList.cs или  добавить новые .rtf в functiondesc - все применится при перезапуске редактора
еще можно в scripts можно создать папку objects в ней defaultmods, а в ней класть файлики <имя объекта>.txt - то при добавлении новых объектов в их mod-байтах сразу будут хексы из этих файликов
Записан

TheSim

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

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

О внутреннем устройстве мод-боксов:
Для каждого объекта в ноксе есть XFer-функция. Какая для кагого объекта - написано в Things.bin
Cписок этих функций лежит начиная с адреса 005C8B48 в формате {указатель на название, указатель на функцию}
Каждая из них получает два аргумента - указатель на вновь создаваемый юнит и некий странный, который очень редко используется.
Затем эта функция начинает читать подряд данные предполагая что они в нужном порядке. Причем никаких границ в файле нету, т.е. она сначала четает похоже поле M40, затем в зависимости от размера читает основные свойства юнита (координаты, цвет, кликабельность и т.п) а затем уже читает каждая свое.


P.S. в ближайшее время почитаю NPC XFer как самую интересную
« Последнее редактирование: 28/12/2009 01:28:06 от TheSim »
Записан

Dio

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

Ох, ох, ох. Сегодня я вам расскажу про создания карты в, который можно будет управлять точкой спамна(создания) предмета.
Прежде всего скажу вам вот что (говорили уже не раз)
1. НЕ пользуйтесь эти редактором.
2. Да же если вы осмелились нарушить пункт один то, никогда НЕ открывайте вкладку scripts в редакторе.
3. НЕ объявляйте лишние переменные.
НУ а теперь приступим к созданию карты (я расскажу основные вещи и выложу саму карту)

Для начало необходимо наделать кнопок всего их будет 6
1. Создания предмета
2. Сброс координат
3. Сложение по оси x
4. Вычитание по оси x
5. Сложение по оси y
6. Вычитание по оси y
Скажу правда только то что эти оси я взял относительно стен.

Ну что же объявим переменные...

Я сделал так:Gvar4 = f2728
Gvar5 = f3163
Gvar6 = Waypoint("x1")
return
Скажу что "f" нужно нам будет для того что бы выполнять арифметические действия.Так же не забывайте объявить переменные в окне Variables.

Далее сделаем например сложение по оси x
Gvar4 = Gvar4 f+ f46
Gvar5 = Gvar5 f+ f46
return
Вот тут то вы можете удивиться что я прибавляю и к икс и к игрек, но я взял оси x и e относительно стен и что бы движение точек было как бы относительно стен надо прибавлять к двух координатам...
Так же заметьте что все операции так же идут с "f'

Вот вам еще для сложение по оси y
Gvar4 = Gvar4 f+ f46
Gvar5 = Gvar5 f- f46

Остальные операции вы можете додумать сами.

Теперь само движение вайпоинта и создание предмета.
Вот скрипт: MoveWaypoint(Gvar6,Gvar4,Gvar5)
Create("Deathball",Gvar6)
return

MoveWaypoint эта функция передвигает вайпоинт. Ее синтаксис таков MoveWaypoint(что, куда по икс, куда по игрек)

И сброс вы можете придумать сами.
Так же вы можете сделать так что бы шар не мог двигаться за границы стен, но когда я так сделал скрипт стал слишком не стабилен.

Сама карта лежит в вложениях.
« Последнее редактирование: 24/03/2010 09:43:23 от Dio »
Записан
Пользуйтесь UniMod-ом.

Dio

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

Теперь что бы генерировать хексы для кнопок и т. д. можно скачать специальную прогу здесь. А не лазить все время сюда
Записан
Пользуйтесь UniMod-ом.

Dio

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

Новый взгляд на моверы.

Помните как в компании за война (war02a или war07g) SpikeBlock такие колючие блоки, которые носились туда сюда. С помощью команды Move это делать муторно, однако имеется другой способ.

Создаем на карте SpikeBlock(да и в принципе любой предмет) и Mover, а так же 2 вайпоинта.

Вновь разберем хекс для мовера (картинку нагло взял с ноксики)

 
Зеленый это скорость мовера (не может быть > FF)
Красный это номер вайпоинта на, который мы указываем что бы мовер ехал на него(для команды Move он не нужен)
Синий это Экстент мовера.
Все в хекс.

Так вот забиваем нужный хекс именно с номером вайпоинта (скоро обновлю хекс генератор, и в нем можно будет генерировать хекс и для моверов)
Связываем этот вайпоинт с другим вайпоинтом, а тот вайпоинт с этим.
И пишем скрипт например в инициализацию
ObjectOn(Object("nameMover"))
return

"nameMover" - это имя мовера

и вуаля.

Карта с примеров во вложениях
Записан
Пользуйтесь UniMod-ом.

mildtroll

  • Пользователь
  • *
  • Карма: 3
  • Оффлайн Оффлайн
  • Сообщений: 55
    • Просмотр профиля
    • Awards

Дио, синим на скрине помечен экстент не вайпоинта, а объекта, к которому привязывается мовер.


з.ы.
спасибо за инфу!
Записан
Vi, som har det iskalla trollblodet...

Dio

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

                                                       Синтаксис скриптов редактора


Эх эта тема меня не сильно бесит да же) ибо вроде как на все синтаксические ошибки он ноет еще во вкладке скриптс.
Вообще скрипты становятся предельно понятны после изучения какого нибудь C++.

                                                           return
Вообще команда ставится самой последней и обозначает конец функции или если взять аналогию то возвращение какого то параметра. Вроде бы как в редакторе можно ставить 2 и более ретурна.

                                                            if
Конструкция бее.. Вообщем сам оператор выглядит так
if УСЛОВИЕ jump #Вместо # ессно номер метки. Так же насчет условия оно должно выглядеть так.
if var0 < 1 jump 2то есть обратите на пробелы.
Так же есть конструкция if not то есть отрицание условия.
                                                           
                                                             Метка и jump
Пишется так
:#Вместо # номер.
Jump в чистом виде выглядит так
jump #Вместо # номер метки.
Вообщем оператор оператор делает прыжок по номеру к метке.
и еще, метка не может находится по коду выше jump.

                                                             Строки
Ну строки как и всегда пишутся в "".

                                                             Общие советы
Всегда делайте пробелы в сложении, присвоение переменным значения и так далее.
Что бы врубить подсветку синтаксиса в новой функции, а так не удаления всего кода "случайно". Залезаете в новую функцию, пишете в нее return и нажимаете "Ok". Все)
Координаты объектов идут как Float. В редакторе что бы обазначить что это float надо писать
var1 = f100
varF1=100 (точно не уверен но такая F вроде бы служит что бы обозначить эту переменную как флоат)
var1= f100 f+ f100

                                                              Пример
Цель: создать 5 мобов, и каждого создавать через 60 кадров после создания предыдущего.
Объявить Gvar4(инициализируем его в манИнициализ) и сделать Вайпоинт A

Create("urchin",Waypoint("A"))
Gvar4 = Gvar4 + 1
if not Gvar4 > 5 jump 1
return
:1
FrameTimer(60,3)
return
Записан
Пользуйтесь UniMod-ом.

TheSim

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

и еще, метка не может находится по коду выше jump.
Вообще это косяк редактора, на самом деле может. Потому некоторые скрипты из оригинальных карт и не сохраняются корректно.
Записан

Perfect

  • Map Editor PRO
  • Старожил
  • *
  • Карма: 125
  • Оффлайн Оффлайн
  • Сообщений: 1148
  • Слушай маму и drum&bass
  • Awards За поддержку форума - 2013 Лучший дизайн 5 конкурса карт Рука форума 2012 3 конкурс карт - лучшая карта 3 конкурс карт - приз Evengard-а за самую большую карту Медаль 'Победитель II конкурса карт' Медаль 'За фантазию и упорство в создании карт - 2011' Лучшая карта
    • Просмотр профиля
    • nÖrange soundcloud
    • Awards

Когда используете условный оператор, помните, что условие равенства и неравенства пишутся так:
if * == * если равны
if * != * если не равны (по сути, это <> )

Несколько функций и их описание...
<hr>
Frozen(Arg1,Arg2) Замораживает объект. В это время объект не может двигаться и совершать какие-либо действия. Также не может быть сдвинут ничем иным. Работает так - Заморожен(Кто,Да/Нет).
WideScreen(Arg) Убирает верх и низ экрана, создавая эффект кинематографии. Работает ШирокийЭкран(Да/Нет)
Effect(Arg1,Arg2,Arg3,Arg4,Arg5) Создаёт эффект арг1 (строка) начиная с координат арг2,арг3 до арг4,арг5. Координаты брать как флоат. Для точечных эффектов писать вместо арг4,арг5 - f0,f0. Для эффекта землетрясения изменять арг4.
Music(Arg1,Arg2) Запускает музыкальный файл арг1 (число) с громкостью арг2 (0..100)
ObjectOn(Arg) Включает объект.
ObjectOff(Arg) Выключает объект.
ObjectToggle(Arg) Меняет состояние объекта вкл/выкл.
SecondTimer(Arg1,Arg2) По прошествии Арг1 секунд запускает скрипт номер Арг2.
Записан

KirConjurer

  • Постоялец
  • ***
  • Карма: 67
  • Оффлайн Оффлайн
  • Сообщений: 246
  • User #1234!
    • Просмотр профиля
    • Awards

Attack(object,object) - заставляет arg1 атаковать arg1.
CancelTimer(timer) - останавливает таймер arg1.
CastSpellFrom(string,float,float,float,float) - кастует спелл arg1 из точки arg2,arg3 в точку arg4,arg5.
ChangeGold(object,int) - изменяет количество золота arg1 на arg2.
Unknownd1(object,int) - добавляет/удаляет (NEG) к числу очков arg1 arg2.
WallToggle(wall) - переключает состояние стены arg1
string FloatToString(float) - конвертирует и возвращает в виде строки arg1.
string IntToString(int) - конвертирует и возвращает в виде строки arg1.
bool HasEnchant(object,string) - возвращает есть ли енчант arg2 на обьекте arg1.
LookAtObject(object,object) - заставляет arg1 смотреть на arg2.
int Random(int,int) - возвращает случайное число в диапазоне между arg1 и arg2.
float RandomFloat(float,float) - возвращает случайное число с плавающей точкой в диапазоне между arg1 и arg2.
SetProperty(object,int,int) - заставляет arg1 при ситуации обозначенной arg2 вызывать скрипт arg3.
SetGuardSpot(object,float,float,float,float,float) - заставляет arg1 двигаться к точке arg2 и arg3 и охранять позицию обозначенную arg4 и arg5 и атаковать всех кто перейдет границу arg6.
А вообще, не вижу смысла перечислять описания всех функций...
Допустимые значения arg2 функции Music:
1 - Chapter 1
2 - Chapter 2 Wizard
3 - Chapter 2 Conjurer
4 - Chapter 2 Warrior
5 - Chapter 3
6 - Chapter 4
7 - Chapter 5
8 - Chapter 6
9 - Chapter 7
10 - Chapter 8
11 - Chapter 9
12 - Chapter A
13 - Chapter B
14 - Title
15 - Town 1
16 - Town 2
17 - Town 3
18 - Sub 1
19 - Sub 2
20 - Sub 3
21 - Wander1
22 - Wander 2
23 - Wander 3
24 - Credits
25 - Shell
26 - Action 1
27 - Action 2
28 - Action 3
29 - Wander
Записан

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 186
  • Оффлайн Оффлайн
  • Сообщений: 2728
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards

а arg1 у music это что?
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

TheSim

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

Евен! Удивлен весьма - ты же в базе посмотреть можешь на script###
Записан

Perfect

  • Map Editor PRO
  • Старожил
  • *
  • Карма: 125
  • Оффлайн Оффлайн
  • Сообщений: 1148
  • Слушай маму и drum&bass
  • Awards За поддержку форума - 2013 Лучший дизайн 5 конкурса карт Рука форума 2012 3 конкурс карт - лучшая карта 3 конкурс карт - приз Evengard-а за самую большую карту Медаль 'Победитель II конкурса карт' Медаль 'За фантазию и упорство в создании карт - 2011' Лучшая карта
    • Просмотр профиля
    • nÖrange soundcloud
    • Awards

Эвен, смотри мой пост. Кирилл опечатался. :hi:
Записан

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 186
  • Оффлайн Оффлайн
  • Сообщений: 2728
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards

Вопрос больше из принципа (для других) и любопытства)
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

horrendous1

  • Постоялец
  • ***
  • Карма: 27
  • Оффлайн Оффлайн
  • Сообщений: 158
  • King of warriors..yay.
    • Просмотр профиля
    • Galava..
    • Awards
Записан
Banana.

Garett

  • Langrisser
  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 125
  • Оффлайн Оффлайн
  • Сообщений: 667
  • Awards Лучшая карта 5 конкурса карт Выбор администрации 5 конкурса карт Сложность исполнения 5 конкурса карт Лучший геймплей 5 конкурса карт Мастер нестандартных карт - 2013 Столп форума 2012 За написание статей Методист 2012
    • Просмотр профиля
    • Garett#9853
    • Awards

Плачу!
Горько плачу! Разочарован в жизни!
Моя жизненная теория, что все люди иди.. жесточайшим образом подтвердилась.

Вот сколько будет - "2 + 2 * 2" ?... да, и я думал, что "6"...

Achtung!: 2 + 2 * 2 = 8

var0 = f2
var1 = f2
var2 = f2
var3 = var0 f+ var1 f* var2

Результат: var3 == f8 - true
Записан
Маленький потерявшийся волшебничишка.

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 186
  • Оффлайн Оффлайн
  • Сообщений: 2728
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards

Ого... Хм. Интересно, кто неправ - разработчики редактора карт или разработчики Нокса?)
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

Perfect

  • Map Editor PRO
  • Старожил
  • *
  • Карма: 125
  • Оффлайн Оффлайн
  • Сообщений: 1148
  • Слушай маму и drum&bass
  • Awards За поддержку форума - 2013 Лучший дизайн 5 конкурса карт Рука форума 2012 3 конкурс карт - лучшая карта 3 конкурс карт - приз Evengard-а за самую большую карту Медаль 'Победитель II конкурса карт' Медаль 'За фантазию и упорство в создании карт - 2011' Лучшая карта
    • Просмотр профиля
    • nÖrange soundcloud
    • Awards

Виноваты разработчики редактора карт. Там у действий нет приоритета, всё делается строго по порядку.
Записан

TheSim

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

Нефакт. Возможно в их редакторе был подходящий компилятор, который генерировал байткоды уже в правильном порядке, а константы мог и вовсе выбрасывать и писать сразу 6
Записан

Perfect

  • Map Editor PRO
  • Старожил
  • *
  • Карма: 125
  • Оффлайн Оффлайн
  • Сообщений: 1148
  • Слушай маму и drum&bass
  • Awards За поддержку форума - 2013 Лучший дизайн 5 конкурса карт Рука форума 2012 3 конкурс карт - лучшая карта 3 конкурс карт - приз Evengard-а за самую большую карту Медаль 'Победитель II конкурса карт' Медаль 'За фантазию и упорство в создании карт - 2011' Лучшая карта
    • Просмотр профиля
    • nÖrange soundcloud
    • Awards

Я имею в виду разработчиков редактора, который мы сейчас имеем. (или наоборот - он нас?) :biggrin:
« Последнее редактирование: 30/03/2011 11:30:14 от Evengard »
Записан

TheSim

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

Редактор конечно уг. В принципе могу обьяснить как сделать нормальный компилир скриптов и дать-кое какие наработки чтобы не тратить время с парсингом - если хотите сделать подобное общественно-полезное дело
Записан

horrendous1

  • Постоялец
  • ***
  • Карма: 27
  • Оффлайн Оффлайн
  • Сообщений: 158
  • King of warriors..yay.
    • Просмотр профиля
    • Galava..
    • Awards

as far as I know, 2 + 2 = 4 and 4 x 2 is 8
Записан
Banana.

Dio

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

"*" have bigest priority then "+"
2+2*2=6 - this is knew all students)
Записан
Пользуйтесь UniMod-ом.

horrendous1

  • Постоялец
  • ***
  • Карма: 27
  • Оффлайн Оффлайн
  • Сообщений: 158
  • King of warriors..yay.
    • Просмотр профиля
    • Galava..
    • Awards

ah, well it's good news that the editor ignores this
Записан
Banana.

Perfect

  • Map Editor PRO
  • Старожил
  • *
  • Карма: 125
  • Оффлайн Оффлайн
  • Сообщений: 1148
  • Слушай маму и drum&bass
  • Awards За поддержку форума - 2013 Лучший дизайн 5 конкурса карт Рука форума 2012 3 конкурс карт - лучшая карта 3 конкурс карт - приз Evengard-а за самую большую карту Медаль 'Победитель II конкурса карт' Медаль 'За фантазию и упорство в создании карт - 2011' Лучшая карта
    • Просмотр профиля
    • nÖrange soundcloud
    • Awards

SetOwner(Arg1,Arg2)
Делает Arg1 хозяином Arg2.
Пример:
SetOwner(Gvar1,Object("TrapLaser"))
Вызвавший функцию становится хозяином лазера.

ClearOwner(Arg)
Лишает Arg хозяина.
Записан

Lаrboss

  • Старожил
  • *****
  • Карма: 109
  • Оффлайн Оффлайн
  • Сообщений: 910
  • Абстрагирую
  • Awards Знак 'Властелин Сил Природы' За редактор шрифтов - 2013 Медаль 'За программу Nox Server Notificator' За программу Nox Binder Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Если кто знает поделитесь адресом и описанием функции нокса, которая перемещает объект или заставляет двигаться к цели.
Записан
Отец читеров

Perfect

  • Map Editor PRO
  • Старожил
  • *
  • Карма: 125
  • Оффлайн Оффлайн
  • Сообщений: 1148
  • Слушай маму и drum&bass
  • Awards За поддержку форума - 2013 Лучший дизайн 5 конкурса карт Рука форума 2012 3 конкурс карт - лучшая карта 3 конкурс карт - приз Evengard-а за самую большую карту Медаль 'Победитель II конкурса карт' Медаль 'За фантазию и упорство в создании карт - 2011' Лучшая карта
    • Просмотр профиля
    • nÖrange soundcloud
    • Awards

Move(Object,Waypoint)

RETURNS: VOID

Moves $arg1 to $arg2 (and keeps moving if the waypoint is linked to another)

NOTE: ONLY OBJECTS THAT CAN  MOVE OR ARE ATTACHED TO A MOVER CAN BE MOVED

EXAMPLE:
Move(Object("TheBear"),Gvar4)

MoveObject(Object,Float,Float)

RETURNS: VOID

Instantaneously moves $arg1 to the coordinates indicated by $arg2 and $arg3.

EXAMPLE:
MoveObject(Object("SuspiciousBlock"),f2345,f2720)
MoveObject(Gvar7,var2,var3)
MoveObject(Gvar7,GetWaypointX(var0),GetWaypointY(var1))

GroupMove(ObjectGroup,Waypoint)

RETURNS: VOID

Moves $arg1 to $arg2 (and keeps moving if the waypoint is linked to another)

NOTE: ONLY OBJECTS THAT CAN MOVE OR ARE ATTACHED TO A MOVER CAN BE MOVED

EXAMPLE:
GroupMove(ObjectGroup("TheBears"),Gvar4)

MoveWaypoint(Waypoint,Float,Float)

RETURNS: VOID

Instantaneously moves $arg1 to the coordinates indicated by $arg2 and $arg3.

EXAMPLE:
MoveWaypoint(Waypoint("FirePoint1"),f1308,f3821)
MoveWaypoint(Gvar5,var2,var3)
MoveWaypoint(Gvar5,GetObjectX(Gvar4),GetObjectY(Gvar4))

Move = 0xb
GroupMove = 0xc
MoveObject = 0x43
MoveWaypoint = 0x44
Записан

Salvo

  • Новичок
  • *
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 1
    • Просмотр профиля
    • Awards

Если кто знает поделитесь адресом и описанием функции нокса, которая перемещает объект или заставляет двигаться к цели.

Inanimate objects can be made to move by connecting them to objects called movers. Movers are used in the following format:

Object: Mover

[AA AA AA AA] [BB BB BB BB] [CC CC CC CC] 00 00 00 00 00 00 00 00 00 00 00 f0 3f 00 00 f0 3f

AA = INTEGER; The speed of the object
BB = INTEGER; The waypoint that the reference object starts at
CC = INTEGER; The extent of the object it will move (the reference object)

Once you attach the mover to the object, you can then give the object a script name and move it using the Move() command.
Записан
NoX Map Editor Function definitions Pack 4/NoX Карта определений редактор Функция обновления 4: http://www.mediafire.com/?0lyewaycg4r1qv5

Lаrboss

  • Старожил
  • *****
  • Карма: 109
  • Оффлайн Оффлайн
  • Сообщений: 910
  • Абстрагирую
  • Awards Знак 'Властелин Сил Природы' За редактор шрифтов - 2013 Медаль 'За программу Nox Server Notificator' За программу Nox Binder Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Видать я не там что-ли вопрос задал или не так. Меня интересует адрес функции в экзещнике =)
Записан
Отец читеров

Dio

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

0x004E7010
unitMove в юнимоде.
создаешь структуру типа
struct point
{
   float x
   float y
};
заполняешь ее координатами
в итоге как то так
unitMove(userdata,*point)
то есть тебе останется просто передать указатель на структуру

можешь кстати смотреть файл ScriptFunctionList.cs
Там в енуме "methods" стоят имена функций и их номера.
Найти фн по номеру можно юзай скриптФнЛист 0x005C308C

В следующий раз пиши в тему по юнику ибо этим занимаемся мы)
Записан
Пользуйтесь UniMod-ом.

horrendous1

  • Постоялец
  • ***
  • Карма: 27
  • Оффлайн Оффлайн
  • Сообщений: 158
  • King of warriors..yay.
    • Просмотр профиля
    • Galava..
    • Awards
Записан
Banana.

Garett

  • Langrisser
  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 125
  • Оффлайн Оффлайн
  • Сообщений: 667
  • Awards Лучшая карта 5 конкурса карт Выбор администрации 5 конкурса карт Сложность исполнения 5 конкурса карт Лучший геймплей 5 конкурса карт Мастер нестандартных карт - 2013 Столп форума 2012 За написание статей Методист 2012
    • Просмотр профиля
    • Garett#9853
    • Awards

Наконец-то я сделал великое Закрытие - теперь любой игрок может быть закрыт Отражающим щитом:
Enchant(GetHost(),"ENCHANT_REFLECTIVE_SHIELD",f10) - работает
Enchant(GetHost(),"ENCHANT_REFLECTIVE_SHIELD",f8) - не работает

Справка:
Enchant(<на кого>,<какой эффект>,<как долго>)
Записан
Маленький потерявшийся волшебничишка.

Perfect

  • Map Editor PRO
  • Старожил
  • *
  • Карма: 125
  • Оффлайн Оффлайн
  • Сообщений: 1148
  • Слушай маму и drum&bass
  • Awards За поддержку форума - 2013 Лучший дизайн 5 конкурса карт Рука форума 2012 3 конкурс карт - лучшая карта 3 конкурс карт - приз Evengard-а за самую большую карту Медаль 'Победитель II конкурса карт' Медаль 'За фантазию и упорство в создании карт - 2011' Лучшая карта
    • Просмотр профиля
    • nÖrange soundcloud
    • Awards

Вот он, список моей мечты! Здаравенный, здаравенный список всех энчантов! ЙЕАААААХХ!! ЙЙЕЕААААААХХХ!!!
ENCHANT_AFRAID
ENCHANT_ANCHORED
ENCHANT_ANTI_MAGIC
ENCHANT_BLINDED
ENCHANT_BURNING
ENCHANT_CHARMING
ENCHANT_CONFUSED
ENCHANT_CROWN
ENCHANT_DEATH
ENCHANT_DETECTING
ENCHANT_ETHEREAL
ENCHANT_FREEZE
ENCHANT_HASTED
ENCHANT_HELD
ENCHANT_INFRAVISION
ENCHANT_INVISIBLE
ENCHANT_INVULNERABLE
ENCHANT_LIGHT
ENCHANT_MOONGLOW
ENCHANT_PROTECT_FROM_ELECTRICITY
ENCHANT_PROTECT_FROM_FIRE
ENCHANT_PROTECT_FROM_MAGIC
ENCHANT_PROTECT_FROM_POISON
ENCHANT_REFLECTIVE_SHIELD
ENCHANT_RUN
ENCHANT_SHIELD
ENCHANT_SHOCK
ENCHANT_SLOWED
ENCHANT_SNEAK
ENCHANT_TELEKINESIS
ENCHANT_VAMPIRISM
ENCHANT_VILLAIN
Записан

Norten

  • Старожил
  • *****
  • Карма: 101
  • Оффлайн Оффлайн
  • Сообщений: 840
  • Пью пока Синвент афк...
  • Awards Лучший организатор игр 2010 За поддержку форума 2010 Лучший дизайн
    • Просмотр профиля
    • Awards

Звучит так, как будто раньше он неизвестен был  :)
Записан
Крошка-Маг спамил ракетами до того как это стало мэйнстримом @}>->--

Evengard

  • SysAdmin
  • Администратор
  • Старожил
  • ***
  • Карма: 186
  • Оффлайн Оффлайн
  • Сообщений: 2728
  • Director
  • Awards Столп форума 2012 Активным участникам сходок - 2013 За сервер Орден 'За заслуги перед форумом I степени'
    • Просмотр профиля
    • Awards

Попросил б давно б дали)
Записан
Не упоминай администраторов всуе...
С уважением, TriOptimum Corporation

PS: Покаяние - Признание своей вины в чем-либо, обычно с просьбой о прощении

Perfect

  • Map Editor PRO
  • Старожил
  • *
  • Карма: 125
  • Оффлайн Оффлайн
  • Сообщений: 1148
  • Слушай маму и drum&bass
  • Awards За поддержку форума - 2013 Лучший дизайн 5 конкурса карт Рука форума 2012 3 конкурс карт - лучшая карта 3 конкурс карт - приз Evengard-а за самую большую карту Медаль 'Победитель II конкурса карт' Медаль 'За фантазию и упорство в создании карт - 2011' Лучшая карта
    • Просмотр профиля
    • nÖrange soundcloud
    • Awards
Скрипты, описание
« Ответ #39 : 07/11/2011 12:40:57 »

У меня он был с момента установки редактора на пк. Не у всех он есть, обещал запостить.

P.S. И, кстати, вам двоим предупреждение за оффтоп. LOL
Записан

FreemanZA`

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

Не знал куда написать, так что не кидайте в меня кирпичами.

Сам вопрос: можно ли научить Мертвого Рыцаря-вампира (летучая мышь) или NPC'овского война (встречается "На поле бесстрашия" - стену бошкой выламывает) использовать гарпун, таран, крик? Если можно, то как это осуществить?

И можно ли из Нокс-квеста вытащить магов и обучить их некоторым спеллам?
Записан

Katarsis

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

Сам вопрос: можно ли научить NPC использовать гарпун, таран, крик? Если можно, то как это осуществить?
Силами редактора карт - практически нереально. Даже если удастся имитировать внешние эффекты, что тоже под большим вопросом, качественное ИИ для использования этих приемов ты вряд ли напишешь...
Хотя с появлением юнимода все стало возможным, может там это делается просто...

И можно ли из Нокс-квеста вытащить магов и обучить их некоторым спеллам?
А можно ли формулировать вопрос четче? Ты хочешь изменить параметры своего персонажа-мага? Если да, то каким именно заклинаниям ты хочешь его научить?
Записан

2530

  • Гильдия The Pinnacle
  • Старожил
  • *
  • Карма: 79
  • Оффлайн Оффлайн
  • Сообщений: 665
  • Не вижу смысла в Nox 2
  • Awards Победитель конкурса "Угадай Автора Карты" 2015
    • Просмотр профиля
    • Awards

Магов это кого? Мистиков? Если да, то они и так владеют спеллами и легко вытаскиваются (объект - Wizard)
Записан
Карма рассчитана на индикацию среднего отношения к участнику, а не степень важности человека. Не гонитесь за ней.
Все мои видео и Twitch стримы

FreemanZA`

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

Неправильно выразился. Да, мистиков (спс 2530). Хочу попробывать научить их юзать Смертельный луч и некоторые другие спеллы.
Родилась у меня одна идейка, подробности напишу позже. Сначала надо все обдумать.

Записан
Расширенный поиск  
 

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