 |
Возможен ли перевод в Hex? - Общение и обсуждение Aion - События, информация, вопросы и ответы по Aion |
14.05.2013, 16:51
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 21.10.2011
 Сообщений: 14
 Популярность: 12
 Сказал(а) спасибо: 4
Поблагодарили 1 раз в 1 сообщении
|
Возможен ли перевод в Hex?
Здравствуйте форумчане!
Вот у меня какой вопросик -
Допустим есть пакет вида:
 |
Цитата: |
 |
|
|
|
|
|
|
|
A1 00 6D 5E FF 0A 5B 00 69 00 74 00 65 00 6D 00 3A 00 31 00 36 00 30 00 30 00 30 00 32 00 33 00 33 00 37 00 3B 00 76 00 65 00 72 00 33 00 3B 00 3B 00 3B 00 3B 00 5D 00 00 00 |
|
 |
|
 |
|
где красным выделена надпись в чат -
 |
Цитата: |
 |
|
|
|
|
|
|
|
[item:160002337;ver3;;;;] |
|
 |
|
 |
|
Дак вот возможно ли вот эту часть:
 |
Цитата: |
 |
|
|
|
|
|
|
|
31 00 36 00 30 00 30 00 30 00 32 00 33 00 33 00 37 00 |
|
 |
|
 |
