Jump to content

vBrenth

Members
  • Content Count

    388
  • Joined

  • Last visited

  • Days Won

    6

Reputation Activity

  1. Like
    vBrenth 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.
  2. Like
    vBrenth got a reaction from evilpuncker in Http support in hercules (merged to hercules)   
    I know some people that are interested on this project but the payment method limits us from supporting. Also is there any target amount for it to get released?
  3. Upvote
    vBrenth got a reaction from Shiro in Item Restriction   
    You can use
    isequippedcnt  
    Like this?
    { Id: 2629 AegisName: "Magingiorde" Name: "Megingjard" Type: "IT_ARMOR" Buy: 20 Weight: 8000 Def: 2 Loc: "EQP_ACC" EquipLv: 94 Refine: false Script: <" if (isequippedcnt(2629)<2) { bonus bStr,40; bonus bMdef,7; } "> },  
  4. Like
    vBrenth got a reaction from lowkey in Things to know as server owner   
    Most of the cases. But not only the developer sometimes the owner take advantage of developers works.
     
     
     
    Most of the private server modified their setup from /conf/battle such as custom drop rates / exp rates / other modification.
    Item implementation and also custom NPC's.
     
     
    If there's some scam reports, hacking incidents and other things Yes.
    Or if you are watching your GM activities too.
     
     
    You can hire a developer depends on what you need. If you know how to setup the server then you don't need to give them an access.
    a.) Your developer will only send you the script/src/files you asked. And you are the one who will install it to the server.
    b.) If you hire a developer and you have 0% knowledge then there's a chance that your question #1 will happen.
     
     
    Yes, they do have access. Just a tip. Do not host your server to any RO-hosting, pick something like popular one. Digitalhosting, OVH, Usdedicated or NFOserver
     
     
    This is very tricky. If your server is doing fine without getting DDoS you can just host it 4-8gb Ram server and cheap hosting but good speed such as nfoserver and digitalhosting.
     
    Server host: around 20-200$ again depends on what your server need.
    Website host/forum: 5~20$ this is pretty much the same. You can buy a monthly web hosting or yearly (for cheaper price).
    Gameguard: Gepard shield. 150$ for basic Gepard Shield. functor also offers some addons such as aura/color nick and lgp.
    Developer: depends on the agreement.
    Advertisements: Depends on how big the server you want to be.
     
    -------------------------------------
    Good tips.
     
     
     
     
  5. Like
    vBrenth reacted to Neffletics in Things to know as server owner   
    If you don't know how to independently operate everything, you're not supposed to open a server. You'll just end up like most of the server owners in the Philippines, who are popping out like mushrooms because of the income they can generate and disappears in a month. I'm sure most server owners will deny it, but you can easily tell what motivates them just by viewing their donation shop and patch notes.

    Running a server requires competence, patience, and consistency. These 3 values are important for a server to survive its 1st year. This is based on my own experience in SolaceRO.
     
    Final advice: 
    Knowing how to 'program' will not make you a good server owner. Acquire some experience first; join someone else's server as a co-developer.
  6. Upvote
    vBrenth reacted to Samuel in Problem with HP bars (Again)   
    @Daraen ahh sorry, as of now, at default guardians are considered as MVP/boss monsters that's why at default it will not show hp bar. But when config for enabling the HP bar for MVP is enabled, guardians will show HP bar as well. There is no way to differentiate guardians as of now, either they're boss or normal monsters.
     
    I have tried to make a pull request: 
     
    I don't know if this is the right fix for this, waiting for the other developers say about it.
     
    But I have tested this pull request on my test server and it should work with config:
    With config 5, all monsters & MVP will show HP bar except for Emperium and WOE Guardians

    and if ever i have missed any monsters (guardians) you could simply add Guardian:true in their modes and do @reloadmobdb
  7. Upvote
    vBrenth reacted to Yoh Asakura in Daifuku - Graphics giveaway prize not given   
    Hello community,
    I'm here to say that I'm really disappointed with Daifuku.
    Between all the users that participated I was the one who won it, but I never got the prize. 
    Now here are the facts: Daifuku posted on May 2 the winner (me), but I got sick in May (yes, literally the whole month sick) and I only saw I won around day 24 of May. I then contacted him through Discord to claim the prize, he replied me he was on vacation and would be back around 22 of June. I waited till now and did not get the prize. I understand we all have personal issues, but I at least expected you to be kind and say that you'd give the prize anyways, which you did not.
    Now I'm really impressed to see that he actually DELETED the topic "Graphics Giveaway" of which he created. and by the way, on his last post on that topic he said that he would hold ANOTHER "Graphics giveaway" this month. Unbelievable...You do not deserve to be in this position of Graphic Moderator. Hercules deserves better than you, Daifuku.
     
    Screenshots:

  8. Like
    vBrenth got a reaction from makubexo in [Guide] Mapcache Generation 2018   
    Hmm, Edit: Solved
    Was my data.grf (got corrupted)
  9. Like
    vBrenth reacted to Adel in Adel's Sprite Showcase   
    Cactuar FF8

  10. Upvote
    vBrenth reacted to Yoh Asakura in Dastgir's Services   
    You've helped many of us, including me. I understand we all have personal issues, family matters to solve and etc, but I believe that once you've taken a job, you should finish it. I myself gave you all my server files, including purchased website and patcher, and you simply say you can't do it anymore? I hope everything is alright, and I hope you can find some time so you can finish what you've started.

    Kind Regards.
  11. Upvote
    vBrenth reacted to 4144 in diferences between rA and herc so far   
    Another small issue of rathena, not support clients newer than 2018-06-21 ragexeRE and not support newer than 2018-11-14 ragexe.
    Some advantages of hercules, support for almost all kro clients (ragexe and ragexeRE) and zero clients (ragexe_zero).
    Hercules can be compiled for windows, linux, macosx, cygwin.
    In hercules missing some recent skills.
     
  12. Upvote
    vBrenth got a reaction from AnnieRuru in Chat space limitation!/Scammer avoid *Will pay for help*   
    This is good, thanks to this.
  13. Upvote
    vBrenth reacted to AnnieRuru in Guild Skill Notification   
    static void guild_block_skill(struct map_session_data *sd, int time) { uint16 skill_id[] = { GD_BATTLEORDER, GD_REGENERATION, GD_RESTORE, GD_EMERGENCYCALL }; int i; for (i = 0; i < 4; i++) skill->blockpc_start(sd, skill_id[i], time); } hercules uses skill->blockpc_start and skill->blockpc_end to just set sd->blockskill[skill_id] = true:false;
    so you can just hook to skill->blockpc_end to display the message for the guild master
    to display the time left in min:sec, when guild master use the skill, run DIFF_TICK function
     
    oh wait this is request section ....
  14. Upvote
    vBrenth reacted to Sephus in BladeCP - An advanced CMS   
    [ Update March 25 2019 ]
    Added Administration panel with a dashboard showcasing statistics of all servers.
    Added Member Management with Role Based Access Control (RBAC) in the administration section.
    Added Game Account management in the administration section.
    Added Character listing and lookups in the administration section.
    Added Guild listing and lookups in the administration section.
    Added Log listing and lookups in the administration section for all logs -
    Logins At-commands Characters Chat Dead Branch Loot MVP NPC Zeny Added profile-image management with auto-deletion of old image files.
    For a live preview, visit the demo site!
    Join my discord channel for update information or just to hang out  - https://discord.gg/pWgZHzx
  15. Upvote
    vBrenth got a reaction from Sephus in BladeCP - An advanced CMS   
    I'm currently patreoning this project as i have Aeva panel myself and cannot continue it, I will support other projects.
    We need new awesome CP!
  16. Upvote
    vBrenth got a reaction from hemagx in Hemagx's paid service   
    His code always 10/10 works for me
    Glad your back
  17. Upvote
    vBrenth got a reaction from fourxhackd in @whodrops repeatedly show different values for single mob   
    This also normally happen when you do changes the drops / mob_db configuration then you do @reloadbattleconf or @reloadmobdb then @mi, try to restart your server that error will be gone.
  18. Upvote
    vBrenth reacted to Dastgir in [Release] ExtendedBG for Hercules (with eAmod BG modes)   
    Update 2: https://github.com/dastgirp/eBG/commit/f7ea3164019f5c05f0356ebfe13556b150aa3dae
    Added Support for HULD: 
    Check template.pot from https://github.com/dastgirp/eBG/tree/master/server/translations , You can now have ExtendedBG in your own language, and if you feel so, you can also make a PR to the repo with other language .pot files
     
  19. Upvote
    vBrenth got a reaction from ThyroDree in Auto-Falcon Assault when linked   
    if( pc_isfalcon(sd) && sd->weapontype == W_BOW && sc && sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_HUNTER && pc->checkskill(sd,SN_FALCONASSAULT) > 0 && rand()%100 <= 15 ) skill->castend_damage_id(src,bl,SN_FALCONASSAULT,1,tick,SD_LEVEL); This will give you 15% chance.
    Edit the <= 15 ) to chance you want.
  20. Upvote
    vBrenth got a reaction from master@ragna in Auto-Falcon Assault when linked   
    if( pc_isfalcon(sd) && sd->weapontype == W_BOW && sc && sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_HUNTER && pc->checkskill(sd,SN_FALCONASSAULT) > 0 && rand()%100 <= 15 ) skill->castend_damage_id(src,bl,SN_FALCONASSAULT,1,tick,SD_LEVEL); This will give you 15% chance.
    Edit the <= 15 ) to chance you want.
  21. Upvote
    vBrenth got a reaction from Begin in Auto-Falcon Assault when linked   
    if( pc_isfalcon(sd) && sd->weapontype == W_BOW && sc && sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_HUNTER && pc->checkskill(sd,SN_FALCONASSAULT) > 0 && rand()%100 <= 15 ) skill->castend_damage_id(src,bl,SN_FALCONASSAULT,1,tick,SD_LEVEL); This will give you 15% chance.
    Edit the <= 15 ) to chance you want.
  22. Upvote
    vBrenth reacted to danielpqb in [HELP] Item delay   
    Thank you for your help.
    Actually I didn't understand what you mean with "add a variable on sd", but after hours of trouble I came to a solution that works:
    if( sd->inventory_data[n]->delay > 0 ) { ARR_FIND(0, MAX_ITEMDELAYS, i, sd->item_delay[i].nameid == nameid ); if( nameid == ITEMID_RED_POTION || nameid == ITEMID_YELLOW_POTION || nameid == ITEMID_WHITE_POTION ) { sd->item_delay[1].nameid = ITEMID_RED_POTION; sd->item_delay[2].nameid = ITEMID_YELLOW_POTION; sd->item_delay[3].nameid = ITEMID_WHITE_POTION; } if( i == MAX_ITEMDELAYS ) /* item not found. try first empty now */ ARR_FIND(0, MAX_ITEMDELAYS, i, !sd->item_delay[i].nameid ); if( i < MAX_ITEMDELAYS ) { if( sd->item_delay[i].nameid ) {// found if( DIFF_TICK(sd->item_delay[i].tick, tick) > 0 ) { int e_tick = (int)(DIFF_TICK(sd->item_delay[i].tick, tick)/1000); // clif->msgtable_num(sd, MSG_SECONDS_UNTIL_USE, e_tick + 1); // [%d] seconds left until you can use return 0; // Delay has not expired yet } } else {// not yet used item (all slots are initially empty) sd->item_delay[i].nameid = nameid; } if( sd->item_delay[1].nameid == ITEMID_RED_POTION || sd->item_delay[2].nameid == ITEMID_YELLOW_POTION || sd->item_delay[3].nameid == ITEMID_WHITE_POTION ){ sd->item_delay[1].tick = tick + 5000; sd->item_delay[2].tick = tick + 5000; sd->item_delay[3].tick = tick + 5000; goto limpartudo; } if (!(nameid == ITEMID_BOARDING_HALTER && pc_hasmount(sd))) { sd->item_delay[i].tick = tick + sd->inventory_data[n]->delay; } } else {// should not happen ShowError("pc_useitem: Exceeded item delay array capacity! (nameid=%d, char_id=%d)\n", nameid, sd->status.char_id); } //clean up used delays so we can give room for more limpartudo: for(i = 0; i < MAX_ITEMDELAYS; i++) { if( DIFF_TICK(sd->item_delay[i].tick, tick) <= 0 ) { sd->item_delay[i].tick = 0; sd->item_delay[i].nameid = 0; } } } I wonder if you could help me with a better solution, because my code is an outrage to the community. hahahahahah
    I thank you all for the good cooperation!
  23. Upvote
    vBrenth reacted to danielpqb in [HELP] Item delay   
    Forgot to mension that with this solution you need to add "Delay: 1" in itemdb_conf to work.
  24. Upvote
    vBrenth got a reaction from kyeme in SN_SHARPSHOOTING (Focused Arrow Strike)   
    https://github.com/HerculesWS/Hercules/blob/stable/src/map/battle.c#L6815
    Add this.
    if (src && (map->list[m].flag.gvg_castle || map->list[m].flag.gvg) && (battle->get_current_skill(src) == SN_SHARPSHOOTING)) { state |= BCT_ENEMY; state &= ~BCT_GUILD; state &= ~BCT_PARTY; }  
  25. Upvote
    vBrenth got a reaction from soulg23 in Ano po magandang client?   
    Uhm, Try mo sa 2013 alam ko ung aura bugged un sa ibang client sa nemo never ko pa kasi ginamit yan Aura 255
×
×
  • Create New...

Important Information

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