Jump to content

Emistry

Support Leaders
  • Content Count

    526
  • Joined

  • Days Won

    21

Reputation Activity

  1. Like
    Emistry got a reaction from Hyroshima in KRO C-Code System (Implemented in 2013)   
    Ever wonder why these random number show up in your RO game client?
    It's called Character Code (C-CODE), an old system that implemented around 2013.
     
    If you enable this system you'll be protected against fraud since it offers a unique additional protection for each player present in-game.

     

     
    As you can see from the screenshot above, there exists an extra set of codes (It show up int he basic information window, and the right-click menu of player object).
    According to KRO, these codes doesn't repeat/overlap and its unique for every players. It offers a unique additional protection for each player present in-game.
     

     
    When you right-click on any player object, the C-Code are shown at the last menu ([C-Code] : ### - ###)
    Its ranging from 000-000 ~ 999-999, around 1,000,000 set of codes. 
    However its not confirmed that the numbers won't repeat itself if there are multiple server setup.
     

     
    Click on the menu, the C-Code will be copied to clipboard.

     
    Open up any text editor or notepad, press on CTRL + V, the codes will be shown in the editor.
    Notes: If you copied the codes, and take a screenshot right away, the codes will be removed from the clipboard.
     

     
    The codes are shown display behind character's level in the trading window.
     
    Sample of different C-Code for different characters.
     
     
    References: home.gamer.com.tw
  2. Like
    Emistry got a reaction from JulioCF in KRO C-Code System (Implemented in 2013)   
    Ever wonder why these random number show up in your RO game client?
    It's called Character Code (C-CODE), an old system that implemented around 2013.
     
    If you enable this system you'll be protected against fraud since it offers a unique additional protection for each player present in-game.

     

     
    As you can see from the screenshot above, there exists an extra set of codes (It show up int he basic information window, and the right-click menu of player object).
    According to KRO, these codes doesn't repeat/overlap and its unique for every players. It offers a unique additional protection for each player present in-game.
     

     
    When you right-click on any player object, the C-Code are shown at the last menu ([C-Code] : ### - ###)
    Its ranging from 000-000 ~ 999-999, around 1,000,000 set of codes. 
    However its not confirmed that the numbers won't repeat itself if there are multiple server setup.
     

     
    Click on the menu, the C-Code will be copied to clipboard.

     
    Open up any text editor or notepad, press on CTRL + V, the codes will be shown in the editor.
    Notes: If you copied the codes, and take a screenshot right away, the codes will be removed from the clipboard.
     

     
    The codes are shown display behind character's level in the trading window.
     
    Sample of different C-Code for different characters.
     
     
    References: home.gamer.com.tw
  3. Upvote
    Emistry reacted to Rytech in The End of A Era - Goodbye 3CeAM   
    Well this is it. This is the day I knew would one day come after spending some time thinking about the project and my priorities. After a number of not so good things happened to me during the first few months of this year (2020) I had to sit down and think about many things including this project. In the end I came to the difficult decision of ending this project. Many many years of work into something that I feel has to end. But not every reason for this is due to my current situation in life but also the changing world of Ragnarok Online. I won't get into the details of whats going on in my personal life but ill talk about the issues with the project itself.
     
    RO is changing. A lot. Its changing too much for me to keep up on jobs, skills, and important features on the project and my life future needs to take priority. For most of the time I worked on this project it has distracted me from my priorities in life. I kept up with it for a very long time and I tried to catch up on things for many years. With the complete recode of the elemental system on r900 I felt I finally got all caught up and only had a few bugs here and there related to skills that needed to be fixed and I just needed to finish up whats missing for the Summoner job. But I was so wrong. The thing is I felt the need to keep things up to keep the project alive and not have people wondering if the project is dead or not. Plus after doing so much work it felt like ending it would mean I wasted years of my life doing this for....what??? What exactly did I get out of this? Some fun, a hand full of thanks, and some credits and rep. Kinda felt like someone who played a MMO for many years and can't quit knowing it would make all that past time feel like it was all for nothing. A waste.
     
    So whats the issues with the project itself? Well....
     
    1. The Base Code Is Too Old
    3CeAM is running on eAthena r14767 which is around 9 or 10 years old. A base that dated has been found to have some issues with newer compilers like VS 2015 which I have resolved this year. But other issues appeared after running the program made with newer compilers which I fixed some. But I realized that not only is there a lot of hidden issues needing fixing but things like plugin's and other .dll files are dated and need updating along with the code that uses them. I have little knowledge of this stuff and can't do it by myself. Other projects like rAthena and Hercules are much more up-to-date for newer compilers and OS's. 3CeAM's base code is just too old to keep up with. Especially when im the only one working on it.
     
     
     
    2. Keeping Things Up-To-Date Is Impossible
    When it comes to development in this project there's a few key things I focus on most. Jobs, skills, any systems related to the jobs/skills that require them, and client support. I don't bother with things like the banking system or equip swap or other non important things. This pile of stuff I pushed off grew over the years and now while client support is good, many features in them don't work since I never coded them in. Im always busy working on job/skill related stuff most of the time. Its very time consuming. But after spending many years catching up on the official support for skills and these job/skill related systems I finally caught up in r900 with the exception of Summoners and a few skills that could use a quick recode.
     
    Looking at whats been going on in official kRO the dev's have been changing things with the 3rd job skills....A LOT!!!! They will increase the max level for some of them, change how some of the skills work, and do these massive skill updates. That would be kinda fine with me if it wasn't for the fact that they keep changing things. How many skill updates Rune Knights got? How many freaken times Sonic Wave got changed? How many times did they change a large number of 3rd job skills for each job? Each job must of gotten at least 3 or 4 massive skill change updates to their skill set. Its enough to drive me crazy trying to keep up with it all.
     
    Remember how long it took me to go through every 3rd job a few years back to comb through all of the code to get each of them up-to-date with the 2011 skill updates? Even after that I had to go back and revisit the parts I held off on knowing they would be very complex and time consuming to do. Now it feels like half or most of what ive done was now a time waster since I will have to do this exact procedure ALL OVER AGAIN combing through the code and kRO change logs to update each 3rd job skills 1 by 1 to get them up-to-date again. I did it once, im not doing it again.
     
     
    3. Newer Client Support.
    In mid 2018 official kRO increased the value that handles item ID's from short (16-bit 32k item limit or 64k however you look at it) to int (32-bit allowing over 2 billion ID's). But the way they did it made things difficult. Many existing packets relays on item ID's and so they decided to change this value in all already existing packets. To support newer clients over 50 or probely 70 or 80 or maybe more needs updating. But not only updating but many which only have 1 versions of itself requires additional code to keep backward support for older clients. Such a change is a huge workload and would require multiple updates to get it working. Me not having the time for this crap if I did it would just say FUCK IT and remove ALL of those packets and only readd the latest versions of each one to significantly reduce that workload. I would make a copy of the source files that handles the packets and put them to the side in the SVN for those who want 2018-06-20 or older support because that change will make it so only 2018-07-01 and newer clients will work. Won't be the most popular choice but im not up for trying to keep backward compatibility with years of clients. Just going to be a pain in the ass.
     
     
     
    4. The 4th Jobs Workload
    It took many years since the beginning to get the 3rd jobs caught up. Some of that time spent figuring out how to implement them in the system on their own layer and also inherit the features and permissions of the previous jobs. That was a big challenge since noone knew exactly how the job management system worked. Me and a few others made multiple prototype codes to find the best method until I found the right way to do it. Knowing this knowledge I can create a new layer for 4th jobs. But these jobs come with a lot more then just a hand full of skill sets.
     
    When 3rd jobs came, so did the introduction of a new game mechanic that split cast times into variable cast and fixed cast and it also introduced cooldowns. It was a nice and much needed change and it didn't take long to code this stuff in. 4th jobs however are adding new game mechanics much bigger then this. When you change to a 4th job, level 201 to 250 will give you a new kind of stat points called T.Stats and you use them on 6 new stats that are added to the 6 that existed since day 1 of RO, making the total number of stats in the game 12 now. This also comes with a hand full of new sub-stats which we can just call T.Sub-Stats. Coding all of this in will be a big work load since no new stats were added since the early days of RO server emulators. Also new to the table is something called AP which will be a new requirement for some if not all of the 4th job skills according to info I found in a updated skillinfo_f.lua file. So now we will soon have to mange HP, SP, and now AP.
     
    Info extracted from newer client exe's shows some of the new buff skills increases T.Stats and also increases T.Sub-Stats. Combining that with the new AP requirements and you now have over 100 new skills that will require all of this to be coded in and working to allow those skills to work properly. This is a workload much MUCH greater then what the 3rd jobs were and doing this alone will just stress me out. Especially when this is only a free time hobby that brings no income.
     
     
     
    5. A Project Managed By 1 Person
    Managing the project by myself has been somewhat stressful at times. It used to be developed by a small team but everyone moved on with their lives. And I got used to doing it all by myself. I knew the code inside and out because almost everything was being done by me and I knew what was done and what still needed to be coded in. Well this became a big part of the project's downfall. Doing it all by myself is a lot on me and it prevented things like a updated base code and .dll's, server/client features, and other things to fall behind. Sure 15peaces made patches you can apply to get those other features working but its not something officially in the project's code.
     
    I tried working with the team at rAthena before only to quickly find out that some of the dev's there don't do a good job at coding. Some would code something in and commit it to the GIT and those changes would cause problems. So dev's have to go back and fix the bug or the issue which sometimes causes crashes and commit again. And even with that the fix won't even fix the issue as if the dev didn't test it. WTF!!??!! The dev would commit multiple times on that code before its actually working. I can only imagine the number of issues in that project's code. When you code something in your supposed to TEST IT BEFORE RELEASING IT!!!! Test it thoroughly to make sure it works EXACTLY how its supposed to and test some scenario with it to make sure it doesn't cause problems or crashes in case there's any hidden bugs. And even if it works properly, find ways to shrink the code down to make it smaller and optimize it to use a few CPU cycles and little memory as possible.
     
    I follow a procedure when I do my own coding. Code it in, do simple tests, shrink and optimize the code if it passes the test, test again for the same expected results, do extra testing (thorough testing through stressing the code and running scenarios that might cause issues), and then release it if all passes. Its because of this 3CeAM has a history of being stable and extremely rarely has any crashes or bugs. If there's one thing dev's should take from this example, do it right the first time and give it your best at all times. If your often having to go back to your previous work or the same piece of code repeatedly to fix it then your doing something wrong. The lack of this procedure in rAthena made me quit in less then a month as I refused to fix/cleanup other people's messes. This is why I worked alone for so long. I was afraid to let or ask others join the team.
     
     
     
    Final Note
    3CeAM was fun to work on and I learned a lot from it. It was very popular before rAthena and Hercules existed since at the time people wanted 3rd jobs in their servers. But those golden years are gone and trying to keep this project alive will just be a waste. Its time to let go and move on to new hobbies. Im very interested in the 4th jobs but im not interested in trying to code them into a old very dated project. If I do such a thing it will be in rAthena (which is in a better standing then when I saw it years ago), or Hercules. Anything with 3CeAM will only happen if its a paid job and thats if I even choose to accept it.
     
    Thank you to the community for supporting the project and being with me all these years. It was a fun journey.
  4. Upvote
    Emistry reacted to RagnarokOnline2015 in [Guide] Mapcache Generation 2018   
    Sorry For My English
  5. Upvote
    Emistry got a reaction from AnnieRuru in OnPCUseSkillEvent   
    I have been waiting for this soooooo loooonnnnggggg tiimmmmeeee...
    anyway, just curious, since its just adding a new field "event_label", why not consider alter the existing "skill_db" and add the field there?
  6. Upvote
    Emistry reacted to AnnieRuru in OnPCUseSkillEvent   
    finally update this after 4 years....
     
    1.3 - plugin
    - update to latest revision
    - fix server crash when parse the string in OnPCUseSkillEvent.txt
    - help clean the temporary player variable
    1.4 - plugin
    - remove the 100 array limit by utilize VECTOR
    - drop CSV format and use Hercules standard libconfig format
  7. Upvote
    Emistry got a reaction from JulioCF in Campfire to regenerate HP/SP   
    Hi Habilis, this is my attempts..
    https://pastebin.com/fksPdpFQ

    Feel free to comment
    -- EDIT
    Updated the campfire:
    - slowly decrease the effectiveness of healing rate and area range every 10 seconds.
    - may use item like wooden block, tree root, to prolong the campfire duration, or increase healing rate and area range too.
    v1.1

     
     
  8. Upvote
    Emistry got a reaction from Habilis in Campfire to regenerate HP/SP   
    Hi Habilis, this is my attempts..
    https://pastebin.com/fksPdpFQ

    Feel free to comment
    -- EDIT
    Updated the campfire:
    - slowly decrease the effectiveness of healing rate and area range every 10 seconds.
    - may use item like wooden block, tree root, to prolong the campfire duration, or increase healing rate and area range too.
    v1.1

     
     
  9. Upvote
    Emistry reacted to luizragna in Custom Unit HP Bar System   
    Hello guys, i'm making a custom hp bar system for mob units.
    The command show the HP of the mob for all players in the map.
     
    I am using the cutin command, the problem is that I do not think so many files are necessary. In the case 1 image for each percentage of hp I would like your opnion and help to improve this system and make it lighter.
    Test yourselves :).
     
    HP Bar System:
    payon,147,229,4 script Test#HPbar 1_F_MARIA,{ if (.HP_Bar == 0) { .HP_Bar = 1; .mobGID = monster ("payon",148,226,"[T] HP Test",POPORING,1,strnpcinfo(0)+"::OnDie"); setunitdata .mobGID,UDT_MAXHP,4000; setunitdata .mobGID,UDT_HP,4000; .@count = getunits(BL_PC, .@units, false, "payon"); for (.@i = 0; .@i < .@count; .@i++) addtimer(0,strnpcinfo(0)+"::OnHPBar", .@units[.@i]); } end; OnDie: .HP_Bar = 0; end; OnHPBar: .U_MAXHP = getunitdata (.mobGID,UDT_MAXHP); while (.HP_Bar != 0) { .U_HP = getunitdata (.mobGID,UDT_HP); .P_HP = (.U_HP*100)/.U_MAXHP; cutin(""+.P_HP+"", 1); sleep2 100; } cutin("0", 1); sleep2 5000; //Delay to hide HP Bar cutin("", 255); end; }  







     
    Donwload of the data folder files: HP Bar System (2018-06-26).rar
  10. Upvote
    Emistry got a reaction from AnnieRuru in OnNPCKillEvent changes   
    I understand the need for it to trigger the OnNPCKillEvent for these event/quests.
    as many as we would need, and these efforts i believe it would be just the same if you compare with restructure the db to libconfig and others, just saying the effors
     
    true, but it could be still performance killing. If this statement are acceptable, the old mob controller and any other OnPCXXXEvent would have no problem getting it implemented into the emulator in the first place.
     
  11. Upvote
    Emistry got a reaction from Tinustang in OnTimer Script   
    like this
    http://upaste.me/r/913cad
  12. Upvote
    Emistry reacted to Haru in About Code Review and Why You'd Want Your Code to Be Reviewed   
    About Code Review and Why You'd Want Your Code to Be Reviewed
     
    Hello, fellow developers and code contributors!
    As you certainly know, years ago, Hercules adopted a workflow based on pull requests, that includes code review as one of the necessary steps before any new piece of code makes it into the master branch of the repository.
    While being an uncommon and somewhat controversial change in Hercules (and in the RO emulator scene in general), code review is part of the workflow of most software projects, both open source and closed source, and has many benefits.
     
    Why Code Review
     
    The benefits of code review are several:
    "Given enough eyeballs, all bugs are shallow" [Linus's Law by Eric S. Raymond -- The Cathedral and the Bazaar, 1999]. While the law is not strictly true, it's certainly true that the more developers read and analyze a piece of code, the more likely it is that bugs that might be hidden in it are discovered early. Testing is not enough. It's very hard (or in the case of our codebase just plain impossible) to cover all the possible edge cases when testing a new feature or a fix. An additional pair of eyes reading the code may help discovering those more easily. This includes cases where the client would normally prevent a certain thing from happening, but it's not ensured anywhere on the server side. Better quality of code. By having other developers read a piece of code, they'll end up wondering why a certain approach was taken, rather than another, and discuss it with the submitter, leading to better, more efficient algorithms, or better engineered code. Better documentation. Since the code needs to be read by other people, it'll require proper comments (or they'll ask for explanations about the parts they can't easily explain). This increases the chance that the author, or anyone else that will need to read the same code again months or years after it's been submitted, will be able to understand it again, by finding appropriate comments in the appropriate parts of the code. Better insight into the code across the team. By reading code from different parts of the emulator as part of the review process, every team member increases their own general knowledge of the software, bit by bit. This is a very efficient way of learning how different parts of the emulator work, and why they were implemented that way. Future-proofing. By having public reviews, we keep a permanent trace of what were the hot topics and why certain decisions were taken, when a certain part of the emulator was implemented. If a bug arises, or something needs to be redesigned in future, we can look up the associated pull request and related discussion, and learn more about the discussion that went on in the past, and what's hiding behind code design decisions. Reviewing code from other people, as well as having one's own code reviewed by others might not be easy for everyone, especially at the beginning, but please try your best. Here are some suggestions on how to approach code review from either side. 
    How to approach code review (for code authors)
     
    As a code author, the worst thing you can do is to be afraid or shy about other people judging your code. This is the wrong approach! Don't be shy, have your code looked at by others, have them praise you for your genial approach to tackle a problem, listen to their suggestions on how to improve it. But be ready to defend your implementation, if you believe it's better than the suggestions you receive, or if the critics that are moved against it are wrong or meaningless.
     
    Always keep in mind that:
    Having your code reviewed and commented on isn't humiliating. Other people are spending their time looking at your code, asking you why you did something in a certain way rather than another, suggesting improvements. Both sides have a lot to learn from each others. (On the other hand, if no one reviews your code, that's somewhat humiliating!) If someone spots an issue in your code, it doesn't mean that you're a bad developer. We all make mistakes, and we should be happy to learn from them (and it's definitely better if someone spots them and points them out to us before it's too late and they were able to do some harm). Never, ever, take code review personally. No one will laugh about you, fire you, kill you, shame you, etc. if your code is commented on. If you believe you're right and the comments you received are pointless or wrong, chance is that you really are right. Be ready to defend your reasons, it's possible that the reviewer didn't think of them. It is your duty to explain them your reasons. How to approach code review (for code reviewers) 
    Reviewing code is several orders of magnitude harder than having your own code reviewed. You have to check the code for several classes of problems, point out your findings, suggest improvements. And you still have to deal with the worry about hurting the code author's feelings when pointing out a mistake.
     
    Here are some things you should keep in mind when reading and reviewing code from other people:
    You're not judging a person. You're judging code. Don't make your review sound personal. Always think of uncommon and edge cases, and never assume they can't happen, unless there's an explicit check that makes them impossible to happen. Even if the code was tested by the author, it doesn't mean that it can't cause problems to other existing features, or have some issues the author couldn't think of. If the same person writes and tests a piece of code, the chance that they don't test the cases they forgot to handle while coding, is very close to 100%. If the code is not following the project's style guidelines (and this isn't just about indentation, but also about names, conventions about function calls, proper modularization, etc), it is your duty to point it out now, before it's merged. This will make the life of your fellow developers easier later on. Think defensively. Consider the code you have in front of you as buggy until you can prove its correctness. If you see that a sanity check is missing, ask the author to add it. If you believe that a function returns the wrong value in certain cases, even if very unlikely to occur, prepare an example of input for which that happens and point it out. Remember that threats such as overflows, underflows, buffer overruns, null pointers, invalid pointers, numeric (floating point) approximation, etc. are always behind the corner, check for them as often as possible and prove that they can't occur. And remember that, while the code author isn't your enemy (and code review shouldn't generate negative feelings), it's often a good idea to think of them as your "professional enemies". There's a chance that something nasty is hiding in their code, even if they didn't write it with ill intent, and as such, you shouldn't blindly trust the code, regardless of who the author is. Don't be afraid when you comment on other people's code. Your goal isn't to hurt their feelings, you're asking them for explanations and/or suggesting the way you would have done something. Likewise, don't be afraid of making a pointless comment. If the author has a good reason for their implementation, be ready to take back your comment and learn from them. Don't accept compromises. If you're firmly convinced that the author's defense of their code is wrong, your duty is to prove them wrong. But if they manage to convince you, don't be ashamed of admitting you were wrong. Happy reviewing!
  13. Upvote
    Emistry got a reaction from Ridley in clan instance   
    perhaps a new instance type for clan?
    we got type for char, party, guild, why not a new clan type?
    just attach the clan id, and everyone from the same clan will be able to join.
     
    if you mean who being the leader in the instance, i dont think its a mandatory to have one.
  14. Upvote
    Emistry got a reaction from Ragno in Add config to save log of warnings   
    https://github.com/HerculesWS/Hercules/blob/master/conf/global/console.conf#L60-L66
  15. Upvote
    Emistry got a reaction from monkey77 in Usable Enchant Item   
    File Name: Usable Enchant Item
    File Submitter: Emistry
    File Submitted: 18 Jan 2016
    File Category: Utility
     
    Description :
    Players are able to click on the Enchant items to provide custom bonus to the selected equipment.
     
    Varies of bonus could be done especially use together with a *getequippedon script command to provide a wide range of bonuses.
    The current items and bonuses display in the video is just a sample for demo.
     
    The origin of the idea come from Diablo and 張阿神.
     
    Preview :

     
    Click here to download this file
  16. Upvote
    Emistry got a reaction from Legend in Last Man Standing Map Crash HELP   
    @GM Fenrir
    just a rough guess, probably the issue is caused by these line
    donpcevent "LMS_NPC::OnCheck";
  17. Upvote
    Emistry got a reaction from JulioCF in Ragnarok Online - Virtual Reality   
    Part 2


  18. Upvote
    Emistry got a reaction from JulioCF in Ragnarok Online - Virtual Reality   
  19. Upvote
    Emistry reacted to raPalooza~ in Smooth Shadow   
    File Name: Smooth Shadow
    File Submitter: raPalooza~
    File Submitted: 13 Oct 2015
    File Category: Sprites & Palettes
     
    SmoothShadow
    By raPalooza

    Version 2.0 -
    This new version of SmoothShadow I tried to recreate the smooth shadow seen in Tree of Savior, so I used the .tga format to draw the shadow of monster and characters.
     

     
    The result I got was amazing, it gave ragnarok a fresh look! Try it out!
    ps;not sure if with huge mob density the client suffers.
     
    Click here to download this file
  20. Upvote
    Emistry got a reaction from Nebraskka in Ragnarok Online - Virtual Reality   
  21. Upvote
    Emistry got a reaction from Daifuku in change default skin to custom skin   
    kRO Folder > Skin > Default  
     
    name your custom skin that located in skin folder to "default".
  22. Upvote
    Emistry got a reaction from minx123 in change default skin to custom skin   
    kRO Folder > Skin > Default  
     
    name your custom skin that located in skin folder to "default".
  23. Upvote
    Emistry got a reaction from Tsuuu in Usable Enchant Item   
    File Name: Usable Enchant Item
    File Submitter: Emistry
    File Submitted: 18 Jan 2016
    File Category: Utility
     
    Description :
    Players are able to click on the Enchant items to provide custom bonus to the selected equipment.
     
    Varies of bonus could be done especially use together with a *getequippedon script command to provide a wide range of bonuses.
    The current items and bonuses display in the video is just a sample for demo.
     
    The origin of the idea come from Diablo and 張阿神.
     
    Preview :

     
    Click here to download this file
  24. Upvote
    Emistry got a reaction from Easycore in Usable Refinery Ores   
    File Name: Usable Refinery Ores
    File Submitter: Emistry
    File Submitted: 18 Jan 2016
    File Category: Utility
     
    Description
    Players are able to click on the Ores items to refine the selected equipment. They can refine their Equipment at anywhere anytime they want.
     
    Based on requirement of Weapon Level and Type, different ores might be needed as well as Zeny.
     
    Preview

     
    Click here to download this file
  25. Upvote
    Emistry got a reaction from ReckedCat in Regarding Herc's new NPC View Rule   
    http://herc.ws/board/topic/11703-2015-12-31-fake-npc-and-the-npc-view-id-1/
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.