|
считывать из сообщения и выводить в чат уже в таком виде:
???
Сразу скажу, да это ссылки вещи в чат и 160002337 - ид этой вещи в игровой памяти.
У меня есть скрипт который переводит из 15 CD 5B 07 (4 байта) в понятный нам всем вид 123456789, но это не то.
Добавлено через 15 часов 47 минут
Народ, не засыпайте мою тему позязя.) помогите лучше, а то работа встала на этом только.(
Последний раз редактировалось martiniFresh; 15.05.2013 в 08:38.
Причина: Добавлено сообщение
|
|
|
15.05.2013, 09:06
|
#2
|
|
|
|
Пехотинец
|
 Регистрация: 30.11.2009
 Сообщений: 83
 Популярность: 1436
 Сказал(а) спасибо: 20
Поблагодарили 94 раз(а) в 54 сообщениях
|
Re: Возможен ли перевод в Hex?
________________
Хакер - не преступник.
Взлом - для искусства.
Смысл - в свободе.
ZOMG ZUFALL!
|
|
|
Пользователь сказал cпасибо:
|
|
15.05.2013, 12:25
|
#3
|
|
|
|
Разведчик
|
 Регистрация: 21.10.2011
 Сообщений: 14
 Популярность: 12
 Сказал(а) спасибо: 4
Поблагодарили 1 раз в 1 сообщении
|
Re: Возможен ли перевод в Hex?
ох огромная спасибка тебе! приду домой, буду пробовать.
Добавлено через 8 минут
Хм... я правильно поняла, что скрипт переводит только то сообщение которое задано в нём, а не берёт из пакета ссылки вещи в чат?
Я просто не увидела проверки идёт ли пакет A1... Или эту часть с процедурой нужно интегрировать в скрипт?
И ещё ниже в цитате это то как выглядит сообщение в чате?
Последний раз редактировалось martiniFresh; 15.05.2013 в 12:33.
Причина: Добавлено сообщение
|
|
|
15.05.2013, 12:44
|
#4
|
|
|
|
Пехотинец
|
 Регистрация: 30.11.2009
 Сообщений: 83
 Популярность: 1436
 Сказал(а) спасибо: 20
Поблагодарили 94 раз(а) в 54 сообщениях
|
Re: Возможен ли перевод в Hex?
В краце (пока я на обеде):
Код:
function AionLinkToItemID(S: String): Integer;
var
sTmp: String;
begin
Result := 0;
sTmp := Copy(S, pos('[item:', S) + 6, Length(S));
if(sTmp = '') then Exit;
sTmp := Copy(sTmp, 1, pos(';', sTmp) - 1);
Result := StrToInt(sTmp);
end;
Эту функцию просто копируешь в свой скрипт, далее, где необходимо получить айди вещи - просто передаешь в функцию сообщение с чата (не важно, в каком месте будет ссылка).
Вполне сойдет передача возврата функции ReadS(), без какого-либо форматирования
функция вернет: - Идентификатор вещи целым числом (Integer)
- 0, если ссылка на вещь ( [item: ) не найдена
 |
Цитата: |
 |
|
|
 |
Сообщение от martiniFresh |
 |
|
|
|
|
|
|
И ещё ниже в цитате это то как выглядит сообщение в чате?
|
|
 |
|
 |
|
Ниже - это вывод этого куска кода:
Код:
procedure Init; //Вызывается при включении скрипта
var
sLink: String;
iID: Integer;
begin
sLink := HStr('5B 69 74 65 6D 3A 31 36 30 30 30 32 33 33 37 3B 76 65 72 33 3B 3B 3B 3B 5D');
iID := AionLinkToItemID(sLink);
SendMSG('ID for "'+sLink+'" == '+IntToStr(iID));
end;
Просто как пример.
________________
Хакер - не преступник.
Взлом - для искусства.
Смысл - в свободе.
ZOMG ZUFALL!
Последний раз редактировалось zombiee; 15.05.2013 в 12:47.
|
|
|
15.05.2013, 12:55
|
#5
|
|
|
|
Разведчик
|
 Регистрация: 21.10.2011
 Сообщений: 14
 Популярность: 12
 Сказал(а) спасибо: 4
Поблагодарили 1 раз в 1 сообщении
|
Re: Возможен ли перевод в Hex?
Последний раз редактировалось martiniFresh; 15.05.2013 в 13:05.
Причина: Добавлено сообщение
|
|
|
15.05.2013, 16:02
|
#6
|
|
|
|
Пехотинец
|
 Регистрация: 30.11.2009
 Сообщений: 83
 Популярность: 1436
 Сказал(а) спасибо: 20
Поблагодарили 94 раз(а) в 54 сообщениях
|
Re: Возможен ли перевод в Hex?
Толком ничего не понял из этой стены текста (ну, кроме нескольких предложений  )
У тебя хотя бы начальный опыт программирования есть?
Зачем такие трудности с 19-ым байтом и прочее? Ловишь пакет 0xA1, выдергиваешь из него сообщение функцией ReadS (полное) и передаешь его в функцию AionLinkToItemID, принимаешь от неё идентификатор вещи и работаешь уже с ним.
Как пример (рабочий скрипт, можешь сразу запустить и проверить):
Код:
function AionLinkToItemID(S: String): Integer;
var
sTmp: String;
begin
Result := 0;
sTmp := Copy(S, pos('[item:', S) + 6, Length(S));
if(sTmp = '') then Exit;
sTmp := Copy(sTmp, 1, pos(';', sTmp) - 1);
Result := StrToInt(sTmp);
end;
var
sMsg: String;
iID: Integer;
begin
if((FromClient) AND (pck[1] = #$A1)) then begin
sMsg := ReadS(7); // Поправь смещение, если я не прав и сообщение начинается не с 7-го байта
// в sMsg будет сообщение, вида: "Продам [item:101700208;ver2;;;], 100500кк, не дорого! ПМ"
iID := AionLinkToItemID(sMsg); // Функция вырежет все, что идет до и после айди вещи, в примере выше - 101700208 и вернет его
if(iID <> 0) then begin
// в iID - идентификатор вещи, к примеру, 160002337, 160204337 и т. д
// Тут работаешь с ним
SendMSG('RECV ID FROM LINK: ' + IntToStr(iID)); // вывод можешь посмотреть в логе л2пх
end;
end;
end.
________________
Хакер - не преступник.
Взлом - для искусства.
Смысл - в свободе.
ZOMG ZUFALL!
|
|
|
Пользователь сказал cпасибо:
|
|
15.05.2013, 17:44
|
#7
|
|
|
|
Разведчик
|
 Регистрация: 21.10.2011
 Сообщений: 14
 Популярность: 12
 Сказал(а) спасибо: 4
Поблагодарили 1 раз в 1 сообщении
|
Re: Возможен ли перевод в Hex?
|
|
|
15.05.2013, 17:52
|
#8
|
|
|
|
Пехотинец
|
 Регистрация: 30.11.2009
 Сообщений: 83
 Популярность: 1436
 Сказал(а) спасибо: 20
Поблагодарили 94 раз(а) в 54 сообщениях
|
Re: Возможен ли перевод в Hex?
 |
Цитата: |
 |
|
|
 |
Сообщение от martiniFresh |
 |
|
|
|
|
|
|
О_О конечно же есть)) иначе я бы всё это не понимала, просто ещё не всё освоила.)
|
|
 |
|
 |
|
Извини, конечно, но впечатление совершенно другое.
Такое ощущение, что ты с бухты - барахты, начитавшись статей про то, как писать скрипты, разработала логику, но вот никак не можешь разобраться с реализацией.
Даже банально понять то, что возвращает функция...
Какой язык изучала?) Наверняка, какой-нибудь скриптовый язык без типизации? Что-то вроде питона или пхп?
Конечно.
P.S: Вопрос из разряда "А можно сесть в мерседес, если денег на вертолет хватает?".
________________
Хакер - не преступник.
Взлом - для искусства.
Смысл - в свободе.
ZOMG ZUFALL!
|
|
|
15.05.2013, 18:03
|
#9
|
|
|
|
Разведчик
|
 Регистрация: 21.10.2011
 Сообщений: 14
 Популярность: 12
 Сказал(а) спасибо: 4
