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

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

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

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

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


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

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

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-а за самую большую карту Медаль 'За фантазию и упорство в создании карт - 2011' Медаль 'Победитель II конкурса карт' Лучшая карта
    • Просмотр профиля
    • 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-а за самую большую карту Медаль 'За фантазию и упорство в создании карт - 2011' Медаль 'Победитель II конкурса карт' Лучшая карта
    • Просмотр профиля
    • 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-а за самую большую карту Медаль 'За фантазию и упорство в создании карт - 2011' Медаль 'Победитель II конкурса карт' Лучшая карта
    • Просмотр профиля
    • 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-а за самую большую карту Медаль 'За фантазию и упорство в создании карт - 2011' Медаль 'Победитель II конкурса карт' Лучшая карта
    • Просмотр профиля
    • nÖrange soundcloud
    • Awards

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

TheSim

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

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

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