ID пакета- это его первый байт
так же можно (нужно) посмотреть Packets.ini в корне ПХ, там (почти) все пакеты, которые ПХ расшифровывет, а также хорошо иметь под рукой T2packets.ini из wpf саурона.
512 мб... а не проще еще хотяб 1 планку прикупить?
Решила написать сама условие о сообщение в пати , помогите разобраться с пакетом , смотрю формат пакета say2:
Формат:
XX XX // Длина
4A // Тип
Дальше все ясно ..
Как указывать длину? И как использовать тип в скрипте?
Добавлено через 52 секунды
А след строка тоже не понятна:
XX XX XX XX // Object Id того чара, от кого это сообщение
Как определить Obj.Id чара?
Добавлено через 48 минут
Оказывается object.id чара всегда разный?! Тогда как написать постоянный скрипт на проверку сообщения от чара?
Последний раз редактировалось Amorality, 30.07.2008 в 17:07.
Причина: Добавлено сообщение
ObjectID - Пропускаем
Type - можно пропустить
From - Ник написавшего, то что надо
Message - сообщение
Все строки передаются в формате UNICode, тоесть например "Amorality" будет - "41 00 6D 00 6F 00 72 00 61 00 6C 00 69 00 74 00 79 00" + "00 00"
ReadS() считывает эту строку уже в формате String "Amorality" = "41 6D 6F 72 61 6C 69 74 79"
Теперь попробуем написать скрипт
Delphi Код:
var
i:integer;
beginIn FromServer and(pck[1]=#$4A)thenbegin
i := 10; //Имя с 10 байтаif ReadS(i) = 'Amorality'then//Считываем, сравниваем и увеличиваем i на длину никаif ReadS(i) = 'dence me plz'then//Считываем, сравниваем сообщение
....И понеслось
end;
end.
Вот примерно так
это не совсем рабочий пример
Например - написав сообщение, вы получите этот пакет в оба окна, надо вставлять еще проверку на соединение (ConnectName)
Последний раз редактировалось PanAm, 30.07.2008 в 17:33.
Блин , сама хотела написать , ну спасибо ) Допишу еще , конект нейм и тип пати и буду использовать еще раз спасибо
Добавлено через 13 минут
var
i:integer;
o:integer;
begin
If FromServer and (ConnectName='BDGirl') and (pck[1]=#$4A) then begin
i := 10; //Имя с 10 байта
if ReadS(i) = 'Amorality' then //Считываем, сравниваем и увеличиваем i на длину ника
if ReadS(i) = '-dance' then //Считываем, сравниваем сообщение
buf:=hstr('2F 11 01 00 00 00 00 00 00 00');
SendToServer;
end;
If FromServer and (ConnectName='BDGirl') and (pck[1]=#$4A) then begin
i:= 10; //Имя с 10 байта
o:=11; //ник вроде как 11 длинной
if ReadS(o) = 'Amorality2' then //Считываем, сравниваем и увеличиваем i на длину ника
if ReadS(o) = '-dance' then //Считываем, сравниваем сообщение
buf:=hstr('2F 11 01 00 00 00 00 00 00 00');
SendToServer;
end;
end.
---
Я немного видоизменила скрипт , верен ли он? Задача скрипта .. Бд с ником BDGirl танцует , если в чат Amorality или Amorality2 напишет -dance
Последний раз редактировалось Amorality, 30.07.2008 в 18:11.
Причина: Добавлено сообщение
Не правильно ReadS(i) автоматом увеличивает i на длину строки
o:integer просто лишне.
длина "Amorality2" 10*2+2
тело внитри условия одинаково, лучше тогда так
delphi Код:
var
Commandir : string;
.......
i := 10; //Имя с 10 байта
Commandir := ReadS(i); //Сохранили ник написавшего и увеличиваем i на длину никаif(Commandir = 'Amorality')or(Commandir = 'Amorality2')then//сравниваем if ReadS(i) = '-dence'thenbegin//Считываем, сравниваем сообщение
buf:=hstr('2F 11 01 00 00 00 00 00 00 00');
SendToServer;
end;
........
Добавлено через 4 минуты
Вот и начинается интересное
вы получили один танец на команду, теперь есть 2 пути -
1. В лоб размножить скрипт и давать отдельную команду на каждый танец.
2. Подумать как танцевать серию танцев
Для примера можно почитать тут http://coderx.ru/showthread.php?t=14
и тут http://coderx.ru/showthread.php?t=397
Последний раз редактировалось PanAm, 30.07.2008 в 18:54.
Причина: Добавлено сообщение
var
i,x : integer;
Commandir : string;
Bissy : Boolean;
begin
case x of
1: begin //Блок магического танца начался
buf:=hstr('2F 11 01 00 00 00 00 00 00 00'); //Dance Of Mystic
SendToServer;
inc(x);
Bissy:=true;
end;
2: begin
buf:=hstr('2F 14 01 00 00 00 00 00 00 00'); //Dance Of Concentration
SendToServer;
inc(x);
Bissy:=false;
end;
3: begin //Блок воинского танца начался
buf:=hstr('2F 0F 01 00 00 00 00 00 00 00'); //Dance Of Warrior
SendToServer;
inc(x);
Bissy:=true;
end;
4: begin
buf:=hstr('2F 13 01 00 00 00 00 00 00 00'); //Dance Of Fury
SendToServer;
inc(x);
Bissy:=true;
end;
5: begin
buf:=hstr('2F 12 01 00 00 00 00 00 00 00'); //Dance Of Fire
SendToServer;
inc(x);
Bissy:=false;
end;
end;
end.
begin
If FromServer and (pck[1]=#$4A) then begin
i := 10; //Имя с 10 байта
Commandir := ReadS(i); //Сохранили ник написавшего и увеличиваем i на длину ника
if (Commandir = 'Amorality') or (Commandir = 'Amorality2') then //сравниваем
if ReadS(i) = '-mdance' then begin //Считываем, сравниваем сообщение
if not Bissy then begin
x:=1; //Ссылка на блок с магическим дансом
end;
end;
end;
end;
end;
begin
If FromServer and (pck[1]=#$4A) then begin
i := 10; //Имя с 10 байта
Commandir := ReadS(i); //Сохранили ник написавшего и увеличиваем i на длину ника
if (Commandir = 'Amorality') or (Commandir = 'Amorality2') then //сравниваем
if ReadS(i) = '-wdance' then begin //Считываем, сравниваем сообщение
if not Bissy then begin
x:=3; //Ссылка на блок с воинским дансом
end;
end;
end;
end;
end;
Вот написала скрипт , его задача, если чар Amorality или Amorality2 пишет в чат -mdance , То BDGirl бафает 2 данса: Mystic и Concentration , а есле -wdance , то BDGirl бафает 3 данса : Fury,warrior,fire.
В общем я почти уверена , что скрипт написан не правильно , поправьте пожалуйста , потестить сама не могу , сервер , где я играю на профилактике до сих пор.
Последний раз редактировалось Amorality, 30.07.2008 в 22:20.
Совсем все? Ну ладно если это уже не поправить , то буду водить ботов макросами в пати чат , туда вроде нету ограничений
Добавлено через 5 минут
Хм , сунула скрипт в l2phx , ошибок нету , запускается , но попробовать на деле к сожалению не могу .. Может все таки его можно исправить?
Последний раз редактировалось Amorality, 30.07.2008 в 22:19.
Причина: Добавлено сообщение