Welcome, guest! Please login or register.

    * Shoutbox

    RefreshHistory
    • Mazeingmaze: sick
      January 12, 2021, 08:56:35 PM
    • jennipher11: dodian.net
      January 11, 2021, 02:12:23 PM
    • jennipher11: yes it's back online
      January 11, 2021, 02:12:04 PM
    • arham 4: nice
      January 10, 2021, 04:43:09 PM
    • Togasa: Dodian is back online!? Dodian.net
      January 08, 2021, 10:04:21 PM
    • Pwnd: Y'all don't even know there's a community inside talk section
      January 06, 2021, 07:49:05 PM
    • drubrkletern: damn
      January 06, 2021, 01:04:50 AM
    • Zymus: Nobody cares
      January 04, 2021, 06:39:43 AM
    • wildskiller: or does no one give a shit about moparscape anymore?
      January 03, 2021, 09:24:08 PM
    • wildskiller: So, anyone gonna ban the guy in Server and Client development showoff?
      January 03, 2021, 09:24:00 PM
    • zachrida: wheres all my work?
      December 08, 2020, 09:50:22 AM
    • zachrida: what happend?
      December 08, 2020, 09:49:53 AM
    • zachrida: yo
      December 08, 2020, 09:49:36 AM
    • Shady Aftermath: try out skyfire317.com it has 5 custom skills, max level 168 and combat level 255
      December 07, 2020, 12:55:12 PM
    • skyhigh21: twisted-royalty.com is pretty cool i like it so far
      December 05, 2020, 01:35:34 PM
    • jennipher11: and now its back
      November 27, 2020, 03:38:57 PM
    • jennipher11: it was the best rsps
      November 27, 2020, 03:38:52 PM
    • jennipher11: try out dodian.net
      November 27, 2020, 03:38:39 PM
    • ZamorakRSPS:[link]
      November 22, 2020, 06:45:19 PM
    • thewraith500: 08 member here come play my server been up for 3 years developing just now advertising Autoscape.org very fun osrs style with some pre-eoc and customs designed by m
      November 20, 2020, 05:53:25 PM

    Show Posts

    This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


    Topics - Pure_

    Pages: [1] 23
    1
    RS Client Hacking / Lins Interface Editor (Minor Update)
    « on: April 13, 2017, 06:36:18 PM »
    I have made a few small changes:
    • Fix select interface shortcut key
    • Add previous/next interface menu items + shortcut keys

    Link: Mediafire

    I have also contacted Lin about this, should he respond asking me to remove this I will.
    If you want to check if the source is legit, just run it through a .NET decompiler.

    2
    Trash Can / Magic's Helper App [URGENT*2]
    « on: September 13, 2016, 04:41:29 PM »
    Name: Aaron
    In-Game name: Magic
    Age: 22
    Race: White
    Height: 6'1

    I'm not going to write a super long application here because no one really reads those.

    Why? Well I'm very active in the server, I will be on as much as I can ( Which is a few 6 hours a day ). I'm tired of seeing everyone break the rules, and the yell abuse gets on my nerves completely. Anyway, I've dev'ed and owned a few servers back in the day.. Old School sorta ruined it for me. But All moparscape needs are a few active helpers are we should be good to know with a very nice community. Hope to see everyone in game!

    edit: This guy stole my APP! IM FURIOUS... I was going to sell my app to google for millions, got dayum

    3
    General Discussion / moparscape.org sale
    « on: July 07, 2016, 04:37:12 AM »

    4
    Off-Topic (Spam) / im leaving
    « on: October 05, 2015, 05:10:43 PM »
    im not bowing down to a weeb admin

    5
    Finish the server tier
    sinisoul


     :eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek::eek::eek::eek:  :eek::eek::eek:  :eek::eek::eek:

    6
    Off-Topic (Spam) / drones:/
    « on: September 09, 2015, 11:28:27 AM »
    <Mopman> i mean it does
    <Mopman> any extra thing to do 'impacts'
    <Mopman> it comes down to whether that impact is worth it
    <Mopman> and imo this isnt
    <mepholic> if you're advocating for no-regulation
    <Mopman> im not
    <mepholic> well
    <Pure> how many drones does it take to transport water for baristatam?
    <Pure> answer: boeing 747
    <mepholic> what is your actual stance then?
    <Mopman> (even now it isnt 'no regulation', theyre the most regulated light aircraft out there :/)
    <Pure> some trivia
    * Disconnected (Remote host closed socket)
    * *** You're banned! Try contacting a netadmin.
    * Closing link: ([email protected]) [G-Lined: bye]

    7
    Off-Topic (Spam) / davidi2 appreciation thread #2
    « on: August 17, 2015, 11:10:58 PM »





    8
    Off-Topic (Spam) / What not to do on IRC (#2)
    « on: August 02, 2015, 11:08:06 AM »
    Quote
    * mopar_82575 ([email protected]) has joined
    <mopar_82575> Hey assclowns how do i play some nice Nerdscape foe free huh
    <Svitkona> what does that mean
    <mopar_82575> if i give u my pass will u help me win some ourmer
    <mopar_82575> HairyNuts can you help me out here
    <Pure> lol
    <Pure> ill put this gat down your back and give you shivers, i aint talking the breeze n----
    <Pure> go take your punk shit elsewhere fore i fill you up n----
    <Pure> i aint talkin semen like you used to
    <Pure> gay ass n----
    <Pure> smh
    <mopar_82575> PURE anger and lose self esteem. calm yo-self Bratha
    <Pure> i am pure anger
    <Pure> im the embodiment of god on this earth and your ass is next
    <mopar_82575> Pure idiot..juice-bag
    <Pure> only juice in my household the cocaine i ship in bulk n-----
    <Pure> stop running yo mouth before you get more running n----
    <Pure> im talm your blood all over this pavement
    <mopar_82575> you are a silly girl myfriend seek enlightenment
    * mopar_82575 has quit (Quit: https://www.moparscape.org - A kiwiirc client)
    <Pure> bitch ass n----

    9
    Off-Topic (Spam) / retarded channel operators
    « on: July 29, 2015, 10:56:07 AM »
    gmods should not be ops on irc

    <zuppers> offering money isn't allowed
    <zuppers> make a post in server help
    <ice_king43> sorry i did not no ive tried posting numerious times and no replies
    <ice_king43> i need help with setting up my rsps and vps
    <ice_king43> and jaring the client
    <Pure> on irc i dont think thats a rule zuppers
    * zuppers sets ban on *!*@notpu.re
    * You have been kicked from #moparscape by zuppers (yes it is)
    * Cannot join #moparscape (You are banned).

    10
    Off-Topic (Spam) / [NSFW] My Art #2 (No Troll)
    « on: July 27, 2015, 02:02:20 PM »
    Sometimes inspiration hits and you come up with something better than "lv95 compared to soul split" as a slogan. In honour of mopeman the 3rd.

    CoonHunter


    Casey


    sini



    Check if you got all the references at the end!
    (click to show/hide)

    11
    MoparScape Announcements / Mopar Weekly (#7)
    « on: July 27, 2015, 11:24:10 AM »
    News (for the week 27/07/2015)

    MoparScape Official Server

    Sini makes server, crowd cheers! (as sinisoul puts it)
    It has been publically announced for a while now so the board has been made public again. Make sure you keep up[/url] with it.



    Game Development

    Blackwake's Recent Success[/url] (by Frell)
    It seems that since the last update the game has found somewhat of a following. Some big streamers have demoed the game which has helped gain it a little buzz.
    If you didn't catch the streams live you can always watch the VODs on twitch. The links to said streamers is in the thread, you just need to dig a little :P



    Games

    playrust (by Tom)
    Recently a few MoparScapers decided to give it real good (ayy lmao) to Rust. Tom, Pure and Albi (amongst others) have been playing together for a while now and await any one of you who wishes to join them on their adventures!





    General Programming

    Creating a 2d game map? (Brainstorming Ideas)[/url] (by my-swagger[/url])
    The community at its finest, brainstorming programming ideas. We love to see threads like this one.

    Introduction to C++ Metaprogramming: Lists, apply, and lambda (by justaguy)
    Justaguy is back with part two of his mini-series of tutorials on C++ meta-programming. If you read the first one you have only seen the tip of the iceberg - enter now[/url] into the power of C++!

    Java Programming

    RS Voice Chat (by Rodgerwilco)
    Some more brainstorming of ideas regarding how voice chat could be implemented within an RS server.



    Senior Member Feature - Lothy
    This week we have managed to dig up Lothy - an RSC guru and ex-staff member!

    The "before" MoparScape?
    There wasn't really a 'before' so to speak. I was in high school at the time and addicted to the game. By chance I happened to stumble upon the website after someone mentioned private servers on another forum.

    What was the appeal of RuneScape to you?
    In hindsight I'm not sure. Probably the illusion of achievement that comes with progression in the game mixed with the social aspect. Having said that I wouldn't actively participate in another MMORPG nowadays.

    Why would you not participate in another MMORPG nowadays?
    It's just a massive time sink.


    Sidebar: Was you here when Kaitnieks was a thing?
    No, I wasn't around for kaitnieks. I came across MoparScape and MoparIsTheBest late 2006, so I missed that boat.

    What were the first things you did on MoparScape?
    The same as every new guy that comes along really. I jumped into developing a server by grabbing one of the "bases" (CheezScape, Project 16, and TestScape IIRC) and hacking together example code.
    I think my first "innovation" was to get player immobilisation (for spells like entangle/ice barrage) working. It was through asking this question that I first met javacisnotrecognized (_^_ on IRC). Except I also saw it as an opportunity to develop my programming skills for the sake of employment, so I studied the language as well.

    You mentioned triangle explicitly, why so?
    Oh, just because. We had some good times back in the day, with the occasional frivolous kickbannings from IRC. XD But yeah, he did try to help me with that one. It was a case of the blind leading the blind though.


    What did you think of the atmosphere in early MSCP, was it friendly, how were the 'senior' members, etc?
    I always found it fine. Mind you, as a new member it's often quite impersonal anyway. You join and have a clean slate and that remains the case until you prove your worth. Then you either excel in the community or you make it clear that you're not really worth having around. Many people over the years have bleated about so-called elitism. But what they don't realise is that seeing the same questions over and over, and bearing witness to the same pitfalls, is tiring.
    A new guy poses a question or something, and to him it's a novel idea that he has had and trying to resolve. The new guy however doesn't appreciate the larger context of the community, and the fact that their ideas or problems mightn't be so unique after all. That invariably frustrates some people, and ultimately leads to what some perceive as mean and unreasonable behaviour. Are they right about some users being mean? Yeah, sometimes. But I can emphasise with people who do get frustrated with new users.

    How did you manage to become a staff member, and later an Admin?
    Well, good question. If I had to summarise I would say that I was of good character and standing within the community, at least to the extent expected of forum staff. I started as a MoparScape moderator, did good work in that role and was asked to moderate both sites as a global moderator.
    At one point there was a guy who went by the alias The Real JDB (or something along those lines). He discovered that he could create new global moderator accounts and decided to do just that. Moparisthebest was unaware of this functionality and frankly the SMF team shouldn't have had such functionality built into their forum software. So this guy went about creating maybe a half dozen other global moderator accounts for his buddies, and there was a bit of a mess. It culminated in me wildcard IP banning everyone until Moparisthebest could come online and resolve the issue.
    So I guess somewhere between that incident and receiving Administrator was when I proved myself credible and trustworthy.

    Was there at any point power-struggles within MITB? IIRC you banned Ikiliki to that extent, mind elaborating?
    Well the situation with Ikiliki was that he wanted to have his own website. That's fair enough, right, you can't fault someone for that. But he leveraged his standing in the community, and his privileges as a staff member, to actively pursue MoparScape members and lead them to his site. I took issue with that. In my eyes it was a form of unjust profiteering from our community's work. As you say, that particular story culminated in me removing him from the community.


    What are you known for in MoparScape now or perhaps a while ago?
    Well nowadays probably not much. I have RSC-related software on my GitHub account[/url] and that's still there to this day. I haven't contributed a great deal to the MoparClassic project but my own Elysium server is a functioning RSC game.
    In my hay-day I provided a few cool features. Things like combat zones and the ability to toggle combat modes within the game. That's one of the more memorable ones anyway.

    What kind of work have you done regarding RSPS (public or private)?
    Nothing particularly outstanding. Silabsoft and I worked on HybridScape for a while privately but it never really had the impact we wanted. Elysium, as mentioned, is a working RSC server that was designed to provide a high performance and highly concurrent server underpinned by Netty. There's now a single-threaded version as well which is more easy for programmers who aren't sufficiently experienced with concurrent software development. I provide the occasional technical guidance to people as well.


    How did the Teenage Mutant Ninja Turtles first draft you as Dongatello - aka "the real Dongatello"?
    Well the Dongatello costume was an 18th birthday present. There was an inside joke with a couple of friends about me not being "turtley" enough for the turtle club. This resulted in my very own turtle costume.
    It goes without saying that it's good manners to use things you receive as gifts, so I did - I took my costume and put it on. This led to many laughs and one of my friends took photos on her phone. Of course it was a child-sized costume, so it was a tight fit. I can't find a link to it. You used to be able to google 'lothy' or my full name to find a nice picture of my arse in a turtle outfit.

    How is your personal life going?
    My personal life is good. I work professionally as a software developer for the state government here and recently received a promotion to Senior Software Developer.  I work on a variety of software applications used across different government departments, such as software used by schools for managing students and software used by hospitals for reporting on patients who present with legally notifiable diseases. We also have our bastard child that nobody likes, which is a piece of software that property developers use for receiving approvals and submitting plans. It goes without saying that this particular application makes grown men cry.  Still forever alone, but it's fine


    What advice do you have for those who want to be software developers, any insight into the industry, maybe about working for the government too, hows the pay like, etc?
    If I had to make one suggestion when it comes to succeeding in any endeavour, including computer science, I would say read voraciously. Consume educational material like it's going out of fashion.
    If you're looking to be a software developer then my advice is to spend the time practicing. Practice means both reading and writing code, reading books about writing good code, and undertaking a variety of projects that cover the many aspects of computing. If you want to truly excel then, just like any craft, you'll probably want to do your ten thousand hours to go from zero to hero.
    The industry is sometimes hard to describe. Here in Australia, from where I'm standing, it's good. But there are many others who go on about the sky falling down, about how outsourcing is killing the local industry, and so on.
    I mentioned that I currently work in government. Australia has (or had) a two-speed economy driven by our mining boom. I moved to Canberra and took a government job because the company I worked for, which relied on mining clients, basically went under. My hometown essentially had two kinds of software industry: Mining related, and banking related. So that situation was untenable for a software developer coming out of university, and I had little choice but to move - thus my current position in government. It's a nice job. I work hard, but I could probably get away with doing less. I won't though because I play to win and want to climb the corporate ladder just for the sake of it.
    I wouldn't necessarily recommend government or the public sector over the private sector though. If there's one thing that can be said for sure, the grass is not always greener on the other side. Sometimes there's cool stuff in the private sector, sometimes in the public sector. It depends more on the particular company you work for than the industry you choose.

    What is your advice to newcomers, particularly those who want to learn how to code?
    My advice to newcomers is to be aware of the credibility and standing of the material you consume. Like any educational material, not all software-related literature is equal. Some books are better than others, some online tutorial sites are better than others.
    Secondly, you need to branch out. Too many people seem to want to niche too soon, and while they become quite adept at solving particular problem domain they lack the more generalised skills to take an arbitrary problem and methodically solve it.
    I can't stress enough that software development is the art of problem solving. It's not just about languages, syntax, tooling and environments. Don't lose sight of this fact.
    ?And if you're currently considering programming as a profession but haven't quite made the jump from RSPS-specific software then I would strongly start thinking outside of the RSPS box.

    Do you have any advice to programmers relating specifically to RSPS?
    RSPS stuff is fun. For me back in 2006 it was a blend of a game that I enjoyed and a new hobby that I enjoyed. Ultimately where you go with it is up to you. If it's all about RuneScape and programming is just the means to the end then enjoy yourself and build your server. If it's about RuneScape but writing the code is the part that matters then keep doing that too. If you're playing 20 questions with the community then try to do so in a reasonable manner. People will like you a lot more, and want to help you a lot more, if you demonstrate that you've made the effort to overcome the hurdles yourself. Similarly, do your research - there's a good chance that your question is not unique and has been resolved.
    But otherwise, just have fun. Finally, if you've happened upon programming through RSPS by chance and concluded that you could see yourself doing it professionally then make the leap from RSPS and take on other projects. Practice, practice, practice! Study hard, and consider some form of tertiary education. Depending on where you live you can probably get into IT without tertiary education. However it's invariably a hard slog to climb the ladder in contemporary society without some form of certification.



    Contributing
    I would like to remind everybody that the authoring of this weekly article can be done by anybody who wants to. You can either contribute a section or the entire article - contact Tom for more information.

    12
    MoparScape Announcements / Mopar Weekly (#6)
    « on: July 07, 2015, 05:02:50 PM »
    News (for the week 06/07/2015)

    General Programming

    Increasing your productivity by hot swapping classes (by Taharok)
    Taharok was experimenting with JRebel alternatives and the like and stumbled onto this piece of code. This generated a discussion about class hot-swapping and its uses (such as updating classes on the fly, i.e. during runtime).

    Introduction to C++ Metaprogramming: Basics (by justaguy)
    This week justaguy decided to post about meta-programming in C++. Make sure you check it out and contribute to the discussion of the shenanigans which ensued!



    Server Downloads

    Asteria 3.0 (by lare96)
    The long wait for Asteria 3.0 is finally over. Lare has reworked some of the design in favour of stability and has added some new content and patches.
    We have seen him grow over the duration of this project which is very sweet to witness! If you are a user of the previous version(s) make sure you update to this one as soon as possible!





    Server Tutorials

    Custom Music Player for 317 clients[/url] (by my-swagger[/url])
    My-swagger contributed a snippet which allows you to load music for the 317 client from a raw input folder. It's useful for those who don't know how to use the cache properly.
    Make sure you check it out if you have issues implementing it the correct way yourself, he pasted the entire code-base to make its usage as easy as possible for newbies :)



    RSC Server Tutorials
    It was apparent that the RSC boards were not getting any love in the news posts due to the lack of activity :(
    This all changed when Rodgerwilco decided to post a couple of snippets to add some regularly wanted features to RSC, make sure you implement them to give your server the edge ;)

    [Release] Notes (by Rodgerwilco)
    This snippet adds a sprite and functionality for noted items.

    [Release] 99 Capes (by Rodgerwilco)
    This snippet adds skillcapes to RSC - something regularly requested!



    Senior Member Feature - Taharok (aka Avail)
    This week we have managed to get a hold of Taharok - a game programmer and ex-staff member! This interview contains a lot of interesting forum history so buckle up!

    The "before" MoparScape?
    Hmm, before MoparScape...  I suppose around early 2005 it starts for me. I was introduced to RuneScape by a friend of mine and I became hooked pretty fast. This led me to wanting to learn programming so I could build my own game, since that's the coolest thing ever at that age!
    So I started reading a dated C++ book from '97. It was a horrible book and it definitely didn't stick for me at the time.

    What was the appeal of RuneScape to you?
    I'm not really sure. It was just an interesting game with a lot of fun things to do. It was more interesting than any other game I had played up to that point. I wasn't really used to RPGs before then.
    But at one point around Fall 2006 I was getting a bit bored with RS. I recalled my brother's friend telling me once about World of Warcraft private servers. I wondered if there were RS private servers, and I searched Google. First stop was MoparScape.

    What kind of game did you have in mind when you began to learn how to write games? What were your influences?
    Well at that time, the game I was "inventing" was basically just RuneScape with a lot of changes, haha. I dunno, I wasn't a super creative child as far as coming up with new ideas is concerned. But I had a lot of fun looking at RS and thinking about how cool it would be to change it. Thinking up ideas was more interesting than figuring out how to do it at that point.

    What were the first things you did on MoparScape?
    I perused the forums for a few months without registering, I just wanted to try and figure out how this whole thing worked. It took a while to figure out how to play the servers and even longer on how to run one and change them.
    I can't even remember what the servers were called back then. They were pretty small though. I think Xerocheez was a huge influence at that point and everyone kind of just used his code. I eventually created my own server called FreeScape and decided to register on MoparScape to advertise it. After that, I started helping people with their server issues.

    What kind of skills did you gain while creating Fre? Do you have anything in hindsight you would have done differently?
    Haha, I don't know if I gained any lasting skills. I learned how to throw together spaghetti code, compile it, realize it doesn't work and then do it over again. I had no real background in programming before MoparScape, so I was learning programming alongside this horrific private server scene.
    I don't think I would have done anything differently, though. I became keenly aware of how bad the code was once I started venturing to moparisthebest.com and that was good for me. Seeing the juxtaposition is what made me so critical of my own code, which led me to care so much more about doing a good job.

    What are you known for in MoparScape now?
    No clue honestly. I don't really talk to people about what I'm known for. I'd be surprised if many people even remember me anymore. I stepped down as admin a few years ago now.

    What kind of work have you done regarding RSPS (public or private)? you said you created Fre did you ever release it?
    FreeScape was released, but it sort of got absorbed into the monlothic chimera that servers were at that time. This is back when there was no server organization, thus all class files were at the default package. There was a client.java file which was so large that it actually sometimes led to the compiler not being able to compile it due to some methods being too large to compile. Everything sort of got absorbed into one "base" at that time and people would make a few changes and re-release it under a new name. That pattern hasn't really changed over the years.
    Other work includes a really obnoxious batch file I wrote called the "perfect compiler" which still tends to haunt me over the years. It was a batch file to avoid people having to modify their path to include the Java runtime. I think I tend to be known for that, since I always had the "contact mod taharok" echo in there.

    Did you ever feel competition from the "mendacious nitwit" mdog's compiler? Reference.
    Haha, that is a funny story actually. He just took mine and renamed it without changing my name in any of the batch echos.

    Could you elaborate on your programming prowess, what kind of stuff do you do now?
    Well, I'm currently interning at a company and this has been going on since last year. I just received my undergraduate degree from DigiPen focusing on software engineering in game development.
    I have experience working in a wide variety of topics of software engineering, including game dev, web development and production server stacks.

    What do you think about the current state of MoparScape, any observations or suggestions? i.e. People have been trying to 'revive' the site or otherwise diagnose the reason why traffic has decreased so much.
    I stand by my post on this as I think it covers the answer well.

    How does your activity fare on MoparScape nowadays?
    I stopped being active for about two years now. I poped in and out, but once I got past Freshman year at DigiPen, I did not have enough time to do anything on the forums. I think it was the summer after that I resigned.
    I started being more active in the last few weeks because I'm in a temporary living situation and often bored; it gives me something to do and is close to socializing with people. Plus, sometimes people post interesting programming things. Not too often anymore, though. :(


    How did you become a staff member and establish your position in the community?
    As I mentioned earlier, my rough experiences of trying to learn programming and private servers at the same time led me to realize it's hard to do for beginners. Hence, people had a lot of questions and I wanted to help them. Once you answer the same question enough times you begin to see a pattern. This led me to the tutorials section of the site, which was exceedingly popular then. It was getting very run down around October, 2006 though. People were posting a ton of spam, prawns, flaming people etc.
    You have to understand that the staffing model in 2006 was very, very different than it is now. There weren't many staff members and they didn't stick around for long. Nor did they usually care at all about MoparScape (which has always required the most moderation).
    After writing a few tutorials that started becoming popular, I decided I didn't want to put up with the spamming anymore (report to moderator only goes so far...). So I emailed Starblaster100 at the time (admin) and he made me a board moderator of tutorials and I turned it around.  It's up to you if you want to dive deeper into the staffing history of MoparScape; I have years of stuff to talk about there :P I was a board moderator over tutorials and I ended up rewriting the rules for it, etc.

    What proceeded to cement you as an administrator?
    So I did that (what was mentioned last post) for a couple of months. Then at the end of December 2006, a few other forum members were fed up with the garbage of the site overall. Moparisthebest decided to create a new staff position which was essentially a global moderator across all MoparScape boards. I was among the first to be added to this, along with God of Ikiliki and I think a third person I don't remember currently.
    Then many years passed by, a lot of drama, and a lot of power changing. I sort of took charge on running the MoparScape moderators once God of Ikiliki was banned and Moparisthebest respected my decisions on a lot of stuff during those years.

    For those who aren't up to date with the forum's history, can you elaborate on who Ikiliki was and why he got banned? Preceded or followed by this said drama?
    Eventually, Lothy and Niall were made administrators and other noteworthy MITB members were promoted to global moderator (GM).  I think it was around then Mopar asked me to go to GM as well. I think Tico was GM before me, though. He was the other major moparscape moderator earlier on.
    Ikiliki rose in popularity on the forum doing a lot of work with his own private server. People seemed to really enjoy it and they respected all that he had to say. I believe he was Dutch so there was some translation barrier there.  As a result, he got flamed pretty badly in #mopar (IRC), on moparisthebest.com, etc. To be fair, so did I and the rest of the MoparScape staff, but Ikiliki got it worse I think.
    Then there was a bit of a power play, but I honestly can't remember the details right now. All I remember is he did something in response to all the hate that ended up going against his position in the community and Lothy banned him I think. He ended up being very angry toward the community for many years after that. I was able to make up with him later on, but it was an unfortuante series of events that shouldn't have happened.
    note: This is expanded upon in next week's interview - so make sure you catch that!

    May you also elaborate on Tico's role? He hasn't been around for a while unfortunately.
    Tico was one of the most amazing staff members we ever had. Tom actually reminds me a lot of him. He was extremely active, helpful, and patient. He rose through the ranks faster than anyone I remember and he wasn't power hungry. He also was respected quickly across both sites, but eventually his patience seemed to wear off after some of the #mopar stuff started getting to him, not to mention the day-in day-out unsolvable problems of MoparScape. He eventually became inactive and later resigned.

    What kind of #mopar stuff?
    Oh, nothing in particular. People on MITB just loved to flame MoparScape moderators though. Despite them being douchebags about it, it was sort of funny in retrospect. We were young kids hell bent on moderating and keeping the forum clean. They were just people who were hanging out and weren't as serious as us.

    And what would these day-in, day-out unsolvable problems of MoparScape be?
    There was always a scalability issue. We didn't have enough hands on the staff to manage all the problems that were going on. There was the aggression issue. MoparScapers that thought they knew stuff would be overly aggressive towards newcomers, arguing they shouldn't be spoonfed. There was the helping issue. More people were asking for help than receiving it, many more. There was clarification issues. Tutorials being written weren't helping enough people. There were security concerns, both with server downloads and advertised servers. Then there was just plain old spam and flaming.
    Too many things for the small staff to manage and we ended up doing some ridiculous things to try and fix them, but never successfully. I think we just eventually drove too many people from the site, possibly leading to what it is now. I'm not sure.

    Can you speak a little of Starblaster100 since you mentioned him earlier? He has faded away :(
    I think he was one of the most active admins the site has seeen. He designed the first staff structure and created most of the forum layout. He was an admin on kaitnieks and a website that post-dated SCAR, but I can't remember what it's called at the moment. We felt like he was driven out of the community due to hate from #mopar, but he had a thicker skin than that. There was some strange drama and he ended up creating a shadow admin account, then Mopar banned him. We really have no clue why he did that, though.

    How do you feel about your time as a staff member? e.g. proud, happy
    It was life-changing, I think, and a good experience (not necessarily positive). I'm glad I did it, but I'm not really proud or happy about any of the things I did. I sort of became emotionally dulled with any of my accomplishments as staff.


    How is your personal life going? You mentioned you got a degree recently?
    Good, I'm currently contributing to an open-source project called Oppia, which aims to provide a personal tutoring experience to people, helping them learn better and be able to learn anything. I think it's a huge game changer for the world. Besides that, I'm just pursuing full time employment and seeing where that goes.

    Did you enjoy your CS course at uni, any insight into the life of an undergrad?
    Try to look at every topic as interesting and something you can pull something from. Universities are filled with sparse and high-level pieces of information that are supposed to form some sort of cohesive picture. They don't succeed at this all the time, but they are much more effective at teaching the overall picture when the student is actually trying to figure out how everything relates together. This goes pretty far in not skipping classes, falling asleep, etc. If CS is something you really want to pursue, then it starts with your first day as an undergraduate.
    Actively pursue it, always. Even after you graduate; becoming a Computer Scientist is a life-long pursuit and it never ends. It's the pursuit that's interesting. And again, do not feel bad about asking questions. :)

    What is your advice to those pursuing degrees in CS/internships/working in CS?
    Hmmm... Pretty much everything that you need to learn to do a job can be learned without a degree, but it's really hard to get the structure or support of a degree. I think both are necessary to be successful in CS. Having some sort of structure to push your limits of what you can learn while also pushing your own limits by going beyond your classes, researching things on your own, and always working on projects will only lead to success; plus, it's great for the resume.
    I think people should pursue CS if it is something they love or are passionate about; all else seems to follow after that. It's pretty easy to experiment and get deep into some interesting topic. Follow your interests and see where they take you.

    What is your advice to newcomers, particularly those who want to learn how to code?
    Ah, a topic I debate commonly with my brother and others. I'm still working on a good answer to that question, but here's what I have now: I think people just need a reason to code. Once you have some sort of motivation to learn something, just continuing along that thread will do wonders for you. Ah, and don't be afraid to ask questions. Being prideful will destroy your ability to thrive.

    Do you have any advice to programmers relating specifically to RSPS? i.e. a cool design pattern you saw somewhere or a nifty library?
    Sure, get out of RSPS and go do something that is either more interesting or more useful. RSPS strangles developers.

    13
    Off-Topic (Spam) / test
    « on: June 30, 2015, 08:35:06 PM »
    lmao

    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

    lmao
    wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

    14
    MoparScape Announcements / Mopar Weekly (#5)
    « on: June 30, 2015, 05:00:27 PM »
    News (for the week 29/06/2015)

    General Discussion

    US Same-Sex Marriage Legal Nationwide (by Rodgerwilco)
    In recent news, the U.S. federal government decided to legalise same-sex marriage throughout! Make sure you contribute to the discussion we have been having at some point.
    Some feel like it's a decision that should not have been taken by the federal government but rather on a state-by-state basis.



    Game Development

    Blackwake[/url] (by Frell)
    Frell has been working on his game for a while now and implied in a post that it should be included in the news, so why not! His thread gets updated often so make sure you keep up if you aren't already. His game is a pirate PVP multiplayer, one with ship battle and weapon physics - it sums up to some really entertaining and unique gameplay.





    Server and Client Development Showoff

    Mopar - Emulation Framework (by sini)
    Sini has been working on a separate official server from David for a while which you might have caught a glimpse of on the last member feature[/url].
    He has done enough to be able to show off the code now. Make sure you check out the design because it seems to show some promise and sini is definitely proud of it! He has recently finished up the cache updating and thus a cache library which you can find on github.

    Skarred Lands (by sk8rdude461)
    Sk8rdude has been making consistent progress on his server for months now, so it's definitely worth a mention. He suggested that it was far off a beta stage however he has plenty of updates to read through.





    Web Design/Development

    An Introduction to PHP (by EcoPS GM)
    Wow a full tutorial! It's still being redesigned but Eco did a wonderful job on the basics to PHP. This is definitely recommended to new programmers who want to dabble in a bit of server-sided stuff. It's quite thorough and easy to follow.

    Extending JavaScript using sweet.js (by justaguy)
    Never fear it's here!! Make sure you check out the syntactical "sugar" of sweet.js shown off by justaguy! It makes your stay with JS much more pleasant ;)



    Senior Member Feature - t4
    This week we have managed to get a hold of t4 - a competent veteran programmer among our ranks.

    Initiating dialogue like a true autist using secure TLS handshake
    Quote
    <Pure> ur being drafted for the moparscape news ~~~
    <t4> ~~~ ok

    The "before" MoparScape?
    I hung out on SwiftIRC with a few RuneScape clans, this was back in 2005 or so. Around that time i got slightly bored of the grind and felt like cheating.
    I remember trying different software like SCAR and some other bad color detection bots. That didn't work out too well. After a while I gave up and found private servers, I lurked MoparScape and other related forums and eventually got my own going.
    At that point I started to learn Java already haven worked with children's languages like QBASIC. Then around (I think) 2008 I decided to register on MITB. Hence me being here now!

    What was the appeal of RuneScape to you? It was clearly powerful enough to motivate you to learn to program.
    A lot of my friends at school used to play and we would compete against each other for wealth and stats. I was probably one of the last to abandon ship because I got the farthest.
    I played from about 2003 to 2011 or so with large breaks between. Near the end it was just me proving to myself I could accomplish the prestige (and by that time I had written custom private bots with some help).
    It was a curiosity that fuelled my endeavors of how far could I push by the botting method before getting banned. The game became more about botting than playing the game. A meta-game if you will.

    What were the first things you did on MoparScape?
    If I recall I mostly talked in the debate, general and operating systems child boards of MITB. I wasn't as competent a programmer as I am now and I knew I would get my ass wrecked by some of the older members.
    I tried starting a MITB linux group (LUG). I was very fond of learning about linux and systems engineering stuff back then.

    How did you end up on IRC?
    I jumped on IRC around the time I registered on the forums, it seemed like the best way to become a part of the MITB community.


    What are you known for in MoparScape now?
    Don't know really, most people probably think I'm an asshole. To answer the question more directly, probably my posts in the general programming child board. I'd post more, but the forum has been a little dead in those sections. :( . I'd love to see those sections turn into a stackoverflow.

    What kind of work have you done regarding RSPS (public or private)? I know you had documented some of the 377 protocol, etc.
    I've written a few server bases in the past and was a big fan of using Netty for Java. I've written some basic proof of concept C servers, but never bothered releasing any.
    The only thing that saw the light of day that has any sort of impact is my work documenting the 377 protocol (one of my favorite revisions). An older member, whom I'm not sure wants to be mention, was kind enough to supply me with a near completely refactored 377 client.
    I also recall writing a deobfuscator for J-Shrink (lol). It was always fun running that on the shitty Java botnets kids used to distribute here.

    Could you elaborate on your programming prowess, since you haven't displayed it too much on the forums?
    I've been programming in Java for a long time and as I already mentioned had an early start with procedural languages. Shortly after Java I picked up on Python, C, and C++ and around that time enrolled in a Computer Science program at university.
    Since then I have completed the degree. Over the years I have seen many different technologies, languages, and paradigms that I can't even begin to list. Some academic favorites include Haskell, x86 and MIPS assembly, algorithms, and operating systems design.
    I've also held many internships positions at various international companies. I am currently employed full time post-graduation on a research and development team.
    I specialize mostly with C and C++ programming on Linux platforms and am known to be anal about code correctness, documentation, and optimization.
    If you are interesting in picking up C and C++ the right way, I highly recommend reading K&R C and Effective C++.


    How is your personal life going, you mentioned you got a degree recently? etc
    Great, I've got my own place, a few cars, great entertainment system that spans the whole house, etc. I love work.
    I love the people there and the stuff I am able to work on (a lot of super scalale C++ server software that span many nodes and is able to eat hexa-core CPUs and hundreds of gigabytes of memory). I also love the benefits of being a software engineer.

    May you expand on these benefits? Surely that includes playboy bunnies?
    Comfortable work environment, freedom to go out to lunch, to come in/leave when I want, to take off when I want, and of course the pay. The stipulation is of course you need to deliver


    What is your advice to newcomers, particularly those who want to learn how to code?
    Don't try learning from RSPS. It's okay for it to spark your interest, but I suggest learning software architecting and a language before you sit down and go for the gold.
    There is a lot involved in creating scalable, efficient, and readable software. Hacking the client doesn't lend itself to the aforementioned pitfall, so I'd recommend checking that out. There's a lot to learn there and you just might spark interest in other members.

    Do you have any advice to programmers relating specifically to RSPS? i.e. a cool design pattern you saw somewhere or a nifty library?
    A trick for developing a C++ server would be using the select() system call to allow for a non-blocking accept/recv loop (meaning you can accept new player connections and read incoming data from existing players synchronously).
    How select() works is it tells you when a given socket is ready. So you could pass the socket (file descriptor) to an event callback to produce a design similar to Netty.
    Combine that with some sexy C++11 features like threading and atomic variables and you're well on your way to do some asynchronous processing (like player updating, server events, etc). If you're interested in POSIX networking I highly suggest checking out this.

    You could use Protobuf to declare language independent structure that get sent over the network (packets, like one of the login blocks).
    There is an official tutorial/guide provided by Google for C++, Java, and Python.

    15
    MoparScape Announcements / Mopar Weekly (#3)
    « on: June 14, 2015, 01:58:06 PM »
    News (for the week 15/06/2015)

    RS Wiki Update
    You might have noticed that recently the wiki was in the process of being reworked and was constantly being cleaned up. We finally migrated to a system backed by Git which uses Gollum.
    This version is still in the works and you can contribute to it using github - we hope that this way it will be more powerful and easier to manage than ever.

    IRC Management - #1[/url]. #2[/url].
    Some issues were ignited regarding the IRC management. I am happy to say that we have resolved all of them and usage of the IRC network can resume as normal.



    Client Hacking

    RuneTek 3+ - MIDI Compression Format (by sini)
    Sini has refactored the MIDI compression class used in modern RuneTek engines. It is worth checking out if you are interested in such affairs regarding the client.

    RuneScript to Lua Compiler (by sini)
    Sini is not done just yet though! He has also been working on a RuneScript to Lua compiler recently which is starting to get together. The purpose of this is to be able to port client-sided RuneScript bytecodes to Lua (a source code format).
    A few members have also chimed together some ideas which are definitely worth the read.



    Senior Member Feature - Mopman[/url]
    This week we have managed to get a hold of Mopman[/url] - the very foundation of our community :)

    Before MoparScape/MoparIsTheBest what did you do?
    Well, before mitb/moparscape i was on other runescape communities, rscn, kaitnieks etc. I never did anything of value there though, just leeched off of others ;) I played runescape too up til RS2 came out, but i haven't really played since the beta (a little on and off, but not seriously).
    I also used to be into the genesis3d community which was a free game engine, sort of a clone of the quake 3/unreal engines but when those were closed source and expensive. I would link you to my profile at g3d, but it's super embarrassing, I was even less smart 15 years ago ;)

    How did you find MoparScape/MITB and what were the first things you did on here?
    I knew who moparisthebest was before he started the forum, he was at the time a big figure in the scar community on kaitnieks, which I wasn't really a part of as I preferred other ways to bot.
    When he started his forum (moparisthebest, no moparscape yet, that came later!) I signed up though because I knew he was well known and very active. I assumed there'd be some good stuff on there and I guess I was right, since when kaitnieks died it basically became our new home.

    I should also add everyone thought me and moparisthebest were the same fudgeing person so I couldn't really not know who he was :p
    When I posted Aryan updates on my site I had to put a notice saying I wasn't moparisthebest because everyone kept private messaging him (and thus me) for help. In hindsight I should have just let them [private message me].

    What are you known for in the community and how did you rise to power?
    Hm good question. I guess I'm not really known for anything in the sense that some people are - I never wrote any awesome bots or anything. In the early days I did a lot of public scripting/helping people with scripts and issues.
    After Aryan died I provided updates & support for a while after the team stopped, basically just because I happened to have access to the private channels and such (despite not being a dev, contrary to belief) and could bug the devs with annoying questions when their shit broke.

    As for 'rising to power' it basically just came through being here ages and being well known. iIwas a 'community member' on kaitnieks (I think that's what it was called anyway - the rep-based rank). I only got gmod/admin after MITB - he just needed another gmod and asked.

    What made you decide to stick around for all this time, on the forums and IRC?
    Honestly at this point its just because I have friends here. I have known some people here longer than I have known my real life friends at this point!
    I still think botting/private servers are awesome and interesting and I want to see the community keep doing cool stuff, but I lost interest in the game itself years ago, so it's just about keeping the community alive and keeping in touch with friends now.

    But surely I am the reason you stick around ^.^
    Oh of course, It's all about pure! Everyone else is unimportant :D

    What do you think of the quality of content nowadays? Are you impressed by the evolution of rsps/botting?
    I must admit I haven't kept up to date with servers - though last time I looked at them I was sincerely impressed! I like that eventually we moved away (somewhat) from copy-pasting all day and people started doing interesting things with custom content and stuff.
    Do more of that. (where is my tower defense in the runetek engine, bitches?) As for botting I'm like anti-impressed with it. we have a couple of profit oriented companies selling bots to gold farmers and that's it - yawn.

    What do you think about the fragmentation of the RSPS communities nowadays and the inevitable decline?
    It sucks, but it's probably, as you say, inevitable - the game itself is dropping off too of course. It's a shame since as I said above people make good friends through this. After Aryan died we kept the private channel alive for a few years, with no Aryan related content, just to hang out.
    Now I don't really speak to any of them other than exemplar. if you let the 'community' part die, eventually everyone will drift away, this is just the way it is. If you don't like that, you have to find other things to keep people together.

    In more recent news, do you wish to make a statement on the IRC drama that was had or the shutting down of SoulSplit?
    Haha, I think enough has been said about the IRC drama, needless to say it was a clusterfudge and I apologise for my part in it. I think we have managed to do what is best for the community though even if it bruised some egos for all involved.
    As for soulsplit, I'm surprised they were not shut down sooner. The guy who runs it always seemed like a pretty OK guy to me, but he was being crazy, lol. I just hope whatever happened doesn't ruin his chances at whatever other projects him/his company end up doing and that nobody got fudgeed over personally by losing their income etc.

    What do you do today, i.e. what's a typical day like for Mopman :) ?
    HARD DRUGS. Wait no don't put that. Uh, this is a family friendly post? ;)

    Typical day for Mopeman.. I work for a web hosting company here in the UK, but I work remotely, so my typical day involves waking up, eating cornflakes with bananas on it because it's the breakfast of champions.
    Then I tend to broken servers or angry customers.... On off days I ride a motorcycle which I'm pretty sure is going to fall apart any minute, berate pure for a few hours, and try to pick up women on IRC (rarely successful, but has been known to work).

    Wait, you said it has been known to work. Care to elaborate?
    Haha yeah, I met my current girlfriend on IRC... On #mopar, actually. Some of you know her as baristaTam... I recommend against IRC relationships though, airfare is expensive.

    Any advice to newcomers on how to be pro coders etc/Final statements
    Just make stuff. Anytime you think a project would be cool, or you have a problem you want to solve, if you cant find anyone else who is solving the same problem who you can work with, it's your job. ;)
    Too many programmers (inside and outside the community) get this mentality where they feel there is such a thing as an 'elite' programmer who is far better than them and knows everything, and they dedicate their time to becoming this elite programmer instead of doing shit.
    They don't really exist though, so if you're ever going to get anywhere you need to get used to going from 'I don't know anything about what I need to do' -> 'research/exploration' -> 'just doing it' - That's really what everyone else is doing too, you just only see the end results.
    I think that skill is far more important to being a great programmer than any sort of technical skill.

    Seeing as it is exam season, good luck on exams everyone who has them currently, and don't drop out like I did, it's bad for health!

    INSIDE JOKE ALERT: Also, go in pure - I'll follow up ;)
    ps What the fudge a camper van just went past with Tom Cruise written on it. I assume Tom Cruise isn't in it.

    16
    Off-Topic (Spam) / ...................
    « on: June 09, 2015, 12:41:34 PM »
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut in eleifend magna, quis finibus est. Duis aliquam pulvinar turpis, vitae scelerisque lorem finibus ut. Etiam porta at nunc sed blandit. Fusce suscipit, ante vel scelerisque ultricies, justo mauris viverra lorem, ut condimentum odio mi sit amet neque. Fusce eu mi at lorem auctor ornare. Aliquam erat volutpat. Aliquam pulvinar sem vel vulputate vestibulum. Sed mi tortor, vulputate et nunc nec, tincidunt sagittis lectus. Aenean consequat, mauris id vestibulum efficitur, nisl est sagittis odio, et pellentesque mauris turpis id sem. Sed tincidunt convallis enim sit amet ultricies. Cras vel ipsum nec diam sollicitudin cursus.

    Etiam dictum eu odio ac ornare. Nullam quis mauris suscipit, venenatis ex at, mattis metus. Nunc rhoncus, nibh porttitor eleifend dignissim, elit orci egestas neque, in vulputate metus magna et justo. Donec ac orci vitae augue gravida ornare. Vestibulum pulvinar est nisi, et auctor velit pharetra tempus. Sed neque augue, feugiat sed mattis eu, imperdiet eget tortor. Etiam sit amet finibus nulla. Pellentesque rutrum cursus nulla vel lacinia. Ut justo neque, mattis eu nulla nec, dignissim posuere ligula. Morbi convallis gravida massa eu molestie.

    Ut auctor orci nec ullamcorper condimentum. Nullam pellentesque leo nec elit posuere convallis. Maecenas sollicitudin diam eros. Integer rhoncus ultrices felis, euismod ultricies lorem pulvinar eget. Maecenas vitae maximus magna. Proin a laoreet purus. Nam porttitor tincidunt varius. Praesent ante tellus, varius pellentesque orci id, fermentum consequat enim. Suspendisse vitae velit erat. Maecenas sed urna congue, hendrerit ipsum non, fringilla sapien. Duis velit dui, scelerisque rutrum eros vitae, elementum rutrum felis. Curabitur sodales, velit vel lobortis consectetur, leo arcu imperdiet mi, at faucibus nibh magna eu arcu. Pellentesque eu malesuada lorem, sit amet varius odio. Aliquam a vulputate neque.

    Sed lorem nunc, consectetur at cursus at, ullamcorper vitae lorem. Fusce volutpat faucibus ante, quis porttitor nunc tincidunt at. Praesent sagittis rhoncus purus, at fermentum eros luctus a. Quisque lobortis nulla et nisi porttitor fringilla. Pellentesque posuere tincidunt justo, a laoreet est commodo non. Vivamus risus tellus, blandit et dignissim sed, vehicula in nibh. Etiam ornare ex ac ex placerat, quis venenatis orci tincidunt.

    Ut turpis augue, ornare ac purus non, hendrerit viverra sem. Mauris convallis ex et orci molestie, id sodales quam ornare. Quisque vitae libero nunc. Sed sit amet efficitur nibh, id faucibus purus. Curabitur fringilla ligula quis egestas laoreet. Nam dolor diam, vestibulum a tellus ut, mattis aliquet tortor. Praesent consectetur, lectus sit amet imperdiet volutpat, ex ante molestie arcu, eu commodo mi lectus ut metus. Praesent facilisis varius felis, at vulputate magna. Aliquam dignissim sed est in tincidunt.

    Sed sagittis vestibulum augue, ut tempor sapien mollis ac. Donec facilisis interdum mi vitae placerat. Aenean aliquet iaculis tempus. Nullam sit amet accumsan lectus, vitae ullamcorper tellus. Curabitur molestie neque eget dui fermentum, ut consequat ligula ultrices. In scelerisque tincidunt malesuada. Nunc laoreet tortor tempor enim varius, ac malesuada est dictum. Nulla nisl mi, fermentum ut faucibus id, laoreet nec turpis. Ut eleifend luctus nibh, sit amet faucibus dui feugiat sed. Proin a magna felis. Vivamus tempor vulputate massa quis scelerisque. Etiam fermentum tristique turpis at gravida.

    Vestibulum consectetur cursus nibh nec ultrices. Aliquam pellentesque faucibus quam, quis elementum nisi aliquet vel. Aenean commodo convallis ultrices. Fusce viverra odio risus, a hendrerit erat lobortis vitae. Suspendisse velit orci, tincidunt non maximus a, convallis sed mauris. Sed viverra convallis mauris, ut faucibus lacus feugiat ut. Mauris egestas vel lectus vel pretium. Phasellus ante orci, dictum at dapibus in, fermentum non sapien.

    Nullam vulputate sed tellus ut porta. Aenean tincidunt a nibh tincidunt efficitur. Integer eget tincidunt nibh. Sed posuere fringilla ligula rhoncus consequat. Quisque molestie arcu nec sapien maximus, eu facilisis erat tempus. Curabitur interdum rutrum turpis, eget egestas nisi mattis eget. Integer risus purus, tempor non eros mollis, vulputate tempus mauris. Morbi enim erat, euismod eu varius sed, blandit vitae odio. Pellentesque at augue nec metus feugiat facilisis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In hac habitasse platea dictumst. Fusce rhoncus condimentum lacus vitae hendrerit. Donec et cursus sem. Proin dignissim est vel libero fringilla malesuada. Quisque quam felis, auctor eget tempus et, dictum non nisi.

    Fusce vulputate risus in lorem aliquet pharetra. Nam at libero in neque ornare efficitur et quis augue. Integer massa est, luctus varius placerat sit amet, euismod ut massa. Sed placerat, ipsum sit amet consectetur consequat, enim ipsum pellentesque tortor, id tempor mauris neque et elit. Pellentesque vel nisl convallis, interdum metus vel, ullamcorper nulla. Sed bibendum, justo at ullamcorper mollis, ipsum quam accumsan tortor, nec volutpat libero elit eget lorem. Curabitur ultrices interdum lacus, eu egestas nisi hendrerit quis. Proin pulvinar pulvinar dui non efficitur. Vivamus rutrum sem ut eros viverra, et vehicula purus porta.

    Praesent non nulla dui. Ut efficitur, metus sed euismod fringilla, ligula tellus laoreet lectus, et interdum lectus eros et nisl. Sed at urna in nisi commodo consectetur eget eget justo. Quisque aliquet vulputate erat, sit amet imperdiet sapien condimentum id. Nulla facilisi. Aliquam sit amet pretium leo. Donec vehicula est vehicula dignissim porta. Quisque eget lectus ut eros blandit ullamcorper. Suspendisse potenti. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean nec tortor ut elit consectetur elementum eget quis purus. Nam cursus dictum ante, a lobortis neque pretium in.

    Aliquam mattis libero ac pulvinar scelerisque. Morbi sed sem sapien. Nunc tincidunt lacinia velit suscipit aliquam. Morbi non maximus neque. Nullam sit amet rutrum ligula, accumsan tristique lacus. Sed sed lacus quis lorem venenatis mattis. Fusce placerat lacus at malesuada imperdiet. Duis lobortis enim sit amet justo vehicula lacinia vitae quis risus. Vestibulum lobortis consequat luctus. Sed sed tincidunt magna. Integer vel sollicitudin diam. Integer eu massa dictum, tristique purus feugiat, accumsan diam.

    In hac habitasse platea dictumst. Nulla magna libero, tempus at tincidunt in, volutpat eget justo. Nam eget ante tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas turpis metus, facilisis at vestibulum quis, rutrum sit amet turpis. Quisque placerat purus at lorem porttitor, sit amet sodales leo tincidunt. Aliquam ac mauris suscipit, volutpat felis ac, tristique diam. Maecenas commodo eros commodo pharetra rhoncus. Nullam vel maximus leo.

    Nam gravida varius eros, id malesuada erat imperdiet non. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nam consectetur scelerisque eleifend. Donec vestibulum viverra nulla, nec efficitur ex varius in. Sed mattis purus lacinia ante consequat, eu varius erat fermentum. Aliquam euismod nunc eget leo vehicula, non dapibus urna consectetur. Maecenas dictum, justo a tempor commodo, metus libero condimentum mauris, ut aliquam nulla odio nec ex. Integer vehicula tristique felis, sit amet suscipit est ultricies vel. Ut rutrum, lorem sed hendrerit maximus, dolor dui tincidunt sapien, vel tristique est erat et nibh. Sed elit nulla, vulputate eget venenatis a, maximus ut libero. Vivamus gravida, odio non malesuada aliquam, dui quam accumsan ligula, sit amet semper massa urna eu odio. Morbi ligula nisi, consectetur id mollis at, consequat eget libero. Praesent posuere nulla vitae nisl porta interdum.

    Nam cursus metus ut dignissim vestibulum. Phasellus in ante et odio efficitur euismod. Interdum et malesuada fames ac ante ipsum primis in faucibus. Quisque sit amet libero neque. Maecenas porta mattis mattis. Cras sed blandit sapien. Aliquam felis turpis, eleifend sed justo at, dictum elementum velit. Ut laoreet varius eleifend. Aenean lectus mi, tempor vitae enim a, vestibulum hendrerit quam. Donec sapien nisi, laoreet vel condimentum sed, facilisis ac purus.

    Maecenas ultricies, lacus et viverra rhoncus, tortor nisi laoreet mi, et rhoncus elit neque a velit. Cras sagittis ipsum hendrerit viverra auctor. Nullam tincidunt, sapien vel rhoncus semper, diam nunc faucibus massa, sit amet tristique ipsum nulla id nulla. Nunc quis tincidunt nisl, vel efficitur tortor. Praesent eget diam eros. Nullam ultricies, dui ac luctus eleifend, nisl augue cursus arcu, id congue lectus massa vitae erat. Sed semper nunc sit amet nisi aliquet imperdiet. Aliquam interdum arcu non commodo malesuada. Phasellus at neque sagittis, fringilla tortor eget, fringilla arcu. Integer hendrerit feugiat lorem ac tincidunt. Praesent vulputate feugiat sapien, imperdiet vehicula lorem accumsan eget. Nam at feugiat leo. Nullam sit amet ipsum mollis, accumsan magna ac, pharetra neque.

    Sed non odio eu purus vulputate porttitor vel id mi. Donec id lectus suscipit, consequat metus in, molestie tellus. Aliquam congue commodo ultricies. Morbi in auctor mi. Cras vel sem ut nisl malesuada porttitor ac nec magna. Sed et ultricies metus. Quisque ultricies sapien sed lectus facilisis volutpat. Morbi non tortor vel ante sollicitudin ultrices. Integer bibendum dolor sed posuere tempus. Pellentesque porta, erat quis tincidunt tristique, dui nisi rutrum odio, et porttitor urna ante a sem. Suspendisse a est fermentum, tempus ipsum sed, dapibus nulla.

    Pellentesque placerat ut nisi eu finibus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean eu neque lorem. Donec mattis sagittis dolor, in mollis risus venenatis sit amet. Fusce feugiat risus sed sapien pretium rutrum. Nulla condimentum magna nec bibendum sodales. In et maximus dui. Cras at tincidunt tellus. Donec ac gravida tortor, vel convallis nunc. Curabitur luctus rutrum justo sed volutpat. Cras diam nisl, ultricies vitae ligula non, dictum eleifend arcu. Duis tortor elit, vulputate in sem eget, convallis blandit metus.

    Sed tincidunt tortor vitae purus eleifend, vitae vestibulum eros egestas. Integer tincidunt eros sollicitudin porta commodo. Nam interdum eros dapibus, euismod tortor ut, consectetur lacus. Suspendisse potenti. Aliquam erat volutpat. Praesent fermentum ipsum lacus, vitae dictum nisi ultricies eget. Cras molestie malesuada rhoncus. Curabitur molestie ante a felis laoreet ultrices. Interdum et malesuada fames ac ante ipsum primis in faucibus. Fusce hendrerit lectus nunc, id cursus ex interdum ut. Morbi commodo laoreet felis, eu fringilla leo sollicitudin id. Nam sed vulputate nulla.

    Cras orci lorem, molestie in dignissim non, vestibulum a mauris. Suspendisse potenti. Integer convallis sollicitudin purus, vitae viverra diam hendrerit id. Nunc vulputate consequat turpis non commodo. Sed accumsan sollicitudin rhoncus. Fusce vulputate, nulla in laoreet lacinia, lorem enim eleifend mauris, non convallis nulla dolor interdum neque. Nam semper porttitor accumsan. Nulla mollis non ante non semper. Proin convallis ligula eu est vulputate, ut commodo arcu porta. Aliquam neque nulla, iaculis tristique sollicitudin ut, elementum a lectus.

    Nulla maximus ante ut nulla ornare imperdiet. Fusce non libero vel urna gravida faucibus. Phasellus non risus et quam placerat scelerisque. Phasellus nunc est, sodales quis dignissim ut, porta et nulla. Aliquam fringilla dui diam, eget vulputate risus auctor convallis. Ut nulla ex, suscipit quis neque vitae, dapibus maximus enim. Maecenas ultricies euismod massa sit amet rhoncus. Cras ullamcorper urna ac auctor laoreet. Fusce quis semper sapien. Praesent tincidunt consectetur sapien, ac pulvinar nisi tempus vulputate. Nulla id maximus erat.

    Phasellus sit amet sem non turpis scelerisque euismod. Sed vel ultrices lacus. Pellentesque nec efficitur diam. Aliquam malesuada eget erat sed suscipit. Integer egestas sed nulla at varius. Aenean ac consequat diam. Ut faucibus mauris eget nunc vestibulum, vitae efficitur eros tempor. Etiam at metus consectetur, dignissim nunc et, lobortis tortor.

    Quisque ut blandit tellus. Curabitur leo ex, blandit sed diam sed, malesuada rhoncus tortor. Sed vitae orci et sapien semper commodo sed ac ipsum. Integer ut diam a erat laoreet porttitor eu aliquam lectus. Proin nibh quam, feugiat et tortor non, pharetra facilisis dui. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean a tincidunt lectus. Praesent at odio pretium, condimentum eros et, porttitor ipsum. Praesent tincidunt porta felis id sodales. Cras eleifend sit amet massa et convallis. Ut elementum, purus eget volutpat dictum, turpis sapien vulputate mi, nec mattis lectus nisi eget neque. Mauris posuere augue et velit semper placerat.

    Nunc sodales molestie ipsum ac tristique. Vestibulum eget consequat quam, sed ultrices est. Praesent quam sem, tincidunt at bibendum non, semper ac quam. Curabitur finibus metus lorem, a hendrerit ligula pharetra pretium. Vestibulum sodales ultrices eros at maximus. Proin sit amet massa eleifend, gravida libero vel, molestie est. Aliquam vulputate leo enim, ut posuere justo scelerisque sit amet. Morbi risus sapien, pulvinar sed lorem quis, mattis venenatis nibh.

    Ut at magna risus. Donec tincidunt ornare tellus, at accumsan ante egestas sed. Morbi volutpat lorem eu erat fringilla, in consequat dui aliquet. Aliquam pellentesque, ex ac pellentesque pretium, risus risus sagittis purus, sit amet fermentum augue orci quis erat. Donec molestie massa in eleifend interdum. Duis congue ligula eros, sed maximus eros finibus nec. Integer porta ut lorem in accumsan. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;

    Fusce aliquet est at velit semper, vel mattis dolor consequat. Nam at laoreet felis, sit amet facilisis lacus. Sed porta sem eu consectetur imperdiet. Etiam a justo eros. Ut feugiat suscipit neque, eu commodo libero tincidunt ut. Phasellus eget nisl vitae risus consectetur egestas eu in est. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Integer quam neque, consequat a est ac, tristique euismod velit. Praesent porttitor fringilla diam, a mattis sapien porttitor finibus. Cras quis scelerisque orci, ut rutrum lectus. Nam auctor consequat sagittis.

    Morbi ornare sed risus quis dignissim. Maecenas lectus nisi, ultricies rutrum mi non, vehicula bibendum augue. Vivamus hendrerit, sapien in semper tristique, arcu libero porta nulla, et accumsan metus urna nec risus. Suspendisse nulla mauris, venenatis a mauris blandit, malesuada aliquet libero. Nam quis felis et nibh pellentesque condimentum. Nunc porta nisl at dolor venenatis fringilla. Mauris vitae nibh quis justo pharetra bibendum vel ac nulla. Donec fringilla imperdiet nulla, eu accumsan lectus auctor in. Vestibulum finibus est enim, sed rutrum ligula egestas et.

    In rutrum ultrices aliquam. Etiam malesuada metus feugiat odio aliquet, vel varius risus commodo. Donec varius, nulla id fermentum fermentum, turpis ipsum interdum tellus, elementum fermentum leo ligula a nisl. Nam urna nunc, dapibus non ipsum id, malesuada aliquet leo. Ut a nisi ligula. Vivamus imperdiet facilisis mi sit amet laoreet. Cras ornare enim sit amet ipsum porttitor sagittis. Proin tristique sem non tincidunt luctus.

    Morbi dignissim lorem sit amet elit ullamcorper, sed luctus arcu faucibus. In viverra dapibus velit, eu consequat diam vestibulum semper. Vestibulum quis justo nisi. Quisque in maximus leo, nec congue libero. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean in bibendum libero. Sed vel porttitor dolor. Donec auctor risus diam, at tincidunt augue molestie in. Pellentesque quis metus felis. Fusce placerat nisi eget augue auctor fermentum.

    Nullam ultrices lobortis consectetur. Mauris eget risus mattis eros vehicula varius non ac nibh. Vivamus ac viverra lorem, vel vehicula ligula. Ut sed imperdiet eros, sit amet suscipit arcu. In et purus tincidunt, tincidunt ipsum vitae, fringilla mauris. Pellentesque eget feugiat turpis. Donec ac risus placerat, placerat neque a, feugiat sem. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Curabitur hendrerit ante in tellus consequat, non tincidunt orci auctor. Vestibulum dictum interdum condimentum.

    Nam in nisl et orci varius dignissim nec ac tortor. Etiam tincidunt lacinia diam egestas commodo. Aenean nec lacus arcu. Nulla condimentum tempor ligula, at tincidunt turpis aliquam at. Nunc cursus quis nulla et varius. In hac habitasse platea dictumst. Nam eu sagittis quam, quis mollis magna. Donec velit magna, semper ac varius in, dapibus at est. In consequat tristique velit vel varius. Quisque tempor sit amet velit quis hendrerit.

    Ut dignissim volutpat sem, at vestibulum magna sodales a. Maecenas in massa sit amet magna auctor molestie at vel justo. Nullam in fringilla velit, eget sodales turpis. Pellentesque non quam eget libero tempus molestie. Donec consectetur nec nisi a interdum. Donec nisl risus, sagittis vel euismod ut, sodales quis tortor. Maecenas vulputate turpis et porta porta. Pellentesque bibendum sagittis odio maximus venenatis. Donec quam velit, rutrum et accumsan tincidunt, maximus sed arcu. Nam cursus felis pharetra ex congue consequat. Integer feugiat, turpis et pellentesque pharetra, ipsum neque placerat nisi, eu feugiat nunc nunc eget sapien. Vestibulum nec tellus elementum, sagittis metus eu, pulvinar dui. Maecenas in velit at dui tristique dignissim sit amet a sem. Quisque sem justo, suscipit quis fringilla nec, dictum imperdiet orci. Etiam maximus faucibus venenatis.

    Cras libero ligula, euismod in urna id, euismod maximus metus. Nunc luctus sapien pulvinar, scelerisque odio ut, molestie metus. Aliquam mi tellus, faucibus at nisl a, condimentum congue orci. Praesent eu massa mauris. Proin mollis erat pellentesque purus maximus venenatis. In id dui nec dolor dignissim semper. Suspendisse in nulla vitae leo tincidunt dictum sit amet feugiat sapien. Vivamus tristique sem non arcu placerat, bibendum tristique mi mattis. Quisque sit amet enim risus. Proin pharetra accumsan magna. Fusce porta felis et lacus luctus bibendum.

    Sed tempus laoreet velit, porttitor mattis nisi elementum sit amet. Quisque pellentesque orci quis est porttitor dapibus. Sed eu mi vel mauris pretium malesuada. Fusce velit purus, eleifend vitae arcu vitae, imperdiet ullamcorper diam. Cras accumsan iaculis leo sed tristique. Nam at commodo ligula. Sed posuere convallis risus id venenatis. Donec quis velit in quam ornare euismod et quis ex. Sed volutpat viverra aliquam. Morbi tempus laoreet finibus. Maecenas vehicula nulla at bibendum molestie. Donec a egestas nibh, sit amet scelerisque leo. In sollicitudin, sem vel dictum tristique, sem ante porta dolor, venenatis mollis dui eros vel neque. Duis vulputate elit a laoreet tempor.

    Nulla dapibus, erat sed lobortis posuere, elit urna rhoncus quam, eget iaculis odio sapien a dolor. Mauris eget magna quis dolor tristique elementum. Praesent pulvinar vel turpis vitae efficitur. Duis vitae bibendum nisi. Vestibulum ut quam nec nulla tristique sollicitudin congue vel mi. Nam id convallis nisl. Praesent fringilla eleifend enim, at ullamcorper ligula hendrerit sed.

    17
    MoparScape Announcements / Mopar Weekly (#2)
    « on: June 08, 2015, 09:50:08 AM »
    News (for the week 08/06/2015)

    RS Wiki Cleanup[/url]
    We have recently decided to update the official RS wiki by adding Pure_ and sini as admins. Our hope is that sini can contribute his invaluable knowledge in the form of concise articles.
    This has also led to a massive purge of spam by Pure_ (somewhere around 1,500 posts were deleted and many accounts blocked permanently). While we will keep up this work we hope that the higher-level management can help us out by implementing spam filters soon!



    Tutorials/Snippets

    Groovy Scripting for Beginners (by Pure_)
    As a part of a new scheme to encourage activity in the tutorial board, Pure_ has taken it upon himself to post and explain some general ideas which can be implemented into any server regardless of revision or language.
    This week he decided upon a simple plugin system, with the point of such threads being to encourage discussion about good practices and as such improvements upon the original post.



    Game Development

    Codename::World (by Lin)
    Lin had began his project a couple of months ago to accomplish his dream, of building a sandbox environment where the player is not constrained by the programming.
    In recent updates his project has really taken off, prompting this highlight of his amazing project! We are certain of his individual ability as well as his amazing idea and wish him the best, make sure you give him some feedback and keep up with the development!





    General Discussion

    How fast can you type?[/url] (by WarTusk-RSPS)
    This thread has really taken off recently with several members chiming in to compete with each other's typing speeds :P Make sure you try your hand at it and post the results!



    Senior Member Feature - Archer
    This is the first in hopefully many senior member features, a series which was masterminded by the old front-page project (now deceased, rip). This week we have managed to get a hold of Archer.

    A little about yourself?
    I was a graphics designer and posted my work on the MoparScape forums for a long period time. This line of work included modelling and other general art. You can still find my doodles here and there :)

    How did you find the community?
    I joined due to the FreeScape server back in 2006.

    What are you known for?
    I was a moderator for a while on the forums. My graphics posts also attracted a lot of attention and you can always find me on IRC!

    What makes you stay here?
    Once you're in, you can't leave.

    Advice to newcomers trying to become better programmers/artists/etc?
    Make sure you aren't arrogant, it will get you nowhere. Use google before asking anything, it was really helpful for me in picking up the basics and finding solutions to a lot of problems. Last but not least try to use some level of formal english on the forums, we can't help you if we can't understand you :p

    What do you do nowadays?
    I am in University seeking an AA and AS degree in video game development. You can still catch me on IRC talking about my hobbies, which include being a Tae Kwan Doe black-belt and collecting firearms.

    Inspiration!
    If you stick around, follow the rules and contribute to the community you will gain respect from the veteran members and learn valuable skills that will aid you in your future, on and off the forums.

    18
    Server Tutorials / Groovy Scripting for Beginners
    « on: June 07, 2015, 06:12:02 PM »
    Groovy Scripting

    In recent years the use of scripting languages in RSPS projects has blown up. The scene has typically prefered Jython or JRuby, but recently Groovy has also been explored.
    The use of scripting in our projects hasn't typically been to create plugins though, but rather to migrate code away from the core of a server, i.e. modules. I will explore both avenues with this 'tutorial'.
    You may notice that some of my naming/code is influenced by RuneSource, this is by design.

    Requirements
    • JDK 1.6
    • Some prior java knowledge (as long as you know the basics about OOP you should be fine - i.e. classes, packaging, dependencies)
    • An IDE (try Netbeans, Eclipse or IntelliJ IDEA)
    • An RSPS (with source)
    • Download and add the Groovy[/url] binaries to your list of dependencies

    Core Entities
    • Plugin - a base class which plugins will inherit
    • PluginHandler - the plugin handler (for standard processing, loading, unloading, etc)
    • PluginBridge - a bridge between the server and invokable plugins (for non-standard processing)

    Part I: Server Setup
    The first things we will need to do is prepare our project for the implementation of scripting. Firstly you should add some folders to your server's root. 

    My setup looks like the following: 
    root 
    |--- plugins/ 
        |--- bindings/ 
        |--- scripts/ 

    Now we will add a file which will determine which scripts to load when our server starts, so create a file called "plugins.ini" under the root folder. The format of this file is simple, each line will contain a script's location relative to the plugin's base directory (which we will define in the PluginHandler later).

    A sample for adding two plugins to the file would be:
    Code: Text
    1. scripts/SamplePlugin
    2. bindings/CommandHandler


    Before you continue, make sure you add the Groovy class library to your project/its classpath/etc if you haven't done so already.


    Next we need to add the plugin initialisation logic and on-tick processing. Firstly locate where your server initialises modules, i.e. trace it from your main function (a good place to start may be a class called Server). Then add our plugin loading code there.

    Code: Java
    1. void Init(){
    2.     // ...
    3.     ItemDefs.load();
    4.     Map.cacheRegions();
    5.     PluginHandler.loadPlugins("./plugins.ini");// our initialisation function
    6.     // ...
    7. }

    Finally we must add code to have the plugin tick function called from the server's processing logic (a good place to start may be a class called PlayerHandler). You should be able to add this anywhere in there but pick somewhere sensible, i.e. at the end.

    Code: Java
    1. void Tick(){
    2.   // ...
    3.   PlayerHandler.process()
    4.   NpcHandler.process();
    5.   PluginHandler.tick();
    6.   // ...
    7. }

    Part II: Writing the PluginHandler and Plugin classes
    Plugin
    We will now continue with writing a base class for plugins. Implementations of this class will need to be able to handle the loading and unloading of the plugin, have a general processing function called tick (for scripts) and an instance of the Groovy object of the script. This all leads to something like the following:

    Code: Java
    1. importgroovy.lang.GroovyObject;
    2.  
    3. /**
    4.  * Plugin base class.
    5.  */
    6. publicabstractclass Plugin {
    7.         /**
    8.          * An instance of this script as a Groovy object.
    9.          */
    10.         private GroovyObject instance;
    11.  
    12.         /**
    13.          * Called every time the server performs a tick.
    14.          * @throws Exception If the plugin throws any form of exception
    15.          */
    16.         publicabstractvoid tick()throwsException;
    17.  
    18.         /**
    19.          * Called when the plugin is enabled.
    20.          * @param pluginName The name of this plugin from the plugins list file
    21.          * @throws Exception If the plugin throws any form of exception
    22.          */
    23.         publicabstractvoid onEnable(String pluginName)throwsException;
    24.  
    25.         /**
    26.          * Called when the plugin is disabled.
    27.          * @throws Exception If the plugin is disabled
    28.          */
    29.         publicabstractvoid onDisable()throwsException;
    30.  
    31.         /**
    32.          * Get the groovy object instance of the plugin.
    33.          * @return Groovy instance of plugin instance
    34.          */
    35.         public GroovyObject getInstance(){
    36.                 return instance;
    37.         }
    38.  
    39.         /**
    40.          * Set the groovy object instance of this plugin
    41.          * @param instance Groovy instance of plugin instance
    42.          */
    43.         publicvoid setInstance(GroovyObject instance){
    44.                 if(this.instance!=null){
    45.                         thrownewIllegalStateException("Plugin already loaded.");
    46.                 }
    47.                 this.instance= instance;
    48.         }
    49. }

    PluginHandler
    Now we will need to assemble the core of our system, the plugin handler. We need to declare the location of the plugins, alternatively you could pass this through the class constructor. We also need a function to load the script instances and initialise them using Groovy.

    Code: Java
    1. importgroovy.lang.GroovyClassLoader;
    2. importgroovy.lang.GroovyObject;
    3.  
    4. importjava.io.BufferedReader;
    5. importjava.io.File;
    6. importjava.io.FileReader;
    7. importjava.util.HashMap;
    8. importjava.util.Map;
    9.  
    10. /**
    11.  * The plugin handler, used for managing plugins and their execution.
    12.  */
    13. publicfinalclass PluginHandler {
    14.  
    15.         /**
    16.          * The base directory of all plugins.
    17.          */
    18.         privatestaticfinalString PLUGIN_DIRECTORY ="./plugins/";
    19.  
    20.         /**
    21.          * The Groovy class loader.
    22.          */
    23.         privatestaticfinal GroovyClassLoader classLoader =new GroovyClassLoader();
    24.        
    25.         /**
    26.          * A collection of all registered plugins.
    27.          */
    28.         privatestatic HashMap<String, Plugin> plugins =new HashMap<String, Plugin>();
    29.  
    30.         /**
    31.          * Processes on-tick execution for all registered plugins.
    32.          */
    33.         publicstaticvoid tick()throwsException{
    34.                 synchronized(plugins){
    35.                         for(Plugin plugin : plugins.values()){// looping through all registered plugins
    36.                                 plugin.tick();// calling the tick function
    37.                         }
    38.                 }
    39.         }
    40.  
    41.         /**
    42.          * Invokes a method from the given plugin.
    43.          * @param pluginName plugin name
    44.          * @param method     method name
    45.          * @param args       arguments
    46.          */
    47.         publicstaticvoid invokeMethod(String pluginName, String method, Object... args){
    48.                 // Attempting to fetch the plugin
    49.                 Plugin plugin = plugins.get(pluginName);
    50.  
    51.                 if(plugin ==null){
    52.                         return;
    53.                 }
    54.  
    55.                 // Invoking the method
    56.                 plugin.getInstance().invokeMethod(method, args);
    57.         }
    58.  
    59.         /**
    60.          * Loads all plugins.
    61.          *
    62.          * @param pluginsFile a text file containing a list of plugins to load
    63.          * @throws Exception
    64.          */
    65.         publicstaticvoid loadPlugins(String pluginsFile)throwsException{
    66.                 File file =newFile(pluginsFile);// loading the plugins file
    67.                 BufferedReader reader =newBufferedReader(newFileReader(file));// preparing a reader, so that we can traverse it
    68.                 String pluginName;// the current plugins name
    69.  
    70.                 while((pluginName = reader.readLine())!=null){// each line we read has the pluginName set to it
    71.                         if(pluginName.trim().length()==0)// skipping empty lines
    72.                                 continue;
    73.  
    74.                         // Loading the plugin instance
    75.                         Class cls = classLoader.parseClass(newFile(PLUGIN_DIRECTORY + pluginName +".groovy"));// parsing the current class
    76.                         GroovyObject obj =(GroovyObject) cls.newInstance();// initialising a new groovy instance
    77.                         Plugin plugin =(Plugin) obj;// casting the object to a plugin, as per our interface
    78.                         plugin.setInstance(obj);// setting the instance of this plugin to the one we created earlier so that we do more than just call the plugin base functionality
    79.                         register(pluginName.replace('/', '.'), plugin);// we clean up the plugin name from containing slashes to dots to separate namespaces, this gives it a java feel when invoking
    80.                 }
    81.         }
    82.  
    83.         /**
    84.          * Registers a plugin and calls the plugin's onEnable method.
    85.          * @param name   The plugin name
    86.          * @param plugin The plugin to register
    87.          */
    88.         publicstaticvoid register(String name, Plugin plugin){
    89.                 try{
    90.                         plugin.onEnable(name);// performing on load tasks
    91.  
    92.                         synchronized(plugins){
    93.                                 plugins.put(name, plugin);// adding the plugin to the plugins list
    94.                         }
    95.                 }catch(Exception ex){
    96.                         ex.printStackTrace();
    97.                 }
    98.         }
    99.  
    100.         /**
    101.          * Unregisters a plugin and calls the plugin's onDisable method.
    102.          * @param plugin The plugin to unregister
    103.          */
    104.         publicstaticvoid unregister(Plugin plugin){
    105.                 for(Map.Entry<String, Plugin> entry : plugins.entrySet()){
    106.                         if(entry.getValue().equals(plugin)){
    107.                                 unregister(entry.getKey());// unregistering all instances of the plugin, regardless of key
    108.                         }
    109.                 }
    110.         }
    111.  
    112.         /**
    113.          * Unregisters a plugin and calls the plugin's onDisable method.
    114.          * @param name The plugin name to unregister
    115.          */
    116.         publicstaticvoid unregister(String name){
    117.                 try{
    118.                         plugins.get(name).onDisable();// performing on unload tasks
    119.  
    120.                         synchronized(plugins){
    121.                                 plugins.remove(name);// removing the plugin from the plugins list
    122.                         }
    123.                 }catch(Exception ex){
    124.                         ex.printStackTrace();
    125.                 }
    126.         }
    127. }

    Part III: PluginBridge
    The purpose of the plugin bridge is to allow us to do more than just call functions defined in the Plugin base class. It must literally as a bridge between our server's core and bindings which need to be accessed directly from it.

    Code: Java
    1. import ...
    2.  
    3. /**
    4.  * A bridge between invokable plugins and the core of the server.
    5.  */
    6. publicfinalclass PluginBridge {
    7.  
    8.         /**
    9.          * A list of currently registered bindings.
    10.          */
    11.         privatestatic HashMap<String, String> bindings =new HashMap<String, String>();
    12.        
    13.         /**
    14.          * A key for the command handler binding (to be used with the bindings map), so that we can easily invoke it from the core.
    15.          */
    16.         publicstaticfinalString COMMAND_HANDLER_BINDING_KEY ="bindings.packets.CommandHandler";// slashes replaced with dots as we did before
    17.  
    18.         /**
    19.          * Registers a binding.
    20.          *
    21.          * @param binding binding internal name
    22.          * @param pluginName plugin name
    23.          */
    24.         publicstaticvoid registerBinding(String binding, String pluginName){// this will be called from the onEnable function of binding scripts
    25.                 bindings.put(binding, pluginName);// putting the binding mapping, binding_name -> plugin_name
    26.         }
    27.  
    28.         /**
    29.          * An implementation of the handle command function.
    30.          * @returns execution could occur or not
    31.          */
    32.         publicstaticboolean handleCommand(Player player, String keyword, String[] args){
    33.                 if(!bindings.containsKey(COMMAND_HANDLER_BINDING_KEY)){// checking if the key is binded to a script
    34.                         returnfalse;
    35.                 }
    36.                 PluginHandler.invokeMethod(bindings.get(COMMAND_HANDLER_BINDING_KEY), "handle", player, keyword, args);// calling it with our arguments
    37.                 returntrue;
    38.         }
    39. }

    Part IV: Plugin Examples
    Now we can create some plugins. We had split our plugins directory into two directories, bindings and scripts. I will give examples of each. The point of a binding is to extend the core functionality of the server directly whereas plugins themselves should typically perform other tasks, i.e. http server serving of data.

    Binding: Command Handler (plugins/bindings/CommandHandler.groovy)
    You will need to make sure the PluginBridge definition for this binding is called from the server's core upon receiving a command packet, for it to work obviously.

    Code: Groovy
    1. import ...
    2.  
    3. class CommandHandler extends Plugin {// our class must extend Plugin
    4.  
    5.         // this is the entry-point into this plugin, we will call this from the plugin bridge whenever necessary
    6.         void handle(Player player, String keyword, String[] args){
    7.                 PlayerAttributes attributes = player.getAttributes();
    8.  
    9.                 if(keyword.equals("master")){
    10.                         for(int i =0; i < attributes.getSkills().length; i++){
    11.                                 attributes.getSkills()[i]=99;
    12.                                 attributes.getExperience()[i]=200000000;
    13.                         }
    14.                         player.sendSkills();
    15.                 }
    16.  
    17.                 if(keyword.equals("pickup")){
    18.                         int id =Integer.parseInt(args[0]);
    19.                         int amount =1;
    20.                         if(args.length>1){
    21.                                 amount =Integer.parseInt(args[1]);
    22.                         }
    23.                         attributes.addInventoryItem(id, amount, this);
    24.                         player.sendInventory();
    25.                 }
    26.  
    27.                 if(keyword.equals("tele")){
    28.                         int x =Integer.parseInt(args[0]);
    29.                         int y =Integer.parseInt(args[1]);
    30.                         player.teleport(newPosition(x, y, player.getPosition().getZ()));
    31.                 }
    32.  
    33.                 // ...
    34.         }
    35.  
    36.         @Override
    37.         void tick()throwsException{
    38.                 // not necessary, this is a binding
    39.         }
    40.  
    41.         @Override
    42.         void onEnable(String pluginName)throwsException{
    43.                 // when the script is enabled we must bind it to the plugin bridge, so that it is defined and can be called from the core
    44.                 PluginBridge.registerBinding(PluginBridge.COMMAND_HANDLER_BINDING_KEY, pluginName);
    45.         }
    46.  
    47.         @Override
    48.         void onDisable()throwsException{
    49.                 // not necessary, since this script isnt particularly intensive
    50.         }
    51. }

    Script: Sample Plugin (plugins/scripts/SamplePlugin.groovy)
    A suitable purpose of a script may be to respond to HTTP API requests or perform backups. I don't have a ready example for this so just imagine something useful is below :-)

    Code: Groovy
    1. import ...
    2.  
    3. class SamplePlugin extends Plugin {
    4.  
    5.         @Override
    6.         void tick()throwsException{
    7.                 // Code to execute on tick
    8.         }
    9.  
    10.         @Override
    11.         void onEnable(String pluginName)throwsException{
    12.                 // Code to execute when plugin is enabled
    13.         }
    14.  
    15.         @Override
    16.         void onDisable()throwsException{
    17.                 // Code to execute when plugin is disabled
    18.         }
    19. }

    Possible improvements
    • Delete tick functionality if unused.
    • Rename the loading/binding to be more pretty.
    • Multi-threaded loading of scripts.

    Final words
    You might find that the tick function is useless for your purpose, I kept it due to how I found the server I was working on (i.e. it had such functionality). Most people will want to only use the binding capabilities of these so called plugins.

    The logic found in this tutorial is applicable to any other scripting language implementation and feel free to discuss design improvements below alongside any errors you find in my post.

    19
    Resolved Suggestions / Forum software
    « on: June 05, 2015, 02:30:32 PM »
    Any suggestions, ideas, etc

    Discourse seems to be a fore runner to me and some other people (incl. mitb).


    20
    MoparScape Announcements / Mopar Weekly (#1)
    « on: June 02, 2015, 02:00:41 PM »
    News (for the week 01/06/2015)
    Chat Server Upgrades
    Some of you have be aware that recently the IRC server was hit by a string of DDOS attacks. This has been the reason for any downtime/connection issues experienced.
    This has led to a host migration and t4 is now responsible for the server. We now have two nodes with one in Europe and one in America which is set to launch soon.



    Tutorials/Snippets

    Clan Chat for Hyperion (by Dan0194)
    Dan recently posted a comprehensive copy+paste style tutorial on how to add fully functional clan chats to the Hyperion base. He covers both the client and server aspects of the feature. All topped off with a video of the final product which looks amazing!




    Item Definitions for Asteria 2.0 (by Fridder)
    This is an awesome contribution which features 20,000+ item definitions for the popular Asteria base, alongside how to implement it.





    Client Hacking

    RuneTek 4 Engine Rewrite (by sini)
    Sini has recently began rewriting the RuneTek 4 engine for use in the offcial private server. Make sure you keep up with his progress!





    Downloads

    RS838 Emulation (by Sir James1996)
    James is back with another emulation of the current RuneScape protocol. Although not complete, it has quite a bit of basic functionality and should serve as a good base for those wanting to dabble in this protocol.

    Pages: [1] 23
    Copyright © 2017 MoparScape. All rights reserved.
    Powered by SMFPacks SEO Pro Mod |
    SimplePortal 2.3.5 © 2008-2012, SimplePortal