Jump to content

Ben

Administrators
  • Content count

    42
  • Joined

  • Last visited

  • Days Won

    47

Posts posted by Ben


  1. Hello Person,

    Thanks for joining Solero. In response to your question, there is a column in the database called "Moderator", you can set this to 1 for your player in the database using PHPMyAdmin in order to mod yourself in the game.

    I would like to suggest you join your Discord server, however, since the tutorial you followed is now outdated. On our Discord server you can get help setting up Houdini, we have detailed a text tutorial for Ubuntu and we're working on more.


  2. Hi Andrey, welcome to Solero.

    If you want to write your own game server for a CPPS, then it is worth reading up about what a socket server actually is, you clearly already have some idea about what the task is that you are undertaking!

    A CPPS game server is basically a socket server that responds to two different types of packets, XML (or login) packets, and XT (or game/world) packets. There are a few other things which are really essential if you wish to write a game server for a CPPS:

    • Full understanding of the Club Penguin Protocol. You can learn this by either reading the action script code hidden inside the Club Penguin client files (this involves downloading a media server and opening files up in JPEX decompiler), or, by looking at other, already built source codes and seeing how they work (this is how most people learn).
    • In-depth knowledge of how to write code in a programming language of your choice. Any programming language will probably do just fine, I recommend a higher-level interpreted language (and perhaps one that supports parallel programming?) since it sounds like you might be a beginner. Don't choose a language because someone told you it's faster, choose one you're good at, and stick with it. 
    • Knowledge of some kind of database software, since your game server is going to have to store data about users somewhere. You do not have to use MySQL, there are actually tons of other great database servers out there, however MySQL is a popular choice thanks to its good support for small sized databases and documentation scattered around the web, not to mention the numerous libraries & ORMs compatible with MySQL & SQL in general.

    So to answer your questions tl;dr mode

    Yes, learning about socket servers, specifically TCP, is essential.

    With some languages & their libraries these days you can write a TCP socket server in 10 seconds flat, however you'll never write a whole CPPS game server in under an hour!?

    You don't have to use git, although it's a handy tool for keeping track of your work, it's not a necessity, but extremely helpful. If you don't know how to use git, I would recommend you focus on implementing the base of your server first, rather than faffing around trying to learn git, which can be a fairly large topic in itself.

    Yes, as I stated above, reading sources already made is a very good idea. I would recommend reading through sources like Kitsune or Houdini to get yourself started.

    Hope I helped a little, good luck & have fun!

     


  3. On 9/22/2017 at 6:12 AM, Rotom-Wash said:
    • Like 1

  4. Quick notice for private server owners.

    Please DO NOT proxy your media servers through to Icerink like some of you are doing. It is putting heavier load on my box, not to mention you're putting yourself at risk, since if my server is vulnerable, so is yours.

    Please download Icerink completely and mirror it on your web-server, your performance will improve that way too.

    Thanks!


  5. On 9/11/2017 at 7:17 PM, Rotom-Wash said:

    I can't, but I can do pretty close to that.

    Take a look at this back SWF for the Bee Wings: http://web.archive.org/web/20170204234556/http://media1.clubpenguin.com/play/v2/content/global/clothing/paper/309_back.swf

    Now take a look at the non-back SWF on Icerink:
    https://icer.ink/media1.clubpenguin.com/play/v2/content/global/clothing/paper/309.swf

    The file in your archive is blank. The back SWF is what stored the item artwork for this item and other wings.

    Additionally, the Internet Archive file was archived on February 4, 2017. I don't think Club Penguin would've randomly removed all back SWFs within 2 months of the game closing. Otherwise, someone would've surely noticed items being invisible or having missing parts on the player card.

    Without these files, the archive of paper SWFs is incomplete.

    Cool. I've added them to the archive! Thanks for your help, providing that list of paper IDs really saved me time.

    Credit @DJ_MuTeD 's FreePenguin for the _back.swf files.

    Also re compressed the whole archive and updated download.zip.

    On 9/11/2017 at 9:25 PM, Rotom-Wash said:

    PS: I think you might've accidentally created a global folder in the local/en directory. The folder contains no files.

    Not accidental, sure this directory existed, and is referenced to in some of the game configs, however it was empty when I checked it. The puffle files which were there had been moved elsewhere.

    Rotom-Wash has been added to contributors.

    • Like 2

  6. 19 hours ago, Rotom-Wash said:

    I know it's been a while, but I noticed some missing item SWFs. In the paper directory, there are supposed to be "back paper" files. These files typically existed for capes, wings, etc. Here is a list of items that had it:

      Reveal hidden contents

    May you please add these files to Icerink? They can be downloaded from FreePenguin's media server. Here is an example SWF: http://media1.freepenguin.xyz/play/v2/content/global/clothing/paper/301_back.swf - They just have "_back" appended to the item ID.

    You should be able to run a script to download them all, but let me know if I can help. Again, thanks for creating this archive. 🐧

    I looked for these when I initially created the archives, however I couldn't find them on Club Penguin's media server (media1 or media2), can anyone actually confirm these WERE on Club Penguin's media when it closed? I know they must have been at some point, since FreePenguin has them up, but those could be outdated.


  7. Hey everyone,

    It is clear to me, and many of you, that things are a little.... quiet? I'm not necessarily talking about Solero, but our community in general, especially on the development side of things. 2017 was a big year for us to some degree, the closure of the Club Penguin game meant we saw a short uproar in activity and productivity, for some time people were showing a lot of interest in private servers again, and many ex-cp players were looking to make their own servers, I know this because shortly after Club Penguin closed, I was approached by around 50 individuals asking for help, which of course I offered! It was a breath of fresh air to me, going back to how things were just a few short years ago.

    It has now been two years since the closure of Rile5.com, which I still miss, honestly, the nostalgia I'd get from visiting that site again would truly be insane. I am proud to have been involved in all this, however, it is a very big part of my life, a part I can't imagine I'll ever forget. My love for computer programming and hardware was born from the people in the CPPS community, I can't help but think how different things would have worked out for me had I not registered on the beloved R5 :)

    Anyway things are slowing down again.

    zo0wdCs3SQKV0tiXDKHSDQ.png

    What does the future hold for Solero?

    Solero is STAYING, this box isn't used solely for Solero, so it will stay for as long as my need for this server stays. The icerink archive stays until it gets taken down by ledisney. I will always be around, but I'm no longer actively writing code, helping people out or working for clubpenguin-related projects, mainly because there's no demand for help but also because I've grown out of this. Solero will also get maintained in my free time, so I don't get hacked. If you make a topic here I'll probably read it.

    What does the future hold for the community?

    The official death of flash has really marked the end of the road, with HUGE clients such as Chrome, Firefox and Edge thinking of throwing in the towel, things really don't look promising, the chances of flash becoming FOSS are slim, IMO. I don't think private servers will still be around for the 2020 exit of Adobe Flash, however, Club Penguin simply isn't an impressive game by today's standards, kids can get so much more out of other platforms.

    If you have been a part of this community, thank you for helping make my childhood slightly more interesting 😁.

    Good luck to you all, I wish you the best.

    • Like 2
    • Thanks 3
    • Dislike 1

  8. On 10/07/2017 at 4:46 PM, Jad said:

    It's for soundstudio btw.

     

    On 11/07/2017 at 6:42 AM, Rotom-Wash said:

    I found those files on FreePenguin's media server:

     

    Thanks guys! I've added these files and updated download.zip.

    On 11/07/2017 at 6:42 AM, Rotom-Wash said:

    By the way, was that a yes or no for this?

     

    Nope 😞

    • Like 1

  9. 12 hours ago, Rotom-Wash said:

    First and foremost, thanks for creating the Icerink archive. Without it, many files could have been lost forever.

    Second, do you plan to always keep this archive up?

    Third, there are some mobile files that are missing. I see you have the "paper/image" directory here, but you're missing the following directories:

    You're welcome!

    Yes, it will stay up for as long as I have spare change at the end of the month to pay for our box.

    There is actually a plethora of files which were used for the various different versions of mobile apps created by Club Penguin, and I voted against putting them on Icerink due to time constraints and lack of real need for them as it is very unlikely anyone is ever going to bother reverse engineering the mobiles apps (they sucked anyway).

    I can see how the paper image directories may be useful to people and I'll look into uploading them. I also downloaded lots of files off of the media8 subdomain before I decided to give up, maybe I'll put those up soon too.

     

    • Like 1

  10. 2 hours ago, Jad said:

    Levels on https://icer.ink/media1.clubpenguin.com/play/v2/games/jetpack/ are missing. Here is a zip that u must place in /jetpack/. (Done manually)

    jetpack.zip

    Very curious, I thought I was quite careful when downloading minigame assets, I checked every SWF file individually for dependencies. I even remember downloading these ones, guess I forgot?

    I noticed a few extra missing ones from your zip file still on Club Penguin's media server, so I grabbed those too! Thanks for flagging this up, added you to contributors.

    updated - https://icer.ink/media1.clubpenguin.com/play/v2/games/jetpack/


  11. You have to make a value inside game_strings.json called w.app.februrary2017.town.jacket and assign the value to whatever you wish to make the text say I think.

    You may need to copy your modified game_strings into game_configs.bin using WinRAR or 7-Zip.

    • Like 1

  12. 2 minutes ago, ReidTJ said:

    Which folders in the root of icer.ink do I make subdomains for?

    play, media1, media2 (which just points to media1), media8 and directory are the essential ones. I know directory isn't on icer.ink, but you should make it.


  13. First you're going to need to download some Club Penguin media. You can get it all from http://icer.ink.

    Your VPS is going to need to have a webserver (I reccomend you use nginx), PHP and a MySQL database installed.

    Upload the media to your webserver webroot and extract it, then configure subdomains (respective to the ones from icerink) on your own domain and your webserver to point those domains to the respective webroot folder in the media you downloaded from icer.ink.

    Next you'll need to crack the Club Penguin client to disable domain locking, this essentially just involves replacing actionscript constants within files inside the /play/v2/client/ & /play/v2/games folders inside the game media directories. You can do this manually using JPEX free flash decompiler or you can use a tool I wrote in Python specifically for this process. You'll also need to modify global_crumbs.swf to point the game client to the correct address and ports that Kitsune will run on.

    Edit the files inside your play subdomain webroot to work on your domain (instead of clubpenguin.com), or just create a new HTML webpage which embeds club_penguin.swf.

    Now go and clone Kitsune out of its official repository, and configure it for your server.

    Execute Kitsune.sql on your database.

    Create a user account in your Kitsune database, run Kitsune on your server, and login via the play page.

    Very brief, and I purposely missed out huge amounts of detail but you can always ask for more specific help.

    • Like 2

  14. Unfortunately, because curl_exec is a blocking call, your server will actually hang whenever a post is made to the Discord webhook API. I did this a few weeks ago, and even with two users online, the effect on performance was noticeable, and this could very easily be abused by creating bots which login to the server repeatedly.

    PHP is able to execute multiple curl requests at once, but there isn't a way (as far as I know), to carry on with your socket server loop before the requests are complete, not without using an extension which brings real multithreading to PHP, like pthreads.

    A nice idea, and it works, to a degree, don't use this if your server has many players. :)

    • Like 1

  15. Hiding your VPS' IP address is just security through obscurity and it's reccomended you always steer clear of these approaches, even though quite often they might be worth implementing anyway.

    Ultimately your CPPS has a game client, which must connect to a game server, you can't hide the address. What you can do is make use of a reverse proxy to try and filter attacks, there are services online (which you pay for), which offer "DDoS protected" reverse proxies, as you would be pointing your game client to the proxy address, you would, in essence, be "hiding" your real game server IP.

    There are also virtual server hosting providers such as OVH who provide DDoS protection as part of all of their plans (paid for by distributing the cost across all of their customers). Beware though, lots of hosting providers claim to be able to protect you from attacks, but can't, make sure to read up on reviews before getting ripped off.

    You should read up on how to secure linux servers from different types of attack, before trying to setup any services which you run publicly, it only takes one google search to find out how to do things the correct way, and of course you're always welcome to make support topics here if you're stuck with anything.

    • Like 3

  16. Take a look at the AS code

    if(this.movieClip.placer[buttonName].active == false || this.movieClip.placer[buttonName].active == undefined && this.currentTurn < com.clubpenguin.games.treasure.GameEngine.NUM_TURNS)
    {
      if(com.clubpenguin.games.treasure.GameEngine.PLAYING_MULTIPLAYER_GAME)
      {
        if(this.netPlayerID == com.clubpenguin.games.treasure.GameEngine.PLAYER_1 && buttonDir == "right" || this.netPlayerID == com.clubpenguin.games.treasure.GameEngine.PLAYER_2 && buttonDir == "down")
        {
          this.netClient.sendDigMessage(buttonName,buttonDir,buttonNum);
        }
      }
      ...

    This is where the onpress event handler calls sendDigMessage which should write the dig message to the socket.

    I'm wondering whether maybe this condition isn't met?

    this.netPlayerID == com.clubpenguin.games.treasure.GameEngine.PLAYER_1 && buttonDir == "right" || this.netPlayerID == com.clubpenguin.games.treasure.GameEngine.PLAYER_2 && buttonDir == "down"

    Those constants are set as follows

    static var PLAYER_1 = 0;
    static var PLAYER_2 = 1;

    And netPlayerID is updated to the seat ID:

    //com.clubpenguin.games.treasure.net.TreasureHuntClient
    function handleJoinGameMessage(resObj)
    {
      this.debugTrace("handleJoinGameMessage");
      this.debugTrace("smartRoomID: " + resObj[0]);
      this.debugTrace("seatID: " + resObj[1]);
      var _loc3_ = parseInt(resObj[1]);
      this.gameEngine.updatePlayerSeatID(_loc3_);
    }
    
    //com.clubpenguin.games.treasure.GameEngine
    function updatePlayerSeatID(seatID)
    {
    	this.netPlayerID = seatID;
    }

    So, when the arrows in the game are pointing right, player one must be taking their turn on seat ID 0, could you confirm this is the case? I can't see the JoinGame message response in your screenshots, it seems that perhaps that message should be sent every time a player takes their turn.

    • Like 2

  17. Just now, Joee said:

    Yes, it's extremely useful as I didn't download all of Club Penguin's files from the different sub domains. How long did it take to download the files? (I always read it as Icer Ink instead of Icerink, haha)

    I spent around two weeks writing numerous scripts to carry out tedious tasks. Minor files which weren't really documented anywhere I downloaded manually and that took the best part of four hours.

    • Like 3
×