Цитата: |
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) ? |
Цитата: |
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 )\\эта функция почему то не вызывается |
Цитата (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 не содержит ничего, но нам она и не нужна. Это просто заглушка. ) |
Цитата (Снайпер): | ||
Это с какой же это радости она не вызывается? По моему тут написано её имя и передаваемая ей переменная(NULL, которая просто не инициализирована ничем), поэтому оно вызовется |
Цитата: |
Только зачем объявлять монстров в качестве глобальных переменных? |
Цитата: |
GetObject( 1000001 )...повторить N раз |
Код: |
Ogre = GetObjectByID("1000002")
Toad = GetObjectByID("1000003") |
Цитата (S@MUR@I): |
В МРТ заметил одну вещь. Статы монстров нельзя изменить. При нажатии кнопки "apply" все изменения сбрасываются. |
Цитата: |
Но это можно обойти, проставив значение ID_UNIT_NEED_IMPORT=0 |