Jump to content

Kisuka

Members
  • Posts

    56
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Kisuka

  1. Kisuka

    PIN Code

    It is official on kRO and should be added to athena with the option of disabling it.
  2. Again, I get it's meant as a "feature" for people to use if they want pre-renewal stuff but at a certain point you need to stop worrying about supporting old content and move past it. Otherwise the source will suffer / become ugly. Solid foundation & source > user requested features. As an emulator for an MMORPG, athena is classified as an "educational project" and states that it does not recommend using it to run a private server. Since this is a project to be the most accurate to the original RO as possible, supporting pre-renewal technically does not fall under these guidelines; as official is no longer pre-renewal. Again, I highly recommend branching pre-renewal off into a different branch, remove all RE content (dbs, classes, scripts), and only commit bug fixes to it. Heck, looping in another suggestion here. If we switched to github, you could mirror eAthena and have that be the pre-renewal branch and still be able to contribute to it on github (since everyone can contribute there), then you have rAthena be the renewal branch project. Sorry, my developer nerd side is raging hard about this
  3. You can do this with scripting...
  4. What information do you guys still need?
  5. So... coming from eAthena, one of my biggest pet peeves was the fact that we kept supporting the txt database stuff instead of removing txt and only supporting mysql. Now, rAthena is great! Loving the dev work done so far. Again though... it seems the same issue is occurring over here... Why does rAthena support pre-renewal stuff? I get it, it's an option for those that don't want to use renewal. But isn't the "r" in rAthena for Renewal? Not to mention, Ragnarok Online does not have a non-renewal option for the game. The current version of RO is Renewal and Gravity doesn't seem to have any plans to revert to non-renewal. So why are we supporting old content? Is there a bad opinion of completely removing pre-renewal and only supporting RE? Instead of cluttering up the source, database, and scripts with all this pre-renewal stuff, why not just port it to a "Pre-Renewal Final" branch. This branch could be worked on as a 'stable' pre-RE branch of athena (technically that sounds like eAthena ). Just curious if this is ever the plan. Doesn't seem to make much sense to support old content in an emulator which is supposed to be kept current with the official game. Does anyone else support the removal of pre-renewal from rAthena? Note: After some discussion it's more of an understanding to branch pre-renewal out of the working branch into it's own branch rather than remove it completely.
  6. Any movement on this? I think moving rAthena onto github would greatly benefit the project. In my opinion, github is the true spirit of open source. People don't have to be in the main dev team to contribute to the project. They can do a fork of the project, add some cool changes, and then others can vote on if it's good enough to be pulled into the main repo. Having it hosted on github will defiantly improve the community aspect of everyone helping contribute. Yes, git is a bit of a learning curve. But once you understand it, you never go back to SVN. Git just works so much better in my opinion... For those interested in reading up on git, I highly suggestion checking out Pro Git : http://git-scm.com/book
  7. Account bound items are handled by item_trade as Kichi said above. No need to implement something new, it already works. Though the different color text is interesting as long as that's an official feature of RO.
  8. My sincerest apologies. I just don't like messy code. Furthermore, I don't enjoy someone saying only one group of people need to understand something in the source (I only got upset once he said this). It's a basic standard to program for others & humans. Honestly, even the name GUID would have been better and more understandable. Yes, I'm a total asshole at times. However, I'm being an asshole for things which break standard practice. In my book, I'd rather have a guy yelling at me for writing messy code or implementing something wrong than being a outright jerk. The code in athena is already bad enough as it is, lets not make it any worse please. We need to work toward cleaning it up and making it more understandable.
  9. Talked the guy, which says that is developer, which take hours to realize a mere descriptive name, which is explained for user, in configuration on src/config/core.h as mentioned on changelog. -- OFF TOPIC END uid is a commonly used name, the rest is just a complement, you should know it's a unique_id if you see uid, since you know every programming basic etiquette. http://en.wikipedia.org/wiki/UID http://docs.oracle.c...server/UID.html I'm just here to help, as I said if the majority wants the name change so much I don't see really a problem, we can do it. I agree and I'd like to know from other if it's so hard to know nsiuid is related to unique id. Btw, I think nsiuid a good name, but it could be nsi_uid if it's easier for you to read, I think it's even better than unique_id for this case. I don't have an issue with uid; And yes, uid would have been a standard name, if you had used it. Instead you threw in nsi and didnt bother to even put a _ or anything. The following would have made MUCH more sense by just reading the column name: unique_id uid serial Here are some scenarios in which your "I left comments about it in the changelog" doesn't help at all: It's 2 months from now. I'm a new core dev joining the team. My background in coding is impressive so I was brought on with not much experience in the community. I go to work on the src when I come across this variable. I know have to dig for the rest of the code or ask another dev what it's for as I have no idea what nsiuid means. I'm a server owner who updates his svn very rarely (which most are), I update my svn, apply my diff (which most likely has a conflict now), compile and run my new build. I look at mysql a few days later, see the new column. I now have to dig to find what this column is for. A year passes, the entire core dev team is replaced. Or the project dies and a new community is fomed. These new devs now have to learn this and any other bit of crypted variables you've used in the source. I'm a programmer who is interested in MMORPG development. I find rA / eA by chance and want to use it as a base for my own development project. I now have to again, dig for information to find what the hell nsiuid means. As if this is the case, I've never seen the code or database once in my life. To flat out say only Devs & DB Managers need to know what a variable name is, is COMPLETELY not in the spirit of an open source project. Athena is used by thousands of people for a wide range of projects, you are developing for EVERYONE, not just the core dev team, not just developers in general. You are a developer of an open source project. Your mission above EVERYTHING is to make code understandable by just reading it. Otherwise, you'll have developers looking at the code 3 months later going "wtf does this do again?". Also I don't mean to be a dick but, how long have you been involved in the Athena community? The fact that you don't know my handle must mean you're pretty new. There's nothing wrong with that, however you don't seem to take opinions of your code very well. Yes, I was rude to you. I get angry when code is written in a messy fashion. If you're not passionate about programming and even more so not passionate about standards & clean code than you're doing something wrong as a programmer. And for the record, it didn't take me "hours" to find out what it did. I updated my svn, saw a .sql file, looked at it, saw the field name than read the commit history and said "that's fucking stupid". Then messaged you on IRC about your horrible naming practice.
  10. What about if I was a new developer coming in a few months from now? Or someone interested in working on rAthena who has never played with it before but finds the project interesting? Code needs to be written for ALL to understand, not just a select group of people. It should NOT require you to go digging through commit history or conf files to understand what it means. This is basic programming standards & etiquette. Not to mention, this is an open source project, this guideline should apply even MORE as you're coding for EVERYONE.
  11. PLEASE change the name of the unique id -.- "nsiuid" is NOT very understandable to humans. Code should be written for anyone to understand just be reading it. Please code for humans not machines. I suggest changing it to "unique_id". Both Xantara and Sirius_White had this base code written in an understandable way. MarkZD changed it from something understandable to something completely against basic standards of programming. Some core dev you guys have there -.- I'm disappointed. This guy has no idea wtf he's doing. Even if I was a new developer coming into rAthena, I would have to dig for information to understand what the fuck "nsiuid" means. Come on, who the fuck is this kid? How does he not know basic programming etiquette & standards? Even more so, why is he on the Core Dev Team if he doesn't know these standards for any open source project?
  12. I'll be back once I have more free time Work got crazy.
  13. XD No extra time, wrote this after I woke up. Kinda of a brain exercise to wake myself up I'll probably help with some AEGIS script conversion once I get my server back up and running.
  14. I normally don't do this... but here.... This is a modified version of the script to support refined items. What I've done is added a third value to the Reward Array for a refined amount. You set it to 0 if there is no refine option for that item. getitem2 works similarly to getitem, the difference is that it supports more parameters. Giving you the ability to set the refine amount, identify, and cards in an items. The item must support these options though. What this script is doing is... you specify the rewards in the Reward Array. The query_sql grabs the user's ip address and uses it for checking if they got the items on another account they own. If so, it throws them an error message that only new players are allowed to get the rewards. If not, then the script continues... The npc will then loop through all the items in the array and spit out a list. The modification I've done checks if the item it's currently looping on doesn't have a 0 for the refined option. If not then it will display a +<refined value> in the list. If it is a 0 then it doesn't include the refined part in the list... After showing the player the list, there is a close2 button. Which works like a close button, but allows you to perform an action / script after the button is clicked. What it's doing is similar to the previous loop. Only this time it's actually giving the player the item. With the modification it checks for the refined option. After this it's finished with an end; to make sure the script ends and allows the player to move in-game once finished talking to the npc. Hope this helps. Please be sure to read the scripting guides on the Wiki and be sure to read the Script_Commands documentation for more in-depth explanations of certain script functions. amatsu,116,146,3 script Seyra 90,{ // Reward Array <Item Id>, <Qty>, <Refine> // Set refine option to 0 if non-refinable. setarray .@rwd[0],13607,3,0,14208,3,0,12103,10,0,674,10,0,4140,4,0,2357,1,7,2524,1,7,2421,1,7,2115,1,7; query_sql ("SELECT `last_ip` FROM `login` WHERE `account_id`=" + getcharid(3) + "", .@lip$); if ( getd("$" + .@lip$ + "_NG") > 0 || #NewbieGift > 0) { mes "[seyra]"; mes "I'm sorry, the rewards are exclusively for new players."; close; } mes "[seyra]"; mes "Welcome! Here are some free gifts"; mes "for newcomers:"; // List all the items. for ( set .@i, 0; .@i < getarraysize(.@rwd); set .@i, .@i + 3 ) // Check if refined option is not 0. if(.@rwd[.@i+2] != 0) { mes .@rwd[.@i+1] + " x +" + .@rwd[.@i+2] + " " + getitemname(.@rwd[.@i]); }else{ mes .@rwd[.@i+1] + " x " + getitemname(.@rwd[.@i]); } close2; // Get Items for ( set .@i, 0; .@i < getarraysize(.@rwd); set .@i, .@i + 3 ) // Check if refined option is not 0. if(.@rwd[.@i+2] != 0) { // getitem2 <id>, <qty>, <identify>, <refine>, <attribute>, <card1>, <card2>, <card3>, <card4> getitem2 .@rwd[.@i], .@rwd[.@i+1], 1, .@rwd[.@i+2], 0, 0, 0, 0, 0; }else{ getitem .@rwd[.@i], .@rwd[.@i+1]; } // Set variable to make sure player can't get items again. set #NewbieGift, 1; setd "$" + .@lip$ + "_NG", getd("$" + .@lip$ + "_NG") + 1; end; OnInit: waitingroom "Newbie Gift!",0; end; }
  15. Modifying only the Spawn Delay will not accomplish giving all MVP / Mini-Bosses a respawn rate of 10 minutes. It will only give an additional delay to every spawn's delay1 and delay2. If a few of those MVPs have different respawns times, then the delay setting will modify that value, not a fixed amount for all. If you want every MVP / Mini-Boss to have the same respawn time then you're gonna have to modify the delay1 and delay2 on all their spawns to be 600000,0 This will cause their fixed respawn rate (delay1) to be 10 minutes, and their random delay (delay2) to be 0, as we don't want any additional time on top of the fixed rate. The spawn scripts can be found in \npc\re\mobs\
  16. Not entirely sure what you mean... can you re-phrase the question please? The script I posted should perform whatever code you put in it every Monday, Wednesday, & Friday on every week.
  17. You can edit the PSD using GIMP. It's free.
  18. // If Monday, Wednesday, or Friday perform an action. if(gettime(4) == 1 || gettime(4) == 3 || gettime(4) == 5) { // Do Whatever } *gettime(<type>) This function will return specified information about the current system time. 1 = Seconds (of a minute) 2 = Minutes (of an hour) 3 = Hour (of a day) 4 = Day of the Week (0 = Sun, 1 = Mon, 2 = Tues, 3 = Wed, 4 = Thurs, 5 = Fri, 6 = Sat) 5 = Day of the month. 6 = Number of the month. 7 = Year. 8 = Day of the year. The example code I gave does the following: - gettime(4) returns the current day of the week as a digit between 0 (Sun) and 6 (Sat). - Using the if statement with || ("or"), I checked to see if the returned digit was either 1 (Mon), 3 (Wed), or 5 (Fri). - If the returned digit was 1, 3, or 5 it will then perform the task.
  19. Relax? o.O I'm not arguing... This is a Scripting Support forum. I've giving support... The point of a support forum is to allow people to give the best possible solutions to the person asking for help. If outdated methods are being given then an experienced scripter coming in and giving feedback shouldn't be met with hostility... Development is about sharing methods of how we create things. Again, was giving feedback / support. Wasn't trying to argue or say your method is bad... it's just not a very clean way of scripting... there's a reason we spent a good time at eAthena converting all the goto / label menus with switch select menus. It's cleaner and easier to read; allows for better debugging.
  20. You can do looping without using labels / goto. Use the While loop. while(1) { mes .@n$; mes "Which Item would you like?"; next; switch(select("Cygnus Helmet!:Diamond Dust!:Bye!")) { case 1: // Your script for buying Cygnus Helmet. break; case 2: // Your script for buying Diamond Dust. break; case 3: close; } }
  21. You don't need the labels... if he's just processing what item they want all he needs to do is place the code he'd put under those labels after the correct 'Case'. Labels cause unnecessary clutter in scripts, and make finding code harder. Using Switch statements is highly recommended as you don't need to then hunt down where the Label is to find the code for that selected item in a menu.
  22. Please use the Switch Select method... it's much cleaner and easier to read. mes .@n$; mes "Which Item would you like?"; next; switch(select("Cygnus Helmet!:Diamond Dust!:Bye!")) { case 1: // Your script for buying Cygnus Helmet. break; case 2: // Your script for buying Diamond Dust. break; case 3: close; } Also... next time please don't post the same topic, regarding the same issue, twice (double post). Lilith gave you the correct answer regarding your question yet you still posted the same issue again ^^; Please avoid double posting.
  23. I've been in the RO server community for nearly 8 years now... and yes, within the past few years there have been hundreds of thousands of Ragnarok servers made. However, one fact remains true. The ones that have stayed online for nearly 4~6 years now, are the ones ran by people who A) Know wtf they're doing, and B ) Actually help contribute back to the development of the emulation software. People do have the right to run their own servers, hell a few years ago people would use eAthena to create testing grounds for testing RWC builds before the tournament came. These servers tend to die out really fast, it shouldn't make anyone nervous. Most servers are created with the following ideas in mind: Make Money Want to be in control. Want to make something "unique" and "different" to beat everyone else. The servers made with those goals in mind never survive. So, in short. Stop worrying about all the other servers out there and worry about your own. This is a free, open source software that anyone is allowed to use. It's what you do with it and how you contribute back to it that shows how much you care.
  24. Hey DevilEvil :3 How you been? I'd say the same as you tbh, been retired these months. I started working on RO stuff again though . Ah nice xD gotta show the newbies how it's done xD
×
×
  • Create New...