Jump to content


Popular Content

Showing most liked content since 06/10/17 in all areas

  1. 10 points
    Greetings everyone! As of today, June 11th of 2017, Solero.me is officially back! One of the main reasons we've brought it back is because we believe it's important to provide a community in which the staff itself is active and productive. We also strongly believe in equal and fair treatment for all of our members. Since Solero is being re-founded by some of the community's most reputable members, and top contributors, we expect to provide a productive environment without discrimination. Everyone is more than welcome here as long as they conform to our community guidelines! Also be sure to join our discord server where you can easily talk to any member of Solero, including the staff themselves, and where you can ask quick questions about anything.
  2. 7 points
    Hello everyone, Many Club Penguin Private Servers make use of only one world server, this is generally a good thing as it keeps all of your players together and helps encourage social interaction between players in the game. Club Penguin has always given the players the option to choose which world server they want to join, but if there is only one world server, what's the point in providing users the option? I wrote some code which will give you the ability to remove the world selection screen from the game entirely, this not only makes login faster thanks to not having to ask the user for input, but also because we no longer need a login server at all, we just authenticate with the world server and call it a day. Here is the actionscript code for the dependency shockwave flash file: import com.clubpenguin.util.*; import com.clubpenguin.crypto.*; var SHELL = _global.getCurrentShell(); var AIRTOWER = _global.getCurrentAirtower(); AIRTOWER.connectToLogin = function(in_username, in_pass, login_response) { if (!AIRTOWER.is_logged_in) { AIRTOWER.on_login_response = login_response; AIRTOWER.username = in_username; AIRTOWER.password = in_pass; AIRTOWER.server.onConnection = Delegate.create(AIRTOWER, AIRTOWER.handleLoginConnection); AIRTOWER.server.onExtensionResponse = Delegate.create(AIRTOWER, AIRTOWER.onAirtowerResponse); AIRTOWER.server.debug = true; AIRTOWER.addListener(AIRTOWER.HANDLE_LOGIN, AIRTOWER.handleOnLogin); var _local1 = SHELL.getWorldCrumbs(); var _local2; var _local3; for (_local2 in _local1) { _local3 = _local1[_local2]; break; } SHELL.world_id_holder = _local3.id; AIRTOWER.server.connect(_local3.ip, _local3.port); } else { AIRTOWER.shell.$e("connectToLogin() -> Your already logged in! Cant login again"); } } AIRTOWER.handleLoginConnection = function(success) { if(success) { AIRTOWER.login(); } else { AIRTOWER.on_login_response(false); } } AIRTOWER.login = function() { AIRTOWER.server.login("w1", AIRTOWER.username, AIRTOWER.getLoginHash()); } AIRTOWER.handleOnLogin = function(obj) { AIRTOWER.removeListener(AIRTOWER.HANDLE_LOGIN, AIRTOWER.handleOnLogin); AIRTOWER.shell.setMyPlayerId(obj[1]); AIRTOWER.playerId = obj[1]; AIRTOWER.login_key = obj[2]; AIRTOWER.on_login_response(true); AIRTOWER.is_logged_in = true; SHELL.gotoState(SHELL.PLAY_STATE); } SHELL.connectToWorld = function() { var _local1 = SHELL.getWorldById(SHELL.world_id_holder); SHELL.showLoading((SHELL.getLocalizedString("Joining") + " ") + _local1.name); AIRTOWER.joinWorld(); } AIRTOWER.handleJoinWorld = function(obj) { AIRTOWER.removeListener(AIRTOWER.JOIN_WORLD, AIRTOWER.handleJoinWorld); var _local6 = Boolean(Number(obj[1])); var _local3 = Boolean(Number(obj[2])); var _local5 = Boolean(Number(obj[3])); var _local4 = Boolean(Number(obj[4])); AIRTOWER.on_world_response(true, _local6, _local3, _local5, _local4); AIRTOWER.on_world_response = undefined; } AIRTOWER.joinWorld = function() { AIRTOWER.server.onConnectionLost = Delegate.create(AIRTOWER, AIRTOWER.handleLostConnection); var _local2 = new Array(); _local2.push(AIRTOWER.playerId); _local2.push(AIRTOWER.login_key); _local2.push(AIRTOWER.shell.getLanguageAbbriviation()); if (AIRTOWER.isRedemption) { AIRTOWER.addListener(AIRTOWER.REDEMPTION_JOIN_WORLD, handleJoinRedemption, AIRTOWER); AIRTOWER.send(AIRTOWER.REDEMPTION, AIRTOWER.REDEMPTION_JOIN_WORLD, _local2, "str", -1); return(undefined); } AIRTOWER.on_world_response = SHELL.connectToWorldResponse; AIRTOWER.addListener(AIRTOWER.JOIN_WORLD, AIRTOWER.handleJoinWorld); AIRTOWER.send(AIRTOWER.PLAY_EXT, (AIRTOWER.NAVIGATION + "#") + AIRTOWER.JOIN_WORLD, _local2, "str", -1); } AIRTOWER.getLoginHash = function() { return SHA256.hash(AIRTOWER.password); } Now, since the way that the client authenticates is slightly different, your server will need to be modified to support it. In this case, I actually made mine use SHA256 hashing (thanks @Kevin) instead of MD5. There is also now no real need for a random key. Note you do not need to use SHA256 with this, it was just what I decided I wanted to use, if you want to go back to MD5, or use another authentication method entirely, you can do so by overriding 'AIRTOWER.getLoginHash'. With this code the client connects directly to the first localized world server in the world crumbs, performs the handshake, hashes the password and authenticates, then proceeds to get the players information. This is how the world server auth works: recv: <msg t='sys'><body action='verChk' r='0'><ver v='153' /></body></msg> send: <msg t='sys'><body action='apiOK' r='0'></body></msg> recv: <msg t='sys'><body action='login' r='0'><login z='w1'><nick><![CDATA[Ben_]]></nick><pword><![CDATA[SHA256]]></pword></login></body></msg> A couple of actionscript classes are required for this code to export, everything is zipped below, you'll also find a pre-exported version in there if you are happy to use mine. The SWF file goes in /play/v2/client/ of your media server, please add it to dependencies.json too: { boot: [ { id: 'airtower', title: 'Communication' }, { id: 'sentry', title: 'Communication' } ], login: [ { id: 'cookies', title: 'Login Screen' }, { id: 'login', title: 'Login Screen' } ], join: [ { id: 'engine', title: 'Engine' }, { id: 'interface', title: 'Interface' }, { id: 'gridview', title: 'Gridview' }, { id: 'mail', title: 'Mail' }, { id: 'book', title: 'Mail' }, { id: 'stampbook', title: 'StampBook' } ], create: [ { id: 'create', title: 'Create Penguin' } ], merch: [ { id: 'app', folder: 'merch/', title: 'Communication' } ] } End result: Please suggest improvements, specifically ways to improve the security, I'm sure this is pretty half-assed. Please ask if you're having troubles getting the server sided stuff to work. Works on only legacy private servers, not the new client, but could be easily ported. I'll do it if I ever find the time. cookies.zip
  3. 7 points
    Official thread for Icer.ink - Club Penguin Media Archive Hello everyone, I have recently taken it upon myself to produce a clone of Club Penguin's client media. I built this by parsing JSON and XML configuration files, but also by making use of other techniques such as basic web scraping and by auditing a lot of the action script code inside the client files. The end result is around 4GB of game media (uncompressed). The root directories are named after their respective web domain. Browse the directories Download media (4.4GB)
  4. 7 points
    Hey everyone, it's been a long time. Today I implemented bcrypt in sweater and I decided i'd teach you how to do it without downloading my version of sweater directly, because who knows ? maybe you have your own version and don't want to replace the whole files. I'll show you how to update everyone's passwords too, so no worries about that. (thanks to @Ben who helped me fix a bug so-to-speak). Alright, let's begin with what's pretty obvious, the Hashing file (Cryptography.php). What you have to do is, replace everything in there with this: Yeah I know, it looks like kitsune's now :) Next, you probably want to set this in Client.php to public: private $strRandomKey; Change that to public. Now, since I don't think any of you have modified the login handler in sweater, or if you did then you're competent enough to see what I modified in the handleLogin and replace the stuff. If you didn't modify it, replace this whole function with yours in LoginHandler.php: Replace the handleRndK function too with this: function handleRndK($arrData, Client $objClient){ $objClient->strRandomKey = "e4a2dbcca10a7246817a83cd" . $objClient->strNickname; $objClient->sendData('<msg t="sys"><body action="rndK" r="-1"><k>' . $objClient->strRandomKey . '</k></body></msg>'); $objClient->setRandomKey($objClient->strRandomKey); } You will also want to change your password column so our new password hash can fit in the column, so just run this SQL command: ALTER TABLE `users` CHANGE `Password` `Password` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL COMMENT 'Password hash'; Now you probably want to update everyone's md5 password to bcrypt, so you can simply run this PHP script: For the register, since you are using sweater you are probably using my 'old' register, so use this new one. Once you've completed all of these, you're done. Hope this helped you. Cya.
  5. 7 points
    It's been a long time since I've actually made a tutorial so this may not be 100% complete although I'll make sure that it is complete, but before we proceed, let me just provide a short introduction on RBSE. RBSE (Ruby Club Penguin Server Emulator) which was originally supposed to be named RBCPSE (Ruby Club Penguin Server Emulator) is an emulator written in Ruby built to support the AS2 Protocol of Club Penguin. Although RBSE is still in the works and plenty of changes will take place, it is currently ready for testing and non-commercial purposes and you are advised to kindly read the LICENSE of RBSE. Before we proceed with the tutorial, you have to know that if you are a Windows user, then this isn't the tutorial for you and you are left alone as this tutorial is for Linux users only and as well, this tutorial is for those who use Ubuntu (which is pretty much what the community uses anyway). Your to-do list and requirements: 2GB Ram or more. Quad Core Processor or any greater processor. 30 GB SSD. LAMP or LEMP Database Management Software - Adminer, Navicat, MySQL WorkBench or whatever software you prefer. Ruby 2.4 cURL Geany Adobe Flash AS2 Mediaserver setup with your server ip address/domain along with Ben's direct login implementation. Sweetalert Once you have all this setup, you may click on this link to download RBSE and extract it to wherever you want. You will find a folder with some json files called JSONS, so move this folder to var/www/html and as well don't forget to move the Register folder to the same directory. Then you would need to import the using your database management software. Here is an example using Adminer. Setting up the register is relatively simple, all you have to do is open each and every file in the folder using Geany and edit the urls and as well don't forget to edit the configuration file. Next you would need to install each and every gem listed in the README, starting from the top to the bottom one by one so you won't face any issues. You may install the gem using the following command which needs to be executed in your terminal. Example: gem install rails Once you have all this done, you may now login to your server using the default user details provided in the README As RBSE is still currently under development, any help would be appreciated and if you face any issues or need help with something except with setting up the emulator, then please feel free to create an issue and message me on Discord: Lynx#6726.
  6. 7 points
    This is a script used to generate passwords in Bcrypt for Kitsune - AS3 version. If you've been facing the incorrect password issue and you're extremely lazy to try Arthur's latest patch on the register. All you have to do in this script is edit the $username and $password variable on line 3 & 4 and then execute the script from your command line / terminal. It will generate the password for you, then all you have to do is copy and paste that into your password column in your database and update it. <?php $username = "Lynx"; $password = "81r5C8%3i8cm"; $hashedPassword = strtoupper(md5($password)); $staticKey = 'e4a2dbcca10a7246817a83cd'; $fancyPassword = getLoginHash($hashedPassword, $staticKey, $username); echo "\n\r\n\r" . $fancyPassword . "\n\r\n\r"; function encryptPassword($password, $md5 = true) { if($md5 !== false) { $password = md5($password); } $hash = substr($password, 16, 16) . substr($password, 0, 16); return $hash; } function getLoginHash($password, $staticKey, $username) { $hash = encryptPassword($password, false); $hash .= $staticKey; $hash .= "a1ebe00441f5aecb185d0ec178ca2305Y(02.>'H}t\":E1_root"; $hash = encryptPassword($hash); $hash = password_hash($hash, PASSWORD_DEFAULT, [ 'cost' => 12 ]); return $hash; } ?>
  7. 6 points
    I know why we should introduce the dislike button now.
  8. 6 points
    Avatar is an api wrapper written in Perl using the Common Gateway Interface and GD module to put together avatars. This api requires that you have CGI setup with Perl on your web-server, by default Apache should serve the files so you don't have to go through any struggle, Nginx users however would need to have CGI with Perl setup which is a daunting task. This project requires that you have a Perl version of 5.10 and above and you would have to install the modules from this list using CPAN or MCPAN to get the api to work and also make sure to have an active Internet connection. The files should be stored in htdocs for Windows users and var/www/html for Linux users. Usage: Project URL: https://github.com/fantasyhacking/Avatar Download: https://github.com/fantasyhacking/Avatar/archive/master.zip This project can be used for your CPPSes for things such as Managers, Profiles etc. Kindly also read the LICENSE before you use this project. Hope y'all find some use with this, good luck!
  9. 5 points
    Hey everyone, I frequently see people struggling with disableing the domain locking, logging services, and client checks embedded into Club Penguin client files to prevent the files being used outside the http://clubpenguin.com domain. I have written a tool in Python to help aid the process of disabling these functions, whilst maintaining the crossdomain policies within the files which actually act as a security feature. import zlib import logging import argparse from os.path import isfile, isdir, splitext, join, exists, dirname from os import walk, makedirs from glob import glob if __name__ == "__main__": logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) parser = argparse.ArgumentParser(description="Club Penguin client tool") parser.add_argument("path", type=str, nargs="*", help="Path(s) to files or directories") parser.add_argument("-d", "--domain", type=str, help="The domain to use (ex. clubpenguin.com)") parser.add_argument("-r", "--recursive", action='store_true', help="Enables recursive mode") parser.add_argument("-o", "--output", type=str, help="Output directory") parser.add_argument("-D", "--dump", action='store_true', help="Dump decompressed FWS data") arguments = parser.parse_args() logger.info("This program can overwrite files on the disk, make sure to make backups before" + " running this script or make sure the output flag is enabled!") for path in arguments.path: if isfile(path): logger.info("Found \"%s\"", path) paths = [path] elif isdir(path): if not arguments.recursive: logger.warning("\"%s\" is a directory but recursion is disabled! skipping...", path) continue else: paths = [y for x in walk(path) for y in glob(join(x[0], '*.swf'))] for file in paths: logger.info("Found \"%s\"", file) filename, file_extension = splitext(file) if file_extension != ".swf": logger.warning("\"%s\" is not an SWF file! skipping...", path) continue logger.info("Opening \"%s\"", file) raw = open(file, "rb") signature = raw.read(3) logger.info("Reading file signature for \"%s\"", file) if signature != b"CWS": logger.warning("File has invalid signature, file sig should be 0x43 0x57 0x43(\"CWS\")") continue header = raw.read(5) data = raw.read() logger.info("Read %d bytes from \"%s\"", data.__sizeof__(), file) logger.info("Decompressing") decompressed_data = zlib.decompress(data) original_data = decompressed_data if b'\x00clubpenguin\x00boot\x00BootLoader' in decompressed_data: logger.info("Found a BootLoader, cracking client checks...") s = b'\x00logEvents\x00boot\x00BootL0ader' decompressed_data = decompressed_data.replace(b'\x00logEvents\x00boot\x00BootLoader', s) s = b'clubpenguin.c0m' decompressed_data = decompressed_data.replace(b'clubpenguin.com', s) if b'clubpenguin.com' in decompressed_data: logger.info("Found clubpenguin.com") s = bytes(arguments.domain.encode()) decompressed_data = decompressed_data.replace(b'clubpenguin.com', s) if b'disney.com' in decompressed_data: logger.info("Found disney.com") s = bytes(arguments.domain.encode()) decompressed_data = decompressed_data.replace(b'disney.com', s) if decompressed_data == original_data: logger.warning("No changes were made to the data!") continue logger.info("Re-compressing data and appending file signature and header") compressed = signature + header + zlib.compress(decompressed_data) if arguments.output: file = join(arguments.output, file) if not exists(dirname(file)): makedirs(dirname(file), exist_ok=True) if arguments.dump: dump = open(file + ".fws", "w") dump.write(str(decompressed_data)) dump.close() logger.info("Copied dump to \"%s\"", file + ".fws") logger.info("Writing data to \"%s\"", file) output = open(file, "wb") output.write(compressed) output.close() raw.close() logger.info("Finished. Goodbye!") If you know Python a little then you will probably be able to understand how the script works rather quickly, as it is rather simple. It decompresses the SWF files to expose some of the actionscript constants within the file (no, this script does not make use of SWF disassemblers like RABCasm which makes my script very lightweight and very fast) The script has a few flags, some of which are just useful, and some of which you'll probably want to use every single time you run it. $ py iceburg.py -h usage: iceburg.py [-h] [-d DOMAIN] [-r] [-o OUTPUT] [-D] [path [path ...]] Club Penguin client tool positional arguments: path Path(s) to files or directories optional arguments: -h, --help show this help message and exit -d DOMAIN, --domain DOMAIN The domain to use (ex. clubpenguin.com) -r, --recursive Enables recursive mode -o OUTPUT, --output OUTPUT Output directory -D, --dump Dump decompressed FWS data Domain (required) tells the script which internet domain to replace security locks and logging services with. Recursive mode will make the script search through every directory below the path you specify for SWF files to check. Output changes the output directory, assuming the output directory is empty no files will be overwritten. Dump will make extra files containing the decompressed version of the data, useful for debugging purposes (for example if the script is making changes which break the SWF). Example usage on real Club Penguin media! /play/v2/client /play/v2/games/ Script download attached :~) Prerequisites Python 3 :) client-tool.zip
  10. 5 points
    Hello there! Seems nice over here, so I'll be around for sure.
  11. 4 points
    For those who rely on Club Penguin Archives for their CPPS content, many of you know that CP Archives usually goes down every few weeks for what may be weeks at a time. So, I took it upon myself to take a full dump of the Club Penguin Archives website and put up a mirror website for the community to use when the website is down. The mirror website is also significantly faster than the original website, if you prefer to use the mirror site over the original. All hyperlinks for SWF files and wiki articles are working on my mirror website so it will not redirect you to CP Archives when the site is down. You can access the Club Penguin Archives mirror here: https://archives.cpps.media Enjoy!
  12. 4 points
    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. 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.
  13. 4 points
    Good question! Here's a whole guide on how to use Solero, and well, any IPS forum: Welcome to Solero. This guide will distinguish different functionalities of Solero and aspects of the forum that are needed to properly use Solero. Brief History Solero (pronounced soh-leh-roh) is a forum oriented toward young developers and enthusiastic gamers. It first appeared on the internet in 2015, around the time that Rile5 closed. If you're a veteran from the CPPS community, you've most likely heard of both Solero and Rile5, since this is where most of Solero's advertising is oriented. This version of Solero was established on the 11th June, 2017 by @Arthur, @Ben, and @Kevin. Please see the Community Guidelines before creating content on Solero. Be mindful of what you post. https://solero.me/announcement/2-soleros-community-guidelines/ Functionality If you have not already, please register an account (https://solero.me/register). Upon the first login to your account at Solero, you will be prompted with this page. This is the page you will always see when you log in. Above is the navigation bar. This navigation bar contains pages. Browse - Your main page for everything, including the forums itself. Forums - Categories and topics galore! Above the navigation bar image is the forums page. Categories and topics are all here on this one page. Downloads - These are downloads posted by users around Solero. You can submit a file for every user to see here, see what's new, and even see the files that are trendy. Files are categorized under Categories, located to the right on the download page. Blogs - Blogs are a collection of posts created by various users. If you were to create a blog, you could call it "My life on Solero", and post about CPPSes, for example. These blogs can be viewed by anybody on Solero. To create a blog, click "Create a blog" in the top right corner of the page. From there, follow the steps that you're prompted with to publicize your blog on Solero. Staff - This is a list of the current staff members on Solero, categorized by rank, then alphabetically (by default). Online Users - A list of the current online users can be viewed here. This can also be seen promptly above the footer inside of the Forums page. From here, you can also see what every user online is doing on Solero. Leaderboard - Reputation Leaderboard. The reputation leaderboard shows who has the most liked content for the day, and days past (by clicking Past Days). From here, you're also able to find the top members with the most reputation and the most posts. Activity - See what's happening on Solero lately at a glance. All Activity - You can view literally every reply and every topic that has been posted if you glance at All Activity. Scrolling down will bring you further in time. Activity Streams - Different streams of activity. If you liked a piece of content from @Adam , and @Scabies made a reply on the topic that you liked, this would appear in your "Liked Content" activity stream. The rest is self-explanatory, but let me know if you need any assistance with this. Unread Content - If you have not read a piece of content, this will appear in Unread Content. Tip: To easily access Unread Content, in the top right corner click Unread Content. If you want to mark it all as read so that you don't have to worry about clutter, click Mark Site As Read. Content I Started - Shows activity on content you started. Search - This is not a search bar for everything, this only searches through content in Activity, because there is a lot. If you want a full search, in the top right corner above your mailbox and notifications, there should be a search box. Moving on, let's check out the topmost part of your page. This may look different on other themes. Please note that all of these function the same way, no matter what theme you're using. Notification Bell - View all of your notifications at once. If you have a smartphone, this is sort of like your Notifications Center. You can see everything happening at a glance. If someone were to like this post, I would see it as a notification. When you click on the notification bell, this is what appears. Message Icon - Send and receive private messages from anybody on Solero. When you click on the envelope icon, this is what appears. Compose New - Send a private message to someone directly through this feature. Go to inbox - Goes to your inbox. Click on a message from someone to view it as well the conversation history with that person. If you have any recent messages, they will appear in the center of your inbox upon clicking the envelope icon. Search - Search for anything across Solero. Tabs and Widgets Recent Status Updates - Shows recent status updates from users who have changed their status within the past 24 hours. Click on reply to reply to a status updates. Next to reply should show the time when a status update was posted. This widget helps to easily update your status. Type something in "What's on your mind?" to update your status and have it visible to everybody on Solero. If you are unsure of how to enable status updates, scroll to the FAQ section. Posting Whenever you create content on Solero, please be sure that it follows the community guidelines. See the helpful links section if you're confused as to where that's located. Quote - Quotes a post in a reply. Edit - You can edit your post with the basic Solero text editor. To like a post, look for a button that looks like this in the post that you're trying to like. Click it to like that post. Next to that button, it should show who liked that specific piece of content as well. When you create a topic, you're prompted with a basic text editor. If you need assistance with this, please don't hesitate to ask around. When editing your content, you'll notice two buttons above your text editor. Poll - Create an interactive poll that people can vote on. Keep in mind that this will appear above your content. This only works if you're editing or creating a topic. You may notice this icon near the top right corner of your post. You can share your post to any social media outlet with this icon. Try it out! Reporting Content - Reporting content is important. Don't try to get involved in drama. Let a moderator or administrator handle it. To report content, look for something like this: Click Report Post. Follow the steps you're prompted with to successfully send your report to a moderator or administrator. It'll be reviewed shortly. Community Widgets These are widgets in which you can post topics. We call these Categories and subforums. In the top right corner of every category is an arrow down icon. This toggles a category so that you don't have to see recent topics from that category. Subforums Subforums are child categories of parent categories. Here's what I mean: Under General is Support, and Tutorials. These are subforums of the parent category General. Since these topics (Support and Tutorials) relate to General, that's why they are placed there. You can still make topics and reply to posts in subforums just like every other regular category. Under every category is a description of what should be posted and why that category is there. Scroll through Solero to see the descriptions of each category so you know what needs to be posted and where. I know what each category is for. How do I post a topic inside of that category? Here's the basic functionality of categories. If I wanted to post something in the General section of the CPPS category, I would click Start New Topic. By starting a new topic, you're posting a new thread. Above are examples of topics. An example is "Vintage Penguin vs Club Penguin Rewritten". This is a topic, and anybody can reply to it. Going more in depth of the functionality of categories, you can click Mark forum as reading to mark everything in this forum as you've read it so that new notifications for this category won't appear in any of your Activity Streams. Follow - Following every topic, reply, like, lock and even the slightest emoji of this category. Click the Follow button to receive notifications for everything that goes on within this category. The following format above will apply to every category. Topics Widget This widget shows topics recently made by members. Click on a topic to be linked to it. From there, you can reply to posts, like posts, and use that emoji that you're favoring. The number next to the topic on the right-hand side is how many replies it has. Posts Widget This widget is designed to show recent posts from users on topics. For example, if I were to post something on George's topic, my post would appear in Recent Posts, under the topic that it was first posted in. Popular Contributors Widget From here is where you're able to see the most reputable contributors on Solero, for the month, week, year, and all time. Arthur has 11 reputation, so he is the 3rd most popular contributor on Solero for the week. If you click "Month", you would see the most popular contributors for the month, and so on. Who's Online Widget See the members who are online. Tip: This is also accessible via Browse -> Online Users. Different roles have different name color. Here's the spectrum: Red: Administrator. Administrators are responsible for managing Solero, from implementing new features to hiring staff members. Blue: Moderator. Moderators are responsible for settling user disputes and keeping Solero a safe environment for everybody. Dark Blue: Member. Members are contributors who post content and use Solero daily. Members - Registered individuals on Solero. Anonymous - Unknown users on Solero. Guests - Unregistered visitors casually viewing topics. Member Statistics Total Members - Amount of total registered members on Solero. Most online - The amount of members most online at a time. FAQ How do I enable status updates? To learn how to enable status updates, please see this helpful topic. What about my profile? How do I customize it? Here's a tutorial that goes more in depth about customization and your profile. Can I be a mod? You'll be notified when Solero is looking for staff members. What is the official Discord of Solero? https://discord.gg/ByCczUg <- Click here to join the official Solero Discord. How do I change my theme? Scroll to the bottom of the page and click Theme, and explore new themes! Helpful Links Solero Discord: https://discord.gg/ByCczUg Solero Register: https://solero.me/register Solero Community Guidelines: https://solero.me/announcement/2-soleros-community-guidelines/ Thank you for reading my tutorial. I hope that this topic helps many users to come. Camden
  14. 4 points
    Hello all, So recently I forgot to patch this up, thought I'd share it with you guys who have AS3 servers and are using Kitsune as a source. Basically the situation is you're able to buy as many puffle wild creatures as you like - you can go into negative balance but spam buy them still. Such a simple solution and I should of done it ages ago but forgot to, thought I'd share for any noobs Here's how to fix it: Go to Kitsune\ClubPenguin\Handlers\Play\Pet.php Find the function And replace it with the following Save the file and restart your World server and it should be fixed. You're welcome
  15. 4 points
    bruh that function is going to do nothing other than output a message in your console and a message in-game
  16. 4 points
    If it does not have DDoS protection it can be attacked very easily using $5 booters. If you're owning a CPPS, it's very easy to fetch your IP and port using a packet editor. You should also install software like fail2ban to block SSH bruteforce attempts.
  17. 4 points
    Please, if you lack the knowledge of coding, please learn it thoroughly. I don't mean to sound harsh or anything, but you can't make a CPPS without knowing the proper security measures and knowing how to fix certain features etc. If you need specific help for your CPPS, then post it in https://solero.me/forum/12-support/, and the community will help you.
  18. 4 points
    Club Penguin domains within the swf files may likely be the cause, use JPEXS SWF Decompiler to get rid of all clubpenguin.com associated domains.
  19. 4 points
    Katana a free, open-source screenshot utility Katana is a free, open-source, user friendly screenshot utility for macOS (Windows support soon™). Katana is built using the latest web technologies (such as HTML5, Node.js and Electron) - resulting in a fast, stable and smooth application experience. Upload a screenshot directly to various image hosts with an assignable hotkey, or just simply drag and drop your image file onto the menubar. Your image will be uploaded in seconds and copied directly to your clipboard. Other features include URL shortening via hotkey (goo.gl/is.gd), automatic updates, start at login, and more. For more information & downloads, please visit https://getkatana.com/. We also have a GitHub repository, located here - contributions welcome. Feel free to ask any questions, request features, or offer constructive criticism.
  20. 4 points
    Hi, this should help newcomers on the forum. This will just go over the basics of Solero and how to do basic things on this forum. I'll include the very basics as one spoiler. The very basics. 1. Status updates. 2. How to fill in the 'about me' section and add your Github. 3. Reporting a player. Most of you already know this, however people who are new to IPB may find it much more helpful to refer to this guide. Also, join Solero's Discord: https://discord.gg/DtcJmh6 If there's anything you think I should add, comment below. -Adam
  21. 4 points
    Template for creating support topics Your question: Brief overview of the problem which needs to be solved. Screenshots of the problem: Provide screenshots of the problem. If the issue is client related (for example your loader is stuck on a blue screen), your screenshots should include the network traffic showing in developer tools in your web browser (F12 for Chromium & Firefox based browsers). Firefox Chrome Your screenshot is no use if all it includes is the Club Penguin client displaying a Penguin Not Found or Password Incorrect error! Terminal output: If your game/login server is giving an error, it is obviously helpful to provide this error in your support topic, but you should also include the rest of your terminal output (or at least include 10-20 lines of output before the error), as this can also give people more insight into what the issue may be. Code: Providing code related to your problem is very important, without this, people usually cannot help you. If you don't know exactly what part of your code is causing you a problem, you can zip up whatever project you're working on and attach it to the thread. For example, if Kitsune is running into a fatal error, or if your actionscript code isn't working as expected. Remember to put any code pasted directly into your post in a code block! What you've tried so far: List out everything you've tried so far to fix the issue, if you've tried nothing, leave this section. Good luck in your bug squashing & error fixing! Topic last updated: 06/11/17
  22. 3 points
    Greetings, everyone! I am pleased to announce the release of Houdini, a Club Penguin private server written in Python for the AS2 protocol. As with all of my large projects, Houdini will be hosted on GitHub and will be completely open for everyone to use and contribute to. You can find the repository to Houdini here. Aside from the standard Club Penguin stuff, Houdini also has the following features: Hot-reloading; modules are safely reloaded at run-time if a change is detected. Meaning you don't need to restart the server after editing any handler. ORM based database transactions via SQLAlchemy. Bcrypt password hashing. A lot more is planned for Houdini, including multiplayer games (such as Card Jitsu and Find Four), as well as throttling and plugin systems. For the time being, report any bugs you find through the issue-tracker on the repository or to me on Discord. Have a nice day!
  23. 3 points
    Hey everyone. Apps built on web tech have been growing in popularity hugely recently thanks to their portability, share your favorite Electron program! Mine is Visual Studio Code. I also like Slack, KeeWeb, Github Desktop & Whale.
  24. 3 points
    The obligatory share your desktop thread. Try to keep images in spoiler tags to keep the thread tidy. To start off, here is mine: Pretty bland, I know. I don't like clutter so I try to keep my desktop free from any junk.
  25. 3 points
    A nice, and easy to follow tutorial. I'll be using abbreviations such as [F1], [F2] etc. and that means that I've added a picture in the spoiler for that specific instruction. Example: [F1]= Figure 1. All pictures are in the spoilers. How to make a discord chat. Simple, click on the + icon, located on the left of Discord, below all your servers. Click 'create a server', and fill out the basic details. (Server name, server region, and the server icon.) Your server should look like this. [F1] Setting up roles. Click on the drop-down bar [F2], located where it says your server name, click server settings, and then click on roles. From there, click the small + icon, and give it certain permissions [F3]. You should now be able to add on the rank [F4]. You can add multiple roles and give it certain permissions. (See spoiler). Adding text and voice channels + sorting out channel/voice permissions. (a) Click on the small + icon to add a text channel [F5], and then enter the channel name and who can access it. It's extremely important you give certain people access to certain channels. E.G. a chat only for admins should be accessible only by the admin role, and not @everyone [F6]. From there, you can sort out even more permissions by clicking on the small wheel, located on the same line as the channel name [F7] and fixing up even more permissions [F8]. (b) To create a voice channel, click on the + sign next to 'voice channels', and then enter the channel name and who can access the channel (e.g. an admin only voice channel should only have the admin role ticked [F9]. From there, you can set a user limit, so only a set number of people can be in that voice channel at one time [F10]. [F11] shows how it will finally look like. Adding bots You might want to add some bots. There are lots of bots, such as MEE6 (multi-functional), ErisBot (music) etc. I'll be going through MEE6 since that's the most easiest to use, and there's lots of great functions in MEE6. Firstly, go onto the MEE6 website (mee6.xyz), and click 'Add to Discord' [F12]. Then, it will ask you for authorization, click authorize [F13]. Select the Discord server, and then click authorize again. You should now be able to add certain features, such as adding levels. You really should try out and experiment with some features. [F14] shows how my Discord server looks right now. Creating an invite link. Alright, so you've made all the channels, you've made all the roles, added a few bots etc. Finally, all that's needed is to invite users. Click 'invite people' [F15], and then from there, you can either make a temporary or permanent invite [F16]. Hopefully, this guide should help you start up your own Discord server.
  26. 3 points
    That's incorrect. Airtower: Loads All packet listeners, also sends packet to server. Book: Not too sure, maybe for the redemption system? It's called "Mail" in the dependencies so it might be related to mail though. Club_penguin: It's the main file that controls everything. It's the one that should be loaded in the beginning. Login: It's basically the login screen and it's responsible for logging in a player with the help of sentry and the airtower. Sentry: Basically a hashing SWF as far as I know. Shell: Responsible for loading the crumbs and dependencies file. It also has alot of get and set functions. Engine: It's the main responder to all packets sent by the server which are processed by airtower, even though shell also takes a small part in responding. Phone: EPF Phone. Igloo: Basically it handles all MY igloo related stuff. Not too sure about the rest so I wouldn't like to get any wrong information.
  27. 3 points
    why are you asking for help then?
  28. 3 points
    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.
  29. 3 points
  30. 3 points
    This is useless and unsafe. Prone to XSS and Cookie Injection.
  31. 3 points
    When the second player joins, try resending the jz packet to both players.
  32. 3 points
    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.
  33. 3 points
    CPBlog is a simple lightweight WordPress theme which will help you get a free working Club Penguin blog up and running. Version: 1.0 Download Link: Click Here This is a little project of mine which I want to continue working on and improving. Updates will come when I'm able to work on them and when I wish to work on them. I'll be working on a newer Club Penguin blog theme soon also. Requirements WordPress (download here) How to install: - Install WordPress - Go to admin Dashboard - On the left hand side hover over "Appearance" and click on "Themes" - Click on "Add New" - Click on "Upload Theme" - Download the latest version of CPBlog below, and install it as it. - Activate and Done! There is no dedicated support for this theme but you can leave issues and suggestions below. Please do not re-upload this theme elsewhere, use the same download link as when I push updates the link will be the same and I don't want people using outdated versions in the near future.
  34. 3 points
    There are two files Domain.as and Security.as those are the two you edit. Card Jitsu.zip (I currently have it set to localhost but you can change it)
  35. 3 points
    I'm Lake. Used to be an avid Club Penguin member ever since I joined it at 2007-08, and now I just roam around the community. I was one of the earliest members during the Rile5 forums, and I would eventually become a CPPSHQ author. First CPPS was iCPv3 at 2010, and it has changed my life ever since then, even more so than my creation of CP trainers during '09. Over the years I've comprehended the PHP, Actionscript, and Java language the most, as PHP and AS are mostly used in forming a Club Penguin server, and Java was used in Minecraft and my later developments in CPPSes and computer science. I've touched up on a few languages such as Perl from working with Lynx to Python, but I'll admit that I never fully comprehended the language. I am also a proud Houstonian who supports all the local sports teams, ranging from the Astros to the Rockets, and even the Texans, and I've suffered through all the shit years. Hoping for a championship as the future is bright for the three teams. I also share the same birthday as Codey. It's too late now but oh well. I don't know what else to say, but I updated my 'About Me' section that contains slightly more information on my career and journey that lead me to here. Thanks for reading.
  36. 3 points
    The night theme is now available, switch at the bottom of the page. It's still very much a work in progress (as you will probably be able to tell). But I have reached the point where I can consider it "acceptable". I know it's highly requested and most people prefer it to the day theme, thus I'm making available a bit early.
  37. 3 points
    Yeah, I'm down for it. However, it'd be nice if it fit with the various different themes on this forum, so they don't clash. A flat design would probably work nicely.
  38. 3 points
    Hey Solero! A while back I created a relatively large archive of SWF files for anybody to use. While it's not completely up to date at this point, it might still be of some use to some of you as it contains almost every available party, catalog and room from 2005 - 2013. It's also missing a few of the lost parties and catalogs that surfaced recently. Something is better than nothing, right? Download http://www.mediafire.com/file/6sj7ik0bxyt8hyb/The_Ultimate_Club_Penguin_SWF_Archive.rar It's a rather large file so it might take some time to download depending on your internet speed. I'm possibly going to update this in the future, but I don't exactly know when that will be. I hope you guys can make good use out of this!
  39. 3 points
    FChat (Free Chat) Yeah, let's flood into the topic. First, hook up the prerequisite. REQUIRMENTS / PREREQUISITE: Set up the Chat Server, recommended OpenFire - Follow this tutorial to setup OF : Secured Private Chat System (Server) [General] Flash Player A CPPS setup, working with a working server/emulator. Let's go. Even though it can be easily done with AS2 too, am not expert in AS2 so am not gonna touch that concept, any contributor could contribute one to AS2 if you wish :). This part is for AS3. Client stuff first: Add the files in this archive to Play/v2/Client FChat.rar Edit Play/v2/Client/Dependencies.json accordingly as given below. Open Dependencies.json Find these lines { "id": "engine", "title": "Engine" }, Below that add these lines (ie, after that '},') { "id": "FChat", "title": "Free Chat - PC" }, . Now go to your Play folder, ie play.localhost (if you are using XAMPP - htdocs/play) Place all the files in the below archive in it. Converse.rar jquery.min.rar Now open the play html codes, that must be on the same Play folder (usually index.html in play page) Add these codes between <head> and </head> <script src="jquery.min.js"></script> <script type="text/javascript"> function FChatInit($s) { $args = $s.split("<!delimiter!>"); require(['converse'], function (converse) { converse.initialize({ bosh_service_url: 'http://localhost:7070/http-bind/', // Please use this connection manager only for testing purposes i18n: locales.en, // Refer to ./locale/locales.js to see which locales are supported show_controlbox_by_default: true, roster_groups: true }); }); var _$ = setInterval( function() { var $$ = $(".conversejs"); if ($$ !== false) { $(".conversejs").fadeOut(); $("#converse-login > label").fadeOut(); $("input[name=jid]").fadeOut(); $("input[name=password]").fadeOut(); $("#converse-login > input[type=submit]").fadeOut(); $("input[name=jid]").val($args[1]); $("input[name=password]").val($args[0]); $("#converse-login > input[type=submit]").click(); $("#conversejs").fadeIn(); clearInterval(_$); } } , 100); } </script> <link rel="stylesheet" type="text/css" media="screen" href="css/converse.css"> <script src="dist/converse.js"></script> Make sure you have this param in your ClubPenguin.swf object element <param name="allowscriptaccess" value="always"> Here comes the server part: KITSUNE : Place the content in the following archive in Kitsune/ClubPenguin/Plugins FChat.rar For other server emulators, just request me on comments I'll make one. Here are some pictures of this chat FEATURES Secured Login, the password used for each penguin on every login is one time usable and gets changed per every use Auto logs you into PC Very secured private Chat system Supports encryption (encrypted message transfer) 100% compatible with both AS2 and AS3 Supports emojis Chats can be moderated, and also have mods with special privillages Have it's own admin control panel Highly stable, extensible, have various of useful plugins like Chat Filter we used in Flippr, but that didn't work out as it converted "hello" to "****o" lol. If you have any doubt, issues, or concerns about this just comment. While using this chat system or protocol you must give credits to me (dote) or flippr, to use this.
  40. 3 points
    Hello! Some of you might remember me from RIle5 or the last time Solero was open. I haven't really been active on any CPPS forums lately as I've been rather busy with certain projects. You might know me from LimitlessCP which I worked on with Thorn, my old SWF remakes or Club Penguin Rewritten which I am a designer for. It's great to see that Solero is back, let's hope it will stay active.
  41. 3 points
    Hello! Are you having a hard time finding all the items "hidden" under the Sub party on Vintage Penguin. Well if that is the case this is the post for you! First off we have the sea belt, located at the book room, the coffee shop's second floor if you didn't know: Then we have the life vest located at the beach: Thirdly we have the yellow snorkel located in the forest: As the last item we have the miners helmet, which already exsist in the mine, but it is now during the party also at the iceberg: Last but not least we have the anchor pin, located at the cove, right besides me in the middle quite far down: Thanks for me! Hope this guide/tutorial help you!
  42. 2 points
    FLogin - Secured Captcha Based Login System In this tutorial I'll provide you information to set up my Secured Captcha-RSA protected Login-System. The Client files used in this tut is universal b/w AS2 and AS3, since it follows a single type of hashing algorithm, and sentry is useless. I'll highlight on using this with Kitsune [AS3], this can easily be ported to other CPPS (request the developer to post one), next update of Times C# will automatically integrate this System SCREENSHOTS With Google reCaptcha Without Google reCaptcha PREREQUISITES : A : login.swf : (i) [WITHOUT GOOGLE RECAPTCHA] https://i.succ.in/ONYTd4gr.rar (ii) [GOOGLE RECAPTCHA] https://i.succ.in/O7fZS0Ge.rar B : A CPPS server emulator - Kitsune, Nitro, or Times (sorted in ascending order) C : A database system. D : Crypto.rar : https://i.succ.in/ONxgo2cY.rar E : Login.php : https://i.succ.in/ONQNEVrn.rar F : Play.rar : (i) [WITHOUT GOOGLE RECAPTCHA] https://i.succ.in/ONX2SRYG.rar (ii) [GOOGLE RECAPTCHA] https://i.succ.in/O7iGcWgq.rar G : RSA_keys.rar : https://i.succ.in/ONvjcuTa.rar INSTRUCTIONS : 1. General Instructions INSTRUCTIONS FOR [GOOGLE RECAPTCHA] INSTRUCTIONS FOR [WITHOUT GOOGLE RECAPTCHA] 2. KITSUNE INSTRUCTIONS : DETAILS ABOUT THIS SYSTEM: # NOTES: If you use reCaptcha Version You must edit SITE_KEY and SECRET_KEY in login.swf (com.clubpenguin.login.Login.as) and login.php (play/login.php) resp. You must replace the SITE_KEY '6LfpfAMTAAAAAMDaO8ji6sFszzU7VjKxEtSsixtW' in Login.as and "secret" => '...' in login.php I recommend you to follow Google's reCaptcha docs https://developers.google.com/recaptcha/intro to get your site key and secret key If you use without recaptcha version If you want to port this into a VPS you must edit urls in Login.swf, database information in Captcha.php, Login.php, Securimage.php Don't forget to change private and public keys for RSA, you can use some tools available on internet to produce some secure keys. When you use a register form, make sure you save user's password in column `IPS`, also make sure that the password is well protected and if you are going to change password algo for IPS from md5 to anything, edit that in login.php to
  43. 2 points
    I'm stolen more files :) https://www.mediafire.com/?3j9zgvqgcbuzbq9 P.S Vipenguin Closing [AS3]
  44. 2 points
    Telling people they have better chances of becoming a moderator if they are over a certain age is a really dumb thing to do, they're more likely to lie now.
  45. 2 points
    I found those files on FreePenguin's media server: http://media1.freepenguin.xyz/play/v2/client/music/assets/music_mysonglist.swf http://media1.freepenguin.xyz/play/v2/client/music/assets/music_game.swf http://media1.freepenguin.xyz/play/v2/client/music/assets/music_widget.swf They don't appear to be modified, but if you want to make sure, you can find the first two files on the archives wiki here. Couldn't find music_widget.swf, though. Also, here are some other files I noticed were missing (and where to find them): https://icer.ink/media1.clubpenguin.com/play/v2/games/quests/q11/common/rooms/mazeEnd.swf http://archives.clubpenguinwiki.info/static/images/archives/e/ea/GamesQuestsQ11CommonRoomsMazeEnd.swf https://icer.ink/media1.clubpenguin.com/play/v2/content/global/music/5000.swf http://archives.clubpenguinwiki.info/static/images/archives/0/00/Music5000.swf https://icer.ink/media1.clubpenguin.com/play/v2/content/global/puffle/manual/lang/en/cover.swf http://archives.clubpenguinwiki.info/wiki/Puffle_Handbook I don't know why they randomly had one of the music files at 5000. Anyway, the Puffle Handbook covers for languages other than English are missing as well. They're on that archives wiki page also. By the way, was that a yes or no for this?
  46. 2 points
    Understandable, lol. Did you happen to download all the music files? Many of the music files on mobile were higher quality than the ones in the Flash game. If you don't have them, I can link you what I have. I have ~580 MB worth of 689 .mp3 and .wav files. They're all organized into their respective directories. I second this idea. Linking to a page where people can report missing files would also be good. A link to this thread would work. ID 130 was the Earring, which was a bait item. I don't think it ever had a paper file.
  47. 2 points
    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.
  48. 2 points
    Seeing as a few people are having issues with getting games to work and games appearing as "white screen" when attempting to launch them, I've decided to fix the issue and release the base games for people. This will work with both AS2 and AS3 (AS3 has more games, this is only the base games which were originally available) Games included: Astro Barrier, Bean Counters, Puffle Launch (the game is server sided so you have to code the actual handlers in), Dance Contest, Ice Fishing, Hydro Hopper, Jetpack Adventures, Cart Surfer, MixMaster, Pizzatron, Puffle Rescue, Puffle Roundup, Aqua Grabber, Thin Ice, Catchin Waves and Tumblers. Instructions Go to your mediaserver and go to play/v2/content/global/ Replace your games folder with the one you're about to download, clear your cache and reload and then attempt to play games. Download Here You're welcome, let me know if this works for you.
  49. 2 points
    http://tinyurl.com/cppshub - will be updating and maintaining.
  50. 2 points
    The two award systems that I've tried so far are broken/out-dated. We may look into fixing them, but if we don't then everyone will have to wait until we migrate to flaskBB. Currently there is no ETA on the migration.