PDA

Просмотр полной версии : вставка символов


supernewbie
19.07.2010, 15:13
Суть. Скрипт должен читать тот текст что я отправляю в чат и перед каждым символом ставить 08 00.

Пытался сам, не получилось как всегда :(

var
lengthtext,i,o:integer;
text:string;

procedure Init; //Вызывается при включении скрипта
begin

end;

procedure Free; //Вызывается при выключении скрипта
begin

end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
begin
if FromClient and (pck[1]=#$49) then
begin
text:=ReadS(2);
lengthtext:=(length(ReadS(2)) * 2 + 2);
pck:='';
buf:=#$49;
WriteS(text);
for i:=2 to lengthtext do
if i=o+2 then
begin
WriteH(8,i+2);
o:=i;
end;
end;
WriteD(0);
SendToServer;
end;

end.

Добавлено через 11 минут
алеееееекс (

alexteam
19.07.2010, 16:01
задача не панятна. собственно скрипт тоже %)

supernewbie
19.07.2010, 16:16
скрипт должен превращать строку 35 00 35 00 35 00 35 00 00 00в 35 00 08 00 35 00 08 00 35 00 08 00 35 00 08 00 00 00

Добавлено через 7 минут
весь мозг сломал уже (

var
lengthtext,i,o,text,text1:integer;
symbols:array [0..255] of integer;
nachalo:boolean;

procedure Init; //Вызывается при включении скрипта
begin
nachalo:=false;
o:=2;
end;

procedure Free; //Вызывается при выключении скрипта
begin

end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
begin
if FromClient and (pck[1]=#$49) then
begin
lengthtext:=(length(ReadS(2)));
for i:=0 to lengthtext do
begin
symbols[i]:=ReadH(o);
o:=o+2;
end;
if i=lengthtext then
begin
buf:=#$49;
for i:=0 to lengthtext do
if not (symbols[i]=0) then
begin
WriteH(symbols[i]);
WriteH(8);
nachalo:=true;
end;
if (i=lengthtext) and (nachalo=true) then
begin
WriteH(0);
WriteD(0);
SendToServer;
o:=2;
Exit;
end;
end;
end;
end;

end.

так вроде робит, но робит через символ почему-то... то есть слово 'сюда' заменит на 'сд'...

alexteam
19.07.2010, 16:17
а в чем проблема то ? %)
как то так.

offset := 2;
Text := reads(offset);//текст
chattype := readd(offset);//тип чата
target := reads(offset);//кому
buf := #$49;//собираем свой пакет

for i := 1 to length(text) do
begin
writes(text[i]);//пишем символ + 0000
writeh($08,length(buf)-2)//меняем последние 0000 на 0800
end;
writeh(0);//final 0000
writed(chattype);//тип чата
if target <> '' then
writes(target); //кому писали. если есть.
pck := buf; //магическая строчка.

supernewbie
19.07.2010, 16:23
между символами нули изчезают)

Добавлено через 1 минуту
хороший пакет 49 36 00 36 00 00 00 00 00 00 00

коверкает в 49 36 08 00 00 36 08 00 00 00 00 00 00 00 00

:(

alexteam
19.07.2010, 16:27
writeh($08,length(buf)-1)
тяжело самому чтоль...

supernewbie
19.07.2010, 16:29
да как ж ты крут)