Menu
Forums
All threads
Latest threads
New posts
Trending threads
New posts
Search forums
Trending
What's new
New posts
New profile posts
Latest activity
Members
Current visitors
New profile posts
Search profile posts
Upgrades
Log in
Register
What's new
Search
Search
Search titles only
By:
All threads
Latest threads
New posts
Trending threads
New posts
Search forums
Menu
Log in
Register
Navigation
Install the app
Install
More options
Contact us
Close Menu
Forums
Server Development
Habbo Retros
Habbo Q&A
[FIX] Soccer.cs Plus Emulator
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="JayC" data-source="post: 395766" data-attributes="member: 36373"><p>I believe I solved this in my plusemu edit, go ahead and try this and see if it is indeed different:</p><p></p><p>Replace this method in your Soccer.cs file</p><p>[CODE]public void OnUserWalk(RoomUser User)</p><p> {</p><p> if (User == null)</p><p> return;</p><p></p><p> foreach (Item item in this._balls.Values.ToList())</p><p> {</p><p> int NewX = 0;</p><p> int NewY = 0;</p><p> int differenceX = User.X - item.GetX; //Gets the difference between the item X and user X coordinates</p><p> int differenceY = User.Y - item.GetY; //Gets the difference between the item Y and user Y coordinates</p><p></p><p> if (differenceX == 0 && differenceY == 0) //If user is on top of the ball</p><p> {</p><p> if (User.RotBody == 4) //SOUTH</p><p> {</p><p> NewX = User.X;</p><p> NewY = User.Y + 2;</p><p></p><p> }</p><p> else if (User.RotBody == 6) //WEST</p><p> {</p><p> NewX = User.X - 2;</p><p> NewY = User.Y;</p><p></p><p> }</p><p> else if (User.RotBody == 0) //NORTH</p><p> {</p><p> NewX = User.X;</p><p> NewY = User.Y - 2;</p><p></p><p> }</p><p> else if (User.RotBody == 2) //EAST</p><p> {</p><p> NewX = User.X + 2;</p><p> NewY = User.Y;</p><p></p><p> }</p><p> else if (User.RotBody == 1) //NORTH-EAST</p><p> {</p><p> NewX = User.X + 2;</p><p> NewY = User.Y - 2;</p><p></p><p> }</p><p> else if (User.RotBody == 7) //NORTH-WEST</p><p> {</p><p> NewX = User.X - 2;</p><p> NewY = User.Y - 2;</p><p></p><p> }</p><p> else if (User.RotBody == 3) //SOUTH-EAST</p><p> {</p><p> NewX = User.X + 2;</p><p> NewY = User.Y + 2;</p><p></p><p> }</p><p> else if (User.RotBody == 5)//SOUTH-WEST</p><p> {</p><p> NewX = User.X - 2;</p><p> NewY = User.Y + 2;</p><p> }</p><p></p><p> //new x and y is +2 tiles in the direction the user is facing.</p><p></p><p></p><p> //The next tile is not valid, so lets not move the ball.</p><p> if (!this._room.GetRoomItemHandler().CheckPosItem(User.GetClient(), item, NewX, NewY, item.Rotation, false, false))</p><p> {</p><p> if (User.RotBody == 4) //SOUTH</p><p> {</p><p> NewX = User.X;</p><p> NewY = User.Y + 1;</p><p></p><p> }</p><p> else if (User.RotBody == 6) //WEST</p><p> {</p><p> NewX = User.X - 1;</p><p> NewY = User.Y;</p><p></p><p> }</p><p> else if (User.RotBody == 0) //NORTH</p><p> {</p><p> NewX = User.X;</p><p> NewY = User.Y - 1;</p><p></p><p> }</p><p> else if (User.RotBody == 2) //EAST</p><p> {</p><p> NewX = User.X + 1;</p><p> NewY = User.Y;</p><p></p><p> }</p><p> else if (User.RotBody == 1) //NORTH-EAST</p><p> {</p><p> NewX = User.X + 1;</p><p> NewY = User.Y - 1;</p><p></p><p> }</p><p> else if (User.RotBody == 7) //NORTH-WEST</p><p> {</p><p> NewX = User.X - 1;</p><p> NewY = User.Y - 1;</p><p></p><p> }</p><p> else if (User.RotBody == 3) //SOUTH-EAST</p><p> {</p><p> NewX = User.X + 1;</p><p> NewY = User.Y + 1;</p><p></p><p> }</p><p> else if (User.RotBody == 5)//SOUTH-WEST</p><p> {</p><p> NewX = User.X - 1;</p><p> NewY = User.Y + 1;</p><p> }</p><p></p><p> if (!this._room.GetRoomItemHandler().CheckPosItem(User.GetClient(), item, NewX, NewY, item.Rotation, false, false))</p><p> {</p><p> if (User.RotBody == 4) //SOUTH</p><p> {</p><p> NewX = User.X;</p><p> NewY = User.Y - 1;</p><p></p><p> }</p><p> else if (User.RotBody == 6) //WEST</p><p> {</p><p> NewX = User.X + 1;</p><p> NewY = User.Y;</p><p></p><p> }</p><p> else if (User.RotBody == 0) //NORTH</p><p> {</p><p> NewX = User.X;</p><p> NewY = User.Y + 1;</p><p></p><p> }</p><p> else if (User.RotBody == 2) //EAST</p><p> {</p><p> NewX = User.X - 1;</p><p> NewY = User.Y;</p><p></p><p> }</p><p> else if (User.RotBody == 1) //NORTH-EAST</p><p> {</p><p> NewX = User.X - 1;</p><p> NewY = User.Y + 1;</p><p></p><p> }</p><p> else if (User.RotBody == 7) //NORTH-WEST</p><p> {</p><p> NewX = User.X + 1;</p><p> NewY = User.Y + 1;</p><p></p><p> }</p><p> else if (User.RotBody == 3) //SOUTH-EAST</p><p> {</p><p> NewX = User.X - 1;</p><p> NewY = User.Y - 1;</p><p></p><p> }</p><p> else if (User.RotBody == 5)//SOUTH-WEST</p><p> {</p><p> NewX = User.X + 1;</p><p> NewY = User.Y - 1;</p><p> }</p><p> }</p><p> }</p><p> }</p><p></p><p> if (item.GetRoom().GetGameMap().ValidTile(NewX, NewY))</p><p> {</p><p> MoveBall(item, NewX, NewY, User);</p><p> }</p><p> }</p><p> }[/CODE]</p><p>Rooms -> Games -> Football -> Soccer</p><p></p><p>To save you time, this is mine:</p><p><a href="https://i.gyazo.com/014a27b6f1da30f09bc9f11602a8d0e7.mp4" target="_blank">https://i.gyazo.com/014a27b6f1da30f09bc9f11602a8d0e7.mp4</a></p><p></p><p>Mine still "stomps" the ball. This is because this test is after the user completes his walk. "OnUserWalk" is called when the user reaches the destination.</p></blockquote><p></p>
[QUOTE="JayC, post: 395766, member: 36373"] I believe I solved this in my plusemu edit, go ahead and try this and see if it is indeed different: Replace this method in your Soccer.cs file [CODE]public void OnUserWalk(RoomUser User) { if (User == null) return; foreach (Item item in this._balls.Values.ToList()) { int NewX = 0; int NewY = 0; int differenceX = User.X - item.GetX; //Gets the difference between the item X and user X coordinates int differenceY = User.Y - item.GetY; //Gets the difference between the item Y and user Y coordinates if (differenceX == 0 && differenceY == 0) //If user is on top of the ball { if (User.RotBody == 4) //SOUTH { NewX = User.X; NewY = User.Y + 2; } else if (User.RotBody == 6) //WEST { NewX = User.X - 2; NewY = User.Y; } else if (User.RotBody == 0) //NORTH { NewX = User.X; NewY = User.Y - 2; } else if (User.RotBody == 2) //EAST { NewX = User.X + 2; NewY = User.Y; } else if (User.RotBody == 1) //NORTH-EAST { NewX = User.X + 2; NewY = User.Y - 2; } else if (User.RotBody == 7) //NORTH-WEST { NewX = User.X - 2; NewY = User.Y - 2; } else if (User.RotBody == 3) //SOUTH-EAST { NewX = User.X + 2; NewY = User.Y + 2; } else if (User.RotBody == 5)//SOUTH-WEST { NewX = User.X - 2; NewY = User.Y + 2; } //new x and y is +2 tiles in the direction the user is facing. //The next tile is not valid, so lets not move the ball. if (!this._room.GetRoomItemHandler().CheckPosItem(User.GetClient(), item, NewX, NewY, item.Rotation, false, false)) { if (User.RotBody == 4) //SOUTH { NewX = User.X; NewY = User.Y + 1; } else if (User.RotBody == 6) //WEST { NewX = User.X - 1; NewY = User.Y; } else if (User.RotBody == 0) //NORTH { NewX = User.X; NewY = User.Y - 1; } else if (User.RotBody == 2) //EAST { NewX = User.X + 1; NewY = User.Y; } else if (User.RotBody == 1) //NORTH-EAST { NewX = User.X + 1; NewY = User.Y - 1; } else if (User.RotBody == 7) //NORTH-WEST { NewX = User.X - 1; NewY = User.Y - 1; } else if (User.RotBody == 3) //SOUTH-EAST { NewX = User.X + 1; NewY = User.Y + 1; } else if (User.RotBody == 5)//SOUTH-WEST { NewX = User.X - 1; NewY = User.Y + 1; } if (!this._room.GetRoomItemHandler().CheckPosItem(User.GetClient(), item, NewX, NewY, item.Rotation, false, false)) { if (User.RotBody == 4) //SOUTH { NewX = User.X; NewY = User.Y - 1; } else if (User.RotBody == 6) //WEST { NewX = User.X + 1; NewY = User.Y; } else if (User.RotBody == 0) //NORTH { NewX = User.X; NewY = User.Y + 1; } else if (User.RotBody == 2) //EAST { NewX = User.X - 1; NewY = User.Y; } else if (User.RotBody == 1) //NORTH-EAST { NewX = User.X - 1; NewY = User.Y + 1; } else if (User.RotBody == 7) //NORTH-WEST { NewX = User.X + 1; NewY = User.Y + 1; } else if (User.RotBody == 3) //SOUTH-EAST { NewX = User.X - 1; NewY = User.Y - 1; } else if (User.RotBody == 5)//SOUTH-WEST { NewX = User.X + 1; NewY = User.Y - 1; } } } } if (item.GetRoom().GetGameMap().ValidTile(NewX, NewY)) { MoveBall(item, NewX, NewY, User); } } }[/CODE] Rooms -> Games -> Football -> Soccer To save you time, this is mine: [URL]https://i.gyazo.com/014a27b6f1da30f09bc9f11602a8d0e7.mp4[/URL] Mine still "stomps" the ball. This is because this test is after the user completes his walk. "OnUserWalk" is called when the user reaches the destination. [/QUOTE]
Insert quotes…
Verification
Post reply
Forums
Server Development
Habbo Retros
Habbo Q&A
[FIX] Soccer.cs Plus Emulator
Top