Skip to content
La2Base
Home
DownloadsWikiForumFAQ
Search
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/Форум для новичков[JAVA]/[help]баг с трейдом
Search

[help]баг с трейдом

24 replies295 viewsCurrently viewing: 1
I
interhostnn

User

Участник

Posts: 48

На форуме с: 01/02/2009

Репутация: +4

Рейтинг: 0

· 08/08/2009, 06:42 PM

Железо: Core Quad 2,4GHz (Q6600),
10 Gb RAM,
2Ч160Gb 7200rpm HDD
ОС: Windows Server 2003 х64
Программы: мускул 7.0 х64, ява х64
Сборка: Interlude, la2base, final 1.1.7

Краткое изложение СУТИ проблемы: Два персонажа договариваются о торге. Один кидает вещи в трейд, другой тоже что-то швыряет и нажимает ок. И делает рестарт, в результате все вещи достаются тому человеку, который сделал рестарт.
Вопрос: в чем причина и как исправить?
Мои соображения по этому поводу: ну ошибка в ядре. почитал некоторые темы на форуме. нашел следующий фикс от людей :


6. Баг с трейдом (дюп) :

Доступно только для пользователейВыкладываю долгожданный фикс бага с трейдом. Этот фикс очень нужный, т.к. баг работает практически на 90% ява серверов.

И фикс этого бага - не просто проверка, как это было раньше, а куда более серьёзная функция и проверки ессно тоже имеют место быть.

Чтобы пофиксить этот баг, мы вводим переменную в ClientThread.java "чар уже выбран", чтобы не допустить обработку входа персонажем дважды....

Итак, ClientThread.java, после:

Код
private String _loginName;
private L2PcInstance _activeChar;
private SessionKey _sessionId;
private final Connection _connection;
final ScheduledFuture _autoSaveInDB;

добавляем:

Код

private int sendedcharselected = 0;

после:

public String getLoginName()
{
return _loginName;
}

добавляем:

Код
public int reqCharSelected(){
if (sendedcharselected == 0){
sendedcharselected = 1;
return 0;
} else return 1;
}

public void reqRequestRestart(){
sendedenterworld = 0;
sendedcharselected =0;
}

Теперь делаем проверку в исходнике CharacterSelected.java:

Приводим void runImpl() к виду:

Код
void runImpl()
{
if (Config.DEBUG) _log.fine("selected slot:" + _charSlot);

L2PcInstance cha = getClient().loadCharFromDisk(_charSlot);
ClientThread client = getClient();
if (client.reqCharSelected() == 1) {
_log.warning("~~~BHuMaHue!!! char "+_charSlot+" delaet dvojnoj vxod...");
cha.closeNetConnection();
return;

}

//loadup character from disk
if(cha == null)
{

..........................
..........................
..........................

Тоесть теперь в рамках одной сессии с гейм сервером будет обрабатываться только один пакет CharacterSelected.

Но не стоит забывать, что человек может сделать рестарт к примеру (выход на комнату персонажей), и в этом случае он не сможет зайти за вновь выбранного чара. Что делать? Всё очень просто, нам всего лишь необходимо сбрасывать значение переменной sendedcharselected на 0. Для этого и была сделанна вторая функция в ClientThread.java.

Итак, исходник RequestRestart.java:

В код вставить вызов функции:

player.deleteMe();
ClientThread.saveCharToDisk(getClient().getActiveC har());

RestartResponse response = new RestartResponse();
sendPacket(response);
}
getClient().reqRequestRestart();
getClient().setActiveChar(null);

Итак, баг пофикшен...



Помогить решить данную проблему.

0
tiesto
tiesto

User

Бывалый

Posts: 265

На форуме с: 03/24/2009

Репутация: +138

Рейтинг: 0

· 08/08/2009, 07:22 PM

Не мог бы дать ссылку на мускул 7,0!!! х64...???

— АдмиралЪ О_о

0
I
interhostnn

User

Участник

Posts: 48

На форуме с: 01/02/2009

Репутация: +4

Рейтинг: 0

· 08/08/2009, 07:39 PM

tiesto: Не мог бы дать ссылку на мускул 7,0!!! х64...???

Выложил на сервер.

ссылку дал в личку







АП! Тема остается открытой, по прежнему на сервере людей так разводят.Нужна помощь...

0
Long117
Long117

User

Участник

Posts: 83

На форуме с: 08/08/2009

Репутация: +85

Рейтинг: 0

· 08/08/2009, 07:42 PM

Ну тогда надо чтобы пофиксили сборку те у кого есть исходники)) Попробуй юзнуть (в данном случае купить) платную последнюю сборку Базы, может там убрали этот баг

0
I
interhostnn

User

Участник

Posts: 48

На форуме с: 01/02/2009

Репутация: +4

Рейтинг: 0

· 08/08/2009, 07:44 PM

Long: Ну тогда надо чтобы пофиксили сборку те у кого есть исходники)) Попробуй юзнуть (в данном случае купить) платную последнюю сборку Базы, может там убрали этот баг

Не убрали.

0
Long117
Long117

User

Участник

Posts: 83

