Возможно ли прибавить какое то значение к части пакета?
Здравствуйте!
Задалась вот каким вопросом, можно ли скриптом, точнее в скрипте к пакету допустим: - 9F 00 57 5C FF 90 E7 B7 44 FD 85 F3 44 3A B1 12 44 07 00
прибавить определённое значение?
Вот смотрите:
Это наш пакет для опытов - 9F 00 57 5C FF 90 E7 B7 44 FD 85 F3 44 3A B1 12 44 07 00
Это пакет на телепорт.
Где:
координата Х
координата Y
координата Z
Дак вот, можно допустим к координате Z, с помощью скрипта прибавить какое то значение?
Допустим вот так: 3A B1 12 44 + 80 84 1E 00
или в цифрах:
1142075706 + 2000000
и чтоб получилось: 1144075706 (BA 35 31 44)
Чтоб скрипт выполнил прибавление к координате Z и отправил этот пакет по использованию эмоции?
Re: Возможно ли прибавить какое то значение к части пакета?
[Ссылки могут видеть только зарегистрированные пользователи. ]
азы
ответ:все можно
в каком формате у тебя хранится координата?
как ты ее будеш вычислять?
простейший прмер квк что то писать в готовый пакет:
Код:
Пример:
buf=HStr('AA BB CC DD EE');
Если вызвать функцию WriteD(10,1), то получим buf=[0A 00 00 00 EE].
А если просто WriteD(10), то [AA BB CC DD EE 0A 00 00 00].
короче пиши скрипт, а я допишу модификацию пакета в нем
можеш тут, а можно и в личку.
сор сразу не понял сути что нужно)
но вопрос остался темже)? есть координата z, что ты с ней хочеш сделать? что будеш прибавлять?(откуда брать то что собралась прибавлять)
Последний раз редактировалось manyunya; 29.01.2012 в 01:41.
Re: Возможно ли прибавить какое то значение к части пакета?
Цитата:
Сообщение от manyunya
простейший прмер квк что то писать в готовый пакет:
Немного не то.
В вашем примере, значение AA BB CC DD EE либо вообще заменяеться WriteD(10,1), то получим buf=[0A 00 00 00 EE], а мне нужно чтоб к AA BB CC DD EE прибавлялась 0A 00 00 00, чтоб было вот так AA BB CC DD EE + 0A 00 00 00 = AF 7E 02 41 EE. Вот. Вроде верно посчитала.
Добавлено через 8 минут
Прибавлять хочу добустим мою заданную ранее статичную величину. Допустим как я описала в примере в начале темы 2000000 (80 84 1E 00), её можно указать в начале скрипта в виде $001E8480. Вроде верно, если нет исправте меня. как к примеру в скрипте - http://zhyk.ru/forum/showthread.php?t=328580 (В первом скрипте, в начале где выбор из таблицы скоростей идёт). И чтоб она уже прибавлялась к той координате Z которая берёться из пакет пойманного скриптом а именно мою нынешнюю точку нахождения, тоесть скрипт должен поймать пакет 9F с моими свежими координатами и прибавить 2000000 к координате Z и отправить этот изменённый пакет 9F. В общем он должен будет путём прибавления к координате Z (а она отвечает за высоту), поднимать персонажа всё выше и выше телепортируя его. Или лучьше взять не 9F, а допустим уже пакет полёта допустим, чтоб прям в полёте изменялась координата игрока.
Последний раз редактировалось martiniFresh; 29.01.2012 в 02:43.
Причина: Добавлено сообщение
Re: Возможно ли прибавить какое то значение к части пакета?
все понял)
т.е. прибавлять будет константу?
чем меньше тем плавнее(медленее будет плдыматься)
или за раз на нужную высоту(константа соответствует прибовляемой высоте)
думаю это не проблема.
нужно только посмотреть как работает суммирование.
если интересно, могу предложить вариант полет в произвольном месте, думаю эффект тотже будет.
но скриптик гляну
AA BB CC DD EE + 0A 00 00 00=AA C5 CC DD EE
Последний раз редактировалось manyunya; 29.01.2012 в 04:18.
Re: Возможно ли прибавить какое то значение к части пакета?
Да, всё верно. А ещё по моему вы неверно сложили -
Цитата:
AA BB CC DD EE + 0A 00 00 00=AA C5 CC DD EE
Потому как должно с первого байта же складывать, а 0A получаеться прибавилось к BB. Должно по моему быть вот так. AA BB CC DD EE + 0A 00 00 00 = B4 BB CC DD EE
Эти 2 байта - не затрагиваються в вычислениях.
Re: Возможно ли прибавить какое то значение к части пакета?
Цитата:
Сообщение от martiniFresh
Это наш пакет для опытов - 9F 00 57 5C FF 90 E7 B7 44 FD 85 F3 44 3A B1 12 44 07 00
Это пакет на телепорт.
Где:
координата Х
координата Y
координата Z
Дак вот, можно допустим к координате Z, с помощью скрипта прибавить какое то значение?
Считываем координату Z процедурой:
MyZ:=ReadD;(14) у нас получится int переменная, просто прибавляем 20000:
MyZ:=MyZ+20000;
и далее записываем в пакет и отправляем на серв...
хотя хз, может вы имели ввиду чтото другое...)
________________ Ололо! Я из армии вернулсо!!!)) Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Re: Возможно ли прибавить какое то значение к части пакета?
Вы не правильно расшифровали пакет, в пакете движения координаты осей записаны не в DWord, а в формате Single.
Т.е. из вашего пакета координаты:
90 E7 B7 44 x: 1471,236328125
FD 85 F3 44 y: 1948,18713378906
3A B1 12 44 z: 586,769165039063
Вот пример скрипта:
Цитата:
var
x,y,z,n:integer;
if FromClient and (pck[1]=#$9F) then
begin
buf:=hstr('9F 00 57 5C FF'); //записываем в buf начало пакета (до координат)
n:=200; //наше число которое мы будем прибавлять
x:=readn(6); //считываем x из pck в формате Single
y:=readn(10); //считываем y из pck в формате Single
z:=readn(14); //считываем z из pck в формате Single
z:=z+n; //прибавляем к z число n
writen(x); //записываем x в buf в формате Single
writen(y); //записываем y в buf в формате Single
writen(z); //записываем z в buf в формате Single
buf:=buf+hstr('07 00'); //записываем в buf конец пакета
pck:=''; //удаляем все из pck
end;
end.
Re: Возможно ли прибавить какое то значение к части пакета?
Цитата:
Сообщение от martiniFresh
Да, всё верно. А ещё по моему вы неверно сложили - Потому как должно с первого байта же складывать, а 0A получаеться прибавилось к BB. Должно по моему быть вот так. AA BB CC DD EE + 0A 00 00 00 = B4 BB CC DD EE
Эти 2 байта - не затрагиваються в вычислениях.
не помню как правильно складывать
складывал в калькуляторе, все притензии к нему)
Цитата:
Сообщение от Furydose
Вы не правильно расшифровали пакет, в пакете движения координаты осей записаны не в DWord, а в формате Single.
Т.е. из вашего пакета координаты:
90 E7 B7 44 x: 1471,236328125
FD 85 F3 44 y: 1948,18713378906
3A B1 12 44 z: 586,769165039063
Код:
var
x,y,z,n:integer;
if FromClient and (pck[1]=#$9F) then
begin
buf:=hstr('9F 00 57 5C FF'); //записываем в buf начало пакета (до координат)
n:=200; //наше число которое мы будем прибавлять
x:=readn(6); //считываем x из pck в формате Single
y:=readn(10); //считываем y из pck в формате Single
z:=readn(14); //считываем z из pck в формате Single
z:=z+n; //прибавляем к z число n
writen(x); //записываем x в buf в формате Single
writen(y); //записываем y в buf в формате Single
writen(z); //записываем z в buf в формате Single
buf:=buf+hstr('07 00'); //записываем в buf конец пакета
pck:=''; //удаляем все из pck
end;
end.
Вот пример скрипта:
у меня не работает вот эта конструкция
(pck[1]=#$9F)
перестала и все)
у всех так?
Последний раз редактировалось manyunya; 29.01.2012 в 17:44.
Re: Возможно ли прибавить какое то значение к части пакета?
Да, только это без привязки к эмоции, привязать не получится, т.к. нам просто негде будет сохранить наше текущее положение(скрипты выполняются к каждому пакету отдельно).
Re: Возможно ли прибавить какое то значение к части пакета?
у меня не работает вот эта конструкция
(pck[1]=#$9F)
перестала и все)
у всех так?
Цитата:
Сообщение от Furydose
Да, только это без привязки к эмоции, привязать не получится, т.к. нам просто негде будет сохранить наше текущее положение(скрипты выполняются к каждому пакету отдельно).
это к какой теме ответ? )
а зачем привязывать если к этой?
возникли вопросы(мое недопонимание)
Цитата:
Сообщение от Usilok77
MyZ:=ReadD(14); у нас получится int переменная, просто прибавляем 20000:
Цитата:
Сообщение от Furydose
Вы не правильно расшифровали пакет, в пакете движения координаты осей записаны не в DWord, а в формате Single.
x:=readn(6); //считываем x из pck в формате Single
в чем разница?
Последний раз редактировалось manyunya; 29.01.2012 в 17:58.