Потом как-нибудь просвещу на эту тему... Только по мелочам:
| Цитата: |
| RandBush : object \\Некий абстрактный объект (тоже переменная) |
| Цитата: |
| DeclareScript VTriger#2#1 ( this : object )\\объявление функций
DeclareScript VTriger#2#2 ( this : object )\\объявление функций DeclareScript VCheck#2#1 ( this : object )\\объявление функций DeclareScript VCheck#2#2 ( this : object )\\объявление функций |
| Цитата: |
| SetCP( RandBush, Add( 200.0, Random( 3 ) ) , 300 , 0 ) \\перемещает(а откуда перемещать то?) RandBush в точку X=от 200 до 203, Y=300, Z=0 |
| Цитата: |
| VCheck#2#1( this ) \\Проверка этой функции(?). Что значит (this) ? |
Кстати эта переменная тоже this называется... Кому-то из ГГ казалось поначалу, что это, как в ООП, ссылка на этот скрипт. Никуа. Переменная с по-дурацки подобранным именем.
| Цитата: |
| IsLess( GetX( RandBush ) , 202.0 ) \\Если случайная координата X объекта RandBush меньше числа 202, то это Истина, то есть выполняется нижеописанное |
Или им вообще лень было... ХЗ.
| Цитата: |
| Sleep( 2 )\\не знаю что это за хрень (время?) |
| Цитата: |
| VCheck#2#2( this )\\проверка этой функции(условия) |
НИВАЛ!!!
| Цитата: |
| IsLess( GetX( RandBush ) , 201.0 )\\Если случайная координата X объекта RandBush меньше числа 201, то это Истина, то есть выполняется нижеописанное |
Нет чтобы числовую переменную юзать...
| Цитата: |
| Script VTriger#2#1\\после всего вышеописанного, запускается эта функция
... WorldScript\\вызов функций, работающих постоянно(?) ( ... VTriger#2#1( NULL )\\старт квеста, цель и финиш квеста. |
| Цитата: |
| WorldScript\\вызов функций, работающих постоянно(?) |
| Цитата: |
| VCheck#2#1( NULL )\\эта функция почему то не вызывается
VCheck#2#2( NULL )\\эта функция почему то не вызывается |
По моему тут написано её имя и передаваемая ей переменная(NULL, которая просто не инициализирована ничем), поэтому оно вызовется
| Цитата (S@MUR@I): |
| Просто привык чел так набирать, для порядка |
Особенно по философским вопросам.
Ибо она не для того дана
| Код: |
| //Скрипт позволит рассеивать рандомные позиции обжектов по разным точкам
GlobalVars( NULL : object, //Нулл - просто переменная-затычка. Для прикола можно ей чтонить присвоить. i : object, //Нужная переменная. Вдруг цикл какой, с полным перебором? rnd : float, //Наша случайная переменная. Без камиинтариивъ cond : float, //Это просто для сокращения места - чтоб условие 100 раз не писать Monster1 : object, //Первый обжект //... список... MonsterN : object //Последний обжект ) //Скрипт предназначен для расставляния чего-то в случайных комбинациях DeclareScript SetRandomPositions( this : object ) Script SetRandomPositions //Задаём случайные точки N-му числу монстров ( if ( ) then ( KillScript( ) //Чтоб по окончании скрипта не пошло по 2 кругу //Monster1 - 3 точки размещения rnd = Random(3) //дробь типа float от 0 до трёх //Обнуление SetCP(Monster1,0,0,0) //Случай номер 1: от 0 до 1, точка (200;300) cond = Not(IsGreater(rnd,1))//rnd<=1 //Проверяем условие с помощью банальной операции умножения //Для арифметических операций не надо писать длиннных блоков ветвлений... //Булевские операции в ПЗ выражены типом float - true = 1, false = 0 //Mul - умножение, Add - сложение, Sub - вычитание, Div - Деление //Выставляем первый случай: SetCP(Monster1,Add(GetX(Monster1),Mul(cond,200)),Add(GetY(Monster1),Mul(cond,300)),0) //Второй случай: (1;2], точка (150;100) cond = Mul(IsGreater(rnd,1),Not(IsGreater(rnd,2))) SetCP(Monster1,Add(GetX(Monster1),Mul(cond,150)),Add(GetY(Monster1),Mul(cond,100)),0) //Итак, если предыдущее условие не выполнилось - то координаты объекта до операции№2 равны (0,0,0). Если условие не верно - координаты не меняются: x + a*0 = x //Операция 3: (2;+<бесконечность>), (50;200) cond = IsGreater(rnd,2) SetCP(Monster1,Add(GetX(Monster1),Mul(cond,50)),Add(GetY(Monster1),Mul(cond,200)),0) //Аналогично. На каждый случай уходит 2 действия, на растасовку потрачены сверх объектной 2 переменные - rnd и cond. Форма записи легкая - в мобэдиторе лучше видно, например в МРТ экран белый, а не тут ото... //... //... //MonsterN - 2 точки(например!) Можно сделать его независимым от первого, и повторить всю процедуру с момента rnd = Random..., а можно сделать в зависимости от первого, но тогда бы лучше писать сразу там же ;) rnd = Random(2) cond = Not(IsGreater(rnd,1)) //(-<б.>;1]; (10;15) SetCP(MonsterN,Add(GetX(MonsterN),Mul(cond,10)),Add(GetY(MonsterN),Mul(cond,15)),0) //Тру-ля-ля... Думаю, все, кому надо, уже разобрались... cond = IsGreater(rnd,1) //(1;+<б.>); (20;30) SetCP(MonsterN,Add(GetX(MonsterN),Mul(cond,20)),Add(GetY(MonsterN),Mul(cond,30)),0) ) ) WorldScript ( Sleep( 2 ) //Чуток подождать, чтоб не сглючило Monster1 = GetObjectById("12345") MonsterN = GetObjectById("67890") SetRandomPositions( NULL ) //Переменная NULL не содержит ничего, но нам она и не нужна. Это просто заглушка. ) |
), но по устранении всех опечаток - алгоритм будет разбрасывать столько объектов, сколько туда не поленятся вбить.
Давайте, квестоделы, подключайтесь к ЕИ-моду - балансом займётся Читтер, а вы квестов сделаете, и будет у нас, кроме прочего, ещё и хороший мульти<эх, ме4ты...>.
| Цитата (Снайпер): | ||
Это с какой же это радости она не вызывается? По моему тут написано её имя и передаваемая ей переменная(NULL, которая просто не инициализирована ничем), поэтому оно вызовется ![]() |
. Как людоед в Геноциде
| Цитата: |
Только зачем объявлять монстров в качестве глобальных переменных? |
То, что написано в объекте - вроде бы - имя объекта, то есть реагирует на команду GetObjectByName("Name"), а в чистом виде использоваться не может
Так что объявлять надо. А вот труп - это фича известная. После SetCP все юниты юзают анимацию Idle, отчего и стоят так. Надо перемещать его, пока он ещё жив, либо по перемещении убить вторично
либо проиграть анимацию смерти, он должен после этого так и остаться...
И глобальные - имеется ввиду по мобу, а не по игре. Глобальные по игре задаются не так, через =, а GsSetVar(nPlayer,"Var",Value) ;)
| Цитата: |
| GetObject( 1000001 )...повторить N раз |
| Код: |
| Ogre = GetObjectByID("1000002")
Toad = GetObjectByID("1000003") |
Так что переменные 4еver!
несущественную
(с)Народныя присказка
| Цитата (S@MUR@I): |
| В МРТ заметил одну вещь. Статы монстров нельзя изменить. При нажатии кнопки "apply" все изменения сбрасываются. |
Какие у людей извечные вопросы
| Цитата: |
| Но это можно обойти, проставив значение ID_UNIT_NEED_IMPORT=0 |