Поблагодарили 1 раз в 1 сообщении
|
Re: Возможен ли перевод в Hex?
Всё отлично получилось! Спасибо ещё раз, но вот почему он выводит сообщение в виде иероглифов а не в виде : D4 5F 1A 44???
Добавлено через 3 минуты
Нет, я в техникуме на программиста училась и мы в Delphi писали ну и просто паскаль, со школы чуток QBasic помню, но уже начинаю забывать. Тут же тоже на основе паскаля, но вот функции это моё слабое место. Хотя и PHP и HTML тоже обладаю, начала JAVAScript, но думаю зря потому как в голове уже винигрет.
Последний раз редактировалось martiniFresh; 15.05.2013 в 18:07.
Причина: Добавлено сообщение
|
|
|
15.05.2013, 18:08
|
#10
|
|
|
|
Пехотинец
|
 Регистрация: 30.11.2009
 Сообщений: 83
 Популярность: 1436
 Сказал(а) спасибо: 20
Поблагодарили 94 раз(а) в 54 сообщениях
|
Re: Возможен ли перевод в Hex?
________________
Хакер - не преступник.
Взлом - для искусства.
Смысл - в свободе.
ZOMG ZUFALL!
|
|
|
15.05.2013, 18:10
|
#11
|
|
|
|
Разведчик
|
 Регистрация: 21.10.2011
 Сообщений: 14
 Популярность: 12
 Сказал(а) спасибо: 4
Поблагодарили 1 раз в 1 сообщении
|
Re: Возможен ли перевод в Hex?
а по поводу иероглифов для меня проблемка в том, почему на WriteS(iID) он ругается в таком виде:
 |
Цитата: |
 |
|
|
|
|
|
|
|
begin
if FromClient and (ReadC(1) = $A1) then begin
sMsg := ReadS(7); // Поправь смещение, если я не прав и сообщение начинается не с 7-го байта
// в sMsg будет сообщение, вида: "Продам [item:101700208;ver2;;;], 100500кк, не дорого! ПМ"
iID := AionLinkToItemID(sMsg); // Функция вырежет все, что идет до и после айди вещи, в примере выше - 101700208 и вернет его
if(iID <> 0) then begin
// в iID - идентификатор вещи, к примеру, 160002337, 160204337 и т. д
// Тут работаешь с ним
buf:=hstr('09 00 44 F6 FF 00 00 00 00 00 00 01 00 00 00 '); //записываем в buf начало пакета (до координат)
writeS(iID); //записываем iID в buf в формате Single
buf:=buf+hstr('00 00 00 00'); //записываем в buf конец пакета
SendToClient;
//SendMSG('RECV ID FROM LINK: ' + IntToStr(iID)); // вывод можешь посмотреть в логе л2пх
end; |
|
 |
|
 |
