PDA

Просмотр полной версии : UOScript и разгрузка, общие вопросы



aspid
24.05.2004, 02:36
Добрые сутки, появилось у меня несколько вопросов, дай думаю у умных людей спрошу... :)
1) относительность координат слегка не понял, т.е. получая координаты предмета в контейнере и складывая их с координатами контейнера приходится добавлять примерно 22,6 (для бэкпэка). Почему и как бороться?
2) Есть ли возможность получить более подробные описания предметов (названия данные ключам, рунам и т.д.)?
3) Каким образом определяются цвета для динамических и статических объектов (обнаружил что цвет листвы частенько идентичен цвету ствола у деревьев)?
4) Есть ли возможность проверки закрытости предмета в контейнере другим без перехвата мыши?
5) Можно ли определить дополнительную функцию, которая паралельно основному скрипту будет с некоторым интервалом проверять какое-либо условие и в случае его выполнения перехватит управление у основного скрипта и выполнит собственное тело?
6) Может быть у кого-нибудь есть подробная информация о работе вложенных функций занесения в список (принцип работы, ограничения областей, связь с размерами сектора для списка статических объектов)?
Вот и всё собственно... :)

Alex M.A.
24.05.2004, 10:25
1. Изображение предмета приедставляет собой прямоугольную картинку, часть пикселов которй прозрачны. Убедиться в этом можно, открыв UO Inside. Координаты объекта являются координатами верхнего левого угла именно этой прямоугольной области. Соответственно, изображение самого объекта оказывается смещенным.
2. Пока нет.
3. Цвета задаются индексами... не прямым указанием цвета. Насколько я понял, для объектов указывается индекс цвета в hues.mul, а для текста - индекс внутренней палитры. Дефолтный (не покрашенный) предмет имеет цвет 0.
4. Напрямую - нет... но есть способы, позволяющие обеспечить перетаскивание только нужных предметов.
5. Понятия "поток" и "событие" отсутствуют.
Но можно определить любую функцию в теле самого скрипта. При выполнении основного цикла, вставить вызов этой самой функции... проверить условие и либо отработать функцию, либо вернуть управление основной программе. Не вижу препятствий... :-)
6. Не понял вопроса.

aspid
24.05.2004, 11:31
Алексей, большое спасибо за ответы... :)
А по 6 пункту простой пример, вызываю функцию создания списка статических объектов, обрабатываю и просматриваю результаты, на первый взгляд в список занесены все объекты в здоровенном таком ромбе (квадрате для абсолютных координат) но при более внимательном просмотре оказывается что это какая-то совершенно замысловатая кривая. Мне было интерестно узнать более о принципе работы функций занесения в списки...
ЗЫ: Нет проблемы ограничить область до правильной геометрии, вопрос в этом не стоит, интересен сам принцип... :)

Alex M.A.
24.05.2004, 13:32
в список статических (как и при вызове GetTotalObjectsList) заносятся все объекты в зоне видимости персонажа...
это область, насколько я помню, 44х44 тэйла... и объекты лежат совсем не строго по границе...

и еще...
я точно не разбирался, но возможно клиент что-то кеширует... соответственно геометрия области может измениться...

Mips
24.05.2004, 14:44
6. можно отсеивать лишние предметы из списка проверяя дистанцию до предмета.


//Функция определения дистанции от чара до объекта
function Distance(x,y: Extended): Extended;
begin
x:=abs(x-_posx); y:=abs(y-_posy);
if x>y then result:=x;
if x<y then result:=y;
if x=y then result:=0;
end;

Когда мне нужно было собрать хлопок на два тейла вокруг меня, я перебирал все объекты из списка и проверял расстояние до них. Которые были в зоны достигаемости (до двух тейлов) - собирал. Все проверки работают быстро.

Alex, как я понял клиент без вопросов к серверу может пройти три тейла.

aspid
24.05.2004, 15:28
Mips, подозреваю вас я в флудерастизме... :)
При чём тут вообще ваш пост? :) К чему т.е.? :) Кажется настолько простых вопросов я не задавал... :)
Алексей, спасибо ещё раз, топик можно закрывать я полагаю...
ЗЫ: Alex, отправлял вам недели две кажется назад письмо с вопросом о возможности определения массива переменных, ответа так и не дождался... :)