Перейти к содержанию

Владимир_К

Граждане
  • Постов

    8
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Владимир_К

  1. Не хочется "засорять" форум новыми темами, поэтому спрошу здесь.

     

    Мне нужно, чтобы "заспелленый" актер-цель медленнее двигался.

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

    Вопрос:

    Какая характеристика актера влияет на его быстроту поворачивания в разные стороны (вокруг себя)?

    Я считаю, что это - Agility. Но изменяю скриптом его величину - ничего не меняется.

    Строчкой до этого идет изменение Speed - все нормально.

    Может не Agility отвечает за то, как быстро поворачивается какой-нибудь Creatur?

  2. Перво-наперво нужно определить, что перс находится на природе.

    Каждая ячейка имеет сторону в 4096.

    Т.е. 0-я ячейка по Х от 0 до 4096 и по Y от 0 до 4096.

    (GetPos X) % 4096 - будет позиция внутри ячейки по координате X от 0 до 4095,(9)

    Логично

  3. Если просто нужно получить ближайшего, то достаточно сохранять параметры дальности и ссылку на предыдущий объект и сравнивать его дальность с текущим.

    Если же нужно получить объекты в порядке удаления/приближения, то тут намного сложнее. Нужно создавать массивы и текущий объект сравнивать с элементами массива и вставлять текущий объект на определенную позицию массива. (Если нужно получать в результат ограниченное кол-во объектов в определенном порядке, то можно обойтись несколькими переменными без массива).

     

    Ф-ии MessageBox наверное надо заменить на MessageBoxEx, т.к. ты используешь форматный вывод из OBSE, а не стандартный.

     

    Дистанция возвращается как float.

    Спасибо за помощь !

    А вот еще задачка :)

    Имеем координаты Перса GetPos X (Y,Z).

    Как определить координаты границы ячейки (ну, м.б., точки на границе) для того, чтобы понять, где относительно ячейки находится Перс?

  4. scn MyScriptName ;тип скрипта - магический эффект

     

     

    Вчера испытал. Работает. Спасибо!

    Вот только дистанция не отображается в сообщении на экране. Выдает на экране значение переменной = "0".

    Хотя, развивая скрипт, я поставил проверку по дальности: определение соответсвия REF типу существа только при дальности до REF<1000. Так она - работает.

    Неясно (мне, по крайней мере) какой тип переменной соответсвует возвращаемому значению дистанции. На Wiki пишут, что дистанция возвращается в units, но о типе этого значения (short, long, float) - ни слова.

     

    Кстати, у меня был вопрос и об очередности определения того или иного REF.

    И в моем (ошибочном) и в твоем (рабочем) варианте скрипта очередность определения REF одного из двух контрольных Сreatures не менялась. вне зависимости от того, какое из этих Creatures было ближе к игроку. Хотя я излазил вркруг них все пространство, меняя позиции кастования заклинания.

    Заметил и понял, что GetFirstRef выбирает приоритет в определении REF не по их "близости" к caster, а по их ЗНАЧЕНИЮ:

    Существо Cr#1 имеет REF= 04008dfd => всегда определяется первым

    Существо Cr#2 имеет REF= 04008dfe => всегда определяется вторым

     

    так как dfd < dfe и, значит, dfd и есть FirstRef!

     

    Так вот, проверка REF "на дальность от игрока" позволила решить стоящую задачу - обнаружение БЛИЖАЙШЕГО.

  5. Привет всем!

    Написал скрипт магического эффекта. Скрипт "прикреплен" к заклинанию, которое имеет Range "Self" и длительность "3".

    Смысл в том, чтобы при кастовании заклинантя "на себя" определялись ссылки на ближайших СУЩЕСТВ, относящихся к типам "Нежить" и "Даедра". Заодно и определялась дистанция.

    Заклинание кастуется "вручную" с произвольной частотой.

    Размещены соответствующие "цели" на участке местности. Но скрипт, срабатывая, продолжает выдавать REF только первой обнаруженной с момента запуска цели. Даже при "кастовании" непосредственно возле второй цели, скрипт продолжает выдавать REF первой обнаруженной цели. Только иногда, после длительного (минуты 2-3) хождения вокруг второй (необнаруживаемой) цели, скрипт выдает ее REF.

    Вот код, что мажет быть не так?

     

    scn MyScriptName ;тип скрипта - магический эффект

     

    ref RefCr

    float DistRef

     

    begin ScriptEffectStart ; расчет на то, что данный блок срабатывает 1 раз за фрейм

     

    set RefCr to GetFirstRef 36

     

    label 11

    if RefCr != 0

    set DistRef to RefCr.GetDistance Player

     

    if RefCr.GetCreatureType == 2

    Message “Обнаружена НЕЖИТЬ %i, Дистанция: %8,0f”, RefCr, DistRef

    elseif RefCr.GetCreatureType == 1

    Message “Обнаружен ДАЕДРА %i, Дистанция: %8,0f”, RefCr, DistRef

    else

    Message “Никого нет”

    set RefCr == 0 ;на всякий случай "обнуляем" переменную

    endif

     

    Set RefCr to GetNextRef

    goto 11

    endif

    end

     

    По-моему, явных ошибок нет...

    Если можно, проверьте код у себя!

  6. В ЛИЦЕНЗИОННОЕ издание ЗИ от 1С входит только рыцари 9 и острова. Остальное можно найти только на "сборниках", выходящих под маркой ЗИ после 2007 г. Официально броня на лошадь, перестройка пиратской пещеры, башня мага на момент выхода лицензии ЗИ 1С были только за $ на сайте издателя. ИМХО - ТАК :jokingly:
×
×
  • Создать...