|
Добавлено через 12 минут
Не ругайся.(( я правда запуталась почему WriteS тут не идёт.((
Последний раз редактировалось martiniFresh; 15.05.2013 в 18:23.
Причина: Добавлено сообщение
|
|
|
15.05.2013, 19:12
|
#12
|
|
|
|
Пехотинец
|
 Регистрация: 30.11.2009
 Сообщений: 83
 Популярность: 1436
 Сказал(а) спасибо: 20
Поблагодарили 94 раз(а) в 54 сообщениях
|
Re: Возможен ли перевод в Hex?
 |
Цитата: |
 |
|
|
 |
Сообщение от martiniFresh |
 |
|
|
|
|
|
|
а по поводу иероглифов для меня проблемка в том, почему на WriteS(iID) он ругается
|
|
 |
|
 |
|
В том, что iID - целое число (Integer), а WriteS - записывает строку.
Лучше скачай делфи, вспомни, что к чему - позже за пхп и прочее возьмешься
По поводу кода, попробуй:
Код:
begin
if FromClient and (ReadC(1) = $A1) then begin
// в sMsg будет сообщение, вида: "Продам [item:101700208;ver2;;;], 100500кк, не дорого! ПМ"
// Обрати внимание, ты уже считала первый байт функцией ReadC - л2пх передвинул смещение на один байт влево (в конец)
sMsg := ReadS(6); // Поправь смещение, если я не прав и сообщение начинается не с 6-го байта
iID := AionLinkToItemID(sMsg); // Функция вырежет все, что идет до и после айди вещи, в примере выше - 101700208 и вернет его
if(iID <> 0) then begin // в iID - идентификатор вещи, к примеру, 160002337, 160204337 и т. д
// Тут работаешь с ним
buf:=hstr('09 00 44 F6 FF 00 00 00 00 00 00 01 00 00 00 '); //записываем в buf начало пакета (до координат)
writeD(iID); //записываем iID в buf в формате Single
// buf:=buf+hstr('00 00 00 00'); //записываем в buf конец пакета - не обязательно, л2, вроде, сам три нулевых байта дописывает
SendToClient;
//SendMSG('RECV ID FROM LINK: ' + IntToStr(iID)); // вывод можешь посмотреть в логе л2пх
end;
А пакет на отправку сообщения (09 00 44 F6 FF) - точно верный?
И поиграйся с параметром ReadS, возможно, что неверно указано смещение
Или можно подправить мою функцию - будет возвращать строку:
Код:
function AionLinkToItemID(S: String): String;
begin
Result := Copy(S, pos('[item:', S) + 6, Length(S));
if(Result = '') then Exit;
Result := Copy(Result , 1, pos(';', Result ) - 1);
end;
________________
Хакер - не преступник.
Взлом - для искусства.
Смысл - в свободе.
ZOMG ZUFALL!
|
|
|
16.05.2013, 07:24
|
#13
|
|
|
|
Разведчик
|
 Регистрация: 21.10.2011
 Сообщений: 14
 Популярность: 12
 Сказал(а) спасибо: 4
Поблагодарили 1 раз в 1 сообщении
|
Re: Возможен ли перевод в Hex?
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
В том, что iID - целое число (Integer), а WriteS - записывает строку.
Лучше скачай делфи, вспомни, что к чему - позже за пхп и прочее возьмешься 
По поводу кода, попробуй:
Код:
begin
if FromClient and (ReadC(1) = $A1) then begin
// в sMsg будет сообщение, вида: "Продам [item:101700208;ver2;;;], 100500кк, не дорого! ПМ"
// Обрати внимание, ты уже считала первый байт функцией ReadC - л2пх передвинул смещение на один байт влево (в конец)
sMsg := ReadS(6); // Поправь смещение, если я не прав и сообщение начинается не с 6-го байта
iID := AionLinkToItemID(sMsg); // Функция вырежет все, что идет до и после айди вещи, в примере выше - 101700208 и вернет его
if(iID <> 0) then begin // в iID - идентификатор вещи, к примеру, 160002337, 160204337 и т. д
// Тут работаешь с ним
buf:=hstr('09 00 44 F6 FF 00 00 00 00 00 00 01 00 00 00 '); //записываем в buf начало пакета (до координат)
writeD(iID); //записываем iID в buf в формате Single
// buf:=buf+hstr('00 00 00 00'); //записываем в buf конец пакета - не обязательно, л2, вроде, сам три нулевых байта дописывает
SendToClient;
//SendMSG('RECV ID FROM LINK: ' + IntToStr(iID)); // вывод можешь посмотреть в логе л2пх
end;
А пакет на отправку сообщения (09 00 44 F6 FF) - точно верный?
И поиграйся с параметром ReadS, возможно, что неверно указано смещение
Или можно подправить мою функцию - будет возвращать строку:
Код:
function AionLinkToItemID(S: String): String;
begin
Result := Copy(S, pos('[item:', S) + 6, Length(S));
if(Result = '') then Exit;
Result := Copy(Result , 1, pos(';', Result ) - 1);
end;
|
|
 |
|
 |
|
Да, точно верный. Я делала активацию на скрипт для мерцания ради эксперемента. Прикрепляла подсказку после ввода команды в чат:
 |
Цитата: |
 |
|
|
|
|
|
|
|
buf:=hstr('09 00 44 F6 FF 00 00 00 00 00 00 01 00 00 00 ');
writeS('Пример моей подсказки в чат только для игрока');
SendToClient; |
|
 |
|
 |
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 01:33.
|
 |