Tr0y
26.02.2011, 13:12
Приветствую читеры и читерихи сегодня я расскажу как избавится с 95% вероятностью от крашрепорт/crashreport (окно с ошибкой и последующем закрытии клиента), и я похоже нашел в чем причина - это сами игроки... :forward:
Скрипт убирает всех игроков из виду, т.е. мы заблокируем приходящие пакеты о перемещении и появлении новых игроков клиенту и тем самым уменьшим шанс появления сендлога, у меня сендлогов при крафте уже 3 неделю нет.
Я блокировал приходящий от сервера пакет на респаун (появление) и на перемещение окружающих игроков, блокируя пакеты по их ID
Вот что получилось:
// Для 2.0
procedure Init; //Вызывается при включении скрипта
begin end;
procedure Free; //Вызывается при выключении скрипта
begin end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if fromserver and
// 35 50 F2 на передвиение других игроков, приходит от сервера
// 1C 50 DB на респаун/появление игроков, приходит от сервера
// 12 34 56 00 свой ID
((pck[1]= #$35) AND (pck[2]= #$50) AND (pck[3]= #$F2))or // это перемещение другого игрока?
(((pck[1]= #$1C) AND (pck[2]= #$50) AND (pck[3]= #$DB))and // это появление/респ?
(NOT((pck[16]= #$12) AND (pck[17]= #$34) AND (pck[18]= #$56)))) // наш ид
then
begin
pck := ''; // блокируем пакет
end;
end.
// Для 2.1
procedure Init; //Вызывается при включении скрипта
begin end;
procedure Free; //Вызывается при выключении скрипта
begin end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if pck='' then exit;
try
if fromserver and
((pck[1]= #$34)or // перемещение игрока?
(pck[1]= #$1F))and // появление игрока?
(NOT((pck[16]= #$12) AND (pck[17]= #$34) AND (pck[18]= #$56))) // наш ид
then
begin
pck := ''; // блокируем пакет
end;
except // тихо обрабатываем возможные ошибки при чтении
exit;
end;
end.
Есть нюанс, если телепортироватся, то наша моделька игрока пропадает и нельзя не использовать умения и двигаться. Я это исправил по следующему, я добавил свой ИД в исключения на блокирование, и все будет ОК, вам нужно только добавить свой ид в исключения, чтобы пакет этот не блокировался и вы не исчезали при телепорте(тп)...
Ид не обязательно свой всписывать, можно просто включить скрипт на время крафта, тогда все существующие игроки и их перемещения "заморозятся" только у вас в клиенте, т.о. исключая случаи "выпадения" сендлогов, но тогда вам не желательно ТПшится куда либо с вкл. скриптом, т.к. при ТП ваша моделька тоже пропадет и спасет только релог или поможет 1 пакет на сервер 67 57 04 - он обновит всю обстановку около вас.
Скрипт не завершенный, можно блокировать еще уйму пакетов, уменьшая появление сендлога до 100%!
Пакет на таргет оранжевый и выглядит примерно так:
Для 2.0
CE 55 6D 44 D1 00 00 00, где 44 D1 00 00 ид вашей цели
Для 2.1
B5 57 72 44 D1 00 00 00, где 44 D1 00 00 ид вашей цели
Выделите себя и измените строку на исключаемый ид тут 3 пары цифер:
(NOT((pck[16]= #$12) AND (pck[17]= #$34) AND (pck[18]= #$56))))
Например, если пакет на таргет
2.0 - CE 55 6D 44 D1 00 00 00,
2.1 - B5 57 72 44 D1 00 00 00,
тогда строка будет вида:
(NOT((pck[16]= #$44) AND (pck[17]= #$D1) AND (pck[18]= #$00))))
Можно даже не вносить изменения в скрипт, но тогда при любом телепорте внутри города будете "пропадать", где поможет релог с откл. скриптом.
Прикрепил файл скрипта, кидаем в папку л2пх ...\SCRIPTS, запускаем скрипт в программе выбрав "Автоматизация -> Скрипты" и поставив галочку напротив скрипта. Галочка показывает активен ли скрипт.
Тыкаем спс если сендлоги в городе исчезли или заметно сократились /problem
Удачи!
З.Ы. Обновил скрипты, для каждой версии свой скрипт:
Скрипт убирает всех игроков из виду, т.е. мы заблокируем приходящие пакеты о перемещении и появлении новых игроков клиенту и тем самым уменьшим шанс появления сендлога, у меня сендлогов при крафте уже 3 неделю нет.
Я блокировал приходящий от сервера пакет на респаун (появление) и на перемещение окружающих игроков, блокируя пакеты по их ID
Вот что получилось:
// Для 2.0
procedure Init; //Вызывается при включении скрипта
begin end;
procedure Free; //Вызывается при выключении скрипта
begin end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if fromserver and
// 35 50 F2 на передвиение других игроков, приходит от сервера
// 1C 50 DB на респаун/появление игроков, приходит от сервера
// 12 34 56 00 свой ID
((pck[1]= #$35) AND (pck[2]= #$50) AND (pck[3]= #$F2))or // это перемещение другого игрока?
(((pck[1]= #$1C) AND (pck[2]= #$50) AND (pck[3]= #$DB))and // это появление/респ?
(NOT((pck[16]= #$12) AND (pck[17]= #$34) AND (pck[18]= #$56)))) // наш ид
then
begin
pck := ''; // блокируем пакет
end;
end.
// Для 2.1
procedure Init; //Вызывается при включении скрипта
begin end;
procedure Free; //Вызывается при выключении скрипта
begin end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if pck='' then exit;
try
if fromserver and
((pck[1]= #$34)or // перемещение игрока?
(pck[1]= #$1F))and // появление игрока?
(NOT((pck[16]= #$12) AND (pck[17]= #$34) AND (pck[18]= #$56))) // наш ид
then
begin
pck := ''; // блокируем пакет
end;
except // тихо обрабатываем возможные ошибки при чтении
exit;
end;
end.
Есть нюанс, если телепортироватся, то наша моделька игрока пропадает и нельзя не использовать умения и двигаться. Я это исправил по следующему, я добавил свой ИД в исключения на блокирование, и все будет ОК, вам нужно только добавить свой ид в исключения, чтобы пакет этот не блокировался и вы не исчезали при телепорте(тп)...
Ид не обязательно свой всписывать, можно просто включить скрипт на время крафта, тогда все существующие игроки и их перемещения "заморозятся" только у вас в клиенте, т.о. исключая случаи "выпадения" сендлогов, но тогда вам не желательно ТПшится куда либо с вкл. скриптом, т.к. при ТП ваша моделька тоже пропадет и спасет только релог или поможет 1 пакет на сервер 67 57 04 - он обновит всю обстановку около вас.
Скрипт не завершенный, можно блокировать еще уйму пакетов, уменьшая появление сендлога до 100%!
Пакет на таргет оранжевый и выглядит примерно так:
Для 2.0
CE 55 6D 44 D1 00 00 00, где 44 D1 00 00 ид вашей цели
Для 2.1
B5 57 72 44 D1 00 00 00, где 44 D1 00 00 ид вашей цели
Выделите себя и измените строку на исключаемый ид тут 3 пары цифер:
(NOT((pck[16]= #$12) AND (pck[17]= #$34) AND (pck[18]= #$56))))
Например, если пакет на таргет
2.0 - CE 55 6D 44 D1 00 00 00,
2.1 - B5 57 72 44 D1 00 00 00,
тогда строка будет вида:
(NOT((pck[16]= #$44) AND (pck[17]= #$D1) AND (pck[18]= #$00))))
Можно даже не вносить изменения в скрипт, но тогда при любом телепорте внутри города будете "пропадать", где поможет релог с откл. скриптом.
Прикрепил файл скрипта, кидаем в папку л2пх ...\SCRIPTS, запускаем скрипт в программе выбрав "Автоматизация -> Скрипты" и поставив галочку напротив скрипта. Галочка показывает активен ли скрипт.
Тыкаем спс если сендлоги в городе исчезли или заметно сократились /problem
Удачи!
З.Ы. Обновил скрипты, для каждой версии свой скрипт: