Kinda funny how the rotation isn't in sync :D: but good updates nonetheless. You finally got past room entering!
Printable View
Kinda funny how the rotation isn't in sync :D: but good updates nonetheless. You finally got past room entering!
It was a long running joke between me and Leon about your projects. I didn't know @The General made that joke too, I'd say it's just a coincidence.
If I didn't know any better I'd say the other client isn't receiving the @b packet for the other user, as that packet dictates the rotation.Quote:
Thanks nonetheless. Yeah, it's weird. Maybe it was some random single-time bug, I'm not entirely sure.
The whole room process will be tested better later. It's tested decently and decently works. There's still a long way to go, but we're getting somewhere.
Yeah, The General made that joke before, that's why I thought you had it from him. Seems like The General is the copycat then, huh? All jokes aside. I love a good laugh.
Of course showing off a million pictures is cool, but I think to show off something working a video is the best way.
https://www.youtube.com/watch?v=q00G...ature=youtu.be
(Oh yeah, all the Aurora videos are going to be 720p (I think I can get it to 1080p but it's some OBS setting) and 60FPS for more smoothness :)
Our goal is to have a BETA test hotel open around Halloween. Of course, we're doing good so far, aside from a few, *cough* minor *cough* bugs.
Started working on public rooms myself:
https://i.imgur.com/00CeQJ0.png
Of course it still needs furniture and isn't perfect... but we're getting somewhere.
Hopefully all those public room models and item data I sent ya should help :wink:
Progress looks good!
New updates:
- Public rooms with items.
- Leaving room almost correctly.
- When a room model doesn't exist, you'll get an error and kicked out of the room instead of the emulator giving error
https://i.imgur.com/iyPvpH6.png
https://i.imgur.com/r68Aivp.png
Another update, purchasing deals is fixed. Also you can buy normal furniture with an amount (database column, no amount selector (yet?))
Before:
https://i.imgur.com/XkEWqqa.png
After buying:
https://i.imgur.com/DAic0dg.png
After buying with different amounts in deals:
https://i.imgur.com/EH6PiW3.png
Nice!
Maybe you can add the command :amount, like old PhoenixEMU, for buying more items! >:)
Example- :amount 44
and when you click buy an item, you'll buy 44 items of that item! ;)
Noticed my friend @Glaceon was having alittle fun on the thread so thought why not join? I've started working on the item interactions and alot furniture related. http://prntscr.com/golb40
https://image.prntscr.com/image/jjXs...JmezDrKmuw.png
While doing this I've been tidying up some code as some stuff was redundant. Anyways this development is on-going and we're both highly motivated and are looking forward into finishing this!
Hi Josh!
Nice progress and good you're currently focusing on the most important things like behavior of items (dices, wireds, moodlights, footballs)
Not really a fan of the extra commands like :amount, a lot of things to consider. You need to first make sure buying one single item is running smoothly without getting stuck but you could give people the option to enable or disable these "custom" commands.
Goodluck with this great project!
Footballs aren't in R38. I'm not sure if making them would work to be fair. Wired isn't in R38 either. They'd need some SWF editing.
Buying one single item works fine for now, I haven't come across bugs yet. As for custom commands, why disable them? You don't HAVE to use them if you don't want to.
Thanks anyways.
I started doing some research on other stuff. This won't mean I'll abandon Aurora or stop working on it, but it's an idea for if Aurora gets finished. Of course, the R38 is already pretty far. We're thinking about putting up a BETA around Halloween. Anyways, Aurora will be the biggest priority.
If I ever don't want to do R38, I'll be working on a v9 version of Aurora. Keep in mind though: this version is complete stand-alone. It uses a different server, different client, different database. Even a different programming language.
I'll be using Dart. The database is going to be a PostgreSQL database (simply, Dart has no MySQL libraries working with latest Dart versions). I made a small concept project to see how things work and so far I've been able to get stuff from database, connect to the server, send messages and receive messages, even logging in.
Here's how it looks:
https://i.imgur.com/Y463BZO.png
Of course, I'm not 100% sure how the code is. It's a bit tricky as most Database-related stuff at least is asynchronous. I have a few snippets here:
PHP Code:Future tryLogin(String username, String password) async {
Habbo habbo = await Engine.HabboHotel.Habbos.getHabboByName(username);
if (habbo != null) {
if (habbo.Password == password) {
_habbo = habbo;
queueMessage(new AuthenticationOkComposer());
queueMessage(new SystemBroadcastComposer("Welcome to HabboDart"));
flush();
return;
}
}
sendMessage(new ErrorComposer("login incorrect: Wrong username/password"));
}
This gives you an idea how the Dart programming language looks like. I find it enjoyable in some way and the syntax is very much like C, though, keep in mind, things like properties are really different. Also, the Dart programming language doesn't have some classes like byte, char, short, long etc.PHP Code:Future<Habbo> getHabboByName(String username) async {
if (_habbosByName.containsKey(username)) {
return await _habbosByName[username];
}
DatabaseConnection connection = await Engine.Database.getConnection();
connection.setQuery("SELECT * FROM habbos WHERE username = [MENTION=411303]username[/MENTION] LIMIT 1");
connection.addParameter("username", username);
Row row = await connection.getResult();
if (row != null) {
Habbo habbo = new Habbo(row.toMap());
_habbosById.putIfAbsent(habbo.Id, () => habbo);
_habbosByName.putIfAbsent(username, () => habbo);
connection.dispose();
return habbo;
}
return null;
}
I'll be seeing how far I can get this without raging and crying. The code isn't the best; I agree. But, it's something new and innovating.
Besides that, a CMS will be written using Symfony which I'll try to get working for both versions of Aurora, but first only for the R38 as that's the main priority now.
For the v9, I'll be trying to make all the core game stuff, camera, public rooms, bots, etc. If somebody could help me with battleball I'd really appreciate it (ehh... v9 had battleball... right?).
If anybody is interested in the v9 source ask away, the part which I have right now I can give. If somebody is interested in certain things, ask away. Same goes for the R38, but I won't be giving the source away (I can show some snippets of things you want to see, though I can't promise to show everything).
Then should just do a newer revision like 2012 that has amount selector if you want to modify the SWF?
- - - Updated - - -
They should work as there is no client code for footballs. They just have multiple spin states and thats all. So you can add them if you wanted to. Dont think the football gates are in it though but not that big of a deal as nobody uses them anyways.
Eh, I don't know if I follow, but I think you're saying I should do a newer revision? That's not why I started the development. No urge on making something for the newer clients.
Alright, I'll see what I/we can do :). Thanks for pointing it out.
But but didn't you implement snowstorm in your SWF as well? Cause I thought snowstorm was removed from the newer SWF too. Anyways, besides that, it's one small feature. So I should change the GUI, go to a newer version for one small feature which can easily be implemented? Makes no sense Wesley, I'm sorry to say.
Because I am not going to downgrade my emulator in order to have snowstorm while having to remove so many features.
My point is; you target this revision specifically because of its features, look and feel. If you would want to have the more modern features, its not what this revision is about? Unless I don't get the point of your project other than actually making an emulator that works past room loading? Because then I'm confused as to why you pick this revision...
He likes this revision cause of the stuff you pointed out. Though everything has pros and cons. Even this. There's stuff we'd like and we want to do. It doesn't change the fact we like this revision and will stay on it. We just want to extend its functionality, ofcourse after we're getting close to finished.
Skickat från min FRD-L09 via Tapatalk
It would be nice if the goal is to implement fully working features in comparison with Uber where the most stuff wasn’t fully implemented (like training pets). That’s also Wesley’s goal I assume. But I like the older revisions because of their simplicity. People were a little bit forced to socialize with each other in a different way than nowadays. It wasn’t only about getting rich with LTD items, spending hours to build large rooms etc. (now there’s a amount buy button with a reason). In the old revisions there isn’t a overwhelming bunch of features, more simple.
At least I don't do it for the fame. I don't get why you're making such a HUGE deal out of me making my choices. I know my development isn't nearly as good as Arcturus, also I know that I'm nowhere near as good as you are in developing. I don't care though; I make something I want to make, and I don't care about how many people use it or not.
I choose R38 - just to explain so you understand - because I like the look and feel, though it doesn't mean that there aren't some minuses on it. I can either let the minuses be minuses or make the minuses pluses. What would be better? And I still don't get why you're making a big deal of me adding 0.00001% of newer versions into R38.
You probably have your opinion, and well I respect that, but it doesn't mean I agree even 1% on it. It makes no sense in my opinion. Funny you're putting so much effort in trying to make a point on a choice I make in MY development. You just made my day Wesley. Thanks.
Apparently you take everything to personally. All I was curious about was your train of thoughts; reason why this appeals to you and was wondering why you would just change the look and feel of such a nostalgic version of Habbo. If you want to modify the client to incorporate modern features then thats great but I feel as people like this version because of its simplicity that modification wouldn't do this classic version justice. And hey you can always make a modified version while still keep it compatible with the original revision. No harm done right?
Arcturus is a project I started out of curiosity, learning more about the way Habbo works and getting experience building private servers and everything that comes with it. My apologies if you think that I do this for fame. I don't. Like you, I do this for fun and a way to contribute back. I dont get why you're making such a HUGE deal about 'fame', to sorta quote you. As I've explained numerous times before; I don't care what emulator people use. Arcturus, Plus or soon Aurora?
Don't take everything in life personally, or its gonna be really hard.
Well, I explained it now. I just don't think it makes sense to completely change GUI, functionality and everything for one feature which is kind of important (unless you want to manually click buy 60 times if you want a furni 60 times, which if you like it is fine by me).
Now I'm not gonna respond to anything about switching to newer revs. It's gonna be R38 with 0.0001% edited.
Hi Josh, any updates?
@spreedblood have been busy with cleaning up some code and fixing some bugs. I haven't done much on the emulator to be completely honest.
Hi there!
I was wondering if there's any progress with this great development. If so, could we get some updates? Thanks!
Oh I'm really sorry, I forgot posting last time which I promised :( Just looked through the git, @Glaceon and I have been focusing on fixing bugs that we've encountered untill now, and I've been working on refactoring quite some as C# offers alot! Our main priorities have been fixing up bugs lately. I recently started on stacking items, will include screenshots and snippets as soon as it looks good! The ETA for BETA still remains the same, Halloween! We'll get up with a hotel where everything can be tested and played, finding bugs aswell! Glad you enjoy the development.
Being almost 100% working - besides a few "minor" things:
https://i.imgur.com/l3Qh2Z6.png
The minor things:
1. Gift is always the same color
2. No message when the target user doesn't exist, but no crash though
3. No message you've sent somebody a gift / you've receive a gift
https://i.imgur.com/cGrYulX.png
Furniture switches quickly made.
Hi Josh!
Nice to hear you're focusing on the interactions of furniture. Do you add all furniture separately or are you using some predefined definitions from another emulator's database regarding behavior of furniture? I don't think it's a waste of time to add them individually to your catalog because in the most emulators the data wasn't 100% correct so the furniture wouldn't behave like expected sometimes.
Maybe you could create some script to read out furnidata from the txt file and some default values for rows which aren't in furnidata but necessary server side so you couldn't easily write a whole furnidata file to your database table.
It's very simple todo, that's not hard, only problem is the fact that height and interactions aren't stored anywhere. You'd have todo it all individually, I recently made an application with @Quackster that parsed the furnidata but then we noticed interactions and height had to individually be applied.
Skickat från min FRD-L09 via Tapatalk
I was one step ahead of you, it isn't 100% correct and needs some slight adjustments but it kind of works.
https://i.imgur.com/xI30JnK.png
Today I had alittle time to bust off my hands so I documented some code and got stacking partly done (some minor things that'll need to be sorted)
https://image.prntscr.com/image/wPKk...OeLimQNj_Q.png
Sorry for the lack of updates from my end these last days, I've had lots going on with school! Whenever I have some spare time I work on this. I wish you all a great weekend.
Badges work 100% now (don't mind the UberEMU github, just for packets):
https://i.imgur.com/Vy2n9YB.png
https://i.imgur.com/k7wuKuS.png
Nice progress guys!
Do you'll add groups?
MUS commands?
Mus'll be so helpful, if someone wants to change favorite group in CMS and automatically update it in the client too. :)
I thought I'd just share that groups weren't added until 2 years after the release of R38 :ott1:
https://puhekupla.com/en/news/858
the old group is only the badge with the name and a simple info window
https://img00.deviantart.net/320c/i/...e_hedgehog.jpg
(the info window is same of PHX)
http://i.imgur.com/5fWWTc1.png
https://www.youtube.com/watch?v=EJapoDzdL_o
Also, @Glaceon why not r63 2010? the UI is cool and have wireds, quests and much more things xD
https://lh4.googleusercontent.com/-o...da+paquera.bmp
Just run Phoenix. The biggest reason of Aurora it's because we don't have great v38 (Habbo Beta) emulators. We even got a single working emulator.
Also because of the nostalgia. v34 - v38 are a lot more tangible for now (since Shockwave it's dead) rather than v1 - v30 ..., I personally prefer the v22 - v28 versions.. But it's hard to make some Schockwave hotel right now.
So Habbo Beta also was a great nostalgia.
Phoenix != 2010, lol...
Habbo beta is same thing of 2010 but with no wireds, he also could do a r58 (first wireds), is exactly same ui of beta :p
btw, he could do a websocket system to create wireds in html5 xD (i'm saying to add wireds cos i've created lots of retros with this version and users just stay if have rollers, wireds and stacktile (i did the stacktile in html5))
Opening a shockwave isn't that hard actually, over 70 people registered on my Habbo v1 server, yes, 70 people, that required them to download a portable no-name browser (Pale Moon) just to get Shockwave to run.
And yes, Habbo beta is a very nice nostalgia, I still remember sitting outside at night-time with a laptop in the wind, using my neighbours Wi-Fi because we still had dial up, playing Habbo beta and looking at the two green buttons to pick either original Habbo, or beta Habbo (I don't know if anyone remembers that), jeez, that was almost 9 years ago.
(not my image, but an official image from Habbo back in 2009 nonetheless)
https://i.imgur.com/CKHJvLD.png
I actually remember I tried to get both buttons to show due to whatever reason, but I ultimately failed as I was 12 at the time :ott1:
@Glaceon @spreedblood I really hope you use this CMS layout not current one, as the one from 2009 perfectly fits Aurora :D:
Best times. I remember it clearly. I started playing in 2006 actively until somewhere after the BETA. Anyways.
I did write part of the CMS I'll be using for the BETA hotel. It was going to be used for our private BETA, however since my 2 fellow developers used their own client, the CMS wasn't used that much.
The CMS is written in a debatable poor framework (Codeigniter) simply because I had no time (due to work and of course Emulator development) to learn Symfony which was my first idea. The CMS uses Twig and makes use of language files with a language ID stored in session (so a multi-language hotel would be possible).
This CMS - with a lot more, because it isn't done - will be used on our public BETA. The important things (staff, credits page, news, ASE) will be done tomorrow. Tomorrow the public BETA - if nothing comes between it - will come online. Everyone is welcome and will be awarded a free BETA badge, a free rare and some other cool stuff.
(in case you want a different index, I could go for something like either one of these:
http://i.imgur.com/0R5Le0n.png
http://i32.tinypic.com/o6xyz6.jpg
Or one of the other PHPRetro indexes, or if you can supply me with the HTML any one you like).
2 small screens of the CMS:
https://i.imgur.com/jtEKRAg.png
https://i.imgur.com/p9pplHT.png
Looks nice! I've also started playing Habbo in 2006. And Flash Habbo with original UI (2009-2010) is my favorite <3
A few notes:
I thank @Dominic for writing a CMS for Aurora. The new CMS (which will be much better than the garbage I have right now xD) will be written in Laravel. The CMS is currently made on the PhoenixCF style, but will later MOST LIKELY support more layouts (Habbo layout, come with which layouts you want). If it will only support one style, it will be the Habbo style.
Screens:
http://i.grab.la/07b0b-2359364a-e4f0...8dd685892c.png
http://i.grab.la/07b0b-e92a4a15-7b13...08c5d0ee35.png
http://i.grab.la/07b0b-2b8daaa2-48b8...ea48c46823.png
I let @Dominic post snippets later as he knows what the code does and I don't know Laravel that good so I can't really show much. I'm gonna learn it though.
Soon I'll try to work a bit more on the item stuff, maybe finish off gifts, recycler (I think this version does have it....???) and then see what has to be done.
Thanks for the great introduction, @Glaceon. Jesus, been ages since IWarfare, huh? Ha...
Aaaaanyways, hello there Aurora fans!
The avatar creation is my current master piece (current!)
I'm using a middleware to check whether the current player has an avatar as its current and whether is has one at all.
My player relationships looks like this:Code:if (auth()->user()->avatars()->count()==0) {
return redirect()->route('avatar-show');
}
if (is_null(auth()->user()->avatar)) {
return redirect()->route('avatar-chooser');
}
return $next($request);
Code:public function avatar() {
return $this->hasOne(\App\Avatar::class, 'player_id', 'id')->whereCurrent('1');
}
public function avatars() {
return $this->hasMany(\App\Avatar::class, 'player_id', 'id');
}
Aaaand this is my Avatar controller, which checks names, creates and shows avatar creation page. Beware, this class is unfinished.
Documentation will be added upon release of BETA.Code:<?php
namespace App\Http\Controllers;
use App\Avatar;
use Illuminate\Http\Request;
class AvatarController extends Controller {
public function showForm() {
return view('pages.avatar.create');
}
public function nameCheck(Request $request) {
if ($request->ajaxAct !== "check_habbo_name") {
return response('0', 200);
}
$validate = validator($request->all(), [
'habbo_name' => 'required',
]);
if ($validate->fails()) {
return response('0', 200);
}
$avatarExists = Avatar::whereUsername($request->habbo_name)->count()>0;
if ($avatarExists) {
return response('0', 200);
}
return response('1', 200);
}
public function create(Request $request) {
$validate = validator($request->all(), [
'username' => 'required',
'figure' => 'required',
'gender' => 'required',
]);
if ($validate->fails()) {
abort(404, "Temp. error handling");
}
$avatar = Avatar::create([
'player_id' => auth()->user()->id,
'username' => $request->username,
'figure' => $request->figure,
'gender' => $request->gender,
'motto' => 'I | Aurora',
'sso_ticket' => '',
'current' => true,
]);
if (!is_null($avatar)) {
Avatar::where('created_at', '<', $avatar->created_at)
->wherePlayerId(auth()->user()->id)
->update([
'current' => false
]);
return redirect()->route('me-page');
}
return "error";
}
}
Much love!
Nice project both of u (any new progress?)
Was wondering wouldnt you be able to use the avatar class like this ?
Code:public function avatar() {
return $this->hasOne(Avatar::class, 'player_id', 'id')->whereCurrent('1');
}
public function avatars() {
return $this->hasMany(Avatar::class, 'player_id', 'id');
}
You will made with SSO for v9 ? , i re-made a CMS from 2006 using zabboweb and Holograph...
https://i.imgur.com/sWPyXhi.png
Cuz I can.
Hi Josh,
Any updates? Where are u working currently on?
My apologizes. I haven't done much updates, because of a few things:
1. I work 40 hours a week, program the whole day. After work there's just no room for more development.
2. I do have other hobbies in the weekend and I mainly try to clear my head from things.
So no, the development isn't canceled, it just has a stop. I do want to start working on it sooner or later though. I have to see what features still has to be implemented as lots of the main features are done. As far as I remember.
Hi Josh,
This seems like a nice project.
Hope you're gonna continue is soon.
Greetz,
Nyma (yes you know me boi) :D
After months I finally did something. I had some private stuff going on and I felt kind of unmotivated. Also the source is pretty messy and couldn't be bothered to rewrite it. Nonetheless, I started working on it again. Did some small fixes and did one small feature. I'm going to work more on it from now on.
Fixes:
- When a new item was bought, for example a TV, you would have to double click TWICE to turn it on.
What caused the bug:
In my code I checked whether "item.Data" was an int. If not, set the NEXT state to 0. In other words, item.Data is empty when you purchase a furni, so double clicking it would make the data 0, which is ALSO off. Setting it to 1 fixed it.
- Item data is saved in database now
Also made home rooms, you can now change your home room, and when you set a room as home room, you'll automatically go to that room. Taking the home room off will make you go to the hotel view instead.
The fixed code for interactions:PHP Code:public class UpdateNavigatorSettingsMessageEvent : IPacketEvent
{
public void Run(Client client, MessageEvent msgEvent)
{
var homeRoom = msgEvent.ReadVL64();
if (homeRoom != 0)
{
if (Engine.Locator.RoomController.GetRoom(homeRoom) == null) return;
}
client.Player.HomeRoom = homeRoom;
Engine.Locator.PlayerController.Dao.UpdateHomeRoom(client.Player.Id, homeRoom);
client.SendComposer(new NavigatorSettingsComposer(homeRoom));
}
}
PHP Code:if (!int.TryParse(item.Data, out int currentState) || currentState < 0)
{
nextState = 1;
}
else if (currentState >= item.Definition.MaxInteractionState)
{
nextState = 0;
}
else
{
nextState = currentState + 1;
}
I do want to tell about Aurora's future. The name "Aurora" was originally going to be used for a full developer website, however the name got used as an emulator name. The project started a long time ago with a R38 emulator, focussing on having a full experience with both Flash and Shockwave clients working. The source was pretty "shit" and nothing special, but as I lost the source, I wrote (together with @spreedblood) the current Aurora R38 emulator. After some months of development (minus the months I've been busy / unmotivated), @spreedblood said he didn't feel like working on this source, as the source could be HEAVILY improved, but neither @spreedblood nor I have the will to rewrite it. When it's stable and all basic features are done, Aurora R38 will be released officially (this means: emulator, database, SWF pack, CMS and help thread). After that, the source won't be build upon anymore (but will be open for anybody who want to work on it, or in noob-terms: rename).
Besides that, @spreedblood and I will be working on a secret project - maybe something revolutionary. It's unknown whether we'll finish it - but details might be given out when we've started. I won't be fully 24/7 working on it, but I'll split the development time 50/50 (or 80/20) to work on both projects. The main priority is Aurora.
However, as soon as Aurora is done, I wish to start something new. I want to have some input. What should I make? It can be anything, so surprise me.
Last, as for the v9 version of Aurora, I'm unsure whether this will be 100% done and completed, but it will be a much better source of my released Aurora V9 Dart version. While I don't like to talk much about it, Aurora V9 will be standalone, and will work on Sqlite instead of MySQL and will be written in Dart.
So, finally, leave any suggestions - not only for my next project but also for this project, as I'm still aiming for Aurora to be 100% finished. I might even do Shockwave too... ;-)
Hugs and kisses,
Oneyouneverknow
Psst... 2,250 posts already, 1007 likes, I'm proud on how much I've grown...
Good choice. :thumbup1:
I really like emulators that I can just open up and it's immediately ready to use. :love:
You had my curiosity, now you have my attention. :):
It's a shame what's happening to Aurora, but I agree, the source is hard to maintain, it's not necessarily "bad" code, but there's too much overkill that makes it hard to add features, especially with all that dependency injection which IMO is too much for a Habbo server.
@spreedblood knows
Hey, I'm back now. Lots of things on my mind and other projects and work so didn't really work on Aurora but it's still in development.
I did some updates:
- Room visitor count working perfectly, even with closing emulator, switching rooms and logging out
- Room settings work (besides tags, they can't be set)
- Room homeroom is working, you go to your homeroom when you enter the hotel
- Achievement unlock works with giving badges and pixels (at this moment, only ACH_AvatarLooks1, ACH_Student1 (you get when you call the guide bot) and ACH_RoomEntry1-10 (by entering X rooms you DON'T own).
- Fixed some minor mistakes
- Started catalogue products from scratch (pages are still taken from Uber and modified where needed) from scratch. Definitions are done by reading furnidata and modifying it in the database where needed).
No screens unfortunately but I got a video:
https://www.youtube.com/watch?v=ywEbgaBehzM
So in here you see the problem with achievements. Both the achievement list and badge list don't refresh properly when you've already opened it when unlocking an achievement. If somebody knows what the problem is, how to fix it or is willing to look into the scripts for me, please contact me (or post a reply here). Server side I checked everything is alright, and if I reload the client it works, but just not what I just mentioned.
The emulator does have some terrible stuff but I'm gonna finish it. I think there are a few small bugs and the catalogue needs to be done, then I have to make a small CMS and I think at that time there will be a BETA hotel.
In case any of you want to contact me, please contact me through Discord: navv13#8055
So did you choose v7 or v9 ? Still missing packets? i might be able to deliver those.
Or for what ever reason v10-v11.
I currently await for a time to have Maarten look with me on the achievement bug. Also most likely he'll be helping me with the encryption as well (which in Flash isn't needed, but is "crucial" in Shockwave). I discovered the Achievement bug is NOT present in the Shockwave version due to sending "Ft" again will REPLACE the list rather ADD the achievements to the list.
As for the retro version, I did do some work on v9, I don't know which versions I'll support but oh well, will see. Anybody who can help with certain packets for ANY version basically, let me know!
Also, update, it might not seem like much, but user tags display works (img in spoiler due to post being a quote as well);
Spoiler:
There still has to be a way to add them (of course, RCON will be working eventually and you can easily implement it in the CMS). For now I'll make a command (:addtag TAG) which you can use to add the tag, this is not done yet.
Do you by any chance have Discord? As for my second server besides the main R38 I did choose v9 but if I can make it working on both v7 and v9 it'll be even better. But I think best way to talk about it is through Discord, because I am missing some packets for those versions (and, some versions above).
(I never knew you were Dutch btw o_O)
Just send you a request thru discord username MaouKami.
Yesterday Maarten and I looked further in the achievement problem, turns out it's really a SWF problem. So I tried modifying the SWF to console log a specific value, but it did crash my SWF.
This is the code I've used:
And in the compiled SWF the function would look like this:PHP Code:setlocal 5
dup
getlex QName(PackageNamespace("flash.external"), "ExternalInterface")
pushstring "console.log"
getlocal 5
getproperty QName(PackageNamespace(""), "type")
callpropvoid QName(PackageNamespace(""), "call"), 2
And the package does contain:PHP Code:public function _SafeStr_2607(_arg_1:_SafeStr_2333, _arg_2:Boolean=true):void{
var _local_5:_SafeStr_2333;
var _local_3:Boolean;
var _local_4:int;
while (_local_4 < _SafeStr_2598.length)
{
_local_5 = (_SafeStr_2598[_local_4] as _SafeStr_2333);
ExternalInterface.call("console.log", _local_5.type);
if ((((_local_5.type == _arg_1.type)) && ((_local_5.level < _arg_1.level))))
{
_local_5.level = _arg_1.level;
_local_5._SafeStr_2608 = _arg_1._SafeStr_2608;
_local_5.image = _SafeStr_2600._SafeStr_2609(_arg_1._SafeStr_2608);
_local_3 = true;
};
_local_4++;
};
if (!_local_3)
{
_arg_1.image = _SafeStr_2600._SafeStr_2609(_arg_1._SafeStr_2608);
_SafeStr_2598.push(_arg_1);
};
if (_arg_2)
{
_SafeStr_2610();
};
}
The same function in the SWF before:PHP Code:import flash.external.ExternalInterface;
According to Maarten, most likely this line is bugged:PHP Code:public function _SafeStr_2607(_arg_1:_SafeStr_2333, _arg_2:Boolean=true):void{
var _local_5:_SafeStr_2333;
var _local_3:Boolean;
var _local_4:int;
while (_local_4 < _SafeStr_2598.length)
{
_local_5 = (_SafeStr_2598[_local_4] as _SafeStr_2333);
if ((((_local_5.type == _arg_1.type)) && ((_local_5.level < _arg_1.level))))
{
_local_5.level = _arg_1.level;
_local_5._SafeStr_2608 = _arg_1._SafeStr_2608;
_local_5.image = _SafeStr_2600._SafeStr_2609(_arg_1._SafeStr_2608);
_local_3 = true;
};
_local_4++;
};
if (!_local_3)
{
_arg_1.image = _SafeStr_2600._SafeStr_2609(_arg_1._SafeStr_2608);
_SafeStr_2598.push(_arg_1);
};
if (_arg_2)
{
_SafeStr_2610();
};
}
From what I think I understood:PHP Code:if ((((_local_5.type == _arg_1.type)) && ((_local_5.level < _arg_1.level))))
If that always get executed, the achievement list will be empty, and _local_3 will be true if it passes the check.PHP Code:if (!_local_3)
{
_arg_1.image = _SafeStr_2600._SafeStr_2609(_arg_1._SafeStr_2608);
_SafeStr_2598.push(_arg_1);
};
If somebody wants to take a look at it, I'd really appreciate it. For now I'll keep it on hold.
(Thanks to vista for helping me out with this stuff)
I saw you also started some R63 emulator?
Nope. The R63 emulator was actually a private project I once had. I did use it to test some stuff. I'm only working on this R38 and an oldskool server (based on a new source which is million times better, cleaner etc.) which currently only works on v9 but will work on more versions depending on what ThuGie can deliver.
I've got no intention to compete with you and Comet for a R63 emulator. Nor do I want to.
Lots 'o things going on. First of all, I've noticed a bunch of "game breaking" bugs in my source. This means things that can mess a lot of stuff up. Okay, sounds logical. The source is a huge mess. Part of me want to "rewrite" it (and copy 90% over from my old source, just better way of doing stuff), so at least the source is more clean (because, to be honest, after all this time it got a bit messy). Part of me knows that a lot of people will get into auto-flame mode that I start over again.
The question to you is, should I continue on this source, and fix the bugs but not care too much about clean stuff? Or should I rewrite it (which means it takes a longer time to get to the current point but most likely makes it go faster after that). And should I continue a DI-pattern (dependency injection) or should I use something else? Part of me things it's overkill (and some people I've asked think the same), some think it's the best thing and "almost necessary". I know how much disgust many people have with the God class so if I know the best and easiest thing to do I'll do it.
With this, I had to make a hard decision to keep this on the down-low for a bit. In the mean time, I started "writing" a CMS. Well, to be honest it isn't such a great thing, but it's mainly used for the public BETA I do want to try to get on this year. It's written on Codeigniter which - and I don't know how true it is - isn't so great according to some people. Then again, it's still just Habbo shit, so I don't think Laravel is worth it. Anyways, it's going to be a 80% replica of Habbo's old CMS (HoloCMS/HabboCMS 5.X/IDKWhateverCMS,...) with some custom features.
Current progress:
https://i.imgur.com/W2bE1fz.png
https://i.imgur.com/oCON1Ie.png
https://i.imgur.com/uwTqHag.png
(by using 'Crikey!' as motto without the quotations will result in your avatar being translated into a crocodile, just as on Habbo back in the day).
Motto change and login are done, hot campaign and news is taken from the database. More isn't done yet.
If anybody wants to give some advise, please put down a comment or better send me a message on Discord:
navv13#8055
Omg,That looks great! good job! :)
No it won't. Refactoring is almost always guaranteed to be faster than starting from scratch again in order to get up to a certain standard.Quote:
Or should I rewrite it (which means it takes a longer time to get to the current point but most likely makes it go faster after that)
It's an official index that Habbo made, this existed around the time of when R38 was live on Habbo, actually. :ott1:
https://www.habboxforum.com/showthread.php?t=572056
Also I'd appreciate if you gave reasons why you're not a fan of the index rather than just saying "I don't like it" without any reason to back up your claim.
It doesn't matter. All the indexes from PHPRetro will be supported. Don't know if they're all official Habbo indexes but at least you got plenty of choice.
I like to thank @spreedblood for working on the source and trying to get it cleaner. Until he's done, there won't be any server updates. I might do some CMS updates this week, depends on how I feel this week.
Any examples on how he is making it cleaner? Because cleaner is quite subjective.
"sort of fucking it up"
In what way fucking it up? And I do know he's cleaning up the source and switching from Autofac to Microsoft Extensions. I just don't know ALL his ideas. And it's our development, in fact he did quit first but he promised me to "help me" "rewrite" it (AKA clean it up). I'll surely do my parts on the stuff I wrote to clean it up.
After that, I'll finish up the furni interactions and most likely start fixing the public rooms which are f*cked up for some reason.
Lol, wasn't I the one who added the furniture and public rooms to Aurora and then they mysteriously disappeared? :ott1:
Sorry for the lack of updates again. I'm not 100% sure when and if the rewrite is going to be done by Spreed. But anyways, I started writing a better source for my multi-version shockwave server (which will support v7, v9 and hopefully v13 too, maybe more versions will also be supported later).
I've looked a bit in the Lingo of v7 and saw some interesting stuff. Made it easier to figure out the navigator node structure (this structure is 100% figured out by me, I take no credits. I might post the structure eventually).
https://i.imgur.com/6Ow1XGZ.png
This isn't done in my own emulator, this was done in ION just to figure out the structure before I actually rewrote my Shockwave server just to make it easier
(don't think the R38 is abandoned, I've got some ideas for it. Also keep in mind the oldskool client was planned in the beginning anyways and is still part of this project).
Snippet of the server:
I'll give it a bit of time or I might rewrite the R38 on my own or just keep it the way it is. It works and should be stable anyways.PHP Code:using System;
using System.Data.Common;
using System.Threading.Tasks;
using Aurora.Database;
namespace Aurora.Game.Avatars
{
public class AvatarDao
{
private readonly DatabaseConnection _databaseConnection;
public AvatarDao(DatabaseConnection databaseConnection)
{
_databaseConnection = databaseConnection;
}
public async Task<Avatar> GetAvatarByName(string name)
{
Avatar avatar = null;
await _databaseConnection.Select(
"SELECT * FROM avatars WHERE name = [MENTION=1333344765]name[/MENTION] LIMIT 1",
async (reader) =>
{
if (await reader.ReadAsync())
{
avatar = new Avatar();
avatar.Fill(reader);
}
},
( [MENTION=1333344765]name[/MENTION]", name));
return avatar;
}
}
}
Since @spreedblood officially told me he won't be working on R38 anymore, I've decided to give the source a big clean myself. From now on, I'll be the only one working on the R38. However, this doesn't change anything, the only thing that'll happen is a new source and some things completely rewritten (room map stuff as height shit wasn't done that great).
95% of the code from the old source can be reused in a way, I hope to have the emulator rewritten by the end of this month, maybe end of next month. After that and a few of the really game breaking bugs are fixed, a test hotel will come up (scheduled and written down so I won't forgot).
Last, the name Aurora Emulator will be changed to Project Aurora, @Quackster please change the title of the topic to:
[C#, PHP, R38] Project Aurora
The focus of this thread will from now on only go towards R38. As soon as most/all of the R38 is done, a new thread will be made for oldskool, which for now won't be the main focus.
Nice to hear that you're going to start with that rewrite Josh, good luck! I look forward to try the test hotel :)
Database stuff will be rewritten too. The dao's will contain of a variable for the database "factory". That "factory" contains functions like "select", "insert", "update" etc. Example of how a select would be used:
(huge thanks to @spreedblood for this idea)PHP Code:public async Task<Player> GetPlayerBySSO(string ssoTicket)
{
Player player = null;
await _databaseFactory.Select(
"SELECT * FROM players WHERE sso_ticket = @ssoTicket LIMIT 1",
async (reader) =>
{
if (await reader.ReadAsync())
{
player = new Player(reader);
}
},
("@ssoTicket", ssoTicket));
return player;
}
Also, all message events will have the header in the event file rather than in the packet helper/library file. All message headers will automatically be added to the library if they implement IPacket. This means there's no possibility to make a packet file and test it only realizing you haven't added it to the list.
PHP Code:class SSOTicketMessageEvent : IPacket
{
public int Header => 204;
private readonly IPlayerController _playerController;
public SSOTicketMessageEvent(IPlayerController playerController)
{
_playerController = playerController;
}
public async Task Handle(Session session, Event message)
{
string sso = message.GetString();
Player player = await _playerController.GetPlayerBySSO(sso);
if (player != null)
{
session.Player = player;
session.QueueMessage(AuthenticationOKMessageComposer.Compose());
session.Flush();
}
else
{
await session.Disconnect();
}
}
}
(keep in mind, 204 is the shockwave header for SSO, I might add support for multiple headers later)PHP Code:public class PacketLibrary : IPacketLibrary
{
private readonly Dictionary<int, IPacket> _packetEvents;
private readonly ILogger<PacketLibrary> _logger;
public PacketLibrary(IEnumerable<IPacket> packetEvents, ILogger<PacketLibrary> logger)
{
_packetEvents = packetEvents.ToDictionary(packet => packet.Header, packet => packet);
_logger = logger;
}
public async Task TryHandle(Event message, Session session)
{
if (_packetEvents.TryGetValue(message.Header, out IPacket packet))
{
await packet.Handle(session, message);
_logger.LogInformation($"Handled packet event {packet.ToString()}");
}
else
{
_logger.LogWarning($"Unregistered packet event with header {message.Header} ({message.ToString()}");
}
}
public static void AddPacketEvents(ServiceCollection serviceDescriptors)
{
foreach (Type type in Assembly.GetExecutingAssembly().GetTypes())
{
if (type.GetInterfaces().Contains(typeof(IPacket)))
{
serviceDescriptors.AddSingleton(typeof(IPacket), type);
}
}
}
}
Okay, this is gonna be a long post 99% won't care about but maybe, JUST MAYBE for the 1% I'm still gonna post it. No, this development isn't going to be canceled or slowed down, but I got a few things to mention.
Things in my private life... well, they are hard. I discovered something which is hard to deal with and it just distracts me a lot, not only from development but also from work sometimes. Then, there is work, which I also have (yeah, need to earn money for shit and what not). Besides that, I try to write a story and play games as well. I was excited for a rewrite but in the end I don't think I have the time for it, plus it would be much of a time waste. I decided to continue on the old source and try to improve it as much as I can.
The development was going to be a R38 server working on both Shockwave and Flash, something that is still going on, with a custom CMS based on the old Habbo style from 2008-2011/12? The idea was to implement custom features in it and stuff, but this is completely scraped, so only the original features will be implemented. I'll look into all things, so the simple stuff such as navigator, rooms, chatting, items but also more advanced, "unnecessary" stuff like games and the Habbo NUX stuff, or whatever it's called in R38 and the guides, and MAYBE - if I can get camera to work like it did in earlier versions - camera as well.
After that, or in the meantime, I want to create something between v7 and v13, or mabye something that can support multiple versions, but I'm not entirely sure what. Ideas can always be implemented, I could look into custom features if people want it.
Last, some updates on the old source:
https://i.imgur.com/NVxU36s.png
https://i.imgur.com/Fi0Z0Ll.png
Also, unlike Flash, achievements work correctly in Shockwave...:
https://i.imgur.com/GNvnBRj.png
https://i.imgur.com/Lm7eCB6.png
I'll keep ya updated folks and hopefully a public BETA will happen within 2 months.
ayy,that looks amazing!
A question Navine, why do not you use v31? has the joystick and everything that r38 has
So, I haven't quit the development. I've been dealing with a lot in my life. Depression, sadness and lack of motivation for anything. I've surely grown to be a different person and I couldn't find any motivation to work on the development no more. That, added with the fact @spreedblood and I had a disagreement and I guess we kind of both got pissed off on each other and he already left the development team and the source is so, terrible because of the wrong way things were done, I just had no motivation.
I guess I could do a bit of story time no one cares about. I discovered I'm transgender (this is the first time I'm publicly putting this on a forum) and due to the stronger feelings I got and stuff it just kind of ruined my mood most of the time (until I started to live better with it). My intentions were to come back to the development but with work and this besides it and other shitty things happening I just didn't. I tried doing multiple stuff: anything Habbo related, trying to create a better source, nothing worked. The old source I still have, so nothing is lost.
Now, I'm here because it's the end of 2018 (which, in case anybody even cares, ended up terribly), I had the worst week last week but it also made me realize that sometimes fate can be harsh. I remembered how things were before, when I wasn't worrying about anything. I decided to no longer work on "Project Aurora", but to recall it in something new, something which says I made a new start. Whether the source and stuff will change or not is the question, but for now the only change is the name, which will be a "reference" to the new start I make. Not only personally, not only mentally but also here on RaGEZONE.
Feel free to PM me or add my Discord for any questions or if you just want to say something (NO, don't be rude). With the new start I want to make, I want to reopen a thread. So I ask a moderator to kindly close this thread and I'll try to rewrite one after Christmas.
Last, the new start will be done with me, but me alone. @spreedblood won't be a part of it. I kindly receive all kind of offers for help, but I will just as kindly reject them. Tips are welcome, but I don't ask anyone to actually write code. Giving tips on code I made how I can make it better is appreciated though.
Lastly, I wanna thank @Quackster a lot for being an awesome dude on Discord and sending me the some stuff which helps out my development a lot and @spreedblood for the hard work he put into Aurora and even with all the things happened it didn't change my appreciation for this lad.
Also I thank everybody for reading this and if you dislike this, then just leave.