PDA

Просмотр полной версии : Скорость бега и атаки с CharInfo


Zergatul
17.06.2008, 18:14
В пакете s48=MagicSkillUse:h(psize)c(ID)d(charID)d(targetID )d(skillID)d(skillLvl)d(hitTime)d(reuseDelay)...
есть значение d(hitTime), которое как я понял отвечает за каст спид.
s03=CharInfo:h(psize)c(ID)d(X)d(Y)d(Z)d(Heading)d( ObjectID)s(Name)d(Race)d(Sex)d(ClassID)d(DHair)d(H ead)d(RHand)d(LHand)d(Gloves)d(Ches)d(Legs)d(Feet) d(Back)d(LRHand)d(Hair)d(PvpFlag)d(Karma)d(MSpeed) d(PSpeed)d(PvpFlag)d(Karma)d(runSpd)d(walkSpd)d(sw imRSpd)d(swimWSpd)d(flRunSpd)d(flWalkSpd)d(flyRSpd )d(flyWSpd)f(SpdMul)f(ASpdMul)...
f(SpdMul), f(ASpdMul) скорость бега и атк спид. Интересует как эти значения можна превратить в точные значения, такие как они в статах персонажа.

xkor
17.06.2008, 23:02
Интересует как эти значения можна превратить в точные значения, такие как они в статах персонажа.округлив просто)

Zergatul
18.06.2008, 01:06
Ну я точно не помню представление чисел с плавающей запятой, но пакет хак в просмотре пакетов показывает мне приблизительно такие значения:

f MovementSpeedMultiplier: 5,28376951950353E-312
f AttackSpeedMultiplier: 1,7045264781523E-321

QaK
18.06.2008, 08:26
E-321это точно показывает? У меня без степени, просто этакий коэффициент.Поидее это означает, что число нужно умножить на 10 в степени -321.Хотя ... хз, какую версию ПНХ используешь?

Zergatul
18.06.2008, 16:33
это точно показывает? У меня без степени, просто этакий коэффициент.Поидее это означает, что число нужно умножить на 10 в степени -321.Хотя ... хз, какую версию ПНХ используешь?

3.2.0

То что означает та запись, я знаю )
Я про то, что не знаю как 64 бита превратить в вещественное число

И по-моему те расшыфровки пакетов неправильные... Я нашол в пакете чар инфо точные значение каст. спида и атк. спида записаные в формате Integer. Вот скорости там явно найти не могу

QaK
18.06.2008, 17:13
Move(pct[Integer(i)],f,8); хде f - переменная вещественного типа, pct[i] - строка-пакет,i c какого байта читать 8 байт.
З.Ы. Выдрано из исходников хкора.

xkor
21.06.2008, 13:37
Zergatul, видимо в packets.ini неверная конструкция для чар инфо твоего серва, числа должны получаться нормальными

Zergatul
21.06.2008, 16:53
Видимо так оно и есть

Jes
11.07.2008, 14:12
расчет координаты на момент времени:

wxLongLong tm=wxGetLocalTimeMillis();
double inter=(tm-o.start_ticks).ToDouble();
double part=o.mult*(o.running?o.runspd:o.walkspd)*inter/1000/o.len;
o.coord=o.start+L2Point(o.end-o.start)*part;

читать матчасть :)

xkor
13.07.2008, 04:22
а у меня проще:
d:=(Now-lastLocUpd)*SecsPerDay;
r:=speed*d*MovementSpeedMultiplier;