Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 11/22/19 in all areas

  1. File Name: Keitenai_Delay_System File Submitter: keitenai File Submitted: 4 Dec 2016 File Category: Src Modification Content Author: keitenai Information: Speed hacking 3rd party programs to bypass skill delays are hard to eliminate specially if you don't have a game guard for you server. This modification makes it impossible for speed hacking programs to bypass the delay that has been set. How does it work? I've added a simple skill requirement to the skills before a player can re-cast certain skill. This requirement is 'time'. So to put it simple, skill will be hard locked after casting and will be unlocked once the delay is over. Features: Configurable hard skill delay. Separate configuration of hard skill delay for WoE settings MoD can be enable / disable. Supports current available skills ready for configuration. Disconnects anyone who does inhumanly spamming ( Sensitivity configuration included ). Implemented "Show skill delay" for the Mod configuration only ( for testing purposes ). WARNING: A player may be detected as spam flood if the said player is having lag spike issues while consistently using skill. //------------------------------------------------------------------ // Skill delay settings // Value is in milliseconds (1000 = 1 second) //------------------------------------------------------------------ // Note that this delay setting still depends on the 'skill_cast_db' // delay settings. This will not decrease the skill delay that has // been set in 'skill_cast_db' although this setting can increase // the delay if value is higher than 'skill_cast_db' delay //------------------------------------------------------------------ //================= // Swordman //================= SM_BASH: 210 SM_MAGNUM: 180 Installation: 1. Download the Diff file. 2. Simply apply the diff to your trunk, or apply it manually. 3. Recompile your server. 4. Configure your skill delays 5. ALL DONE! Compatible with: rAthena 97b5f3b ( as of JULY 31, 2022 ) Compatible with: rAthena 03da2f6 Compatible with: rAthena 8d8712f Download : keitenai_SpeedHack_Protection_V5.diff keitenai_SpeedHack_Protection_V4.diff keitenai_SpeedHack_Protection_V3.diff keitenai_SpeedHack_Protection_V2.diff Keitenai_Delay_System_V1.diff Edit: Fixed compatibility with rathena 97b5f3b revision ( as of 07/31/2022 ) Add new 4th job skills Fixed bug on melee skills
    1 point
  2. Version 2.0

    1599 downloads

    Yet another simple MVP Kill reward on MVP Maps Only with an announcer and now with a simple MVP Ladder If player is in a party, the reward will be given randomly to online party members. You can config the script easily at this part: OnInit: setarray .p_rwd, 607,1; // Party reward <item>,<amount> setarray .s_rwd, 607,1; // Solo reward <item>,<amount> .chance = 50; // Drop rate chances % .gm = 10; // Prevents gm level and above to trigger the event // MVP Map list setarray .t_maps$[0],"// <MVP MAPS> This script will also help other in-game players see if an MVP has been slain. I'm open for suggestions, comments, reactions and such for the betterment of this script and my skill. Questions? Q> Why only at MVP Maps? A> Because some server puts MVP Rooms which the reward can be abused.
    Free
    1 point
  3. Hey all! It's been too long, hasn't it? I guess you could say I've been quite busy lately. However the other day I realized wanted to do something for the community once again (because honestly it's been forever since I contributed), hence why I'm here now. But then I wondered, what can I do? Of course there was the possibility of doing a free release, but I've done many of those already in the past. What else? Creating yet another guide how to develop maps in browedit from the ground up? Hm, we already have several amazing ones that effectively cover everything. What if I give you something different? Something - more like a neat little trick - that I've figured out through sheer exploration about two years ago. And what's that, precisely? As the title implies: Mapping through hexing. Over-hauling existing maps, without having to touch browedit. Also- This post might seem long, but rest assured it is super easy. The screenshots simply take up a lot of space. Before we start..... What is hexing? I could go the extra mile and explain it in my own words, but rAthena's GitHub gives an informative description what hexing is. As most of you may know, experts have developed tools with an user-friendly interface to make client hexing - AKA 'diffing' - even easier for us, however what the majority does not know is that hexing isn't specifically limited to .exe modifications and can be applied to many different file extensions- RO map files and models among them. Having that said, I think you have an idea in which direction I'll be heading. Okay, before anything else... I need to state that this method is recommendable to set the base design. You can in theory over-haul your entire map this way, but I highly encourage it to only be done with the repetitive textures and models (such as trees, bushes, buildings). Preferably, your map uses custom textures/models, they're easier to memorize (and thus replace) than the official gibberish components. What are the pros and cons? Pros: Once you get the hang of this, you could save yourself a lot of valuable time and make fresh layouts rapidly. No need to generate (custom textured) models through the build-in browedit RSM editor tool. We'll take a different approach. Gats remain unaltered and models will remain facing the same way. Lastly - probably the main reason what I like about this - texture and model files from your previous design will be preserved and not over-written. New ones are created which are fetched from a different texture/model directory. After implementation the only thing that will be over-written are the map files themselves (which also means less heavy patches). Cons: While you don't have to, you will likely still want to open browedit for some finishing touches. You can easily slip up and corrupt your map with a single typo. Back things up and be focused when you get to step 3! What will we need? GRF Tool (i.e GRF Editor). Hex Editor (i.e XVI32). Image Editing Software (i.e Photoshop). A custom map - seasonal/holiday themed is preferred, but not necessary. Basic ~ moderate client-side & browedit knowledge. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Now, since we've got all that covered... Let's begin! For this guide, we're going to use my Christmas Prontera (screenshot below) map as sample, and turn it into a Spring Prontera (screenshot at the bottom of the post). - Files - We're going to need to locate the map and its contents that we're going to edit. So let's do that, here are the resources... Step #1 - Copying & Renaming What you need to do first, is go back to the main directory and copy the entire 'Christmas Pront' directory. Paste it and rename it - in this case - 'Spring Pront'. If you've done this correctly, you should now have two directories. Spring Pront and Christmas Pront, both containing files of Christmas Pront. Open the 'Spring Pront' folder and begin re-naming all the files that still contain an abbreviation of the Christmas Prontera layout. Keep it simple for yourself. For example, I recommend replacing the 'chr' and make it 'spr', like this: Note: If there's a lot to edit, consider pulling up a notepad and writing down the old texture/model/directory names and the new ones next to it. I'm telling you this, because you're going to need to check back to the old names later. Better safe than sorry. "Why does a snow texture display 'spr_gras?" - I know, it doesn't make sense yet. Disregard, you'll understand in step #2. "Can the abbreviations I choose exceed the amount of characters that the original files use? (i.e spring_grass instead of spr_gras)" - It probably could with additional steps but...Let's not for now, okay? If you've done everything as per tutorial, you will have no texture, model or directory left anymore including 'chr' or 'Christ'. Double-check in order to confirm. Step #2 - The Artsy Stuff Got a graphic artist on your team? Lucky you- because then you can simply skip this (most time-consuming) step and instruct your artist to present you with something appealing. But we're not going to do that, are we? No, we're going to pretend you're a solo developer. Go to google images and look for a square texture that you wish to replace the snow texture with. Since this is a spring themed map, I went with something green and flowery. Admittedly though, I wasn't too fond of the original image I chose because it seemed a little too crowed/clustered(?) and the borders didn't align, so I decided to look for a plain grass image and combine it with the initial flowery tile of my choice. Still a lil clustered but better. Here's the result: Okay so clearly this isn't a Photoshop guide - my Photoshop skills are far from perfect - but I think you get the idea. ;-; Seamless images are the best, however it isn't always possible to find them. Fear not, young grasshopper- You need not be an expert in Photoshop but at the very least try to edit the texture sufficiently (with the eraser tool on the top layer) for the borders to have a relatively smooth over-flow. Needless to say, if flowers are being cut off at the border of a texture, it does not exactly look attractive. Done? Resize the image(s) to 256x256 and save as 24 bit bmp. Do this with all the textures you've redesigned, your texture directory should somewhat look like this: Again, this might take a while if you're doing everything alone and aren't that familiar with Photoshop. Note: spr_tree3~5 are tga files, but they have been adjusted as well. Step #3 - Hex It! This step is the most technical one and you'll need to look back every now and then to your other layout's textures and models - in this case my Christmas Pront - as name replacement reference. Please be aware that you can screw up easily here! Yes, it's easy but you've gotta pay attention! Double check everything you do and make sure you don't typo anything or miss anything out. Map Files Let's do these first. Boot your Hex Editor software and locate 'prontera.gnd' in your 'Spring Prontera' directory. Access the replacement feature, in XVI32's case: Search > Replace... What we're going to do is ensure the .gnd file reads the new textures, alright? We don't want the map files looking for the Christmas Pront textures/models anymore because this isn't going to be a Christmas Pront. ? Replaced them all? Great. Do the exact same for the models with the .rsw file: 158 entries. Pretty sweet, right? Model Files We're almost done! The last step will be hexing the models. Open them 1 by 1 in your Hex Editor software like you did with the map files and adjust the entries accordingly so the models are no longer searching for the incorrect texture files. Like this... And that's.... basically it. To see if you err'd anywhere, just open GRF Editor and put all the resources into it. If done correctly you'll see that your map and model files have adapted to your edits made through hexing. What was previously snow-covered, now returns something else entirely. Take this lovely flowery tree for example... ? Some of you may wonder- "How is this different than just regular (existent) texture replacement/recoloring? The answer is, exactly that. You're not replacing or changing the original texture/model resources at all. Quite the contrary- You're preserving your previous theme, all while generating an entire new theme with separate contents and directories that are being read. Convenient to server owners, too. No more messing around with different texture and model directories, worrying about if you might've missed something out when adding/removing files with the patcher. Using this methods, when the time comes where you want/need to switch theme, simply patch in the new map files (prontera.rsw and prontera.gnd) and you're good to go (unless if you've made gat edits of course- in which case you'll need to add the prontera.gat as well!). Needless to say, for the first-time implementation, you do need to include all the texture/model components. But that's obvious. And now, the final result? This is how Prontera will look like~ We went from winter wonderland to a refreshing and colorful spring design~ Fair enough- you'll still see the occasional wintry lantern, and the center higher up still has a giant pine tree, fine. Light-maps intensity need to be re-considered, too. But for the most part? Your map is about 3/4 done. What's left is just the small details that will likely only take you an hour or two at most to wrap up. ? Well, I hope this makes the life easier for some of you! ♥
    1 point
  4. if(BaseLevel < 200) { mes "You need to be at least lvl 200."; close; } mes "Hi, i see you are lvl 200!"; with job if(JobLevel < 200)
    1 point
  5. if you want to add more item requirements countitem(512) >= 500 || countitem(513) >= 500 and so on.. //==============================================================================// //= Script Release : Job Changer + Max Leveler [ Version 1.5 ] //==================================By==========================================// //= ManiacSociety //==============================================================================// //= Idea Came From : ManiacSociety //= Helper : Emistry & Kenpachi //==============================================================================// //= D E S C R I P T I O N S //==============================================================================// // -- 1. Character can choose a Job which he like to be. // -- 2. This NPC only have 1 Time Usage. // If it is set to Account Based then that account can use 1 times. // If it is set to Character Based then all new character can use 1 times. // -- 3. Complete skills / Skill Points will be given if it is set to be. // -- 4. Base Level and Job Level will be given upon Job Change. //==============================================================================// //= V E R S I O N S //==============================================================================// // -- [ 1.5 ] : Added Configuration for Account Based / Character Based Settings // -- [ 1.4 ] : Added Baby Classes + 3rd Job Classes. // -- [ 1.3 ] : Added Configuration Option , 4 Announce Option , Informations. // -- [ 1.2 ] : Simplified Scripts + Shorten the Scripts. // -- [ 1.1 ] : Added New Job Change Option. // -- [ 1.0 ] : Simple Login Auto Max Level + Job Changer. //==============================================================================// //= R U L E S //==============================================================================// // -- 1. Do not use for exchanging purpose. // -- 2. Do not claim it as yours. // -- 3. Do not change or remove the credits. // -- 4. Do not sell the script in order to get paid. // -- 5. Do not re-sharing upon modified without permission. //==============================================================================// -- Update By Krane //==============================================================================// prontera,153,189,5 script Job Changer2 620,{ //OnPCLoginEvent: // -- Configuration Option set .npcname$,"[ ^0000FF Class Helper ^000000 ]"; set .InfoMenu,0; // Classes Informations Option [ 0 - Disable / 1 - Enable ] set .1stClassMenu,0; // First Job Class Option [ 0 - Disable / 1 - Enable ] set .2ndClassMenu,0; // Second Job Class Option [ 0 - Disable / 1 - Enable ] set .High1stClassMenu,0; // High 1st Class Option [ 0 - Disable / 1 - Enable ] set .Trans2ndClassMenu,0; // Transcendent Class Option [ 0 - Disable / 1 - Enable ] set .Trans3rdClassMenu,1; // Third Job Class Option [ 0 - Disable / 1 - Enable ] set .ExpandedClassMenu,0; // Expanded Class Option [ 0 - Disable / 1 - Enable ] set .BabyClassMenu,0; // Baby Job Class Option [ 0 - Disable / 1 - Enable ] set .Baby3rdClassMenu,0; // Baby Third Job Class Option [ 0 - Disable / 1 - Enable ] set .Allskills,1; // Complete Skills Option [ 0 - Disable / 1 - Enable ] // -- Usable for Only 1 Time set .Based,1; // [ 0 - Account Based / 1 - Character Based ] if( ClassHelper == 1 || #ClassHelper == 1 ) end; Main_Menu: mes .npcname$; mes "I am the Job Class Helper..."; mes "I am here to help you."; mes " ^FF0000________________________________^000000"; mes "Do you wish to become Stronger ?"; mes " ^FF0000________________________________^000000"; next; mes .npcname$; mes "Do you admire those who have a great power ? Do you wish to become a part of them ? If yes , then which classes that you admire the most ?"; next; if( BaseLevel >= 200 ){ }else{ mes "Sorry you need to reach level 200"; close; } switch(select(( .InfoMenu == 0 )?"":"^4EEE94Classes Information^000000", ( .1stClassMenu == 0 )?"":"^0000FFFirst Job Classes^000000", ( .2ndClassMenu == 0 )?"":"^0000FFSecond Job Classes^000000", ( .High1stClassMenu == 0 )?"":"^0000FFHigh First Job Classes^000000", ( .Trans2ndClassMenu == 0 )?"":"^0000FFTranscendent Job Classes^000000", ( .Trans3rdClassMenu == 0 )?"":"^0000FFThird Job Classes^000000", ( .ExpandedClassMenu == 0 )?"":"^0000FFExpanded Job Classes^000000", ( .BabyClassMenu == 0 )?"":"^0000FFBaby Normal Job Classes^000000", ( .Baby3rdClassMenu == 0 )?"":"^0000FFBaby Third Job Classes^000000", "^FF0000Sorry, i admire nobody....^000000")) { Case 1: goto Classes_info; Case 2: goto FirstJob_Classes; Case 3: goto SecondJob_Classes; Case 4: goto HighFirstJob_Classes; Case 5: goto TransSecondJob_Classes; Case 6: goto TransThirdJob_Classes; Case 7: goto ExpandedJob_Classes; Case 8: goto BabyJob_Classes; Case 9: goto BabyThirdJob_Classes; Case 10: close; } FirstJob_Classes: mes .npcname$; mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes."; next; switch(select("^76EE00Swordman^000000", "^76EE00Magician^000000", "^76EE00Archer^000000", "^76EE00Acolyte^000000", "^76EE00Merchant^000000", "^76EE00Thief^000000", "^FF0000Back^000000")) { // --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>; Case 1: callsub Job_Changing,1,99,50,60,"All"; Case 2: callsub Job_Changing,2,99,50,60,"All"; Case 3: callsub Job_Changing,3,99,50,60,"All"; Case 4: callsub Job_Changing,4,99,50,60,"All"; Case 5: callsub Job_Changing,5,99,50,60,"All"; Case 6: callsub Job_Changing,6,99,50,60,"All"; Case 7: goto Main_Menu; } HighFirstJob_Classes: mes .npcname$; mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes."; next; switch(select("^76EE00High Swordman^000000", "^76EE00High Magician^000000", "^76EE00High Archer^000000", "^76EE00High Acolyte^000000", "^76EE00High Merchant^000000", "^76EE00High Thief^000000", "^FF0000Back^000000")) { // --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>; Case 1: callsub Job_Changing,4002,99,50,60,"All"; Case 2: callsub Job_Changing,4003,99,50,60,"All"; Case 3: callsub Job_Changing,4004,99,50,60,"All"; Case 4: callsub Job_Changing,4005,99,50,60,"All"; Case 5: callsub Job_Changing,4006,99,50,60,"All"; Case 6: callsub Job_Changing,4007,99,50,60,"All"; Case 7: goto Main_Menu; } SecondJob_Classes: mes .npcname$; mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes."; next; switch(select("^76EE00Knight^000000", "^76EE00Priest^000000", "^76EE00Wizard^000000", "^76EE00Blacksmith^000000", "^76EE00Hunter^000000", "^76EE00Assassin^000000", "^76EE00Crusader^000000", "^76EE00Monk^000000", "^76EE00Sage^000000", "^76EE00Rogue^000000", "^76EE00Alchemist^000000", ( Sex == 0 )?"":"^76EE00Dancer^000000", ( Sex == 1 )?"":"^76EE00Bard^000000", "^FF0000Back^000000")) { // --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>; Case 1: callsub Job_Changing,7,99,50,110,"All"; Case 2: callsub Job_Changing,8,99,50,110,"All"; Case 3: callsub Job_Changing,9,99,50,110,"All"; Case 4: callsub Job_Changing,10,99,50,110,"All"; Case 5: callsub Job_Changing,11,99,50,110,"All"; Case 6: callsub Job_Changing,12,99,50,110,"All"; Case 7: callsub Job_Changing,14,99,50,110,"All"; Case 8: callsub Job_Changing,15,99,50,110,"All"; Case 9: callsub Job_Changing,16,99,50,110,"All"; Case 10: callsub Job_Changing,17,99,50,110,"All"; Case 11: callsub Job_Changing,18,99,50,110,"All"; Case 12: callsub Job_Changing,20,99,50,110,"All"; Case 13: callsub Job_Changing,19,99,50,110,"All"; Case 14: goto Main_Menu; } TransSecondJob_Classes: mes .npcname$; mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes."; next; switch(select("^76EE00Lord Knight^000000", "^76EE00High Priest^000000", "^76EE00High Wizard^000000", "^76EE00Whitesmith^000000", "^76EE00Sniper^000000", "^76EE00Assassin Cross^000000", "^76EE00Paladin^000000", "^76EE00Champion^000000", "^76EE00Professor^000000", "^76EE00Stalker^000000", "^76EE00Creator^000000", ( Sex == 0 )?"":"^76EE00Gypsy^000000", ( Sex == 1 )?"":"^76EE00Clown^000000", "^FF0000Back^000000")) { // --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>; Case 1: callsub Job_Changing,4008,255,120,130,"All"; Case 2: callsub Job_Changing,4009,255,120,130,"All"; Case 3: callsub Job_Changing,4010,255,120,130,"All"; Case 4: callsub Job_Changing,4011,255,120,130,"All"; Case 5: callsub Job_Changing,4012,255,120,130,"All"; Case 6: callsub Job_Changing,4013,255,120,130,"All"; Case 7: callsub Job_Changing,4015,255,120,130,"All"; Case 8: callsub Job_Changing,4016,255,120,130,"All"; Case 9: callsub Job_Changing,4017,255,120,130,"All"; Case 10: callsub Job_Changing,4018,255,120,130,"All"; Case 11: callsub Job_Changing,4019,255,120,130,"All"; Case 12: callsub Job_Changing,4021,255,120,130,"All"; Case 13: callsub Job_Changing,4020,255,120,130,"All"; Case 14: goto Main_Menu; } TransThirdJob_Classes: mes .npcname$; mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes."; next; if(countitem(512) >= 500){ }else{ mes "Sorry you need 500 Apple to change 3rd job class"; close; } switch(select("^76EE00Rune Knight^000000", "^76EE00Warlock^000000", "^76EE00Ranger^000000", "^76EE00Arch Bishop^000000", "^76EE00Mechanic^000000", "^76EE00Guillotine Cross^000000", "^76EE00Royal Guard^000000", "^76EE00Sorcerer^000000", ( Sex == 0 )?"":"^76EE00Wanderer^000000", ( Sex == 1 )?"":"^76EE00Minstrel^000000", "^76EE00Shura^000000", "^76EE00Genetic^000000", "^76EE00Shadow Chaser^000000", "^FF0000Back^000000")) { // --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>; Case 1: callsub Job_Changing,4060,99,70,200,"All"; Case 2: callsub Job_Changing,4061,99,70,200,"All"; Case 3: callsub Job_Changing,4062,99,70,200,"All"; Case 4: callsub Job_Changing,4063,99,70,200,"All"; Case 5: callsub Job_Changing,4064,99,70,200,"All"; Case 6: callsub Job_Changing,4065,99,70,200,"All"; Case 7: callsub Job_Changing,4073,99,70,200,"All"; Case 8: callsub Job_Changing,4074,99,70,200,"All"; Case 9: callsub Job_Changing,4076,99,70,200,"All"; Case 10: callsub Job_Changing,4075,70,70,200,"All"; Case 11: callsub Job_Changing,4077,70,70,200,"All"; Case 12: callsub Job_Changing,4078,70,70,200,"All"; Case 13: callsub Job_Changing,4079,70,70,200,"All"; Case 14: goto Main_Menu; } ExpandedJob_Classes: mes .npcname$; mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes."; next; switch(select("^76EE00Gunslinger^000000", "^76EE00Ninja^000000", "^76EE00Star Gladiator^000000", "^76EE00Soul Linker^000000", "^FF0000Back^000000")) { // --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>; Case 1: callsub Job_Changing,24,255,120,600,"All"; Case 2: callsub Job_Changing,25,255,120,60,"All"; Case 3: callsub Job_Changing,4047,255,120,110,"All"; Case 4: callsub Job_Changing,4049,255,120,110,"All"; Case 5: goto Main_Menu; } BabyJob_Classes: mes .npcname$; mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes."; next; switch(select("^76EE00Baby Swordman^000000", "^76EE00Baby Magician^000000", "^76EE00Baby Archer^000000", "^76EE00Baby Acolyte^000000", "^76EE00Baby Merchant^000000", "^76EE00Baby Thief^000000", "^76EE00Baby Knight^000000", "^76EE00Baby Priest^000000", "^76EE00Baby Wizard^000000", "^76EE00Baby Blacksmith^000000", "^76EE00Baby Hunter^000000", "^76EE00Baby Assassin^000000", "^76EE00Baby Crusader^000000", "^76EE00Baby Monk^000000", "^76EE00Baby Sage^000000", "^76EE00Baby Rogue^000000", "^76EE00Baby Alchemist^000000", ( Sex == 0 )?"":"^76EE00Baby Dancer^000000", ( Sex == 1 )?"":"^76EE00Baby Bard^000000", "^76EE00Baby Baby^000000", "^FF0000Back^000000")) { // --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>; Case 1: callsub Job_Changing,4024,99,50,60,"All"; Case 2: callsub Job_Changing,4025,99,50,60,"All"; Case 3: callsub Job_Changing,4026,99,50,60,"All"; Case 4: callsub Job_Changing,4027,99,50,60,"All"; Case 5: callsub Job_Changing,4028,99,50,60,"All"; Case 6: callsub Job_Changing,4029,99,50,60,"All"; Case 7: callsub Job_Changing,4030,99,50,110,"All"; Case 8: callsub Job_Changing,4031,99,50,110,"All"; Case 9: callsub Job_Changing,4032,99,50,110,"All"; Case 10: callsub Job_Changing,4033,99,50,110,"All"; Case 11: callsub Job_Changing,4034,99,50,110,"All"; Case 12: callsub Job_Changing,4035,99,50,110,"All"; Case 13: callsub Job_Changing,4037,99,50,110,"All"; Case 14: callsub Job_Changing,4038,99,50,110,"All"; Case 15: callsub Job_Changing,4039,99,50,110,"All"; Case 16: callsub Job_Changing,4040,99,50,110,"All"; Case 17: callsub Job_Changing,4041,99,50,110,"All"; Case 18: callsub Job_Changing,4043,99,50,110,"All"; Case 19: callsub Job_Changing,4042,99,50,110,"All"; Case 20: callsub Job_Changing,4045,99,50,110,"All"; Case 21: goto Main_Menu; } BabyThirdJob_Classes: mes .npcname$; mes "So, i give you a chance now. Which Classes will you choose to join ? Tell me your desired Classes."; next; switch(select("^76EE00Baby Rune Knight^000000", "^76EE00Baby Warlock^000000", "^76EE00Baby Ranger^000000", "^76EE00Baby Arch Bishop^000000", "^76EE00Baby Mechanic^000000", "^76EE00Baby Guillotine Cross^000000", "^76EE00Baby Royal Guard^000000", "^76EE00Baby Sorcerer^000000", ( Sex == 0 )?"":"^76EE00Baby Wanderer^000000", ( Sex == 1 )?"":"^76EE00Baby Minstrel^000000", "^76EE00Baby Shura^000000", "^76EE00Baby Genetic^000000", "^76EE00Baby Shadow Chaser^000000", "^FF0000Back^000000")) { // --- callsub Job_Changing,<JOB>,<BaseLv>,<JobLv>,<Skill>,<Announce>; Case 1: callsub Job_Changing,4096,99,70,200,"All"; Case 2: callsub Job_Changing,4097,99,70,200,"All"; Case 3: callsub Job_Changing,4098,99,70,200,"All"; Case 4: callsub Job_Changing,4099,99,70,200,"All"; Case 5: callsub Job_Changing,4100,99,70,200,"All"; Case 6: callsub Job_Changing,4101,99,70,200,"All"; Case 7: callsub Job_Changing,4102,99,70,200,"All"; Case 8: callsub Job_Changing,4103,99,70,200,"All"; Case 9: callsub Job_Changing,4105,99,70,200,"All"; Case 10: callsub Job_Changing,4104,99,70,200,"All"; Case 11: callsub Job_Changing,4106,99,70,200,"All"; Case 12: callsub Job_Changing,4107,99,70,200,"All"; Case 13: callsub Job_Changing,4108,99,70,200,"All"; Case 14: goto Main_Menu; } Job_Changing: mes .npcname$; mes "You are now a part of ^FF0000"+jobname(getarg(0))+"^000000."; if (compare(getarg(4),"All")){ announce "[ "+strcharinfo(0)+" ] has changed to [ "+jobname(getarg(0))+" ].",bc_all,0x76EE00; } if (compare(getarg(4),"Map")){ announce "[ "+strcharinfo(0)+" ] has changed to [ "+jobname(getarg(0))+" ].",bc_map,0x76EE00; } if (compare(getarg(4),"Area")){ announce "[ "+strcharinfo(0)+" ] has changed to [ "+jobname(getarg(0))+" ].",bc_area,0x76EE00; } if (compare(getarg(4),"Self")){ announce "[ "+strcharinfo(0)+" ] has changed to [ "+jobname(getarg(0))+" ].",bc_self,0x76EE00; } jobchange getarg(0); set BaseLevel,getarg(1); set JobLevel,getarg(2); ResetSkill; ResetStatus; set SkillPoint,getarg(3); if ( .Allskills == 1 ){ atcommand "@allskills"; set SkillPoint,0; } percentheal 100,100; if ( .Based == 0 ){ set #ClassHelper,1; } if ( .Based == 1 ){ set ClassHelper,1; } close; Classes_info: mes .npcname$; mes "=====[^76EE00 Swordman Classes ^000000]====="; mes " ^FF0000________________________________^000000"; mes "^4EEE94Description :^000000"; mes "Enthusiastic skills in sword fighting is a definite attraction to all teenagers. Easy to control and master character enables most players to be a great player."; mes " ^FF0000________________________________^000000"; next; mes .npcname$; mes "=====[^76EE00 Archer Classes ^000000]====="; mes " ^FF0000________________________________^000000"; mes "^4EEE94Description :^000000"; mes "Long ranged attack ability and special techniques of archers in defeating enemy often lure players to try this."; mes " ^FF0000________________________________^000000"; next; mes .npcname$; mes "=====[^76EE00 Mage Classes ^000000]====="; mes " ^FF0000________________________________^000000"; mes "^4EEE94Description :^000000"; mes "Fascinating element techniques involvement of nature in its abilities is truly amazing with their series of undefeatable magics."; mes " ^FF0000________________________________^000000"; next; mes .npcname$; mes "=====[^76EE00 Thief Classes ^000000]====="; mes " ^FF0000________________________________^000000"; mes "^4EEE94Description :^000000"; mes "Poisoning and dodging abilities will defeat most of the enemy. Maximum defensive and offensive ability caused this character to fearsome one."; mes " ^FF0000________________________________^000000"; next; mes .npcname$; mes "=====[^76EE00 Acolyte Classes ^000000]====="; mes " ^FF0000________________________________^000000"; mes "^4EEE94Description :^000000"; mes "A supportive character, most of the skills like helping will benefit to teammates who lead to teammates act like a terminator."; mes " ^FF0000________________________________^000000"; next; mes .npcname$; mes "=====[^76EE00 Merchant Classes ^000000]====="; mes " ^FF0000________________________________^000000"; mes "^4EEE94Description :^000000"; mes "Involving communication with other players that emphasizes on battles, intelligence in business dealing. His versatility made him must not be look down."; mes " ^FF0000________________________________^000000"; next; mes .npcname$; mes "=====[^76EE00 Super Novice ^000000]====="; mes " ^FF0000________________________________^000000"; mes "^4EEE94Description :^000000"; mes "A job who are Advanced after Novice Class. It look alike like a Novice but it is not. Beside that, it can learn most of the skills for all 1st Job Class."; mes " ^FF0000________________________________^000000"; next; mes .npcname$; mes "=====[^76EE00 Gunslinger ^000000]====="; mes " ^FF0000________________________________^000000"; mes "^4EEE94Description :^000000"; mes "The only Job class in RO who are using Gun as weapon. If are you a Gun Lover , there is no doubt you will choose this Job."; mes " ^FF0000________________________________^000000"; next; mes .npcname$; mes "=====[^76EE00 Ninja ^000000]====="; mes " ^FF0000________________________________^000000"; mes "^4EEE94Description :^000000"; mes "A mysterious Job Class , who alway processing Ancient Spells , look alike with Mage but not mage , good in PK , can evade very well during PK."; mes " ^FF0000________________________________^000000"; next; mes .npcname$; mes "=====[^76EE00 Taekwon ^000000]====="; mes " ^FF0000________________________________^000000"; mes "^4EEE94Description :^000000"; mes "Just like the name has mentioned. The only class in RO who are not using any Weapon. Attack enemy using barehand and foots. "; mes " ^FF0000________________________________^000000"; next; mes .npcname$; mes "=====[^76EE00 Star Gladiator ^000000]====="; mes " ^FF0000________________________________^000000"; mes "^4EEE94Description :^000000"; mes "A class who can use the power of the Sun / Star / Moon. By processing the power of Universe to gain a stronger Power."; mes " ^FF0000________________________________^000000"; next; mes .npcname$; mes "=====[^76EE00 Soul Linker ^000000]====="; mes " ^FF0000________________________________^000000"; mes "^4EEE94Description :^000000"; mes "Class that work like a Shaman, who able to recalling the soul of the dead from the underworld to Boost other class ability."; mes " ^FF0000________________________________^000000"; next; goto Main_Menu; }
    1 point
  6. View File Event Consumables (a Telma patch update) So, I decided to update this patch : However, I didnt realize that this is already available just right after I finished updating it from this : But... I gonna release this anyways... But made some modifications... So, what I did was I made my own consumable named 'Event'. These consumables can only be used on maps with "event_consume" mapflags. This patch is NOT to be diffed if you have Extended BG Pre-installed or If you are planning to install it in the future ESPECIALLY IF YOU DON'T KNOW A SINGLE THING ON SRC. This is likely for Servers who dont/wont have the Extended BG but wants to have this feature. Unless you know what you're doing. You can actually add this to Extended BG by Easycore. I intentionally coded it similarly and avoided conflicts to it for people who wants to add this but have Extended BG installed in their servers. Enjoy! I hope this will be to any use of any of you. Compatibility is your responsibility. No backward compatibility support. Submitter Mabuhay Submitted 11/22/2019 Category Source Modifications Video Content Author Brian, AnubisK, xSoul, Easycore, Mabuhay  
    1 point
  7. OMG!! ;w; I was precisely looking for something like this, thank you! I'm going to add this to the Browedit discord's links section
    1 point
  8. Tested and I can confirm to this.. This may not be a solution but more of a prevention for future incidents. Tho untested, this should work. Go to atcommand.cpp. Look for this : ACMD_FUNC(autotrade) { nullpo_retr(-1, sd); if( map_getmapflag(sd->bl.m, MF_AUTOTRADE) != battle_config.autotrade_mapflag ) { clif_displaymessage(fd, msg_txt(sd,1179)); // Autotrade is not allowed on this map. return -1; } if( pc_isdead(sd) ) { clif_displaymessage(fd, msg_txt(sd,1180)); // You cannot autotrade when dead. return -1; } if( !sd->state.vending && !sd->state.buyingstore ) { //check if player is vending or buying clif_displaymessage(fd, msg_txt(sd,549)); // "You should have a shop open to use @autotrade." return -1; } Place this under : if (sd->state.storage_flag == 1) { clif_displaymessage(fd, "Close your storage before using @autotrade."); return -1; } if (sd->state.storage_flag == 2) { clif_displaymessage(fd, "Close your guild storage before using @autotrade."); return -1; } if (sd->state.storage_flag == 3) { clif_displaymessage(fd, "Close your storage before using @autotrade."); return -1; }
    1 point
  9. storm_2.tga cloud11.tga and ring_blue The top 2 are probably good to update and change without touching anything else( I dont know all the third jobs by heart ) But that ring_blue will screw tons of things up, including your basic attack animation when you hit a monster... deluge... tons and caution, once you start changing these targa files... your entire client will glitch out and youll have to redo all the alpha_ center top down etc etc . tga .... so next time you cast warp portal youll see nothing ... applies to alot of things, not sure which file exactly triggers this but once i started playing with them i had to manually fix alot of things
    1 point
  10. Update to Version 2.0.1 * update bulmaCSS version * update jquery version * center woe schedule * footer: change to yellow text for bold sentences * change all CDN css and js to local * fix delete button will remove all notification class
    1 point
  11. I prepared NEMO's patch "ChangeDisplayCharDelDelay" and @4144 added it to the fork: https://gitlab.com/4144/Nemo Compatible EXE versions: http://nemo.herc.ws/patches/ChangeDisplayCharDelDelay/#success-clients
    1 point
  12. Hi guys For 2 weeks I try to figure out how to change item name e.g. red potion to bad potion I want to translate it to Arabic in idnum table in old client it was very easy but in new client(20151104) when I change any thing in Ro/system/iteminfi.lub/lua every item in game become apple or unknown. My question is how to change text in itemonfo.lub . Thank in advance
    1 point
  13. Hi, I'm changing emulator and using rathena, I'd like to know where I can get a data + system folder that is compatible with this version of rathena, I saw it much more updated than the other emulators, but my current date + system Is quite outdated, missing mob, items and etc ... Can someone forward me to where they have a file for dowload? Because I could not find it.
    1 point
×
×
  • Create New...