Sieht gut aus! Die Startseite ist mir persöhnlich zwar ein tick zu bunt, ist aber reine geschmackssache. Ansonsten gute arbeit.
Beiträge von .spirit..
-
-
Bin auch dabei, danke
-
-
Hatte einen Fehler in PHP, hab erst später gemerkt dass die 2 Variablen UserID und Alert Text durch : getrennt werden.
string[] Params = param.ToString().Split(':');
-
Würde es im Register mit einem einfachen INSERT Query machen.
Hab ihm bereits den Code gesendet für seinen Emulator aber will er anscheinend nicht.
mysql_query("INSERT INTO user_badges (user_id,badge_id,badge_slot) VALUES ('USERID','BADGEID','0')");
-
Habs selber hinbekommen, danke.
Bitte closen.
-
Entweder du machst es mit PHP beim Register oder auch in der Client.php oder du vergibst für Rank 1 ein Badge. Man kann ja Einstellen dass man bei Rank x das Badge y bekommt.
-
Hey,
ich bekomm einen Error wenn ich die MUS-Commands givebadge oder user Alert ausführe. Commands wie reload_credits funktionieren!
Error:
System.IndexOutOfRangeException: Der Index war außerhalb des Arraybereichs bei Plus.Messages.Net.MusConnection.processCommand(String data) in C:\Emulator\Messages\Net\MusConnection.cs:Zeile 90 bei Plus.Messages.Net.MusConnection.OnEvent_recieveData(IAsyncResult iAr) in C:\Emulator\Messages\Net\MusConnection.cs:Zeile 78.Plus Emulator Code
C#
Alles anzeigenusing System; using System.Linq; using System.Net; using System.Net.Sockets; using System.Collections.Generic; using log4net; using Plus.Core; using System.Text; using Plus.HabboHotel.Rooms; using Plus.HabboHotel.GameClients; using Plus.Communication.Packets.Outgoing.Catalog; using Plus.Communication.Packets.Outgoing.Moderation; using Plus.Communication.Packets.Outgoing.Inventory.Purse; using Plus.Communication.Packets.Outgoing.Inventory.Badges; using Plus.Communication.Packets.Outgoing.Rooms.Engine; using Plus.Database.Interfaces; using Plus.Communication.Packets.Outgoing.Rooms.Session; namespace Plus.Messages.Net { public class MusConnection { private Socket _socket; private byte[] _buffer = new byte[1024]; private static readonly ILog log = LogManager.GetLogger("Plus.Messages.Net.MusConnection"); public MusConnection(Socket Socket) { this._socket = Socket; try { this._socket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, OnEvent_RecieveData, _socket); } catch { this.tryClose(); } } public void tryClose() { try { this._socket.Shutdown(SocketShutdown.Both); this._socket.Close(); this._socket.Dispose(); } catch { } this._socket = null; this._buffer = null; } public void OnEvent_RecieveData(IAsyncResult iAr) { try { int bytes = 0; try { bytes = _socket.EndReceive(iAr); } catch { tryClose(); return; } String data = Encoding.Default.GetString(_buffer, 0, bytes); if (data.Length > 0) processCommand(data); } catch (Exception e) { Console.WriteLine(e.ToString()); } tryClose(); } public void processCommand(String data) { GameClient Client = null; String header = data.Split(Convert.ToChar(1))[0]; String param = data.Split(Convert.ToChar(1))[1]; string[] Params = param.ToString().Split(':'); switch (header.ToLower()) { #region User Related #region :reload_credits <UserID> case "reload_credits": { int UserId = Convert.ToInt32(Params[0]); Client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client == null || Client.GetHabbo() == null) break; int Credits = 0; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `credits` FROM `users` WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("id", UserId); Credits = dbClient.getInteger(); } Client.GetHabbo().Credits = Credits; Client.SendMessage(new CreditBalanceComposer(Client.GetHabbo().Credits)); break; } #endregion #region :reload_pixels <UserID> case "reload_pixels": { int UserId = Convert.ToInt32(Params[0]); Client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client == null || Client.GetHabbo() == null) break; int Pixels = 0; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `activity_points` FROM `users` WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("id", UserId); Pixels = dbClient.getInteger(); } Client.GetHabbo().Duckets = Pixels; Client.SendMessage(new HabboActivityPointNotificationComposer(Client.GetHabbo().Duckets, Pixels)); break; } #endregion #region :reload_diamonds <UserID> case "reload_diamonds": { int UserId = Convert.ToInt32(Params[0]); Client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client == null || Client.GetHabbo() == null) break; int Diamonds = 0; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `vip_points` FROM `users` WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("id", UserId); Diamonds = dbClient.getInteger(); } Client.GetHabbo().Diamonds = Diamonds; Client.SendMessage(new HabboActivityPointNotificationComposer(Diamonds, 0, 5)); break; } #endregion #region :reload_gotw <UserID> case "reload_gotw": { int UserId = Convert.ToInt32(Params[0]); Client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client == null || Client.GetHabbo() == null) break; int GOTWPoints = 0; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `gotw_points` FROM `users` WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("id", UserId); GOTWPoints = dbClient.getInteger(); } Client.GetHabbo().GOTWPoints = GOTWPoints; Client.SendMessage(new HabboActivityPointNotificationComposer(GOTWPoints, 0, 103)); break; } #endregion #region :reload_user_rank userID case "reload_user_rank": { int UserId = Convert.ToInt32(Params[0]); Client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client == null || Client.GetHabbo() == null) break; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `rank` FROM `users` WHERE `id` = @userID LIMIT 1"); dbClient.AddParameter("userID", UserId); Client.GetHabbo().Rank = dbClient.getInteger(); } break; } #endregion #region :reload_user_vip userID case "reload_user_vip": { int UserId = Convert.ToInt32(Params[0]); Client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client == null || Client.GetHabbo() == null) break; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `rank_vip` FROM `users` WHERE `id` = @userID LIMIT 1"); dbClient.AddParameter("userID", UserId); Client.GetHabbo().VIPRank = dbClient.getInteger(); } break; } #endregion #region :reload_motto userID case "reload_motto": { int UserId = Convert.ToInt32(Params[0]); Client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client == null || Client.GetHabbo() == null) break; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `motto` FROM `users` WHERE `id` = @userID LIMIT 1"); dbClient.AddParameter("userID", UserId); Client.GetHabbo().Motto = dbClient.getString(); } if (Client.GetHabbo().InRoom) { Room Room = Client.GetHabbo().CurrentRoom; if (Room == null) return; RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Client.GetHabbo().Id); if (User == null || User.GetClient() == null) return; Room.SendMessage(new UserChangeComposer(User, false)); } break; } #endregion #region :alert_user <userid> <message> case "alert": case "alert_user": { int UserId = Convert.ToInt32(Params[0]); string alertMessage = Convert.ToString(Params[1]); Client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client == null || Client.GetHabbo() == null) break; Client.SendMessage(new BroadcastMessageAlertComposer(alertMessage)); break; } #endregion #region :reload_badges <UserID> case "update_badges": case "reload_badges": { int UserId = Convert.ToInt32(Params[0]); Client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client != null) { if (Client.GetHabbo() != null) { Client.SendMessage(new BadgesComposer(Client)); } } break; } #endregion #region :givebadge <UserID> <badge> case "givebadge": { int UserId = Convert.ToInt32(Params[0]); string badgeCode = Convert.ToString(Params[1]); Client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client != null) { if (Client.GetHabbo() != null) { Client.GetHabbo().GetBadgeComponent().GiveBadge(badgeCode, true, Client); } } break; } #endregion #region :disconnect <username> case "disconnect": { try { GameClient TargetClient = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(Convert.ToInt32(Params[0])); if (TargetClient != null && TargetClient.GetConnection() != null) TargetClient.GetConnection().Dispose(); } catch { log.Error("Error disconnecting user using MUS"); } return; } #endregion #region :reload_last_change userID case "reload_last_change": { int UserId = Convert.ToInt32(Params[0]); Client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client == null || Client.GetHabbo() == null) break; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `last_change` FROM `users` WHERE `id` = @userID LIMIT 1"); dbClient.AddParameter("userID", UserId); Client.GetHabbo().LastNameChange = dbClient.getInteger(); } break; } #endregion #region :goto <UserID> <RoomID> case "goto": { int UserId = Convert.ToInt32(Params[0]); int RoomId = Convert.ToInt32(Params[1]); Client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client == null || Client.GetHabbo() == null) break; if (!int.TryParse(Params[1], out RoomId)) break; else { Room _room = PlusEnvironment.GetGame().GetRoomManager().LoadRoom(RoomId); if (_room == null) Client.SendNotification("Failed to find the requested room!"); else { if (!Client.GetHabbo().InRoom) Client.SendMessage(new RoomForwardComposer(_room.Id)); else Client.GetHabbo().PrepareRoom(_room.Id, ""); } } } break; #endregion #endregion #region Fastfood #region :progress_achievement case "progress_achievement": { int UserId = Convert.ToInt32(Params[0]); Client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client == null || Client.GetHabbo() == null) break; string Achievement = Convert.ToString(Params[1]); int Progress = Convert.ToInt32(Params[2]); PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Client, Achievement, Progress); break; } #endregion #endregion #region Settings related #region :reload_filter/:update_filter case "update_filter": case "reload_filter": case "recache_filter": case "refresh_filter": { PlusEnvironment.GetGame().GetChatManager().GetFilter().Init(); break; } #endregion #region :reload_catalog/:reload_catalog case "update_catalog": case "reload_catalog": case "recache_catalog": case "refresh_catalog": case "update_catalogue": case "reload_catalogue": case "recache_catalogue": case "refresh_catalogue": { PlusEnvironment.GetGame().GetCatalog().Init(PlusEnvironment.GetGame().GetItemManager()); PlusEnvironment.GetGame().GetClientManager().SendMessage(new CatalogUpdatedComposer()); break; } #endregion #region :reload_items/:update_items case "update_items": case "reload_items": case "recache_items": case "refresh_items": { PlusEnvironment.GetGame().GetItemManager().Init(); break; } #endregion #region :reload_navigator/:update_navigator case "update_navigator": case "reload_navigator": case "recache_navigator": case "refresh_navigator": { PlusEnvironment.GetGame().GetNavigator().Init(); break; } #endregion #region :reload_ranks/:update_ranks case "update_ranks": case "reload_ranks": case "recache_ranks": case "refresh_ranks": { PlusEnvironment.GetGame().GetPermissionManager().Init(); foreach (GameClient C in PlusEnvironment.GetGame().GetClientManager().GetClients.ToList()) { if (C == null || C.GetHabbo() == null || C.GetHabbo().GetPermissions() == null) continue; C.GetHabbo().GetPermissions().Init(Client.GetHabbo()); } break; } #endregion #region :reload_settings/:update_settings case "update_settings": case "reload_settings": case "recache_settings": case "refresh_settings": { PlusEnvironment.ConfigData = new ConfigData(); break; } #endregion #region :reload_quests/:update_quests case "reload_quests": case "update_quests": { PlusEnvironment.GetGame().GetQuestManager().Init(); break; } #endregion #region :reload_vouchers/:update_vouchers case "reload_vouchers": case "update_vouchers": { PlusEnvironment.GetGame().GetCatalog().GetVoucherManager().Init(); break; } #endregion #region :reload_bans/:update_bans case "update_bans": case "reload_bans": { PlusEnvironment.GetGame().GetModerationManager().ReCacheBans(); break; } #endregion #endregion default: { log.Error("Unrecognized MUS packet: '" + header + "'"); return; } } log.Info("Successfully Parsed MUS command: '" + header + "'"); } } }
(MusConnection.cs):
Line: 90:
GameClient Client = null;Line: 77-78:
if (data.Length > 0) processCommand(data);Vielen Dank!
-
Schade ohne Frank aber hab es mir fast gedacht, wer arbeitet auch schon ein Jahr an einem Retro was einem selber nicht viel bringt, da kaum Gewinn ...
-
Du meinst :sa Text?
-
Sieht gut aus, würde aber auch eine andere Font nehmen (Finde Ubuntu auch gut, aber geschmackssache) und würde nicht für
jede Kategorie eine eigene Datei erstellen sondern eine Datei wo du in der URL über GET zb die Kategorie ID übergibst und diese
dann ausliest und die Möbel anzeigst, die dieser Kategorie zugewießen sind.Weiteres würde ich die .php dateien durch eine htaccess datei oder was du eben für ein Webserver nutzt verstecken. Sieht schönes aus.
-
1. Pageination kann man mit Javascript ebenfalls realisieren, dafür braucht man nicht immer PHP.
2. Es gibt Menschen (ohja!) die haben eine schlechte Verbindung (und nein, ich bin keiner von den). Die haben das Problem, wenn die diese Seite aufrufen, das es erstmal schon lädt. Nach 3000 Items ist es ein Problem für jeden hier. Also erzähl mir nichts.
3. Maßlos übertreiben ist es nicht. Es ist einfach nur ein Gedanke, den man umsetzen kann.ciao.
b2t. hoffe du hörst nicht auf diesen spirit typen da, aber falls du irgendwann Kategorien oder Kolletionen anbieten möchtest, dann ggf. mit einer Datenbank. Oder am besten sowas wie eine JSON-Datei und da mit Javascript oder PHP die einzelnen Daten herausnehmen.
https://github.com/typicode/lowdb (kannst dir ja nen Beispiel hier dran nehmen, ist für NodeJS)
Kapierst du nicht dass es mit php und mysql viel einfacher zu realisieren wäre als mit dem was du uns vorlegst?
Aber gut, empfehl weiter deine unnötige scheiße die für sowas komplett überflüssig wäre. Lieber eine einfache form in php wo man die sachen eintragen kann und dann gnaz einfacz auslesen.Edit: Du gibst mir ja eh recht, du meintest ja, wenn er Kategorien oder Kollektionen anbietrn möchte, dann ggf mit datenbank. Das meine ich ja aber so wie ich ihn kenne denke es wäre besser mit einfachen dingen zu kommen als mit Json, was für die sache für einen, der noch lernt unnötig kompliziert wäre.
-
Für ein paar Bilder etc. eine Datenbank waere schon sinnlos. Finde die Seite so wie sie jetzt ok auch wenn eine "Pageination" angebracht waere was sich auch in Zukunft einrichten lassen könnte.
Php in verbindung mit einer datenbank wäre sehrwohl sinnvoll! Und sogar so leicht zu realisieren, dass es nichtmal nötig wäre, frameworks zu verwenden.
Credits, Link, Name, image und category in db speichern und ausgeben mit ner einfachen while. Dazu noch ne spalte mit den categorys und die wiederrum ausgeben in nem tab und alles wäre perfekt. arbeit von 15min und nicht sinnlos und dann kann man über eure komischen paginations nachdenken. Wobei phili hier wiederrum maßlos übertreibt, ich weiß nicht was du für ne bambus leitung hast, wenn die bilder sogar bei meinem nicht gerade schnellen internet sofort laden.
lg
-
-
Welches Habbo.is CMS meinst du?
Habbo.is ist ja schon seit längerem nicht on -
Hey, ich hoffe wir können deine Laune bald wieder zum Guten wenden. Egal was kommt, wir werden uns nicht aufhalten lassen.Wir haben bereits paar Techniker angeschrieben, denen wir vertrauen können, leider haben sie keine Zeit. Andere Techniker wollten wir nicht anschreiben, weil man vielen aus dieser Szene nicht vertrauen kann, wer weiß, am nächsten Tag könnte das CMS schon public sein. Deswegen sind wir auf nummer sicher gegangen und haben gewartet bis sich die Lage von unserem Techniker bessert.
Da hast du recht, mittlerweile kann man kaum noch wem vertrauen. Hab die Erfahrung selber machen dürfen.
B2T: Schönes Hotel aber was mich stört ist, dass ihr falsche Versprechen liefert wie "Am Sonnatg ist CMS fertig usw" und dann nichts einhaltet. Wenn ihr schon so wenig Zeit habt dann liefert erst versprechen, wenn ihr euch sicher seit, dass ihr sie einhalten könnt.
Aber ansonsten alles top, kann wirklich etwas werden.
Wünsche euch Viel Glück!
-
Was wird gesucht?
3 Ranggrafiken.Was soll drauf?
Ich habe bereits eine Admin und Mod Ranggrafik, bräuchte
jedoch im selben Stil nur mit anderem Text & Farbe 3 weitere für 3 weitere Ranks.Habe leider keine .psd Datei der Vorlage, nur normales Bild.
Vergütung:
- Like
- mehr per PNlg
-
Würde keine amd cpu nehmen sondern eher ein i5 aber weiß nicht ob sich der ausgeht in deinem Budget, ansonsten ganz okay.
-
Meiner Meinung nach ist das eine Vorlage das man herunterladen kann, ansonsten trotzdem top.
Bevor hier wieder die Hater kommen wie du: RyaN hat zugesehen beim coden, nix Vorlage aber war eh klar
Sowas ist jetzt keine Kunst, da braucht es keine Vorlage
-
Rly?Wozu hat man dir augen gegeben ...
BG, Auto Bilder?