Hi All, I ran a hotel with this for a few weeks and now im releasing it because i realized i dont have the patience for retros anymore (as i suspected). What is Woodpecker (by IRetros): Woodpecker is a v13 Emulator based on Thor project and written in C# by Nillus in 2008. At first,it was a private server and the most wanted Emulator of the age. It was supposed to be used at first for an official RageZONE Hotel, but after the project was sold off by Nillus. Is not a complete and perfect server, but provides a good example to work from (Pathfinding is good, based on Thor's). Woodpecker has all the basic things coded including CFH & stacking. Whats new? SSO Log in disabled - old style client registration/log in (solves wrong SSO error) Rooms now save floor items & public rooms load fine (thanks to Near for his assistance) CMS is almost all english now DCR's work fully with Woodpecker Database includes working catalog with all furni (thats in the DB) Special Woodpecker DCR's with new features and working CFH (thanks to Linkinpark/lRetros) Whats broke?: Private rooms -Pets only walk(they dont make any actions: drink,eat,talk,play and the pet commands dont work) -Laying down on beds(You dont lay on the middle and you can walk around your room laying xD) -When a Habbo is in a room and he is disconnected,he stays in the room even if you reload the room or the Hotel -When you register the Hotel disconnects you(but creates your user) Basic things to improve -Add welcome message -Remove the annoying message of the catalogue that appears when you buy a furni -Add more commands(It only has a few coded commands,if it has the same for example than Debbo) Screen Shots: CMS: Click here to view the original image of 767x553px. Woodpecker: Click here to view the original image of 715x528px. Loader (has prehosted DCR's but not sure how long they will last): [HTML] v13 Loader - Pastebin.com Downloads: -Woodpecker v3 (without source): WJJ Woodpecker - No Source.rar -Woodpecker v3 (with source): WJJ Woodpecker - With Source.rar -Translated Woodpecker CMS: WoodpeckerCMS - Translated- WJJ.zip -Special Woodpecker v3 complete DCR's: [v13] Woodpecker DCRS.rar -v13 Loader with prehosted DCR's: [HTML] v13 Loader - Pastebin.com Credits: Nillus: Creator of the server Superfun: Woodpecker CMS Scottsamp851: Releasing Woodpecker v3 for the first time at the end of 2011 (http://forum.ragezone.com/f353/c-woo...-mysql-804357/) Moogly: release the Elite four Source Codes(Woodpecker included) and give good info about them: (The Elite Four Source Codes) Near: Help with the furni bug and release the beds fix WJJ: fix a few errors in the emulator & catalogue, put all the above together for ease,and translate the CMS Eronisch: Improved catalogue (http://forum.ragezone.com/f353/share...hosted-864940/) lRetros/Linkinpark: Making a list of bugs and things to improve, releasing the special Woodpecker DCR's,help fixing a little bug of CFH. & Anyone else who should be above! Any problems let me know & remember, if you dont have anything nice to say dont reply (lol). FIXES: Bed Fix: Spoiler: Quote Originally Posted by Near View Post Yeah, sure. I kind off "hacked" it in. I haven't figured out how to re-route the players movement. So I just prevent the user from clicking on the parts of the bed where you shouldn't go. In roomMap.cs replace the code that that's there with this: Code: if (lItem.Z >= heightMap[lTile.X, lTile.Y]) { if (lItem.Definition.Behaviour.canStandOnTop) { if (lItem.Z > heightMap[lTile.X, lTile.Y] || lItem.Definition.Behaviour.isRoller) { stateMap[lTile.X, lTile.Y] = roomTileState.Free; heightMap[lTile.X, lTile.Y] = lItem.totalHeight; } } else if (lItem.Definition.isInteractiveStance) { stateMap[lTile.X, lTile.Y] = roomTileState.Interactive; //If this is a bed, we need to redirect the tile to the top/block the tiles under it so you can't have sex if (lItem.Definition.Behaviour.canLayOnTop) { if (lItem.Rotation == 0 || lItem.Rotation == 4) { if (lItem.Definition.Sprite.Contains("two") || !lItem.Definition.Sprite.Contains("one")) { stateMap[lItem.X, lItem.Y + 1] = roomTileState.Blocked; stateMap[lItem.X, lItem.Y + 2] = roomTileState.Blocked; stateMap[lItem.X + 1, lItem.Y + 1] = roomTileState.Blocked; stateMap[lItem.X + 1, lItem.Y + 2] = roomTileState.Blocked; } else { stateMap[lItem.X, lItem.Y + 1] = roomTileState.Blocked; stateMap[lItem.X, lItem.Y + 2] = roomTileState.Blocked; } } if (lItem.Rotation == 2 || lItem.Rotation == 6) { if (lItem.Definition.Sprite.Contains("two") || !lItem.Definition.Sprite.Contains("one")) { stateMap[lItem.X + 1, lItem.Y] = roomTileState.Blocked; stateMap[lItem.X + 2, lItem.Y] = roomTileState.Blocked; stateMap[lItem.X + 1, lItem.Y + 1] = roomTileState.Blocked; stateMap[lItem.X + 2, lItem.Y + 1] = roomTileState.Blocked; } else { stateMap[lItem.X + 1, lItem.Y] = roomTileState.Blocked; stateMap[lItem.X + 2, lItem.Y] = roomTileState.Blocked; } } } } else stateMap[lTile.X, lTile.Y] = roomTileState.Blocked; } If anyone figures out something better, be sure to share it! :) Last edited by WJJ; 12-11-12 at 06:49 PM.