Помогите пожалста )
мне нужно из 1 пакета сосчитать с 2 по 24 бит включительно и добавить к нему еще 4 бита
это нужно для того чтобы иг бот мог ходить у меня на серве
там пакет (MoveBackwardToLocation) от клиента немного отличается от пакета который бот отправляет ( последними 4 битами 01 00 00 00 что означает что я типо мышкой нажал)
я сделал вот так
Код:
const
b1= '01 00 00 00';
var
cursq :String; //координаты бота
procedure Init; //Вызывается при включении скрипта
begin
end;
procedure Free; //Вызывается при выключении скрипта
begin
end;
procedure OnConnect(WithClient: Boolean); //Вызывается при установке соединения
begin
end;
procedure OnDisonnect(WithClient: Boolean); //Вызывается при потере соединения
begin
end;
begin
if FromClient and (pck[1]=#$01) then
begin
cursq:=pck;
pck:=cursq + hstr(b1);
end;
end.
но он то работает но он добавляет к пакету от клиента туже строку ))
помогите переделать немного
простите что такой примитивный вопрос но я долбался часа 4 чтобы написать такую шнягу и перепробывал много чего пользуясь примерами на этом сайте
Sashafaq, начнем с того что ты говоришь про байты а не биты, если тебе надо заменить последние 4 байта с 25го на 01 00 00 00 в пакете от клиента с ИД 01, то сделай так:
Код:
begin
if FromClient and (pck[1]=#$01) then
begin
buf:=pck;
WriteD(1,25);
pck:=buf;
end;
end.
если я тебя не правильно понял выложи оба пакета, какой идет, и какой надо что б шел, подправим
пасиб конешн но у мя подобие такого скрипт
но я хотел бы выборочно добавлять в конец ,если так оставить то от иг бота пральные пакеты идут а от клиента длиннее ,я хочу чтобы конкретно кажется с 25 бита были вот эти 01 00 00 00
buf:=pck; //сохранили пакет
pck:=''; //очистили пакет
WriteD(1,25); //добавили с 25--01 00 00 00
SendToServer; //отправили на сервер
конечно работать будет и так, но зачем сначала убивать пакет, а потом отправлять новый, если можно тупо заменить старый(как в моем варианте), еще плюс уже и коннект выбирать не придется, он пойдет туда куда и шел