-
Posts
905 -
Joined
-
Last visited
-
Days Won
26
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Everything posted by Playtester
-
In the example data above, you only have the exp values for the first few levels, be aware that above was just an extract of the full line. The full list for exp requirements up to base level 1000 and job level 255 you can find in import-tmpl directly if you update your git. Or just see here: https://github.com/rathena/rathena/blob/master/db/import-tmpl/job_exp.txt As you can see that file has up to 1000 columns and ends with: "2143210000,2145210000,2147210000" (pre-renewal, base exp) You need that one (and the one for job exp) Only thing you need to do is take that line, uncomment it, put the max level you want and replace "x" by the list job IDs you want it to work for. When done place it into import. (Of course you can always just write your own exp requirements by using Excel or Open Office calc.)
-
JobDBRedesign: rAthena can add this commit?
Playtester replied to OmarAcero's question in Source Requests
It's super easy to change values in CSV format. Just open it with Open Office Calc, split the table so you always see the headlines and then just put the values you want. Takes me maybe a few seconds. -
Hmmm it's kind of similar to the vellum weapons except they deal a fixed percentual damage amount and you want it to be a fixed number. You can look into its implementation and adjust it to your liking: battle.c void battle_vanish(struct map_session_data *sd, struct block_list *target, struct Damage *wd) Take a look into that function for some inspiration. If you don't use the bonus at all e.g. because you don't have vellum weapons in the first place, then it's easiest to just recode the function so it does absolute damage instead of percentual. If you need both, you'll have to implement a bonus that works similar to this one.
-
e.g. open the project in Visual Studio, then right click on the project and select something along the lines of "Recreate all". Not sure what you mean with reboot, but if you just mean close the server and start it again, it just won't change anything. It's still the same .exe file but you want a new one.
-
JobDBRedesign: rAthena can add this commit?
Playtester replied to OmarAcero's question in Source Requests
I'm against it. The Herc format is horrible, you can't load it into a spreadsheet program. =/ The rAthena format is much easier to customize for me. -
Try with official stats that are not above 99. Since you aren't using official limits for pre-renewal, script might not work reliably. Not really an issue with the server itself.
-
Then just use rows available in db/import-tmpl/job_exp.txt. Put it into your db/import folder, if it's not there already. Then find the lines saying pre-renewal: //Base - Pre-renewal 1000 Levels //99,x,0,10,18,28,40,85,123,168,220, Uncomment that line, put your required level and replace the "x" with the list of jobs you want to have increased max level. Usually you'd want the transcendent jobs to have it: //Base - Pre-renewal 1000 Levels 255,4001:4002:4003:4004:4005:4006:4007:4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,0,10,18,28,40,85,123,168,220, Do something similar for job exp. Done.
-
The exp tables provided by default now only support the official levels as this makes it easier to maintain them. Rather than editing those, use db/import/job_exp.txt and set up your customized exp tables there. It's fairly easy to do with a spreadsheet program like open office calc, but if you don't feel like you're up to that you can also use the provided samples in db/import-tmpl/job_exp.txt. Usually it's better if you write your own exp tables simply because there are a lot of decisions that need to be done like how steep the exp curve should be, etc. Make sure you don't exceed 4.2 billion, though!
-
To solve this: 1. Start the game. 2. Log into map-server. 3. Start any program that requires administrator rights and confirm administrator rights. 4. Close the program again. 5. Switch back to RO. 6. ??? 7. Profit.
-
Depends on what trap. For ankle snare for example you can simply add a check for the skill in skill_block_check in skill.c, just like it already blocks teleport: switch (type) { case SC_ANKLE: if (skill_id == AL_TELEPORT) return 1; break; For Statis, Kagehumi and Bite, there are already INF3 values in the skill_db, so you can just edit those there. For anything else you have to take a look at status_check_skilluse in status.c, which also calls skill_block_check: if (!flag && ( // Blocked only from using the skill (stuff like autospell may still go through sc->cant.cast || (sc->data[SC_BASILICA] && (sc->data[SC_BASILICA]->val4 != src->id || skill_id != HP_BASILICA)) || // Only Basilica caster that can cast, and only Basilica to cancel it (sc->data[SC_MARIONETTE] && skill_id != CG_MARIONETTE) || // Only skill you can use is marionette again to cancel it (sc->data[SC_MARIONETTE2] && skill_id == CG_MARIONETTE) || // Cannot use marionette if you are being buffed by another (sc->data[SC_ANKLE] && skill_block_check(src, SC_ANKLE, skill_id)) || (sc->data[SC_STASIS] && skill_block_check(src, SC_STASIS, skill_id)) || (sc->data[SC_BITE] && skill_block_check(src, SC_BITE, skill_id)) || (sc->data[SC_KAGEHUMI] && skill_block_check(src, SC_KAGEHUMI, skill_id)) )) return false; // Skill blocking. if ( (sc->data[SC_VOLCANO] && skill_id == WZ_ICEWALL) || (sc->data[SC_ROKISWEIL] && skill_id != BD_ADAPTATION) || (sc->data[SC_HERMODE] && skill_get_inf(skill_id) & INF_SUPPORT_SKILL) || (sc->data[SC_NOCHAT] && sc->data[SC_NOCHAT]->val1&MANNER_NOSKILL) ) return false; The structure right now is pretty horrible and I really would like to improve in the future so it's easier to expand, but right now you have to add your checks here.
-
[Error]: Skill '%%%%' is undefined! skill.c:219::skill_chk
Playtester replied to edward817's question in Source Support
Well unless you tell us how to reproduce the issue I don't think anyone can help. ^^; See my reply above. -
HELP skil_damage_db & asura strike damage cap
Playtester replied to Lord Ganja's question in Source Support
Yeah I put it in the Knuckle Arrow issue because that's literary the only skill that uses tsd officially. I wanted to fix it yesterday but then realized fixing Knuckle Arrow will take too much time, so I gave up. ^^; -
HELP skil_damage_db & asura strike damage cap
Playtester replied to Lord Ganja's question in Source Support
Ok, there's actually a bug in that function, that's why it doesn't work. static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv) { struct map_session_data *sd = BL_CAST(BL_PC, src); struct map_session_data *tsd = BL_CAST(BL_PC, target); Put this at the top of the function to fix it. -
HELP skil_damage_db & asura strike damage cap
Playtester replied to Lord Ganja's question in Source Support
In that code you already cap it before you do the division, but the halving damage for players should work. Yes, the marked button lets you run the map-server. Breakpoints can be placed by clicking on the small grey bar left of the source code. -
HELP skil_damage_db & asura strike damage cap
Playtester replied to Lord Ganja's question in Source Support
Not using visual studio? I just start it by pressing the green triangle button. =p And break you can put by just pressing on the left side of the window where the code is (a red dot appears). If your code is a bit different from you can also copy it in here. -
Please update your rAthena, it was bugged until a while ago: https://github.com/rathena/rathena/commit/307207ffeb65b5957f3fa37383907bcaa9ad96d2
-
HELP skil_damage_db & asura strike damage cap
Playtester replied to Lord Ganja's question in Source Support
Um, don't know how I should put it, but it's impossible that if(tsd) is true when the target is a monster. Because: struct map_session_data *tsd = BL_CAST(BL_PC, src); The cast is only done for BL_PC not BL_MOB. Not to mention that a mob has no map_session_data so it would just crash at that point if you tried that. if (tsd && tsd->weight) skillratio += 100 * tsd->weight / tsd->max_weight; It's also used for SL_KNUCKLEARROW already. =o Make sure you do a full a full recompile, removed that row in skill_damage_db.txt and restart the map server. When it still doesn't work, start the map-server via visual studio and put a breakpoint at that line to see what happens. -
HELP skil_damage_db & asura strike damage cap
Playtester replied to Lord Ganja's question in Source Support
That's what I already did in the example above. if(sd) = Source is a player if(tsd) = Target is a player Just put whatever damage code you want there. -
HELP skil_damage_db & asura strike damage cap
Playtester replied to Lord Ganja's question in Source Support
Just don't use skill_damage_db then. It's harder to reorganize it to be applied first than it is to just put whatever damage code you want for your server in battle.c. Basically you just want to half the damage for players but before you cap the damage, right? So in battle.c: case MO_EXTREMITYFIST: skillratio += 100 * (7 + sstatus->sp / 10); skillratio = min(500000,skillratio); //We stop at roughly 50k SP for overflow protection break;Just change it to e.g. case MO_EXTREMITYFIST: skillratio += 100 * (7 + sstatus->sp / 10); if (tsd) skillratio /= 2; //Half damage for players skillratio = min(500000,skillratio); //We stop at roughly 50k SP for overflow protection break; -
You need to update rAthena, it's been fixed already. https://github.com/rathena/rathena/commit/307207ffeb65b5957f3fa37383907bcaa9ad96d2
-
Got that one working fine with rA, the episode is off though it's at episode VIII. Not really, it's mostly pre-amatsu spawn. You can see it e.g. because there are no Hunter Flies in Geffen Tower 1 and fixed Mandragora and Flora spawns in GH Chivalry. Just the newer regions have some guessed spawns from higher episodes.
-
Get it from eAthena RC5:https://rathena.org/board/topic/61283-old-old-version-ro/ Might require some conversion to work with the current emulators, though.
-
If you want to make it depending on AGI then you need to increase the delay of all skills. If it's 0, it can't be reduced further. You set the delay in skill_cast_db.txt as said before, yes. For example if you give all skill 2000ms delay then at 0 agi, people could only use it every 2 seconds. But at 75 agi (assuming you don't change 150 being the max), people can use it every second. I already told you everything you need to know about it. You still didn't really tell me what your goal is though. You basically removed all the delay and are still saying it's too slow, but you can't reduce it below 0ms. It's impossible. Only way to make it faster is removing the animation from the client or using WPE hacks.
-
Well, the only skill that has a fixed aftercast delay of those skills is fingeroffensive: //-- MO_FINGEROFFENSIVE 267,1000,500,0:200:400:600:800,0,0,0 But you have already fixed that in your quote above by changing 500 to 0. You don't need to adjust anything else. It's 100% ASPD dependent then. The reason you can't spam these skills is because they a cast time, isn't it? It could also be that the client has a longer delay for them hardcoded, but then there isn't much you can do.
-
Did any items change much since launch? Just use the one currently there for pre-re I guess. Also, there's no episode 4 data available.