Compartilhe
Ir em baixo
avatar
Membro Ouro

Titulo :  
Registro : 13/12/2013
Mensagens : 1003
Reputação : 142

Ver perfil do usuáriohttp://www.habblek.com

[Tutorial] Tirando bug do "tele" [Tutorial]

em Sex 24 Abr 2015 - 17:50
Reputação da mensagem: 100% (1 votos)
Bom Usuários da Power Pixel, vi que alguns usuários estão com problemas devido a um bug muito chato que atrapalha e incomoda a todos, que é o bug do "tele".

O problema é que, apesar de existir o fix, muitos emuladores mercury ainda carregam o erro (Ex: Mercury Original, Mercury Space, Silver, Revision 2 e 3.

O bug é o seguinte: Ao clicar 2x em um teleporte e clicar em seguida em outro piso, o usuário passa a estar o usando o comando tele em qualquer quarto.


Vamos ao Tutorial:


1. Baixe um editor para open source do seu emulador. (Visual Studio)


2. Baixado o programa, abra todo o projeto. Use CTRL + F e procure pelo código:

Código:
case InteractionType.teleport: {
bool flag3 = false;

3. Substitua todo o InteractionType.teleport pelo código:



Código:
case InteractionType.teleport: {
bool flag3 = false;
bool flag4 = false;
if (this.InteractingUser > 0)
{
RoomUser roomUserByHabbo2 = this.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(this.InteractingUser);
if (roomUserByHabbo2 == null)
{
this.InteractingUser = 0u;
return;
}
if (roomUserByHabbo2.Coordinate == this.Coordinate)
{
roomUserByHabbo2.AllowOverride = false;
if (TeleHandler.IsTeleLinked(this.Id, this.mRoom))
{
flag4 = true;
uint linkedTele = TeleHandler.GetLinkedTele(this.Id, this.mRoom);
uint teleRoomId = TeleHandler.GetTeleRoomId(linkedTele, this.mRoom);
if (teleRoomId == this.RoomId)
{
RoomItem item2 = this.GetRoom().GetRoomItemHandler().GetItem(linkedTele);
if (item2 == null)
{
roomUserByHabbo2.UnlockWalking();
}
else
{
roomUserByHabbo2.SetPos(item2.GetX, item2.GetY, item2.GetZ);
roomUserByHabbo2.SetRot(item2.Rot, false);
item2.ExtraData = "2";
item2.UpdateState(false, true);
item2.InteractingUser2 = this.InteractingUser;
}
}
else
{
if (!roomUserByHabbo2.IsBot && roomUserByHabbo2 != null && roomUserByHabbo2.GetClient() != null && roomUserByHabbo2.GetClient().GetHabbo() != null && roomUserByHabbo2.GetClient().GetMessageHandler() != null)
{
roomUserByHabbo2.GetClient().GetHabbo().IsTeleporting = true;
roomUserByHabbo2.GetClient().GetHabbo().TeleportingRoomID = teleRoomId;
roomUserByHabbo2.GetClient().GetHabbo().TeleporterId = linkedTele;
roomUserByHabbo2.GetClient().GetMessageHandler().PrepareRoomForUser(teleRoomId, "");
}
}
this.InteractingUser = 0u;
}
else
{
roomUserByHabbo2.UnlockWalking();
this.InteractingUser = 0u;
roomUserByHabbo2.CanWalk = false;
roomUserByHabbo2.TeleportEnabled = false;
roomUserByHabbo2.MoveTo(this.SquareInFront);
roomUserByHabbo2.CanWalk = true;
}
}
else
{
if (roomUserByHabbo2.Coordinate == this.SquareInFront)
{
roomUserByHabbo2.AllowOverride = true;
flag3 = true;
if (roomUserByHabbo2.IsWalking && (roomUserByHabbo2.GoalX != this.mX || roomUserByHabbo2.GoalY != this.mY))
{
roomUserByHabbo2.ClearMovement(true);
}
roomUserByHabbo2.SetRot(PathFinding.PathFinder.CalculateRotation(roomUserByHabbo2.X, roomUserByHabbo2.Y, this.mX, this.mY));
roomUserByHabbo2.CanWalk = false;
roomUserByHabbo2.AllowOverride = false;
roomUserByHabbo2.UnlockWalking();
roomUserByHabbo2.TeleportEnabled = true;
roomUserByHabbo2.MoveTo(this.GetX, this.GetY, true);
roomUserByHabbo2.TeleportEnabled = false;
roomUserByHabbo2.UnlockWalking();
}
else
{
this.InteractingUser = 0u;
}
}
}
if (this.InteractingUser2 > 0u)
{
RoomUser roomUserByHabbo3 = this.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(this.InteractingUser2);
if (roomUserByHabbo3 != null)
{
flag3 = true;
roomUserByHabbo3.UnlockWalking();
roomUserByHabbo3.MoveTo(this.SquareInFront);
}
this.InteractingUser2 = 0u;
}
if (flag3)
{
if (this.ExtraData != "1")
{
this.ExtraData = "1";
this.UpdateState(false, true);
}
}
else
{
if (flag4)
{
if (this.ExtraData != "2")
{
this.ExtraData = "2";
this.UpdateState(false, true);
}
}
else
{
if (this.ExtraData != "0")
{
this.ExtraData = "0";
this.UpdateState(false, true);
}
}
}
this.ReqUpdate(1, false);
return;
}

4. Dê debug no projeto, salve e execute o emulador com essas modificações. 
avatar
Membro Elite

Titulo :  
Registro : 04/07/2013
Mensagens : 4408
Reputação : 280

Ver perfil do usuário

Re: [Tutorial] Tirando bug do "tele" [Tutorial]

em Sex 24 Abr 2015 - 18:08
ótimo tutorial irá ajudar muitos usuários
avatar
Membro Elite

Titulo :
Registro : 10/01/2014
Mensagens : 4670
Reputação : 665

Ver perfil do usuário

Re: [Tutorial] Tirando bug do "tele" [Tutorial]

em Sex 24 Abr 2015 - 18:29
Obrigado por compartilhar, estarei fixando em breve.
avatar
Membro Platina

Titulo :  
Registro : 23/11/2012
Mensagens : 2728
Reputação : 273

Ver perfil do usuário

Re: [Tutorial] Tirando bug do "tele" [Tutorial]

em Sex 24 Abr 2015 - 18:49
Ótima iniciativa, já tinha visto esses códigos em outro lugar mas tinha os perdido.
avatar
Membro Platina

Titulo :  
Registro : 27/09/2014
Mensagens : 2734
Reputação : 277

Ver perfil do usuário

Re: [Tutorial] Tirando bug do "tele" [Tutorial]

em Sex 24 Abr 2015 - 20:09
Ótimo tutorial, Parabéns. 

O autor desta mensagem foi removido do fórum - Ver a mensagem

Conteúdo patrocinado

Re: [Tutorial] Tirando bug do "tele" [Tutorial]

Voltar ao Topo
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum