Апдейт 06-06-07, codename 'Moskovia'
Модератор: 4epT
Правила форума
ВНИМАНИЕ: реклама сторонних ботов запрещена! Всякие плюшки - можно
ВНИМАНИЕ: реклама сторонних ботов запрещена! Всякие плюшки - можно
Вот апдейт для 1.6.9
http://slil.ru/24481747
сделан по анологии с 1.9.4 СВН, но к сожелению не работают 2 вещи:
sendMove
sendItemUse
Совершенно не понятно, почему все остальные функции работают замечательно, а эти 2 нет, правилось все по одному и тому же принципу Просьба помочь с ними.
сборка 1.6.9 - стандартная, с опенкоры, + ропп с вашего сайта
http://slil.ru/24481747
сделан по анологии с 1.9.4 СВН, но к сожелению не работают 2 вещи:
sendMove
sendItemUse
Совершенно не понятно, почему все остальные функции работают замечательно, а эти 2 нет, правилось все по одному и тому же принципу Просьба помочь с ними.
сборка 1.6.9 - стандартная, с опенкоры, + ропп с вашего сайта
-
- Профессионал
- Сообщения: 272
- Зарегистрирован: Вс ноя 05, 2006 2:03 pm
Все просто. В 1.6.9 неправильно формируются координаты. Там старый вариант, а новый не реализован.
Вот тебе файлик Utils.pm с исправленным вариантом функции getCoordString. Замени и будет тебя щастье.
А еще я сильно сомневаюсь, что у тебя будет работать XKore.
Вот тебе файлик Utils.pm с исправленным вариантом функции getCoordString. Замени и будет тебя щастье.
А еще я сильно сомневаюсь, что у тебя будет работать XKore.
- Вложения
-
- Utils.zip
- (10.54 КБ) 141 скачивание
-
- Профессионал
- Сообщения: 272
- Зарегистрирован: Вс ноя 05, 2006 2:03 pm
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
japplegame
Ой ли?
Дело в том что я недавно игрался nopadding и сниффером, и был удивлен чудесной разницей в алгоритмах.
Ой ли?
Как ты думаешь, сдвиг первого байта на 8 бит(!)... это принципиальная разница в алгоритме?sub getCoordString {
my $x = int(shift);
my $y = int(shift);
my $nopadding = shift;
my $coords = "";
shiftPack(\$coords, 0x44, 8)
unless (($config{serverType} == 0) || ($config{serverType} == 3) || ($config{serverType} == 5) || $nopadding);
shiftPack(\$coords, $x, 10);
shiftPack(\$coords, $y, 10);
shiftPack(\$coords, 0, 4);
return $coords;
}
Дело в том что я недавно игрался nopadding и сниффером, и был удивлен чудесной разницей в алгоритмах.
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
Уточнение. Я спецом поднял разные по возрасту варианты этой фунции, ну и подсунул им одни и те же координаты. Вот что они вернули:
__ 1E D7 B0 <--- Kore kRO v0.48 (2новички: это самый первый бот для RO)
44 1E D7 B0 <--- совремеменная OpenKore, вызов с "1"
__ 1E D7 B0 <--- совремеменная OpenKore, вызов с "0"
__ 1E D7 B0 <--- OpenKore 1.6.x, для сервер-тайпов 0, 3 и 5 (а у афтара другой сервертайп, ке-ке-ке)
44 1E D7 B0 <--- OpenKore 1.6.x для всех остальных сервертайпов (вот проблема афтара! наша функция в sT-13, ждет 3 байта).
PS: Все исходники могу предоставить.
__ 1E D7 B0 <--- Kore kRO v0.48 (2новички: это самый первый бот для RO)
44 1E D7 B0 <--- совремеменная OpenKore, вызов с "1"
__ 1E D7 B0 <--- совремеменная OpenKore, вызов с "0"
__ 1E D7 B0 <--- OpenKore 1.6.x, для сервер-тайпов 0, 3 и 5 (а у афтара другой сервертайп, ке-ке-ке)
44 1E D7 B0 <--- OpenKore 1.6.x для всех остальных сервертайпов (вот проблема афтара! наша функция в sT-13, ждет 3 байта).
PS: Все исходники могу предоставить.
Последний раз редактировалось piroJOKE Чт июн 07, 2007 9:12 pm, всего редактировалось 6 раз.
-
- Профессионал
- Сообщения: 272
- Зарегистрирован: Вс ноя 05, 2006 2:03 pm
Дык в старой версии (оригинальной 1.6.9), даже такого аргумента нет $nopadding
Там всего два аргумента.
Там всего два аргумента.
Последний раз редактировалось japplegame Чт июн 07, 2007 7:57 pm, всего редактировалось 1 раз.
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
Обновил пост. Смотри выше. (Забавно: оригинальная "Кора" работает "правильно" изначально )
Моя теория, откуда это взялось: в старые времена junk-и были дикостью (они и щас дикость, но... привычная).
Поэтому лишний байт показался чувакам в те времена чем-то "этаким". И появился в функции.
Моя теория, откуда это взялось: в старые времена junk-и были дикостью (они и щас дикость, но... привычная).
Поэтому лишний байт показался чувакам в те времена чем-то "этаким". И появился в функции.
Все верно, там его роль играет сам сервер-тайп. См. маю теорию выше.japplegame писал(а):Дык в старой версии (...) даже такого аргумента нет $nopadding, Там всего два аргумента.
-
- Профессионал
- Сообщения: 272
- Зарегистрирован: Вс ноя 05, 2006 2:03 pm
Не понимаю, честно говоря, о чем спор?
То ли ты пытаешься доказать, что три байта и четыре это одно и тоже, то ли еще что-то, мне непонятно.
Но я знаю точно, что 1.6.9 неправильно создает координаты и поэтому пакет не работает.
Ибо я эти эксперименты с nopadding проводил еще, когда первый раз прикрутил ropp к 1.6.9, тогда же я внес изменения в Utils.pm, который по сей день прекрасно работает для всех типов серверов.
То ли ты пытаешься доказать, что три байта и четыре это одно и тоже, то ли еще что-то, мне непонятно.
Но я знаю точно, что 1.6.9 неправильно создает координаты и поэтому пакет не работает.
Ибо я эти эксперименты с nopadding проводил еще, когда первый раз прикрутил ropp к 1.6.9, тогда же я внес изменения в Utils.pm, который по сей день прекрасно работает для всех типов серверов.
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
Фух-фух. Существенная часть в них правильная. И на своем месте.
Я скажем, мог бы написать в sT-13 такое:
- $msg = pack("C*", 0xF7, 0x00) . pack("x8") . getCoordString($x, $y, 1) . pack("x6");
+ $msg = pack("C*", 0xF7, 0x00) . pack("x7") . getCoordString($x, $y, 0) . pack("x6");
....и у афтара бы все заработало.
"три байта и четыре это одно и тоже" - пардон! -
PS: Против твоего утильза.пм ничего не имею.
Я скажем, мог бы написать в sT-13 такое:
- $msg = pack("C*", 0xF7, 0x00) . pack("x8") . getCoordString($x, $y, 1) . pack("x6");
+ $msg = pack("C*", 0xF7, 0x00) . pack("x7") . getCoordString($x, $y, 0) . pack("x6");
....и у афтара бы все заработало.
"три байта и четыре это одно и тоже" - пардон! -
- вот это и есть причина спора; я тоже так когда-то думал - а на самом деле алгоритм тот же. Ну.... ставля точку: это не "другой алгоритм", это просто историческое недоразумение.japplegame писал(а):Алгоритмы совершенно разные.
PS: Против твоего утильза.пм ничего не имею.
К сожелению я новичек в этом деле, поэтому прошу помочь разобраться. вот что дал сниффер (движение 263, 269 -> 262, 269)
Клиент
1 ***.***.***.***:2245 81.177.13.19:5000 19 Send
0000 F7 00 37 38 36 63 62 35 37 00 41 90 D0 65 36 33 ..786cb57.A..e63
0010 66 61 00 fa.
2 81.177.13.19:5000 ***.***.***.***:2245 12 Recv
0000 87 00 F1 71 54 0A 41 D0 D4 19 0D 88 ...qT.A.....
консоль (piroJOKE)
1 ***.***.***.***:2252 81.177.13.19:5000 19 Send
0000 F7 00 00 00 00 00 00 00 00 44 43 40 00 00 00 00 .........DC@....
0010 00 00 00
консоль (japplegame)
1 ***.***.***.***:2252 81.177.13.19:5000 19 Send
0000 F7 00 00 00 00 00 00 00 00 44 43 40 00 00 00 00 .........DC@....
0010 00 00 00
Клиент
1 ***.***.***.***:2245 81.177.13.19:5000 19 Send
0000 F7 00 37 38 36 63 62 35 37 00 41 90 D0 65 36 33 ..786cb57.A..e63
0010 66 61 00 fa.
2 81.177.13.19:5000 ***.***.***.***:2245 12 Recv
0000 87 00 F1 71 54 0A 41 D0 D4 19 0D 88 ...qT.A.....
консоль (piroJOKE)
1 ***.***.***.***:2252 81.177.13.19:5000 19 Send
0000 F7 00 00 00 00 00 00 00 00 44 43 40 00 00 00 00 .........DC@....
0010 00 00 00
консоль (japplegame)
1 ***.***.***.***:2252 81.177.13.19:5000 19 Send
0000 F7 00 00 00 00 00 00 00 00 44 43 40 00 00 00 00 .........DC@....
0010 00 00 00