Приветствую читеры и читерихи сегодня я расскажу как избавится с 95% вероятностью от крашрепорт/crashreport (окно с ошибкой и последующем закрытии клиента), и я похоже нашел в чем причина - это сами игроки...
Скрипт убирает всех игроков из виду, т.е. мы заблокируем приходящие пакеты о перемещении и появлении новых игроков клиенту и тем самым уменьшим шанс появления сендлога, у меня сендлогов при крафте уже 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, запускаем скрипт в программе выбрав "Автоматизация -> Скрипты" и поставив галочку напротив скрипта. Галочка показывает активен ли скрипт.
Тыкаем спс если сендлоги в городе исчезли или заметно сократились
Удачи!
З.Ы. Обновил скрипты, для каждой версии свой скрипт:
Последний раз редактировалось Tr0y; 14.03.2011 в 21:38.
Причина: Обновление
Скрипт блокирует пакеты от сервера на перемещение и появление игроков...
Будет пустая локация с мобами ) ТЫ никого не увидишь, включая их ники (клиент вообще не занет, что там есть игроки, т.к. мы блокировали эти приходящие пакеты)...
Зато остальные тебя видят как обычно.
Вылеты не из-за игроков , а из-за того что клиент\сервер иногда посылает неверные\неполные пакеты
Незнаю, таковых я не обнаружил, зато у меня с 99% исчезли сендлоги при крафте в элизиуме... Тест длится уже 5 дней и ниодного сенлога я не поймал, делайте выводы, а раньше каждые 2-40 минут был сендлог...
Вот мне и пришло в голову "избавится" от игроков, чтобы ничего там ошибочного не приходило, мне механизм не интересен, мне был важен результат.
С скриптом мы имеем:
+ к FPS, т.к. нету игроков
+ нету сенлогов
+ просто в устоновке аля "скачай и запусти"
- Не можем выделить рядостоящего, т.к. его нету (релог с выкл. скриптом в помощь)
- Если не вписали свой ИД в исключения, то наша моделька тоже исчезает при телепортации
Не хочешь - не используй
Последний раз редактировалось Tr0y; 27.02.2011 в 11:02.
Всем привет, спасибо за скрипт, пользовался с удовольствием, но теперь на TerAion обнову кинули и не работает!
Как печально та, кто б новый кинул, а то эти сэндлоги просто пипец(((
За ранее спасибо)
Первый пост обновлен, если будут вопросы или замечания/критика, все приемлю )
Файлы скриптов обновил немного и добавил для 2.1 (оба были протестированы)
Автор скажи а не проще в хлапе отключить прием пакетов от сервера? Или ты в клиенте пакетом блокируеш приём этих пакетов??!
Вот только так и не понял как запускаеться скрипт? Просто добалением в хлапу и гг поставлением галочки?) Весь скрипт облазил так и не увидил где кнопка прописана? и какая?
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
Последний раз редактировалось don1500; 01.04.2011 в 21:42.
Автор скажи а не проще в хлапе отключить прием пакетов от сервера? Или ты в клиенте пакетом блокируеш приём этих пакетов??!
Вот только так и не понял как запускаеться скрипт? Просто добалением в хлапу и гг поставлением галочки?) Весь скрипт облазил так и не увидил где кнопка прописана? и какая?
Ну я так понимаю, ты просто их видеть не будешь, а идти они будут.А так он их блокирует скриптом.
И ещё хотелось бы узнать.Если сендлоги из-за игроков.То получается на осадах всех кидать должно, потому что там такая толпа и такие лаги начинаются, просто жесть.Может кто знает как их исправить.Ну или хотябы вырубить показ своих на карте или оптимизировать.А то мля 5мб в сек инет, а лаги просто жесть.
Последний раз редактировалось speran; 04.04.2011 в 11:26.
В клиенте есть функция отключения показа моделек + ников игроков своих и чужих...
Но можно отключить и на пакетном уровне, только во время осады идет очень большой поток трафика входящего, и любой скрипт на проверку будет только тормозить вес это дело еще боольше...
Последний раз редактировалось Tr0y; 24.04.2011 в 11:22.