Jump to content

banhelba2019

Members
  • Content Count

    200
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by banhelba2019

  1. its exactly as i said but i dont believe we dont have a repository somewhere and that its just being sold
  2. so will you be able to get your own effects in beyond the modifiable .str files found in the official grf ?
  3. I like your outdoor maps, I dont really recognize the textures/models used in sanctum though... did you retexture them?
  4. Do we even have rebellion and ninja coded? As for the other 2 itd probably just be a matter of adding skill ids with a 2018/19 client , you have it all and dont know it really Then we'd have 4 empty jobs but still have the animations at least edit: Im done with work so ill probably take a look at these this month, if i can get a new client to work
  5. I had some time today to look over the rathena src Are you guys like fighting or something ? I mean i could probably write the same tutorial using the rathena stuff but what was the point of re writing it at all?
  6. Ok Your not stupid, but pretty annoying
  7. Im afraid to ask. . But are these for the forums?
  8. Plan D is skipping all my problems and not looking anymore lmao Still waiting for daddy to tell me its impossible also to your 1) yeah i think its too hard to manage that easily. . . Ive been doing this skill->attack(BF_MISC, src, src, bl, RK_IGNITIONBREAK, skill_lv, tick, dist); Among other things, and sure i can write something nice but its really shitty Which leads back to my problem of why cant i fit these 3rd skills in my trans/2nd/1st tab
  9. Yeah looks like ill need to go through skillinfo_f.lub thats probably the only reasonable place left to look Yeah but im trying to do something not RO related, and i wanna fit 3rd jobs into the 1/2nd tree, but it just refuses to go in those slots as the 1/2/trans skills refuse to fit in the 3rd slots (skilltreeview if u add ignition break to lord knight and switch to lord knight, you will still get a blank 3rd tab with ignition in the place you wanted it to be in the 2nd slot) Because. .. Sure i can add another skill but theres very little point when you can barely get special effects to look good on it, i can use specialeffect function but theres no point when i can just edit the existing skills the give the illusion of real skills instead of my work around of making damage DoT with misc damage 1, could do that but aoe skills are still wonky and cast on all targets, so even if i just use the BF_MAGIC function and just call ignition break, its still broken cause it casts on every target + it wont even cast if mobs arent in my vicinity so that just makes it look really ugly. . . so thats why im trying to edit an existing skill. rather then just making a new skill that does the same thing. specialeffects works rather well with non damaging skills though But if daddy cant fix this ill just have to use tab 1 + etc and go with plan d)
  10. screenshot your game trans or first job with third job skills in those tabs and ill count that
  11. When trying to add third job skills to the trans/2nd skill tree it just makes a spot in the third tab When you add third jobs through items the skills still get added to your ETC tab And when you try to add a trans/second skill to a third job it just adds it to the 2nd tab too. I would like to get them in my 2nd tab Any ideas?
  12. And my skill_db skill_db.conf
  13. And i guess youll be needing this too 2 links both the same, my english.grf https://www.mediafire.com/file/hhwu0555hwsc69n/english.grf/file http://www.filedropper.com/english_13
  14. Here ill even post my current code Just to be safe skill.c skill.h status.c status.h
  15. Also you can pm me on rathena forums same name if you have problems changing the maximum cause i already made it 50 and pretty sure the only line youll need to to tweak is the 2 parts that are c%25],tc.val2[c%25] these guys are shit
  16. Ok another thing i forgot to add, If you wanna increase the amount of cells you can target with the brnadishspear function you need to change these numbers void skill_jumpshot(struct block_list* src, struct block_list* bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag) { int c,n=49; uint8 dir; struct squareb tc; int x, y; nullpo_retv(bl); x = bl->x; y = bl->y; dir = map->calc_dir(src, x, y); skill->jumpshot_first(&tc,dir,x,y); skill->jumpshot_dir(&tc,dir,4); skill->area_temp[1] = bl->id; for(c=0;c<50;c++){ if(c==0||c==50) skill->jumpshot_dir(&tc,dir,-1); map->foreachincell(skill->area_sub, bl->m,tc.val1[c%25],tc.val2[c%25],BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1, skill->castend_damage_id); } } line 17 and 18 and 19 for(c=0;c<50;c++){ if(c==0||c==50) skill->jumpshot_dir(&tc,dir,-1); map->foreachincell(skill->area_sub, bl->m,tc.val1[c%25],tc.val2[c%25],BL_CHAR, Increase these numbers, However im not 100% about the c%25],tc.val2[c%25] . . .. I raised it, it works well for me so raise it if you get problems Line 3 int c,n=49; raise that to -1 of what you made in 17 ,18 so i put 49 cause i made my max 50. Ok void skill_jumpshot_dir (struct squareb* tc, uint8 dir, int are) { int c; nullpo_retv(tc); for( c = 0; c < 50; c++ ) { switch( dir ) { case 0: tc->val2[c]+=are; break; case 1: tc->val1[c]-=are; tc->val2[c]+=are; break; case 2: tc->val1[c]-=are; break; case 3: tc->val1[c]-=are; tc->val2[c]-=are; break; case 4: tc->val2[c]-=are; break; case 5: tc->val1[c]+=are; tc->val2[c]-=are; break; case 6: tc->val1[c]+=are; break; case 7: tc->val1[c]+=are; tc->val2[c]+=are; break; } } } Line 6 for( c = 0; c < 50; c++ ) { Raise this number to same as what you did at 17 Ok. . . Im just gonna grab 1 direction to show you this. . . tc->val1[0]=x; tc->val1[1]=x+1; tc->val1[2]=x-1; tc->val1[3]=x; tc->val1[4]=x+1; tc->val1[5]=x+1; tc->val1[6]=x; tc->val1[7]=x+1; tc->val1[8]=x-1; tc->val1[9]=x; tc->val1[10]=x+1; tc->val1[11]=x-1; tc->val1[12]=x; tc->val1[13]=x+1; tc->val1[14]=x-1; tc->val1[15]=x; tc->val1[16]=x+1; tc->val1[17]=x-1; tc->val2[0]=y; tc->val2[1]=y; tc->val2[2]=y; tc->val2[3]=y-1; tc->val2[4]=y-1; tc->val2[5]=y-1; tc->val2[6]=y-2; tc->val2[7]=y-2; tc->val2[8]=y-2; tc->val2[9]=y-3; tc->val2[10]=y-3; tc->val2[11]=y-3; tc->val2[12]=y-4; tc->val2[13]=y-4; tc->val2[14]=y-4; tc->val2[15]=y+1; tc->val2[16]=y+1; tc->val2[17]=y+1; I hope you can graps that tc->val1[0] and tc->val2[0] Are the first coordiantes so [1] and [1] go together [2] and [2] etc etc and finally struct squareb { int val1[50]; int val2[50]; }; Actually this im not 100% aswell because in skill.h they wrote a bit about this but. . . .So raise this, and then if you ever do have problems go to your....... Skill.h #define MAX_SQUARE_LAYOUT 5 // 11*11 Placement of a maximum unit #define MAX_SKILL_UNIT_COUNT ((MAX_SQUARE_LAYOUT*2+1)*(MAX_SQUARE_LAYOUT*2+1)) If you ever get problems your probably gonna have to tweak these numbers
  17. I would save if i were you cause your never gonna seee this posted again on the internet
  18. Also im working on a formula to apply effects, normally if u try to use specialeffects function. . . case AM_WATER: clif_specialeffect(src,54,1); clif_specialeffect(bl,208,AREA); sc_start(src,bl,SC_SOAKED,100,skill_lv,skill->get_time2(skill_id,skill_lv)); break; When you try to use this , if you kill the monster with the skill the effects wont even show and really makes it ugly so what i did is i turn it into a 1 damage MISC skill . . . skill.db { Id: 726 Name: "AM_HARVEST" Description: "Harvest" MaxLevel: 10 Range: 2 Hit: "BDT_SKILL" SkillType: { Place: true } SkillInfo: { IgnoreLandProtector: true AllowReproduce: true } AttackType: "Misc" Element: "Ele_Weapon" DamageType: { SplashArea: true IgnoreFlee: true } NumberOfHits: -3 AfterCastActDelay: { Lv1: 0 Lv2: 0 Lv3: 0 Lv4: 0 Lv5: 3000 } AfterCastWalkDelay: { Lv1: 2000 Lv2: 0 Lv3: 0 Lv4: 0 Lv5: 3000 } SkillData1: 1000 SkillData2: 50000 CoolDown: 0 Requirements: { SPCost: 15 } Unit: { Id: 0x86 Range: 1 Interval: 1000 Target: "Enemy" Flag: { UF_SKILL: true } } }, Anyways since the skill only deals 1 damage the effect will apply every time . . . . But what i did is i made a Status similar to burning (Burning makes numbers appear over your head, poison doesnt) . . . the status actually deals all my damage, so i can kill mobs using special effect funtion, with access to the 1000+ effects in your effects_doc. status.h Gotta declare your new SC add it at the bottom // Summoner SC_SUHIDE, SC_SU_STOOP, SC_SPRITEMABLE, SC_CATNIPPOWDER, SC_SV_ROOTTWIST, SC_BITESCAR, SC_ARCLOUSEDASH, SC_TUNAPARTY, SC_SHRIMP, // 650 SC_FRESHSHRIMP, SC_DRESS_UP, // Rodex SC_DAILYSENDMAILCNT, // Clan System SC_CLAN_INFO, SC_HARVESTED, In your status.c add_sc( AM_HARVEST , SC_HARVESTED ); this is where all the other skills are just look for SM_PROVOKE or something lol case SC_FOGWALL: case SC_FROSTMISTY: case SC_BURNING: case SC_HARVESTED: case SC_MARSHOFABYSS: place it here and here nullpo_retr(true, sc); if (sc->data[SC_REFRESH]) { if (type >= SC_COMMON_MIN && type <= SC_COMMON_MAX) // Confirmed. return true; // Immune to status ailements switch (type) { case SC_DEEP_SLEEP: case SC__CHAOS: case SC_BURNING: case SC_HARVESTED: case SC_STUN: case SC_SLEEP: case SC_CURSE: case SC_STONE: case SC_POISON: case SC_BLIND: case SC_SILENCE: case SC_BLOODING: and here } else if (sc->data[SC_INSPIRATION]) { if (type >= SC_COMMON_MIN && type <= SC_COMMON_MAX) return true; // Immune to status ailements switch (type) { case SC_POISON: case SC_BLIND: case SC_STUN: case SC_SILENCE: case SC__CHAOS: case SC_STONE: case SC_SLEEP: case SC_BLOODING: case SC_CURSE: case SC_HARVESTED: case SC_BURNING: case SC_FROSTMISTY: case SC_FREEZE: case SC_COLD: (Im actually not 100% on what OPT s do but i placed it here opt_flag = 1; switch(type) { case SC_STONE: case SC_FREEZE: case SC_STUN: case SC_SLEEP: case SC_BURNING: case SC_HARVESTED: case SC_WHITEIMPRISON: case SC_COLD: sc->opt1 = 0; break; Looking through this again i just realized i didnt use SC_BURNING but actually made it a poison lmao... but it works its up to you to test it and clean it and learn it........... this is just some random way to apply skill damage with ALL THE EFFECTS and make COMPLETLY NEW SKILLS case SC_POISON: if (st->hp <= max(st->max_hp / 10, sce->val4)) //Stop damaging after 25% HP left. break; FALLTHROUGH case SC_HARVESTED: case SC_DPOISON: if (--(sce->val3) > 0) { if (sc->data[SC_SLOWPOISON] != NULL) { sc_timer_next(1000 + tick, status->change_timer, bl->id, data); return 0; } if (sce->val2 != 0 && bl->type == BL_MOB) { struct block_list* src = map->id2bl(sce->val2); if (src != NULL) mob->log_damage(BL_UCAST(BL_MOB, bl), src, sce->val4); } map->freeblock_lock(); status_zap(bl, sce->val4, 0); if (sc->data[type] != NULL) { // Check if the status still last (can be dead since then). sc_timer_next(1000 + tick, status->change_timer, bl->id, data); } map->freeblock_unlock(); return 0; } break; case SC_POISON: case SC_DPOISON: data.tick = sc->data[i]->val3 * 1000; break; case SC_HARVESTED: data.tick = sc->data[i]->val3 * 1000; break; case SC_FEAR: case SC_LEECHESEND: data.tick = sc->data[i]->val4 * 1000; break; I hope you grasp my idea here, you can even make a formula that takes all your stats into account but im still working on make a REAL meta formula not something that just does 1000 more damge every skill level. . . ill post that some day Super experimental post. Summed up : " using specialeffect funtion, doesnt show the effect when YOU KILL THE MOB WITH THE SKILL, so long as it still has HP the effect will show, So making a 1 damage skill and giving it a very specific damage formula ( Poison in this case cause this is in my farming minigame but YOU CAN MAKE A DAMAGE FORMULA BY CALLING ATK MARK STR LEVEL ETC ETC ) Just look at SC_BURNING " Look ill even show you an example case SC_BURNING: if( --(sce->val4) > 0 ) { struct block_list *src = map->id2bl(sce->val3); int damage = 1000 + 3 * status_get_max_hp(bl) / 100; // Deals fixed (1000 + 3%*MaxHP) map->freeblock_lock(); clif->damage(bl,bl,0,0,damage,1,BDT_MULTIENDURE,0); //damage is like endure effect with no walk delay status->damage(src, bl, damage, 0, 0, 1); if( sc->data[type]){ // Target still lives. [LimitLine] sc_timer_next(3000 + tick, status->change_timer, bl->id, data); } map->freeblock_unlock(); return 0; } break; case SC_LOCKEDB: if( --(sce->val4) > 0 ) { struct block_list *src = map->id2bl(sce->val3); int damage = (100 - (st->def)) * (50 * (sce->val1)); map->freeblock_lock(); clif->damage(bl,bl,0,0,damage/100,1,BDT_MULTIENDURE,0); //damage is like endure effect with no walk delay status->damage(src, bl, damage/100, 0, 0, 1); map->freeblock_unlock(); return 0; } break; Look at INT DAMAGE = Val1 is my SKILL LEVEL and im calling the TARGET DEFENSE. . . . So Yes this skill does damage and does less damage based on the targets defence and my skill level.... Super experimental Good luck with this part , its really ugly but its all i could figure out for now Oh if you dont know how to make a skill MISC damage, just copy TF_THROWSTONE and go in the battle.c and and copy it there too
×
×
  • Create New...

Important Information

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