На форуме с: 08/08/2009

Репутация: +85

Рейтинг: 0

· 08/09/2009, 11:00 AM

Или попроси чтобы пофиксили.. Например заплати Destus'у и все будет норм :)

0
I
interhostnn

User

Участник

Posts: 48

На форуме с: 01/02/2009

Репутация: +4

Рейтинг: 0

· 08/10/2009, 09:43 AM

Есть те люди, которые исправили ?

0
А
Антон

User

Бывалый

Posts: 118

На форуме с: 10/30/2008

Репутация: +6

Рейтинг: 0

· 08/10/2009, 10:17 AM

ты откуда это брал? в базе чутка не так сделано

0
I
interhostnn

User

Участник

Posts: 48

На форуме с: 01/02/2009

Репутация: +4

Рейтинг: 0

· 08/10/2009, 10:48 AM

ну а под базу есть ?

Может найдутся такие люди, которые с этим справились ?

0
I
interhostnn

User

Участник

Posts: 48

На форуме с: 01/02/2009

Репутация: +4

Рейтинг: 0

· 08/10/2009, 11:18 AM

У всех исправлено ? )

0
А
Антон

User

Бывалый

Posts: 118

На форуме с: 10/30/2008

Репутация: +6

Рейтинг: 0

· 08/10/2009, 11:33 AM

я вставил шас буду тестить)

0
I
interhostnn

User

Участник

Posts: 48

На форуме с: 01/02/2009

Репутация: +4

Рейтинг: 0

· 08/10/2009, 11:37 AM

region: я вставил шас буду тестить)

Дай аську свою. В долгу не останусь...

0
I
interhostnn

User

Участник

Posts: 48

На форуме с: 01/02/2009

Репутация: +4

Рейтинг: 0

· 08/12/2009, 07:16 PM

У кого-то решена эта прорблема ?

0
-=[BloodKill]=-
-=[BloodKill]=-

User

Ветеран

Posts: 1355

На форуме с: 09/01/2008

Репутация: +1179

Рейтинг: 0

· 08/12/2009, 07:38 PM

Там еще есть 1 баг с трейдом))

Цитата
Запускаеш 2 окна, кидаеш трейд с 1 окна на 2, заходиш на 2 окно и нажимаеш там Alt+h , потом заходиш снова на 1 окно кидаеш трейд тому с кем ты должен торговать, кидаеш шмотки те о котрых вы договорились и он кидаеть, пишеш ему "сек", заходиш на 2 окно нажимаеш Alt+h и соглашаешся с торговлей, потом заходиш на 1 окно и надимаеш ДА, и он нажимаеть ДА. и всё все шмотки идут к тебе , ему нечего. Только одно но ты должен первый потвердить зделку


в платной его нет

— Оо

0
I
interhostnn

User

Участник

Posts: 48

На форуме с: 01/02/2009

Репутация: +4

Рейтинг: 0

· 08/12/2009, 07:39 PM

-=[BloodKill]=-: Там еще есть 1 баг с трейдом))



в платной его нет

Есть.

0
-=[BloodKill]=-
-=[BloodKill]=-

User

Ветеран

Posts: 1355

На форуме с: 09/01/2008

Репутация: +1179

Рейтинг: 0

· 08/12/2009, 07:41 PM

interhostnn: Есть.


в "платной" с сайтов l2supercborka.ru конечно есть

— Оо

0
I
interhostnn

User

Участник

Posts: 48

На форуме с: 01/02/2009

Репутация: +4

Рейтинг: 0

· 08/12/2009, 07:44 PM

-=[BloodKill]=-: в "платной" с сайтов l2supercborka.ru конечно есть

в платной la2base есть :)

давай ссылку сервера в лк, сейчас тебе продемонстрирую...

А сам вопрос по прежнему открытый..

Баз без рестарта работает... в 2 окна.

0
-=[BloodKill]=-
-=[BloodKill]=-

User

Ветеран

Posts: 1355

На форуме с: 09/01/2008

Репутация: +1179

Рейтинг: 0

· 08/12/2009, 07:49 PM

interhostnn: в платной la2base есть :)

давай ссылку сервера в лк, сейчас тебе продемонстрирую...

А сам вопрос по прежнему открытый..

лк?

ссылку дал... проверил - не работает russian_roulette.gif

— Оо

0
I
interhostnn

User

Участник

Posts: 48

На форуме с: 01/02/2009

Репутация: +4

Рейтинг: 0

· 08/12/2009, 07:50 PM

-=[BloodKill]=-: лк?

ссылку дал... проверил - не работает russian_roulette.gif



Сейчас продемонстрирую зайду. Сек. Дай аську, чтобы ник сказать :)


Не так значит делал.

0
-=[BloodKill]=-
-=[BloodKill]=-

User

Ветеран

Posts: 1355

На форуме с: 09/01/2008

Репутация: +1179

Рейтинг: 0

· 08/12/2009, 07:53 PM

interhostnn: Сейчас продемонстрирую зайду. Сек. Дай аську, чтобы ник сказать :)


Не так значит делал.

Аську дал..жду

— Оо

0
Topic is closed for replies