Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Пакеты
Войти через OpenID

Пакеты Форум о форматах отдельных пакетов или групп пакетов

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 07.02.2012, 19:55   #21
Местный
 
Аватар для Aries
 
Регистрация: 19.01.2011
Сообщений: 241
Сказал Спасибо: 7
Имеет 26 спасибок в 22 сообщенях
Aries пока неопределено
По умолчанию

не понимаю зачем корейцам DOUBLE.

DOUBLE - число с десятичной точкой (нафига, если координаты все равно целые числа????), 64 бита
int, DWORD - целые, 32 бита
Int64 - целое, 64 бита.

Учитывая размеры карты, то сейчас для хранения любой координаты стандартного int'а более чем достаточно, там еще разрядов 10 в запасе относительно самой максимально координаты.

А вот для вычисления квадрата расстояния, если один персонаж находится в деревне хуманов, а другой где-нить возле деревни гномов, то явно для результата потребуется больше 32 бит.

fx:=integer((v1.x-v2.x)*(v1.x-v2.x)); - вот это все таки оказалось правдой. Причем видит так не только делфи))))

fx:=double((v1.x-v2.x)*(v1.x-v2.x)); - вот так скорее всего заработает верно. По крайней мере на плюсах аналогичный пример стал считать правильно
Aries вне форума   Ответить с цитированием
Старый 07.02.2012, 21:19   #22
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

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

за тем и нужны DOUBLE чтоб производить подобные расчеты, плюс любой графический движок работает только с floating point числами
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 08.02.2012, 12:07   #23
Новичок
 
Аватар для TechnoWiz@rd
 
Регистрация: 03.02.2012
Сообщений: 4
Сказал Спасибо: 0
Имеет 3 спасибок в 1 сообщении
TechnoWiz@rd пока неопределено
По умолчанию

Цитата:
Сообщение от mira Посмотреть сообщение
Я так и щитаю) но там иногда получаетса отрицательное число которое под корнем вызывает исключение ариф. Процессора если считать "в лоб".
По модулю возьми вектор, тогда не будет выскакивать исключений.
TechnoWiz@rd вне форума   Ответить с цитированием
Старый 08.02.2012, 15:00   #24
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Так и было в виде костыля.
Щас разбил выражение все стало верно.
Код:
 f : double;
 fx,fy,fz : double;
begin
 f:= v1.x - v2.x:
 fx:=f*f;
.........
 Result:=sqrt(fx+fy+fz)
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 08.02.2012, 17:17   #25
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

mira, в л2вектор x также инт остался?
а то у меня

delphi Код:
i1,i2:integer;   i3:double;   i1:=high(integer);   i2:=high(integer);   i3:=i1+i2;   WriteLn(FloatToStr(i3)); //-2   i1,i2:integer;   i3:double;   i1:=high(integer);   i2:=high(integer);   i3:=int64(i1)+int64(i2);   WriteLn(FloatToStr(i3)); //4294967294  
что в 7, что в xe2
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 08.02.2012, 17:52   #26
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

да там инты.
с двордом ваще бред получилса ибо отрицательная координата z часто принимающая в игре минусовые значения как дворд оказывалась 234334345 типа того)

ну вот как я щас написал считает все без нареканий и глюков

Добавлено через 6 минут
Цитата:
Сообщение от supernewbie Посмотреть сообщение
mira, в л2вектор x также инт остался?
а то у меня

delphi Код:
i1,i2:integer;   i3:double;   i1:=high(integer);   i2:=high(integer);   i3:=i1+i2;   WriteLn(FloatToStr(i3)); //-2   i1,i2:integer;   i3:double;   i1:=high(integer);   i2:=high(integer);   i3:=int64(i1)+int64(i2);   WriteLn(FloatToStr(i3)); //4294967294  
что в 7, что в xe2
первый вариант это то что получал я.
второй вариант посути верен, опятьже если не переполнить int64

сделал вывод что считать разумнее сразу приводя исходные данные к double. пусть незначительно страдает точность расчета, зато отпадают возможные косяки с переполнениями
__________________
читернуть бы ништяг

Последний раз редактировалось mira, 08.02.2012 в 17:52. Причина: Добавлено сообщение
mira вне форума   Ответить с цитированием
Старый 08.02.2012, 18:39   #27
Местный
 
Аватар для Aries
 
Регистрация: 19.01.2011
Сообщений: 241
Сказал Спасибо: 7
Имеет 26 спасибок в 22 сообщенях
Aries пока неопределено
По умолчанию

Цитата:
Сообщение от mira Посмотреть сообщение
да там инты.
с двордом ваще бред получилса ибо отрицательная координата z часто принимающая в игре минусовые значения как дворд оказывалась 234334345 типа того)

ну вот как я щас написал считает все без нареканий и глюков

Добавлено через 6 минут


первый вариант это то что получал я.
второй вариант посути верен, опятьже если не переполнить int64

сделал вывод что считать разумнее сразу приводя исходные данные к double. пусть незначительно страдает точность расчета, зато отпадают возможные косяки с переполнениями
переполнить double больше шансов, чем переполнить int64)))
Aries вне форума   Ответить с цитированием
Старый 08.02.2012, 18:45   #28
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Цитата:
Сообщение от Aries Посмотреть сообщение
переполнить double больше шансов, чем переполнить int64)))
удачи всунуть в int64 значение MAXDOUBLE = 10^307

как определоно в делфи
Код:
MaxDouble   =  1.7e+308;
__________________
читернуть бы ништяг

Последний раз редактировалось mira, 08.02.2012 в 18:47.
mira вне форума   Ответить с цитированием
Старый 08.02.2012, 20:13   #29
Местный
 
Аватар для Aries
 
Регистрация: 19.01.2011
Сообщений: 241
Сказал Спасибо: 7
Имеет 26 спасибок в 22 сообщенях
Aries пока неопределено
По умолчанию

точно, точно) чушь сморозил)
Aries вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Пакеты



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 02:49.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!