-
IHI Habbo Impersonate (Coffee TM)
This project has been a little project on the side for quite a while now.
IHI is also known as Project: LOL (see below).
IHI is a server originally based on Deltar/Ion by Nillus.
IHI has since removed almost all Ion code.
IHI does not support any client AT ALL.
IHI uses a plugin system for most of it's functionality.
Plugins will handle pretty much everything.
The progress is a little irregular because of a mixture of reasons that I would rather not go into.
The official IHI site can be found at: http://ihi.cecer1.com
It is not really updated much yet because I am focusing more on IHI than the site.
(Note: The site requires JavaScript)
I will give little updates that you can see: Cecer1 (ProjectIHI) on Twitter
You can see screen shots and videos about IHI on the media page by going to the site and clicking Media (or go to Ion Habbo Impersonate ~ Loading...)
You can suggest features and check on some of the progress (it won't be 100% accurate).
Just see the Bug Tracker.
My View - IHI Bug Tracking
Feature List:
- Mono compatible.
- Simple plugin system.
- Automatic requirement downloading.
- Built-in web server.
- Online plugin library.
- Built-in installer.
- Simple, structured XML based configuration.
Quote:
So why Project: LOL?
You can get from LOL to IHI with a few (simple) steps.
LOL <= Original
lol <= Lower case
101 <= Number lookalike
IHI <= Wire encode each digit. Done.
(See, it isn't just a stupid name)
-
Re: Ion Habbo Impersonate (IHI)
Good Luck with this Cecer1 ,
Will this be open source? or closed?
And I love the special features :P'
Gee, I love Ion/Deltar :P
-
Re: Ion Habbo Impersonate (IHI)
Good luck on this, Looks good from the dev thread.
-
Re: Ion Habbo Impersonate (IHI)
I wish I could put all the features I have planned but people will just claim it as theirs.
It is open source. Check the F.A.Q on the help thread.
-
Re: Ion Habbo Impersonate (IHI)
Very good luck, it seems a good project. i'll follow :)
-
Re: Ion Habbo Impersonate (IHI)
I just finished the majority of the swim figure.
The whole figure is stored in 3 bytes (24 bits). Edit: Corrected. I must be tired... I can't even do 3x8
It is in this format:
Code:
RRRRRRRRGGGGGGGGBBBBBBBB
It is stored in a single unsigned medium integer.
The server automatically decides if a top is needed and fills in the rest of the figure.
Thank you Orriemaster for helping with the testing.
I have included some extracts to show you what the code looks like.
Don't even try and put this in Holograph Emulator unless you know 100% what you are doing.
PHP Code:
/// <summary>
/// 116 - "At"
/// </summary>
private void SetSwimFigure()
{
string SwimFigure = Request.PopFixedString();
if(SwimFigure.Length == 0)
mSession.GetHabbo().SwimFigure = new byte[3]{0,0,0};
else
{
string[] Components = SwimFigure.Substring(7).Split(new char[] { ',' });
mSession.GetHabbo().SwimFigure = new byte[3] { byte.Parse(Components[0]), byte.Parse(Components[1]), byte.Parse(Components[2]) };
}
}
PHP Code:
public byte[] SwimFigure
{
get
{
return IonEnvironment.GetDefaultTextEncoding().GetBytes("ch=s0" + (Gender == 'M' ? '1' : '2') + '/' + mSwimFigure[0].ToString() + ',' + mSwimFigure[1].ToString() + ',' + mSwimFigure[2].ToString());
}
set
{
using (DatabaseClient dbClient = IonEnvironment.GetDatabase().GetClient())
{
dbClient.AddParamWithValue("id", mID);
dbClient.AddParamWithValue("swim", (value[0] * 65536) + (value[1] * 256) + value[2]);
dbClient.ExecuteQuery("UPDATE users SET swim = @swim WHERE id = @id");
}
mSwimFigure = value;
}
}
So there you go.
I generally put more regular (but less detailed) updates here.
It is 3:36 in the morning so I will get to be soon.
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
cecer1
I wish I could put all the features I have planned but people will just claim it as theirs.
It is open source. Check the F.A.Q on the help thread.
Oh I was having fun, about the special features :P
And It shouldn't be open source, as people might change the shit and say as its there own, Only give it to people who you can trust.
If you however release this incomplete, Then It should be open source :D
-
Re: Ion Habbo Impersonate (IHI)
It will be open source no matter what.
If nothing was open source I wouldn't be able to code much at all.
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
cecer1
It will be open source no matter what.
If nothing was open source I wouldn't be able to code much at all.
Okay, I see your point,
I also wouldn't be even able to learn
---------------------------------------------------
And will you have a SVN etc, every time you update it?
I know that Google Code has free project hosting etc,
You don't have to have one, just a suggestion :D
---------------------------------------------------
EDIT:
Quote:
Originally Posted by
cecer1
I just finished the majority of the swim figure.
The whole figure is stored in 3 bytes (24 bits).
Edit: Corrected. I must be tired... I can't even do 3x8
It is in this format:
Code:
RRRRRRRRGGGGGGGGBBBBBBBB
It is stored in a single unsigned medium integer.
The server automatically decides if a top is needed and fills in the rest of the figure.
Thank you Orriemaster for helping with the testing.
I have included some extracts to show you what the code looks like.
Don't even try and put this in Holograph Emulator unless you know 100% what you are doing.
PHP Code:
/// <summary>
/// 116 - "At"
/// </summary>
private void SetSwimFigure()
{
string SwimFigure = Request.PopFixedString();
if(SwimFigure.Length == 0)
mSession.GetHabbo().SwimFigure = new byte[3]{0,0,0};
else
{
string[] Components = SwimFigure.Substring(7).Split(new char[] { ',' });
mSession.GetHabbo().SwimFigure = new byte[3] { byte.Parse(Components[0]), byte.Parse(Components[1]), byte.Parse(Components[2]) };
}
}
PHP Code:
public byte[] SwimFigure
{
get
{
return IonEnvironment.GetDefaultTextEncoding().GetBytes("ch=s0" + (Gender == 'M' ? '1' : '2') + '/' + mSwimFigure[0].ToString() + ',' + mSwimFigure[1].ToString() + ',' + mSwimFigure[2].ToString());
}
set
{
using (DatabaseClient dbClient = IonEnvironment.GetDatabase().GetClient())
{
dbClient.AddParamWithValue("id", mID);
dbClient.AddParamWithValue("swim", (value[0] * 65536) + (value[1] * 256) + value[2]);
dbClient.ExecuteQuery("UPDATE users SET swim = @swim WHERE id = @id");
}
mSwimFigure = value;
}
}
So there you go.
I generally put more regular (but less detailed) updates
here.
It is 3:36 in the morning so I will get to be soon.
Very nice, you're an awesome c# coder,
Right now I'm learning Visual Basic then C#
-
Re: Ion Habbo Impersonate (IHI)
Good luck with this project.
-
Re: Ion Habbo Impersonate (IHI)
Maybe you should add a code that checks if the swim-outfit color is valid?
-
Re: Ion Habbo Impersonate (IHI)
Looks brilliant cecer1, good luck with the project :)
-
Re: Ion Habbo Impersonate (IHI)
Yeah, i will use this insted of uber when it comes out, i prefer open source.
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
-Jordan-
Yeah, i will use this insted of uber when it comes out, i prefer open source.
uber isnt anything like this, v39 -> v40 = big difference
-
Re: Ion Habbo Impersonate (IHI)
Nice development Chris! This looks very intriguing!
-
Re: Ion Habbo Impersonate (IHI)
Ion is a great framework to work with, good luck :)
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
HabboWebs
uber isnt anything like this, v39 -> v40 = big difference
I forgot it was R39 Shockwave Lol, il still stick to this insted of Uber tho.
Also good progress.
also i am looking for the stablest around, not just flash or shockwave. i prefer shockwave.
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
-Jordan-
I forgot it was R39 Shockwave Lol, il still stick to this insted of Uber tho.
Also good progress.
also i am looking for the stablest around, not just flash or shockwave. i prefer shockwave.
shockwave for the fucking win!
-
Re: Ion Habbo Impersonate (IHI)
I did think of doing checks but I was to tired to get each colour.
If you can get a list of them all then I will add them.
Oh, and I just woke up (for the second time in 24 hours).
I am just irregular xD
I am going for some food/drink then I will get rid of a quick fix I did and do a full fix that I have been putting off.
Edit: I might do an SVN. I will see what things are like when I get to that stage.
-
Re: Ion Habbo Impersonate (IHI)
I just remembered the bitwise operators I couldn't remember (and had to do it mathematically) that should be easier (AKA faster) for the computer to work out (or at least might scare people who have no idea what they are doing from messing around and breaking it).
-
Re: Ion Habbo Impersonate (IHI)
lookin forward to this you ave my support ihi
-
Re: Ion Habbo Impersonate (IHI)
Thanks, it is nice to finally not have to say IHI stands for "I Hate Idiots"
Here is the new Swim Figure code:
PHP Code:
public byte[] SwimFigure
{
get
{
if (mSwimFigure[0] == 0)
return new byte[0];
return IonEnvironment.GetDefaultTextEncoding().GetBytes("ch=s0" + (Gender == 'M' ? '1' : '2') + '/' + mSwimFigure[0].ToString() + ',' + mSwimFigure[1].ToString() + ',' + mSwimFigure[2].ToString());
}
set
{
using (DatabaseClient dbClient = IonEnvironment.GetDatabase().GetClient())
{
dbClient.AddParamWithValue("id", mID);
dbClient.AddParamWithValue("swim", (value[0] << 16) | (value[1] << 8) | value[2]); // I love bitwise
dbClient.ExecuteQuery("UPDATE users SET swim = @swim WHERE id = @id");
}
mSwimFigure = value;
}
}
PHP Code:
uint BinarySwimFigure = (uint)dRow["swim"];
SwimFigure = new byte[3] { (byte)(BinarySwimFigure >> 16), (byte)((BinarySwimFigure << 8) >> 16),(byte)((BinarySwimFigure << 16) >> 16)}; // Red, Green, Blue
Edit: I just found this: http://msdn.microsoft.com/en-us/libr...VS.100%29.aspx
Anyone used it before? Would it be worth implementing?
-
Re: Ion Habbo Impersonate (IHI)
I don't suppose anyone knows the packet structure for the AG packet (71) do they?
Anyway, changing booths work apart from the curtains (read above).
-
Re: Ion Habbo Impersonate (IHI)
Good progress. PPl cannot wait for a rel :)
-
Re: Ion Habbo Impersonate (IHI)
Your making brilliant progress. Maybe you could post some screenies in-game though too?
-
Re: Ion Habbo Impersonate (IHI)
I will do some ingame media soon.
I finally managed to get everything working again after my computers USBs died (then refused to restart).
Lets go
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
cecer1
I will do some ingame media soon.
I finally managed to get everything working again after my computers USBs died (then refused to restart).
Lets go
Excellent, glad to know tha you will do some ingame media. Thanks alot :)
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
cecer1
I don't suppose anyone knows the packet structure for the AG packet (71) do they?
Anyway, changing booths work apart from the curtains (read above).
If you mean the server -> client packet it is:
Code:
AG + object + " " + state
Like "AGdoor close" would close the lido evelator door.
-
Re: Ion Habbo Impersonate (IHI)
Thanks but it appears to be different in R39 (I can't packet log it off Habbo either as it doesn't work on Flash).
NEW VIDEO MEDIA!
http://ihi.cecer1.com?pageid=page-media
-
Re: Ion Habbo Impersonate (IHI)
Check the leaked holograph emulator that martinmine and maarten made
-
Re: Ion Habbo Impersonate (IHI)
Already have done. It uses an old structure.
-
Re: Ion Habbo Impersonate (IHI)
Packetlogged habbo, there the structure was:
Code:
AG + object + " " + state + char(2)
try that.
-
Re: Ion Habbo Impersonate (IHI)
I already tried that as well.
I am about to update the first post.
Edit: Updated
-
Re: Ion Habbo Impersonate (IHI)
Remember when Habbo had recommended rooms, they were only random rooms or were they ordered by something like how many visits..? If you are going to do room rating, maybe you can make recommended rooms display the top rated rooms? I don't think Habbo was like that..
Good luck with the project!
-
Re: Ion Habbo Impersonate (IHI)
Code:
AG + object + " " + state + char(2)
And this one really didn't work?
This is weird...
- By the way: Which DCR version did you use for the media-video on the homepage? I've noticed, that there isn't any "gaming-controller" icon... Never seen before on v26.
I hope this is going epic :thumbup1:
-
Re: Ion Habbo Impersonate (IHI)
It uses R39
I expect to do recommend rooms more "recommended" than Habbo.
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
cecer1
It uses R39
I expect to do recommend rooms more "recommended" than Habbo.
Lol. That sounds like a plan cecer1. How do you intend to do it anyway?
-
Re: Ion Habbo Impersonate (IHI)
I haven't decided yet. Ideas welcome.
-
Re: Ion Habbo Impersonate (IHI)
Hvae you tried to send this?
AGcurtains1 close + char(2)
AGcurtains2 close + char(2)
-
Re: Ion Habbo Impersonate (IHI)
I have tried lots including curtains1{02}close{02} and HH and a large selection of others.
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
cecer1
I haven't decided yet. Ideas welcome.
I'd also like to see recommended rooms based on the room rating.
Maybe it would be an idea, to set one of the rooms manually as
administrator through the CMS.
How about the CMS actually? Is there already any progress?
Who is doing that?
-
Re: Ion Habbo Impersonate (IHI)
I have a little progress. Someone was doing it but had to quit.
-
Re: Ion Habbo Impersonate (IHI)
Good luck with this project!
Finally something that is really looking good!
'NG
-
Re: Ion Habbo Impersonate (IHI)
I really want to get the whole Furni System done soon.
I just need the database converted before I can start.
-
Re: Ion Habbo Impersonate (IHI)
Goodluck cecer i got a complete R39 server if u need any help just ask have fun!
-
Re: Ion Habbo Impersonate (IHI)
Would help but iv got way way to many projets to finish (some not related to habbo.)
-
Re: Ion Habbo Impersonate (IHI)
This honestly looks amazing. I haven't seen a detailed server like this with all the little features since debbo, I still miss all the little things and cool things to fuck around with on debbo and the old servers.
This is my favourite version by far, I don't like flash very much. Anywho, it looks like the server already has a heap load of progress done, good luck with it, I'll be following the development.
EDIT: If you are coding a site, I'd love it if you could consider doing the hc system, and in housekeeping being able to detirmine the presents and amount. Also, are you considering giving it a go with pets and/or rollers?
-
Re: Ion Habbo Impersonate (IHI)
You shold add this to you emulator:
PHP Code:
/// <summary>
/// 228 - "Cd" - "GET_SOUND_SETTING"
/// </summary>
private void GetSoundSettings()
{
// Build response
Response.Initialize(308); // "Dt": [[#login_handler, #handleSoundSetting]]
Response.AppendBoolean(mSession.GetHabbo().Sound);
Response.AppendInt32(0);
SendResponse();
}
/// <summary>
/// 229 - "Ce" - "SET_SOUND_SETTING"
/// </summary>
private void SetSoundSettings()
{
// Save sound settings
bool sound = Request.PopWiredBoolean();
mSession.GetHabbo().Sound = sound;
mSession.GetHabbo().UPDATE(IonEnvironment.GetDatabase().GetClient());
SendResponse();
}
Its for the sound settings.
-
Re: Ion Habbo Impersonate (IHI)
This looks good and it seems you have a lot done already. Good to see a shockwave one again :D I don't like flash.
-
Re: Ion Habbo Impersonate (IHI)
cecer1, have you managed to get any ingame media done yet?
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
cecer1
Quote:
Originally Posted by
irRobbie
cecer1, have you managed to get any ingame media done yet?
Should read first :]
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
-Jordan-
Would help but iv got way way to many projets to finish (some not related to habbo.)
fuck those projects, im willing to help out.
Good progress.
-
Re: Ion Habbo Impersonate (IHI)
@irRobbie:
Yeah, checkout http://ihi.cecer1.com?pageid=page-media for a video of the Lido in action. ;)
-
Re: Ion Habbo Impersonate (IHI)
Everyone is welcome to help!
http://ihi.cecer1.com?pageid=page-catalogue
If you are really low enough to ruin it for everyone then I will not ask for help again.
-
Re: Ion Habbo Impersonate (IHI)
O i noticed you forgot something by the sql lines
dbClient.ExecuteQuery("UPDATE users SET swim = @swim WHERE id = @id"); need to be :
dbClient.ExecuteQuery("UPDATE users SET swim = @swim WHERE id = @id;");
-
Re: Ion Habbo Impersonate (IHI)
I can help for catalogue ;)
-
Re: Ion Habbo Impersonate (IHI)
It isn't required to have the ; at the end in SQL.
The ; splits multiple queries.
Not having a ; saves (a very tiny) bit of resources (Just think of the nano-seconds that build up over the weeks xD)
---------- Post added at 03:17 AM ---------- Previous post was at 02:40 AM ----------
As I haven't been updating everyone much today I am releasing a few example command files:
Debug.cs
PHP Code:
using System.Collections.Generic;
using Ion.HabboHotel.Client;
using Ion.HabboHotel.Habbos;
using Ion.Net.Messages;
namespace Ion.HabboHotel.Rooms
{
public partial class Commands
{
/// <remarks>Offical IHI Core Command - Cecer1</remarks>
/// <see cref="http://ihi.cecer1.com/wiki/Command_Send"/>
public bool ExecuteSEND(Room sRoom, CommandArguments Arguments, GameClient Whisper)
{
if (!IonEnvironment.GetHabboHotel().GetHabbos().GetHabbo(UserID).Fuse.Contains("_fuse_command_send"))
return false;
ServerMessage Message;
try
{
string Target = Arguments.PopWord();
uint Header = (uint)Arguments.PopNumber();
byte[] Data = IonEnvironment.GetDefaultTextEncoding().GetBytes(Arguments.PopText().Replace("{01}", "\x01").Replace("{02}", "\x02").Replace("{09}", "\t").Replace("{0A}", "\n").Replace("{0D}", "\r"));
switch (Target)
{
case "_r": // Room
{
Message = new ServerMessage(Header);
Message.Append(Data);
sRoom.SendMessage(Message);
break;
}
case "_h": // Hotel
{
Message = new ServerMessage(Header);
Message.Append(Data);
IonEnvironment.GetHabboHotel().GetClients().SendMessage(Message);
break;
}
case "_x": // Clicked On
{
if (Whisper == null)
return true;
Message = new ServerMessage(Header);
Message.Append(Data);
Whisper.GetConnection().SendMessage(Message);
break;
}
default:
{
if (Target.Length > 2 && Target.Substring(0, 2) == "_f")
{
Target = Target.Substring(2);
Dictionary<uint, GameClient> Clients = IonEnvironment.GetHabboHotel().GetClients().GetAllClients();
Message = new ServerMessage(Header);
Message.Append(Data);
foreach (GameClient Client in Clients.Values)
{
if (Client.GetHabbo().Fuse.Contains(Target))
{
Client.GetConnection().SendMessage(Message);
}
}
}
else
{
Habbo Habbo = IonEnvironment.GetHabboHotel().GetHabbos().GetHabbo(Target);
GameClient Client;
if (Habbo != null)
{
Client = IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(Habbo.ID);
if (Client != null)
{
Message = new ServerMessage(Header);
Message.Append(Data);
Client.GetConnection().SendMessage(Message);
}
else
{
Message = new ServerMessage(ResponseOpcodes.StandardNotice);
Message.AppendString("Error: User offline!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
}
else
{
Message = new ServerMessage(ResponseOpcodes.StandardNotice);
Message.AppendString("Error: No such user!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
}
break;
}
}
}
catch
{
Message = new ServerMessage(ResponseOpcodes.StandardNotice);
Message.AppendString("Error: Invalid Arguments!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
return true;
}
}
}
Communication.cs
PHP Code:
using System.Collections.Generic;
using Ion.HabboHotel.Client;
using Ion.HabboHotel.Habbos;
using Ion.Net.Messages;
namespace Ion.HabboHotel.Rooms
{
public partial class Commands
{
/// <remarks>Offical IHI Core Command - Cecer1</remarks>
/// <see cref="http://ihi.cecer1.com/wiki/Command_Notice"/>
public bool ExecuteNOTICE(Room sRoom, CommandArguments Arguments, GameClient Whisper)
{
if (!IonEnvironment.GetHabboHotel().GetHabbos().GetHabbo(UserID).Fuse.Contains("_fuse_command_alert"))
return false;
ServerMessage Message = new ServerMessage(ResponseOpcodes.StandardNotice);
try
{
string Target = Arguments.PopWord();
switch (Target)
{
case "_r": // Room
{
Message.AppendString(Arguments.PopText());
sRoom.SendMessage(Message);
break;
}
case "_h": // Hotel
{
Message.AppendString(Arguments.PopText());
IonEnvironment.GetHabboHotel().GetClients().SendMessage(Message);
break;
}
case "_x": // Clicked On
{
if (Whisper == null)
return true;
Message.AppendString(Arguments.PopText());
Whisper.GetConnection().SendMessage(Message);
break;
}
default:
{
if (Target.Length > 2 && Target.Substring(0, 2) == "_f")
{
Target = Target.Substring(2);
Dictionary<uint, GameClient> Clients = IonEnvironment.GetHabboHotel().GetClients().GetAllClients();
Message.AppendString(Arguments.PopText());
foreach(GameClient Client in Clients.Values)
{
if (Client.GetHabbo().Fuse.Contains(Target))
{
Client.GetConnection().SendMessage(Message);
}
}
}
else
{
Habbo Habbo = IonEnvironment.GetHabboHotel().GetHabbos().GetHabbo(Target);
GameClient Client;
if (Habbo != null)
{
Client = IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(Habbo.ID);
if (Client != null)
{
Message.AppendString(Arguments.PopText());
Client.GetConnection().SendMessage(Message);
}
else
{
Message.AppendString("Error: User offline!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
}
else
{
Message.AppendString("Error: No such user!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
}
break;
}
}
}
catch
{
Message.AppendString("Error: Invalid Arguments!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
return true;
}
/// <remarks>Offical IHI Core Command - Cecer1</remarks>
/// <see cref="http://ihi.cecer1.com/wiki/Command_Alert"/>
public bool ExecuteALERT(Room sRoom, CommandArguments Arguments, GameClient Whisper)
{
if (!IonEnvironment.GetHabboHotel().GetHabbos().GetHabbo(UserID).Fuse.Contains("_fuse_command_alert"))
return false;
ServerMessage Message;
try
{
string Target = Arguments.PopWord();
switch (Target)
{
case "_r": // Room
{
Message = new ServerMessage(ResponseOpcodes.Mod);
Message.AppendString(Arguments.PopText());
sRoom.SendMessage(Message);
break;
}
case "_h": // Hotel
{
Message = new ServerMessage(ResponseOpcodes.Mod);
Message.AppendString(Arguments.PopText());
IonEnvironment.GetHabboHotel().GetClients().SendMessage(Message);
break;
}
case "_x": // Clicked On
{
if (Whisper == null)
return true;
Message = new ServerMessage(ResponseOpcodes.Mod);
Message.AppendString(Arguments.PopText());
Whisper.GetConnection().SendMessage(Message);
break;
}
default:
{
if (Target.Length > 2 && Target.Substring(0, 2) == "_f")
{
Target = Target.Substring(2);
Dictionary<uint, GameClient> Clients = IonEnvironment.GetHabboHotel().GetClients().GetAllClients();
Message = new ServerMessage(ResponseOpcodes.Mod);
Message.AppendString(Arguments.PopText());
foreach(GameClient Client in Clients.Values)
{
if (Client.GetHabbo().Fuse.Contains(Target))
{
Client.GetConnection().SendMessage(Message);
}
}
}
else
{
Habbo Habbo = IonEnvironment.GetHabboHotel().GetHabbos().GetHabbo(Target);
GameClient Client;
if (Habbo != null)
{
Client = IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(Habbo.ID);
if (Client != null)
{
Message = new ServerMessage(ResponseOpcodes.Mod);
Message.AppendString(Arguments.PopText());
Client.GetConnection().SendMessage(Message);
}
else
{
Message = new ServerMessage(ResponseOpcodes.StandardNotice);
Message.AppendString("Error: User offline!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
}
else
{
Message = new ServerMessage(ResponseOpcodes.StandardNotice);
Message.AppendString("Error: No such user!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
}
break;
}
}
}
catch
{
Message = new ServerMessage(ResponseOpcodes.StandardNotice);
Message.AppendString("Error: Invalid Arguments!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
return true;
}
}
}
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
cecer1
It isn't required to have the ; at the end in SQL.
The ; splits multiple queries.
Not having a ; saves (a very tiny) bit of resources (Just think of the nano-seconds that build up over the weeks xD)
---------- Post added at 03:17 AM ---------- Previous post was at 02:40 AM ----------
As I haven't been updating everyone much today I am releasing a few example command files:
Debug.cs
PHP Code:
using System.Collections.Generic;
using Ion.HabboHotel.Client;
using Ion.HabboHotel.Habbos;
using Ion.Net.Messages;
namespace Ion.HabboHotel.Rooms
{
public partial class Commands
{
/// <remarks>Offical IHI Core Command - Cecer1</remarks>
/// <see cref="http://ihi.cecer1.com/wiki/Command_Send"/>
public bool ExecuteSEND(Room sRoom, CommandArguments Arguments, GameClient Whisper)
{
if (!IonEnvironment.GetHabboHotel().GetHabbos().GetHabbo(UserID).Fuse.Contains("_fuse_command_send"))
return false;
ServerMessage Message;
try
{
string Target = Arguments.PopWord();
uint Header = (uint)Arguments.PopNumber();
byte[] Data = IonEnvironment.GetDefaultTextEncoding().GetBytes(Arguments.PopText().Replace("{01}", "\x01").Replace("{02}", "\x02").Replace("{09}", "\t").Replace("{0A}", "\n").Replace("{0D}", "\r"));
switch (Target)
{
case "_r": // Room
{
Message = new ServerMessage(Header);
Message.Append(Data);
sRoom.SendMessage(Message);
break;
}
case "_h": // Hotel
{
Message = new ServerMessage(Header);
Message.Append(Data);
IonEnvironment.GetHabboHotel().GetClients().SendMessage(Message);
break;
}
case "_x": // Clicked On
{
if (Whisper == null)
return true;
Message = new ServerMessage(Header);
Message.Append(Data);
Whisper.GetConnection().SendMessage(Message);
break;
}
default:
{
if (Target.Length > 2 && Target.Substring(0, 2) == "_f")
{
Target = Target.Substring(2);
Dictionary<uint, GameClient> Clients = IonEnvironment.GetHabboHotel().GetClients().GetAllClients();
Message = new ServerMessage(Header);
Message.Append(Data);
foreach (GameClient Client in Clients.Values)
{
if (Client.GetHabbo().Fuse.Contains(Target))
{
Client.GetConnection().SendMessage(Message);
}
}
}
else
{
Habbo Habbo = IonEnvironment.GetHabboHotel().GetHabbos().GetHabbo(Target);
GameClient Client;
if (Habbo != null)
{
Client = IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(Habbo.ID);
if (Client != null)
{
Message = new ServerMessage(Header);
Message.Append(Data);
Client.GetConnection().SendMessage(Message);
}
else
{
Message = new ServerMessage(ResponseOpcodes.StandardNotice);
Message.AppendString("Error: User offline!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
}
else
{
Message = new ServerMessage(ResponseOpcodes.StandardNotice);
Message.AppendString("Error: No such user!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
}
break;
}
}
}
catch
{
Message = new ServerMessage(ResponseOpcodes.StandardNotice);
Message.AppendString("Error: Invalid Arguments!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
return true;
}
}
}
Communication.cs
PHP Code:
using System.Collections.Generic;
using Ion.HabboHotel.Client;
using Ion.HabboHotel.Habbos;
using Ion.Net.Messages;
namespace Ion.HabboHotel.Rooms
{
public partial class Commands
{
/// <remarks>Offical IHI Core Command - Cecer1</remarks>
/// <see cref="http://ihi.cecer1.com/wiki/Command_Notice"/>
public bool ExecuteNOTICE(Room sRoom, CommandArguments Arguments, GameClient Whisper)
{
if (!IonEnvironment.GetHabboHotel().GetHabbos().GetHabbo(UserID).Fuse.Contains("_fuse_command_alert"))
return false;
ServerMessage Message = new ServerMessage(ResponseOpcodes.StandardNotice);
try
{
string Target = Arguments.PopWord();
switch (Target)
{
case "_r": // Room
{
Message.AppendString(Arguments.PopText());
sRoom.SendMessage(Message);
break;
}
case "_h": // Hotel
{
Message.AppendString(Arguments.PopText());
IonEnvironment.GetHabboHotel().GetClients().SendMessage(Message);
break;
}
case "_x": // Clicked On
{
if (Whisper == null)
return true;
Message.AppendString(Arguments.PopText());
Whisper.GetConnection().SendMessage(Message);
break;
}
default:
{
if (Target.Length > 2 && Target.Substring(0, 2) == "_f")
{
Target = Target.Substring(2);
Dictionary<uint, GameClient> Clients = IonEnvironment.GetHabboHotel().GetClients().GetAllClients();
Message.AppendString(Arguments.PopText());
foreach(GameClient Client in Clients.Values)
{
if (Client.GetHabbo().Fuse.Contains(Target))
{
Client.GetConnection().SendMessage(Message);
}
}
}
else
{
Habbo Habbo = IonEnvironment.GetHabboHotel().GetHabbos().GetHabbo(Target);
GameClient Client;
if (Habbo != null)
{
Client = IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(Habbo.ID);
if (Client != null)
{
Message.AppendString(Arguments.PopText());
Client.GetConnection().SendMessage(Message);
}
else
{
Message.AppendString("Error: User offline!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
}
else
{
Message.AppendString("Error: No such user!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
}
break;
}
}
}
catch
{
Message.AppendString("Error: Invalid Arguments!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
return true;
}
/// <remarks>Offical IHI Core Command - Cecer1</remarks>
/// <see cref="http://ihi.cecer1.com/wiki/Command_Alert"/>
public bool ExecuteALERT(Room sRoom, CommandArguments Arguments, GameClient Whisper)
{
if (!IonEnvironment.GetHabboHotel().GetHabbos().GetHabbo(UserID).Fuse.Contains("_fuse_command_alert"))
return false;
ServerMessage Message;
try
{
string Target = Arguments.PopWord();
switch (Target)
{
case "_r": // Room
{
Message = new ServerMessage(ResponseOpcodes.Mod);
Message.AppendString(Arguments.PopText());
sRoom.SendMessage(Message);
break;
}
case "_h": // Hotel
{
Message = new ServerMessage(ResponseOpcodes.Mod);
Message.AppendString(Arguments.PopText());
IonEnvironment.GetHabboHotel().GetClients().SendMessage(Message);
break;
}
case "_x": // Clicked On
{
if (Whisper == null)
return true;
Message = new ServerMessage(ResponseOpcodes.Mod);
Message.AppendString(Arguments.PopText());
Whisper.GetConnection().SendMessage(Message);
break;
}
default:
{
if (Target.Length > 2 && Target.Substring(0, 2) == "_f")
{
Target = Target.Substring(2);
Dictionary<uint, GameClient> Clients = IonEnvironment.GetHabboHotel().GetClients().GetAllClients();
Message = new ServerMessage(ResponseOpcodes.Mod);
Message.AppendString(Arguments.PopText());
foreach(GameClient Client in Clients.Values)
{
if (Client.GetHabbo().Fuse.Contains(Target))
{
Client.GetConnection().SendMessage(Message);
}
}
}
else
{
Habbo Habbo = IonEnvironment.GetHabboHotel().GetHabbos().GetHabbo(Target);
GameClient Client;
if (Habbo != null)
{
Client = IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(Habbo.ID);
if (Client != null)
{
Message = new ServerMessage(ResponseOpcodes.Mod);
Message.AppendString(Arguments.PopText());
Client.GetConnection().SendMessage(Message);
}
else
{
Message = new ServerMessage(ResponseOpcodes.StandardNotice);
Message.AppendString("Error: User offline!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
}
else
{
Message = new ServerMessage(ResponseOpcodes.StandardNotice);
Message.AppendString("Error: No such user!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
}
break;
}
}
}
catch
{
Message = new ServerMessage(ResponseOpcodes.StandardNotice);
Message.AppendString("Error: Invalid Arguments!");
IonEnvironment.GetHabboHotel().GetClients().GetClientOfHabbo(UserID).GetConnection().SendMessage(Message);
}
return true;
}
}
}
Neatly coded. Very nice.
Keep it up Cecer ;)
-
Re: Ion Habbo Impersonate (IHI)
Well Masood...
You have known I have been WROKIGN on this FULYLcool systeM.
Note: fulyl was on MSN.
Anyway, I am not 100% sure how the catalogue works in R39 (As in what features NOT how it is coded!)
Any advice?
-
Re: Ion Habbo Impersonate (IHI)
Wow, so much of a improvement from Holographs coding. keep it up.
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
cecer1
Well Masood...
You have known I have been WROKIGN on this FULYLcool systeM.
Note: fulyl was on MSN.
Anyway, I am not 100% sure how the catalogue works in R39 (As in what features NOT how it is coded!)
Any advice?
I don't think it's changed much from R35. For a list of all the version change logs go to: http://habbowiki.org/wiki/Releases
Are you going to do the dynamic_furni and furniture tables for the catalogue? They're a huge hassle for creating catalogue pages and such.
-
Re: Ion Habbo Impersonate (IHI)
Nope, all merged back into one.
There have been lots of database optimisations and I am not even finished yet.
-
Re: Ion Habbo Impersonate (IHI)
Okay, I am now able to start work on the catalogue now.
Special thanks to Ultima Hotel for speeding things up a bit.
-
Re: Ion Habbo Impersonate (IHI)
Progress is running good.
Homepage is a bit updated.
If you would like to help, I can just repeat:
Enter http://ihi.cecer1.com?pageid=page-catalogue .
If you have any questions to the tool,
feel free to post them ;)
-
Re: Ion Habbo Impersonate (IHI)
Quick Poll
Do you want the fuse right restrictions in the catalogue to be on pages, categories or both?
A: Categories - The most efficient way
B: Pages - Total control but harder to customise
C: Both - Total control but slower
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
cecer1
Quick Poll
Do you want the fuse right restrictions in the catalogue to be on pages, categories or both?
A: Categories - The most efficient way
B: Pages - Total control but harder to customise
C: Both - Total control but slower
A: Categories
More fancy and i just prefer it.
-
Re: Ion Habbo Impersonate (IHI)
A: Categories
Me too, just simple and standard.
-
Re: Ion Habbo Impersonate (IHI)
C. I can't see it being any slower than it already is.
(y) for total control.
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
iJames
C. I can see it being any slower than it already is.
(y) for total control.
You Can see it being any slower than it already is??? What??? :blink:
-
Re: Ion Habbo Impersonate (IHI)
-
Re: Ion Habbo Impersonate (IHI)
I ment, can't. ;] Edited post.
-
Re: Ion Habbo Impersonate (IHI)
That makes a little more sense xD
-
Re: Ion Habbo Impersonate (IHI)
Update
By default IHI will not come with any:
- Public Rooms
- Room Categories
- Furni Templates
- Catalogue Pages
- Catalogue Categories
- Etc...
You will get to choose what and only what you want by downloading and installing packages.
A package will be a zip file with an xml file inside and any other files that the package requires (e.g. CCTs).
I am sorry but this does mean that the help you did on the site is now useless (it was anyway thanks to people not changing the type).
I thank everyone who contributed to it but this way is so much better.
I haven't finished the format of the XML file yet but here is an example of what I have so far:
Pastebin
Comments are welcome.
To use a package you would:
- Download it
- Place it in the package directory
- On the server open the config menu (more on this later)
- Select "Packages"
- Choose "Reload Packages"
- Restart the server
This should be a lot easier for the users on here.
It will also remove the need for 100s of sources.
I will finalise the XML format then release that.
Then if anyone wants to create a package they can.
-
Re: Ion Habbo Impersonate (IHI)
Sounds innovative and new. Well done Cecer!
-
Re: Ion Habbo Impersonate (IHI)
Thanks, I am not working on the server as much right now because I am focusing more on the stuff like this.
This will still need a rather large recode but not as much as if I continued before I did this.
Edit:
Here is proposal-2
I will start work on the documentation now.
Navigator Roots: http://ihi.pastebin.com/sLEULmnN
Public: http://ihi.pastebin.com/PL6VtpUK
Lido: http://ihi.pastebin.com/1CNxRdXh
Lido Models: http://ihi.pastebin.com/TUmEFiBg
Item Template: http://ihi.pastebin.com/QaVdRjJL
Catalogue: http://ihi.pastebin.com/zzuqGpER
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
cecer1
Wow, I just made a huge mess all over my room. Seriously. It's that fulfilling of all my needs. If you get what I mean :wink:
Out of curiosity, have you been updating the 1st post with every revision released? As far as I'm concerned, all that's missing for this server to surpass Holograph is moderation and furniture features. Am I wrong?
Also, if you cba, could you maybe speculate about what features you or other developers are planning for the site? Imo, you should make one like Jordi-Fun's old DebboSQL, where you can change the template easily.
Most people didn't like that style of CMS because they're lazy and can't take the time to learn how to change it for themselves, but personally I loved it and made it look better than habbo's bland template.
Just a suggestion.
-
Re: Ion Habbo Impersonate (IHI)
Hi Talax,
thanks for your suggestion. It is indeed a really good idea.
We have already plans and bases for the CMS...
I don't know how much I'm allowed to tell but...
at the moment there's just the Wiki & the package system
being developed. Server and CMS are just sleeping for a moment ;)
-
Re: Ion Habbo Impersonate (IHI)
Nice project Chris, about time you came public about it.
Good Luck
-
Re: Ion Habbo Impersonate (IHI)
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
Talax_Habbo.ca
Wow, I just made a huge mess all over my room. Seriously. It's that fulfilling of all my needs. If you get what I mean :wink:
Are you feeling a little insane today? :laugh:
Quote:
Originally Posted by
Talax_Habbo.ca
Out of curiosity, have you been updating the 1st post with every revision released? As far as I'm concerned, all that's missing for this server to surpass Holograph is moderation and furniture features. Am I wrong?
I haven't been updating the first post as much as I should do.
Quote:
Originally Posted by
Talax_Habbo.ca
Also, if you cba, could you maybe speculate about what features you or other developers are planning for the site? Imo, you should make one like Jordi-Fun's old DebboSQL, where you can change the template easily.
Features will be the main focus on the site, I might work on themes but I can't say for sure.
Quote:
Originally Posted by
Talax_Habbo.ca
Most people didn't like that style of CMS because they're lazy and can't take the time to learn how to change it for themselves, but personally I loved it and made it look better than habbo's bland template.
Just a suggestion.
It will not be using the standard Habbo theme.
Quote:
Originally Posted by
NitroHabbz
Nice project Chris, about time you came public about it.
Good Luck
Thanks John.
Quote:
Originally Posted by
awa500
Do you gonna make a svn?
No, with the package system there will be very little need for updates to the core.
As packages can be made by anyone they will be updated through the site.
-
Re: Ion Habbo Impersonate (IHI)
IHI is still alive.
But I can't stand doing the long repetitive tasks.
These are nearly done now so I will be getting more active soon.
I will be opening the wiki (sort of) after I am done.
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
cecer1
IHI is still alive.
But I can't stand doing the long repetitive tasks.
These are nearly done now so I will be getting more active soon.
I will be opening the wiki (sort of) after I am done.
Sounds good :)
-
Re: Ion Habbo Impersonate (IHI)
R39 is flash? i thought beta started at r39
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
Crawl
R39 is flash? i thought beta started at r39
R39 is shockwave..That was the 'beta' or am I wrong, lol
-
Re: Ion Habbo Impersonate (IHI)
Beta was / always has been flash
-
Re: Ion Habbo Impersonate (IHI)
At that time Habbo had setup BETA already, but they didn't take down the shockwave server, so they were both open.
-
Re: Ion Habbo Impersonate (IHI)
Any progress since? Good work, though.
-
Re: Ion Habbo Impersonate (IHI)
R39 was the last shockwave.
If people who offer to help keep it up then I should be done with the wiki pretty soon.
I want to get the package format done soon.
The package system will be quite a big recode but it will be worth it.
It will (in the future) allow the adding of code and database columns.
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
cecer1
R39 was the last shockwave.
If people who offer to help keep it up then I should be done with the wiki pretty soon.
I want to get the package format done soon.
The package system will be quite a big recode but it will be worth it.
It will (in the future) allow the adding of code and database columns.
Is it just me or do I smell the next primary hotel server? Next we know, holograph will be old school and this and uber will be the reg. lols.
Keep it up Cecer, I'm anxious for a release. :)
-
Re: Ion Habbo Impersonate (IHI)
No, it's not just you. I'm also anxious for a release, but let's not pressure him too much. :P
-
Re: Ion Habbo Impersonate (IHI)
Sorry for the lack of progress but I have had a bad cold.
I am going to resume now.
-
Re: Ion Habbo Impersonate (IHI)
Oh that sucked, but nice to see your back and ready to go back to working on it. Good luck cecer
-
Re: Ion Habbo Impersonate (IHI)
Cecer could you maybe pm me your V39 schockwave loader :D?
-
Re: Ion Habbo Impersonate (IHI)
Sure, I will when I get home from college.
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
Crawl
R39 is flash? i thought beta started at r39
Quote:
Originally Posted by
HabboWebs
R39 is shockwave..That was the 'beta' or am I wrong, lol
BETA started at R34 and ended at R39 (I think). During the BETA stage the shockwave client remained opened but when BETA closed the shockwave client was discontinued and habbo went to flash.
-
Re: Ion Habbo Impersonate (IHI)
I like IHI, :)
Nice progress and have luck with this ^-^
-
Re: Ion Habbo Impersonate (IHI)
*Hurting for some updates*. I hope the motivation to code like it seemed you had when you started the project is still there.
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
MattUK
BETA started at R34 and ended at R39 (I think). During the BETA stage the shockwave client remained opened but when BETA closed the shockwave client was discontinued and habbo went to flash.
I think they always planned to discontinue the shockwave once they had the idea of flash.
I havnt checked the progress or twitter for some time now, going to now.
-
Re: Ion Habbo Impersonate (IHI)
Quote:
Originally Posted by
MattUK
BETA started at R34 and ended at R39 (I think). During the BETA stage the shockwave client remained opened but when BETA closed the shockwave client was discontinued and habbo went to flash.
No it's not. Revision R39 was the last shockwave, R40+ was flash. People get it mixed up because version and revision is different. Version 33 was the last shockwave version.
-
Re: Ion Habbo Impersonate (IHI)
The motivation to code is still here (and strong)...
The motivation to write documentation at a level so dumb that the cold virus could understand IS GONE!
This is why I have decided to work on the online Wizard instead.
I have not lost interest (in the server it's self) at all.