PDA

Просмотр полной версии : научите работать с чатом


dyh9l
11.10.2010, 01:30
вобщем хочу чтоб тело выполняло команду при появлении в чат нужного слова, но не получается.. :(
отлоыил пакет
4A 49 E7 E0 48 00 00 00 00 54 00 70 00 6F 00 49 00 49 00 75 00 48 00 6B 00 61 00 4B 00 48 00 65 00 36 00 79 00 00 00 73 00 74 00 61 00 72 00 74 00 00 00
Tип: 0x4A (Say2)
Pазмер: 51+2
Время прихода: 00:24:24:859
0002 d ObjectID: 1222698825 (0x48E0E749)
0006 d textType: ALL ID:0 (0x0000)
0010 s charName: TpoIIuHkaKHe6y
0040 s Message: start

сделал строку
if FromServer and (pck[1] = #$4A) and (ReadS(40)=start) and (ReadS(10)=TpoIIuHkaKHe6y) then
тока вот синтаксис говорит неправильно, научиииите))
п.с: пока переменных нету, но что-то мне подсказывает что надо добавить что-то в переменные

Liiion911
11.10.2010, 03:29
begin

if FromServer and (ConnectName=Name) and (pck[1]=#$4a) then
begin
i:=10;
Channel:=ReadD(6);
names:=ReadS(i);
mess:=ReadS(i);;
// тут делаем что то с твоими переменными.
// тут канал - куда нам пришла команда
// намес - от каво пришла команда
// месс - текст сообщения
end;
end.

читает команды приходящие ото всех игроков.


begin

if FromClient and (ConnectName=Name) and (pck[1]=#$49) then
begin
mess:=ReadS(2);;
// тут делаем что то с твоими переменными.
// месс - текст сообщения или команды
end;
end.

читает только те команды, которые мы сами же отправляем.



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

ИМХО, лудшее управление не на чат командах а на HTML окнах )
ЗЫ. не зжабуть в константах указать Name

dyh9l
11.10.2010, 10:02
как я понимаю I: integer но не понятен тот момент если I=10 И это ник то почему сообщение тоже присваивается 10 веть сообщение это40 Или я чего то не понимаю

NLObP
11.10.2010, 12:01
как я понимаю I: integer но не понятен тот момент если I=10 И это ник то почему сообщение тоже присваивается 10 веть сообщение это40 Или я чего то не понимаю

Глянь тему "что нужно знать для написания скриптов" (http://coderx.ru/showthread.php?t=10)

в частности там
ReadC(var index:integer):byte - читает из переменной pck байт
ReadH(var index:integer):word - читает из переменной pck число (2 байта) (v. 3.1.8+)
ReadD(var index:integer):integer - читает из переменной pck число (4 байта)
ReadF(var index:integer):double - читает из переменной pck число c плавающей запятой(8 байт) (v. 3.1.8+)
ReadS(var index:integer):string - читает из переменной pck строку (в пакете строка unicode нультерминированная, а результирующая строка обычная паскалевская)
Index - начальная позиция чтения, которая модифицируется функцией (сдвигается на число считанных байт)

supernewbie
11.10.2010, 12:52
if FromServer and (pck[1] = #$4A) and (ReadS(40)=start) and (ReadS(10)=TpoIIuHkaKHe6y) then

мб if FromServer and (pck[1] = #$4A) and (ReadS(10+(length(ReadS(10))*2+2))='start') and (ReadS(10)='TpoIIuHkaKHe6y') then

dyh9l
11.10.2010, 14:51
мб if FromServer and (pck[1] = #$4A) and (ReadS(10+(length(ReadS(10))*2+2))='start') and (ReadS(10)='TpoIIuHkaKHe6y') then
if FromServer and (pck[1] = #$4A) and (ReadS(10+(length(ReadS(10))*2+2))='start') and (ReadS(10)='TpoIIuHkaKHe6y') then
begin
buf:=Hstr('1B 0C 00 00 00') ;
SendToServerEx('name2') ;
end;

все ровно падла не танцует)

J-Fobos
11.10.2010, 15:26
(ReadS(10+(length(ReadS(10))*2+2))='start') :confused: :confused: :confused:


var
s1,s2:string;

//--------
s1:=ReadS(2)='start';
s2:=ReadS(length(s1)*2+2);
//--------

supernewbie
11.10.2010, 21:54
но разве это не длинна строки по символам? для того чтобы узнать сколько пропускать байт надо *2 и +2 из-за окончания строки, и потом читать.

dyh9l
11.10.2010, 23:10
моя голова :(

J-Fobos
12.10.2010, 01:15
supernewbie, да, ты прав, эт я забыл умножить на 2 (с головы вылетело). Поправил пост. Я просто наглядней расписал, чтоб глазу приятней было))

mira
12.10.2010, 09:21
вчера к боту прикрутил длл от icq чат бота с признаками аи то зае*али приставать к фармерам - оо ботяра! Гма сюда!

Осталось базу лексикона поправить под задрота а она большая )