-
Content Count
174 -
Joined
-
Last visited
-
Days Won
10
Reputation Activity
-
Naruto reacted to cherryeury in EDP LV 1 Reduce %
i dont really get what you're trying to do ,
EDP doesnt even add exact 100% damage on level 1 ,
anyway , changing anything about buff / debuff mostly is on status.c
#ifdef RENEWAL_EDP val2 = ((val1 + 1) / 2 + 2); #else val2 = val1 + 2; #endif val3 = 50 * (val1 + 1); if you want to halven the EDP damage , just change the val3 value , or just add /2 in the end of the val3 formula
-
Naruto got a reaction from Reick in Updating item_db
renewal database actually has more then the pre renewal
might have to re dif your item info, if you selected recommended its the first thing that pops up, asking you to rename your iteminfo file in your system folder with your client
-
Naruto got a reaction from Reick in Updating item_db
if it fails in game that means you dont have it in the associated id in your item_db.conf, re or pre re ... for most of them you can just copy and paste
-
Naruto got a reaction from Reick in Updating item_db
Copy and paste will work...
You might blow up your error log and have things to fix though, better you just grab the ones you want
-
Naruto reacted to w0wZukuBg in [Showcase] Lhz Dun Mobs Update aka Bio Lab Family
Super-Novice (Diego)
Ninja - Oboro (Cheril)
Gunslinger - Rebellion (Weikath)
Taekwon - Soul Linker - Soul Reaper (Keytar)
Taekwon - Star Gladiator - Star Emperor (Rachel)
-
Naruto reacted to Cretino in Taek-Won Mission for Star Gladiator Class
Hey guys, I made some modifications and tested.
Now is working, you just need apply this '.diff' file: star_gladiator_use_tk_mission.diff
Ranking still working to Taekwon, Star Gladiator only get bonus hp/sp and skills if get max level of base and job.
Star Gladiator don't receive the skill 'Solar, Lunar and Stellar Shadow'(SG_DEVIL).
If have any bug, report to me to try fix.
Good luck.
-
Naruto got a reaction from Eternity in Taek-Won Mission for Star Gladiator Class
possibly the same thing here
pc.c
if ((sd->job & MAPID_BASEMASK) == MAPID_TAEKWON) { // Better check for class rather than skill to prevent "skill resets" from unsetting this sd->mission_mobid = pc_readglobalreg(sd,script->add_variable("TK_MISSION_ID")); sd->mission_count = pc_readglobalreg(sd,script->add_variable("TK_MISSION_COUNT")); }
-
Naruto got a reaction from bWolfie in Taekwon FSK mechanics + movement on grid
So ive been trying to deal with the movement on the grid but had issues with direcitonal, and lagging when you get hit
Ive tried many things but the problem kept persisting until someone asked me why the lag doesnt happen on flying side kick....
case MR_LUNGE: if (unit->movepos(src, bl->x, bl->y, 1, 1)) { skill->brandishspear(src, bl, skill_id, skill_lv, tick, flag); clif->slide(src, bl->x, bl->y); } break; for my skill.c im using brandishspear function in an attack that lunges me towards the target
before i would get caught during my cast time and i could move 3-4 times before the game elastic banned me
if (unit->movepos(src, bl->x, bl->y, 1, 1)) {
if we wrote it like this
case MR_LUNGE: unit->movepos(src, bl->x, bl->y, 1, 1); skill->brandishspear(src, bl, skill_id, skill_lv, tick, flag); break;
it looks like the zombies walk to the location i pointed at, but then i get shot there after a second or two...
but then i set it to this :
case MR_LUNGE: unit->movepos(src, bl->x, bl->y, 0, 0); skill->brandishspear(src, bl, skill_id, skill_lv, tick, flag); break;
So it seems to me that unit_movepos is just another modifier we can use
the final 2 moifiers are
int easy, bool checkpath these are either 1 or 0... and i have no idea how they work without going through all the skills that use them however it seems to do the same things in game with my current code so just pick something your trying to match or flip em around if they dont work for whatever reason
So in order to move visually we actually have to use these functions OR CLICK THE MOUSE ANYWHERE AND YOU WILL ZAP TO THAT CELL WITH THE WRITTEN ABOVE:
clif->snap
clif->slide
skill->blown
All are usuable in different ways... I just wanted to clearify how to remove the lag
Actually a few notes from my clif.c jjust trying to go over and find this immediately
static void clif_blown(struct block_list *bl) { //Aegis packets says fixpos, but it's unsure whether slide works better or not. nullpo_retv(bl); clif->fixpos(bl); clif->slide(bl, bl->x, bl->y); } Oh it turns out
clif->fixpos is also a way to move you around the map
-
Naruto reacted to AnnieRuru in MVP Hunter Points w/ Rank
I do have my own MVP ranking script
https://github.com/AnnieRuru/Release/tree/master/scripts/Games %26 Events/MVP Rank
usually people do this simply with
if ( getmonsterinfo( killedrid, MOB_MVPEXP ) ) { but since you have 3 different modes, you also have to list out which MVP is easy/moderate/hard
a quick sql query to list out MVP in your server
select * from mob_db where mexp > 0; note its different in renewal and pre-renewal
Renewal -> http://herc.ws/board/topic/16631-npc-mvp-invasion/?do=findComment&comment=90910
Pre-renewal -> https://github.com/rathena/rathena/blob/master/npc/custom/events/mvp_ladder.txt#L232-L270
this one needs achievement system ... its already in my top-priority todo list
once its out, I can also add *settitleid script command and so on ...
and before you forget, the OnNPCKillEvent cannot run on monsters with event labels
http://herc.ws/board/topic/15991-onnpckillevent-changes/
so it couldn't add the kills like bio-lab MVPs , instance MVPs and so on
that pull request got stuck ...
oh PS: pajodex is currently busy in real life, or so I heard
-
Naruto reacted to AnnieRuru in MVP Hunter Points w/ Rank
wait wait, I was asking question back before attempting to write out this script,
and I still haven't made title system script commands plugin yet ...
I don't understand why you mark that as answer while I was actually asking for more information ...
rephrase again
1. you have to list out which MVP are easy/normal/hard,
easy - MVPID 1 , MVPID 2 ...
normal - MVPID 1 , MVPID 2 ...
...
2. wait until I make title system script commands plugin .... going to write now
3. rewards give out by weekly or monthly are entire different formula ... you can only pick one ...
4. MVP points will trigger on MVP maps only <-- means only trigger like .... inside MVP room only ?
-
Naruto reacted to MikZ in MVP Hunter Points w/ Rank
Hi @AnnieRuru, apologies.
1. MVP list
EASY
Atroce (ATROCE) Mob-ID#1785
Bacsojin / White Lady (BACSOJIN_) Mob-ID#1630
Boitata (BOITATA) Mob-ID#2068
Doppelganger (DOPPELGANGER) Mob-ID#1046
Dracula (DRACULA) Mob-ID#1389
Drake (DRAKE) Mob-ID#1112
Eddga (EDDGA) Mob-ID#1115
Garm / Hatii (GARM) Mob-ID#1252
Gopinich (GOPINICH) Mob-ID#1885
Maya (MAYA) Mob-ID#1147
Mistress (MISTRESS) Mob-ID#1059
Osiris (OSIRIS) Mob-ID#1038
Pharaoh (PHARAOH) Mob-ID#1157
Phreeoni (PHREEONI) Mob-ID#1159
Tao Gunka (TAO_GUNKA) Mob-ID#1583
Turtle General (TURTLE_GENERAL) Mob-ID#1312
Vesper (APOCALIPS_H) Mob-ID#1685
NORMAL
Amon Ra (AMON_RA) Mob-ID#1511
Baphomet (BAPHOMET) Mob-ID#1039
Dark Lord (DARK_LORD) Mob-ID#1272
Detale / Detardeurus (DETALE) Mob-ID#1719
Evil Snake Lord (DARK_SNAKE_LORD) Mob-ID#1418
Golden Thief Bug (GOLDEN_BUG) Mob-ID#1086
Incantation Samurai / Samurai Specter (INCANTATION_SAMURAI) Mob-ID#1492
Knight of Windstorm / Stormy Knight (KNIGHT_OF_WINDSTORM) Mob-ID#1251
Lady Tanee (LADY_TANEE) Mob-ID#1688
Lord of Death / Lord of the Dead (LORD_OF_DEATH) Mob-ID#1373
Moonlight Flower (MOONLIGHT) Mob-ID#1150
Orc Hero (ORK_HERO) Mob-ID#1087
Orc Lord (ORC_LORD) Mob-ID#1190
RSX 0806 / RSX-0806 (RSX_0806) Mob-ID#1623
Wounded Morroc (MOROCC_) Mob-ID#1917
HARD
Beelzebub (BEELZEBUB_) Mob-ID#1874
Fallen Bishop / Fallen Bishop Hibram (FALLINGBISHOP) Mob-ID#1871
Gloom Under Night (GLOOMUNDERNIGHT) Mob-ID#1768
Ifrit (IFRIT) Mob-ID#1832
Kiel D-01 (KIEL_) Mob-ID#1734
Ktullanux (KTULLANUX) Mob-ID#1779
Thanatos / Memory of Thanatos (THANATOS) Mob-ID#1708
Valkyrie Randgris (RANDGRIS) Mob-ID#1751
2. Will wait for it /no1 <--- Can we skip the rank Name and just the killing points only for meantime. if possible
3. For monthly only
4. Points trigger on MVP maps only. (branch and bloody branch summons not included)
Thank you so much!
-
Naruto reacted to Daifuku in Daifuku - Graphics giveaway prize not given
Oh lord. It's pretty simple. I did a giveaway, you claimed it almost a month after. I was busy during the time you messaged and said I will "most likely" be available after 22.6 but ended up still being busy. I notified you. You had your reasons why you messaged me one month after the winner announcement and I understood and accepted it but you don't seem to understand that I have legitimately been busy myself as well. If you would have claimed your reward in may when I had the time to do it, you would have gotten it without any issues.
The reason why I decided to not give out the giveaway to you in the end is because of how you act and behave. It's a giveaway that I decided to do out of pure selflessness for people who are genuinely happy to receive whatever I give them, whenever I give it to them. You spamming my topics and insulting me and my work because I didn't reply 3 days after the 22.6 is rather contra productive and ultimately made me close the topic and abort any future giveaways I had planned. I simply do not want to deal with such kind of people. I'm sorry for those that were looking forward to more giveaways.
I would appreciate if you could let this matter rest now. Thank you and best of luck.
P.s: I'm female.
-
Naruto got a reaction from IndieRO in Simple Auras , reusable and clean
Hi working on getting auras to work simply.....
So for this I use sg_warm_sun since its a damaging aura, but its going to be practically the same process for everything else
first up make a new status in status.h and .c
status->set_sc( WT_DRAGON , SC_DRAGON , SI_BLANK , SCB_NONE ); Dont need to do anything else here unless you want to
next lets go to map.c
add this
if (sc->data[SC_DRAGON]) skill->unit_move_unit_group(skill->id2group(sc->data[SC_DRAGON]->val4), bl->m, x1-x0, y1-y0); if (sc->data[SC_WARM]) skill->unit_move_unit_group(skill->id2group(sc->data[SC_WARM]->val4), bl->m, x1-x0, y1-y0);
back to skill.c to work on the new skill i made
case WT_DRAGON: skill->clear_unitgroup(src); if ((sg = skill->unitsetting(src,skill_id,skill_lv,src->x,src->y,0))) sc_start4(src,src,type,100,skill_lv,0,0,sg->group_id,skill->get_time(skill_id,skill_lv)); break; case SG_SUN_WARM: case SG_MOON_WARM: case SG_STAR_WARM: case UNT_DUMMYSKILL: switch (sg->skill_id) { case WT_DRAGON: skill->attack(BF_MAGIC,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0); clif->specialeffect(bl,92,1); break; case SG_SUN_WARM: case SG_MOON_WARM: case SG_STAR_WARM: so a note on UNT_DUMMSKILL, it represents unt id 0x86, which is the cookie cutter unt used in things that arent placable... are their own unts like sanctuary and stuff
i make it bf_magic cause its easy to edit in battle.c wait till last step
and ofc specialeffect 92 is id, check areas... but i think it might be ok on 1, or 0 or just AREA
next skill_db
{ Id: 1609 Name: "WT_DRAGON" Description: "Exploding Dragon" MaxLevel: 3 Range: 1 Hit: "BDT_SKILL" SkillType: { Self: true } AttackType: "Magic" Element: "Ele_Weapon" DamageType: { SplashArea: true } SplashRange: 1 InterruptCast: true KnockBackTiles: 2 AfterCastActDelay: 1000 SkillData1: { Lv1: 10000 Lv2: 20000 Lv3: 60000 Lv4: 60000 Lv5: 60000 Lv6: 60000 Lv7: 60000 Lv8: 60000 Lv9: 60000 Lv10: 60000 } CoolDown: 0 Requirements: { SPCost: 20 } Unit: { Id: 0x86 Range: 1 Interval: 100 Target: "Enemy" } }, skilldata1 is the time it survives , how do you know its skilldata 1 ?
here :
sc_start4(src,src,type,100,skill_lv,0,0,sg->group_id,skill->get_time(skill_id,skill_lv)); get_time
get_time2 would be data2 in skill db and so on 3 to 4
since aura is linked to Status, its only for us...
now open battle.c
break; case WZ_STORMGUST: skillratio += 40 * skill_lv; break; case WT_DRAGON: skillratio += 100 * skill_lv; break;
right so this post will only cover how to activate it with a timer
its up to you to figure out how to do the rest but easy to disable / reanable with button by following pa_gospel and adding effects too.. Pa_gospel has it all really
Something else you can do now is just change this number in the skill_db
Unit: { Id: 0x86 Range: 1 Interval: 100 Target: "Enemy" } now we linked status to aura we can change the unit id here to be any unt in the game like violent gale and deluge auras, they copy their respective UNT_DELUGE entries
anyways i did this for example :
Unit: { Id: 0x9c Range: 1 Interval: 100 Target: "Enemy" }
my examples only lasted 3 seconds (3000 skilldata1) just so i can test time in my post
Ahhh pretty sure this is everything, let me know if you encounter an issue
Its weird, i remember a couple years back when i started playing with clif_specialeffect it didnt cast when you killed them with a skill directly... but it kills them and shows effect when you use them in unt's, i had a skill that was an aura back then that just slowed everyone around you it also had special effects attached but never bothered trying it on a dps aura.... interesting ... its a bit more work and a different way to write skills but at least youd have access to every effect in the client... pretty sure skilleffectinfo has a couple flaws
-
Naruto reacted to Daifuku in Daifuku | Graphics, Sprites, Maps, Wiki, Forum, Advertising, Scripts & more
Some random things I worked on recently. I've done a lot more though...
Just hit me up if you need something ~
-
Naruto got a reaction from bWolfie in Brandish Spear Re-work
So i had to go over my brandish spear again but figured out most of it
Can be used a few different ways..... splash on a grid with movement is really smooth with it
The results of this modification is my magicalbullet and desperado is a UNT skill
No idea how to explain it other then for you to try it yourself :
struct square { int val1[19]; int val2[19]; }; This number for square should be increased as high as you can if you wanna keep using this square grid... Ill have to verify this later because re declaring it causes issues but its relative to the amount of cells were hitting
static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int16 y) { nullpo_retv(tc); if(dir == 0){ 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; } else if(dir==2){ tc->val1[0]=x+3; tc->val1[1]=x+3; tc->val1[2]=x+3; tc->val1[3]=x+4; tc->val1[4]=x+4; tc->val1[5]=x+4; tc->val1[6]=x+2; tc->val1[7]=x+2; tc->val1[8]=x+2; tc->val1[9]=x+1; tc->val1[10]=x+1; tc->val1[11]=x+1; tc->val1[12]=x-1; tc->val1[13]=x-1; tc->val1[14]=x-1; tc->val1[15]=x; tc->val1[16]=x; tc->val1[17]=x; tc->val2[0]=y; tc->val2[1]=y+1; tc->val2[2]=y-1; tc->val2[3]=y; tc->val2[4]=y+1; tc->val2[5]=y+1; tc->val2[6]=y; tc->val2[7]=y+1; tc->val2[8]=y-1; tc->val2[9]=y; tc->val2[10]=y+1; tc->val2[11]=y-1; tc->val2[12]=y; tc->val2[13]=y+1; tc->val2[14]=y-1; tc->val2[15]=y; tc->val2[16]=y+1; tc->val2[17]=y-1; } else if(dir==4){ 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; } else if(dir==6){ tc->val1[0]=x-3; tc->val1[1]=x-3; tc->val1[2]=x-3; tc->val1[3]=x-4; tc->val1[4]=x-4; tc->val1[5]=x-4; tc->val1[6]=x-2; tc->val1[7]=x-2; tc->val1[8]=x-2; tc->val1[9]=x-1; tc->val1[10]=x-1; tc->val1[11]=x-1; tc->val1[12]=x+1; tc->val1[13]=x+1; tc->val1[14]=x+1; tc->val1[15]=x; tc->val1[16]=x; tc->val1[17]=x; tc->val2[0]=y; tc->val2[1]=y+1; tc->val2[2]=y-1; tc->val2[3]=y; tc->val2[4]=y+1; tc->val2[5]=y+1; tc->val2[6]=y; tc->val2[7]=y+1; tc->val2[8]=y-1; tc->val2[9]=y; tc->val2[10]=y+1; tc->val2[11]=y-1; tc->val2[12]=y; tc->val2[13]=y+1; tc->val2[14]=y-1; tc->val2[15]=y; tc->val2[16]=y+1; tc->val2[17]=y-1; } else if(dir==1){ tc->val1[0]=x; tc->val1[1]=x+1; tc->val1[2]=x+2; tc->val1[3]=x; tc->val1[4]=x; tc->val1[5]=x+1; tc->val1[6]=x+2; tc->val1[7]=x+2; tc->val1[8]=x+1; tc->val1[9]=x+1; tc->val1[10]=x+2; tc->val1[11]=x+2; tc->val1[12]=x+3; tc->val1[13]=x+3; tc->val1[14]=x+3; tc->val1[15]=x+4; tc->val1[16]=x+3; tc->val1[17]=x+4; tc->val1[18]=x+4; tc->val2[0]=y; tc->val2[1]=y; tc->val2[2]=y; tc->val2[3]=y-1; tc->val2[4]=y-2; tc->val2[5]=y-1; tc->val2[6]=y-1; tc->val2[7]=y-2; tc->val2[8]=y-2; tc->val2[9]=y-3; tc->val2[10]=y-3; tc->val2[11]=y-4; tc->val2[12]=y-4; tc->val2[13]=y-1; tc->val2[14]=y-2; tc->val2[15]=y-2; tc->val2[16]=y-3; tc->val2[17]=y-3; tc->val2[18]=y-4; } else if(dir==3){ tc->val1[0]=x+4; tc->val1[1]=x+4; tc->val1[2]=x+4; tc->val1[3]=x+3; tc->val1[4]=x+3; tc->val1[5]=x+3; tc->val1[6]=x+3; tc->val1[7]=x+2; tc->val1[8]=x+2; tc->val1[9]=x+2; tc->val1[10]=x+2; tc->val1[11]=x+2; tc->val1[12]=x+1; tc->val1[13]=x+1; tc->val1[14]=x+1; tc->val1[15]=x+1; tc->val1[16]=x; tc->val1[17]=x; tc->val1[18]=x; tc->val2[0]=y+4; tc->val2[1]=y+3; tc->val2[2]=y+2; tc->val2[3]=y+4; tc->val2[4]=y+3; tc->val2[5]=y+2; tc->val2[6]=y+1; tc->val2[7]=y+4; tc->val2[8]=y+3; tc->val2[9]=y+2; tc->val2[10]=y+1; tc->val2[11]=y; tc->val2[12]=y+3; tc->val2[13]=y+2; tc->val2[14]=y+1; tc->val2[15]=y; tc->val2[16]=y+2; tc->val2[17]=y+1; tc->val2[18]=y; } else if(dir==5){ tc->val1[0]=x-4; tc->val1[1]=x-3; tc->val1[2]=x-2; tc->val1[3]=x-4; tc->val1[4]=x-3; tc->val1[5]=x-2; tc->val1[6]=x-1; tc->val1[7]=x-4; tc->val1[8]=x-3; tc->val1[9]=x-2; tc->val1[10]=x-1; tc->val1[11]=x; tc->val1[12]=x-3; tc->val1[13]=x-2; tc->val1[14]=x-1; tc->val1[15]=x; tc->val1[16]=x-2; tc->val1[17]=x-1; tc->val1[18]=x; tc->val2[0]=y+4; tc->val2[1]=y+4; tc->val2[2]=y+4; tc->val2[3]=y+3; tc->val2[4]=y+3; tc->val2[5]=y+3; tc->val2[6]=y+3; tc->val2[7]=y+2; tc->val2[8]=y+2; tc->val2[9]=y+2; tc->val2[10]=y+2; tc->val2[11]=y+2; tc->val2[12]=y+1; tc->val2[13]=y+1; tc->val2[14]=y+1; tc->val2[15]=y+1; tc->val2[16]=y; tc->val2[17]=y; tc->val2[18]=y; } else if(dir==7){ tc->val1[0]=x-4; tc->val1[1]=x-3; tc->val1[2]=x-2; tc->val1[3]=x-4; tc->val1[4]=x-3; tc->val1[5]=x-2; tc->val1[6]=x-1; tc->val1[7]=x-4; tc->val1[8]=x-3; tc->val1[9]=x-2; tc->val1[10]=x-1; tc->val1[11]=x; tc->val1[12]=x-3; tc->val1[13]=x-2; tc->val1[14]=x-1; tc->val1[15]=x; tc->val1[16]=x-2; tc->val1[17]=x-1; tc->val1[18]=x; tc->val2[0]=y-4; tc->val2[1]=y-4; tc->val2[2]=y-4; tc->val2[3]=y-3; tc->val2[4]=y-3; tc->val2[5]=y-3; tc->val2[6]=y-3; tc->val2[7]=y-2; tc->val2[8]=y-2; tc->val2[9]=y-2; tc->val2[10]=y-2; tc->val2[11]=y-2; tc->val2[12]=y-1; tc->val2[13]=y-1; tc->val2[14]=y-1; tc->val2[15]=y-1; tc->val2[16]=y; tc->val2[17]=y; tc->val2[18]=y; } } this is my grid
need to make sure you mark the cell YOU ARE STANDING ON if you wanna use it with RANGED
I cant explain the grid but hold on maybe i can draw it
basically you have a slot for x and y as you look at this
tc->val1[17]=x; tc->val1[18]=x; tc->val2[0]=y+4; tc->val2[1]=y+3; tc->val2[2]=y+2; you see how Y starts after 18 Xs for this direction ?
so these two would be a pair
tc->val1[0]=x-4; tc->val2[0]=y-4; Im looking at direction 7 which is...facing the top right from center
That would be the out most cells
static void skill_brandishspear_dir(struct square *tc, uint8 dir, int are) { int c; nullpo_retv(tc); for( c = 0; c < 19; 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; } } } I changed this to increase the max of growth function
for( c = 0; c < 19; c++ ) { so now we wont get stack errors
and finally
static void skill_brandishspear(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag) { int c,n=0; uint8 dir; struct square tc; int x, y; nullpo_retv(bl); x = bl->x; y = bl->y; dir = map->calc_dir(src, x, y); skill->brandishspear_first(&tc,dir,x,y); skill->brandishspear_dir(&tc,dir,4); skill->area_temp[1] = bl->id; for(c=0;c<19;c++){ if(c==0||c==19) skill->brandishspear_dir(&tc,dir,-1); map->foreachincell(skill->area_sub, bl->m,tc.val1[c%19],tc.val2[c%19],BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1, skill->castend_damage_id); } } first line
int c,n=0; No idea what N does but to me it is useless, im pretty sure N is the amount of tiers in brandish spear.. lvl 1 3 7 and 9
skill->brandishspear_dir(&tc,dir,4); So this is why its flipped, the final number is the placement , so if you set it to 0, it would be closer to you... its weird but id leave it -4 for the same results that i get
for(c=0;c<19;c++){ if(c==0||c==19) skill->brandishspear_dir(&tc,dir,-1); map->foreachincell(skill->area_sub, bl->m,tc.val1[c%19],tc.val2[c%19],BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1, skill->castend_damage_id); } finally set all these otherwise just get stack errors
so if you wanna re use it which ill verify, you just need to set a large struct sqaure and youll be all good
-
Naruto got a reaction from cookie-rae in Brandish Spear Re-work
So i had to go over my brandish spear again but figured out most of it
Can be used a few different ways..... splash on a grid with movement is really smooth with it
The results of this modification is my magicalbullet and desperado is a UNT skill
No idea how to explain it other then for you to try it yourself :
struct square { int val1[19]; int val2[19]; }; This number for square should be increased as high as you can if you wanna keep using this square grid... Ill have to verify this later because re declaring it causes issues but its relative to the amount of cells were hitting
static void skill_brandishspear_first(struct square *tc, uint8 dir, int16 x, int16 y) { nullpo_retv(tc); if(dir == 0){ 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; } else if(dir==2){ tc->val1[0]=x+3; tc->val1[1]=x+3; tc->val1[2]=x+3; tc->val1[3]=x+4; tc->val1[4]=x+4; tc->val1[5]=x+4; tc->val1[6]=x+2; tc->val1[7]=x+2; tc->val1[8]=x+2; tc->val1[9]=x+1; tc->val1[10]=x+1; tc->val1[11]=x+1; tc->val1[12]=x-1; tc->val1[13]=x-1; tc->val1[14]=x-1; tc->val1[15]=x; tc->val1[16]=x; tc->val1[17]=x; tc->val2[0]=y; tc->val2[1]=y+1; tc->val2[2]=y-1; tc->val2[3]=y; tc->val2[4]=y+1; tc->val2[5]=y+1; tc->val2[6]=y; tc->val2[7]=y+1; tc->val2[8]=y-1; tc->val2[9]=y; tc->val2[10]=y+1; tc->val2[11]=y-1; tc->val2[12]=y; tc->val2[13]=y+1; tc->val2[14]=y-1; tc->val2[15]=y; tc->val2[16]=y+1; tc->val2[17]=y-1; } else if(dir==4){ 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; } else if(dir==6){ tc->val1[0]=x-3; tc->val1[1]=x-3; tc->val1[2]=x-3; tc->val1[3]=x-4; tc->val1[4]=x-4; tc->val1[5]=x-4; tc->val1[6]=x-2; tc->val1[7]=x-2; tc->val1[8]=x-2; tc->val1[9]=x-1; tc->val1[10]=x-1; tc->val1[11]=x-1; tc->val1[12]=x+1; tc->val1[13]=x+1; tc->val1[14]=x+1; tc->val1[15]=x; tc->val1[16]=x; tc->val1[17]=x; tc->val2[0]=y; tc->val2[1]=y+1; tc->val2[2]=y-1; tc->val2[3]=y; tc->val2[4]=y+1; tc->val2[5]=y+1; tc->val2[6]=y; tc->val2[7]=y+1; tc->val2[8]=y-1; tc->val2[9]=y; tc->val2[10]=y+1; tc->val2[11]=y-1; tc->val2[12]=y; tc->val2[13]=y+1; tc->val2[14]=y-1; tc->val2[15]=y; tc->val2[16]=y+1; tc->val2[17]=y-1; } else if(dir==1){ tc->val1[0]=x; tc->val1[1]=x+1; tc->val1[2]=x+2; tc->val1[3]=x; tc->val1[4]=x; tc->val1[5]=x+1; tc->val1[6]=x+2; tc->val1[7]=x+2; tc->val1[8]=x+1; tc->val1[9]=x+1; tc->val1[10]=x+2; tc->val1[11]=x+2; tc->val1[12]=x+3; tc->val1[13]=x+3; tc->val1[14]=x+3; tc->val1[15]=x+4; tc->val1[16]=x+3; tc->val1[17]=x+4; tc->val1[18]=x+4; tc->val2[0]=y; tc->val2[1]=y; tc->val2[2]=y; tc->val2[3]=y-1; tc->val2[4]=y-2; tc->val2[5]=y-1; tc->val2[6]=y-1; tc->val2[7]=y-2; tc->val2[8]=y-2; tc->val2[9]=y-3; tc->val2[10]=y-3; tc->val2[11]=y-4; tc->val2[12]=y-4; tc->val2[13]=y-1; tc->val2[14]=y-2; tc->val2[15]=y-2; tc->val2[16]=y-3; tc->val2[17]=y-3; tc->val2[18]=y-4; } else if(dir==3){ tc->val1[0]=x+4; tc->val1[1]=x+4; tc->val1[2]=x+4; tc->val1[3]=x+3; tc->val1[4]=x+3; tc->val1[5]=x+3; tc->val1[6]=x+3; tc->val1[7]=x+2; tc->val1[8]=x+2; tc->val1[9]=x+2; tc->val1[10]=x+2; tc->val1[11]=x+2; tc->val1[12]=x+1; tc->val1[13]=x+1; tc->val1[14]=x+1; tc->val1[15]=x+1; tc->val1[16]=x; tc->val1[17]=x; tc->val1[18]=x; tc->val2[0]=y+4; tc->val2[1]=y+3; tc->val2[2]=y+2; tc->val2[3]=y+4; tc->val2[4]=y+3; tc->val2[5]=y+2; tc->val2[6]=y+1; tc->val2[7]=y+4; tc->val2[8]=y+3; tc->val2[9]=y+2; tc->val2[10]=y+1; tc->val2[11]=y; tc->val2[12]=y+3; tc->val2[13]=y+2; tc->val2[14]=y+1; tc->val2[15]=y; tc->val2[16]=y+2; tc->val2[17]=y+1; tc->val2[18]=y; } else if(dir==5){ tc->val1[0]=x-4; tc->val1[1]=x-3; tc->val1[2]=x-2; tc->val1[3]=x-4; tc->val1[4]=x-3; tc->val1[5]=x-2; tc->val1[6]=x-1; tc->val1[7]=x-4; tc->val1[8]=x-3; tc->val1[9]=x-2; tc->val1[10]=x-1; tc->val1[11]=x; tc->val1[12]=x-3; tc->val1[13]=x-2; tc->val1[14]=x-1; tc->val1[15]=x; tc->val1[16]=x-2; tc->val1[17]=x-1; tc->val1[18]=x; tc->val2[0]=y+4; tc->val2[1]=y+4; tc->val2[2]=y+4; tc->val2[3]=y+3; tc->val2[4]=y+3; tc->val2[5]=y+3; tc->val2[6]=y+3; tc->val2[7]=y+2; tc->val2[8]=y+2; tc->val2[9]=y+2; tc->val2[10]=y+2; tc->val2[11]=y+2; tc->val2[12]=y+1; tc->val2[13]=y+1; tc->val2[14]=y+1; tc->val2[15]=y+1; tc->val2[16]=y; tc->val2[17]=y; tc->val2[18]=y; } else if(dir==7){ tc->val1[0]=x-4; tc->val1[1]=x-3; tc->val1[2]=x-2; tc->val1[3]=x-4; tc->val1[4]=x-3; tc->val1[5]=x-2; tc->val1[6]=x-1; tc->val1[7]=x-4; tc->val1[8]=x-3; tc->val1[9]=x-2; tc->val1[10]=x-1; tc->val1[11]=x; tc->val1[12]=x-3; tc->val1[13]=x-2; tc->val1[14]=x-1; tc->val1[15]=x; tc->val1[16]=x-2; tc->val1[17]=x-1; tc->val1[18]=x; tc->val2[0]=y-4; tc->val2[1]=y-4; tc->val2[2]=y-4; tc->val2[3]=y-3; tc->val2[4]=y-3; tc->val2[5]=y-3; tc->val2[6]=y-3; tc->val2[7]=y-2; tc->val2[8]=y-2; tc->val2[9]=y-2; tc->val2[10]=y-2; tc->val2[11]=y-2; tc->val2[12]=y-1; tc->val2[13]=y-1; tc->val2[14]=y-1; tc->val2[15]=y-1; tc->val2[16]=y; tc->val2[17]=y; tc->val2[18]=y; } } this is my grid
need to make sure you mark the cell YOU ARE STANDING ON if you wanna use it with RANGED
I cant explain the grid but hold on maybe i can draw it
basically you have a slot for x and y as you look at this
tc->val1[17]=x; tc->val1[18]=x; tc->val2[0]=y+4; tc->val2[1]=y+3; tc->val2[2]=y+2; you see how Y starts after 18 Xs for this direction ?
so these two would be a pair
tc->val1[0]=x-4; tc->val2[0]=y-4; Im looking at direction 7 which is...facing the top right from center
That would be the out most cells
static void skill_brandishspear_dir(struct square *tc, uint8 dir, int are) { int c; nullpo_retv(tc); for( c = 0; c < 19; 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; } } } I changed this to increase the max of growth function
for( c = 0; c < 19; c++ ) { so now we wont get stack errors
and finally
static void skill_brandishspear(struct block_list *src, struct block_list *bl, uint16 skill_id, uint16 skill_lv, int64 tick, int flag) { int c,n=0; uint8 dir; struct square tc; int x, y; nullpo_retv(bl); x = bl->x; y = bl->y; dir = map->calc_dir(src, x, y); skill->brandishspear_first(&tc,dir,x,y); skill->brandishspear_dir(&tc,dir,4); skill->area_temp[1] = bl->id; for(c=0;c<19;c++){ if(c==0||c==19) skill->brandishspear_dir(&tc,dir,-1); map->foreachincell(skill->area_sub, bl->m,tc.val1[c%19],tc.val2[c%19],BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1, skill->castend_damage_id); } } first line
int c,n=0; No idea what N does but to me it is useless, im pretty sure N is the amount of tiers in brandish spear.. lvl 1 3 7 and 9
skill->brandishspear_dir(&tc,dir,4); So this is why its flipped, the final number is the placement , so if you set it to 0, it would be closer to you... its weird but id leave it -4 for the same results that i get
for(c=0;c<19;c++){ if(c==0||c==19) skill->brandishspear_dir(&tc,dir,-1); map->foreachincell(skill->area_sub, bl->m,tc.val1[c%19],tc.val2[c%19],BL_CHAR, src,skill_id,skill_lv,tick, flag|BCT_ENEMY|1, skill->castend_damage_id); } finally set all these otherwise just get stack errors
so if you wanna re use it which ill verify, you just need to set a large struct sqaure and youll be all good
-
-
Naruto got a reaction from SyncMaster in Modified chain lightning
probably cause you werent using it like WL_CHAINLIGHTNING_ATK since thats where its animation is
but if your talking about a new skill using the throw shuriken animation just as its own
you need to call BF_WEAPON and throw shuriken together in the skill.c ... that is, if you cant make it with skilleffectinfo in the data.grf
something like this
skill->attack(BF_WEAPON,src,src,bl,NJ_SYURIKEN,skill_lv,tick,flag); then just make a bunch of different options in syuriken and you could link them to other skills possibly easily.... id have to find the proper call or whatever though... but ill post about it if you dont figure it out
because the animation itself is linked to the skill id
-
Naruto got a reaction from SyncMaster in Modified chain lightning
so basically just went over every thing in chainlightning 1 day and i can modify it without screwing up the game
So for the gif above you need to remove everything about
NJ_SYURIKEN
then lets continue back into the skill.c
case WL_CHAINLIGHTNING: clif->skill_nodamage(src,bl,skill_id,skill_lv,1); skill->addtimerskill(src,tick+status_get_amotion(src),bl->id,0,0,NJ_SYURIKEN,skill_lv,0,flag); skill->addtimerskill(src,tick+status_get_amotion(src),bl->id,0,0,NJ_SYURIKEN,skill_lv,0,flag); skill->addtimerskill(src,tick+status_get_amotion(src),bl->id,0,0,NJ_SYURIKEN,skill_lv,0,flag); skill->addtimerskill(src,tick+status_get_amotion(src),bl->id,0,0,NJ_SYURIKEN,skill_lv,0,flag); skill->addtimerskill(src,tick+status_get_amotion(src),bl->id,0,0,NJ_SYURIKEN,skill_lv,0,flag); skill->addtimerskill(src,tick+status_get_amotion(src),bl->id,0,0,NJ_SYURIKEN,skill_lv,0,flag); break; by repeating the addtimerskill line, we can multiply the amount of times we send off a chain reaction, so im throwing 6 sets of shurikens, originally it was this :
case WL_CHAINLIGHTNING: clif->skill_nodamage(src,bl,skill_id,skill_lv,1); skill->addtimerskill(src,tick+status_get_amotion(src),bl->id,0,0,WL_CHAINLIGHTNING_ATK,skill_lv,0,flag); break; I changed WL_CHAINLIGHTNING_ATK to NJ_SYURIKEN like we will for every entry for this source post
also you should have removed any previous syurikens so it was empty except in skill.h and battle c ( might need to remove it from battle.c)
case NJ_SYURIKEN: case WL_CHAINLIGHTNING_ATK: skill->attack(BF_MAGIC, src, src, target, skl->skill_id, skl->skill_lv, tick, (9-skl->type)); skill->toggle_magicpower(src, skl->skill_id); struct map_session_data *sd = BL_UCAST(BL_PC, src); int cr = (pc->checkskill(sd, WL_CHAINLIGHTNING) / 2); //cr is amount of bounces if (skl->type < (cr + skl->skill_lv - skl->skill_lv) && skl->x < 3) { struct block_list *nbl = battle->get_enemy_area(src, target->x, target->y, (skl->type>2)?3:4, //area BL_CHAR|BL_SKILL, target->id); if (nbl == NULL) skl->x++; else skl->x = 0; //tick is time just modify digit over 50 for visible results skill->addtimerskill(src, tick + 100, (nbl?nbl:target)->id, skl->x, 0, NJ_SYURIKEN, skl->skill_lv, skl->type + 1, skl->flag); } break; so i added a easy variable to change as you want if you wanna balance it, int cr = skill level * 25, if you can do this you can probably whip something else up ... i changed the formula so it negated itself because it was cause problems otherwise
tick + time, i dont touch tick and keep the digit over 50
area is just modified to be bigger then the original... i just leave it as it is since it doesnt really bother me, but if you set it to 1:1 then it wont move so much but obviously shorter range
you can keep playing with it but this is all you need
switch(skl->skill_id){ case NJ_SYURIKEN: case WL_CHAINLIGHTNING_ATK: case WL_TETRAVORTEX_FIRE: case WL_TETRAVORTEX_WATER: case WL_TETRAVORTEX_WIND: case WL_TETRAVORTEX_GROUND: // SR_FLASHCOMBO case SR_DRAGONCOMBO: case SR_FALLENEMPIRE: case SR_TIGERCANNON: case SR_SKYNETBLOW:
copy everything
editor note : the copy_skill thing is actually what a rogue with plagirize would copy, sooo if you get hit by the bolt of the skill where the damage i dealt, youll be copying the WL_CHAINLIGHTINING as an icon
case NJ_SYURIKEN: case WL_CHAINLIGHTNING_ATK: copy_skill = WL_CHAINLIGHTNING; break; case NJ_SYURIKEN: case WL_CHAINLIGHTNING_ATK: dmg.dmotion = clif->skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,1,NJ_SYURIKEN,-2,BDT_SKILL); break;
you gonna need to change everything in the battle.c too but if you delete it it will just be 100% magic damage
I added like 40 of those chains and this is what it looks like
i just realized i was using chain lightning for the gifs, but the idea was to use it with the throw shuriken skill ... thats why we changed everything ... and we turned shuriken into the _ATK part of chain attack so we have the animation attached.... so you need to make a new skill and copy chainlightning completly....
so just make a new skill call it NJ_SHURIKENPRE and copy chain lightning then make NJ_SYURKEN copy CHAINLIGHTNING_ATK
-
Naruto reacted to SyncMaster in Daifuku - Graphics giveaway prize not given
I have a little feeling that with this post you lost your chances to negotiate instead of force it. If was with a different person, you had lost your prize when you said "don't try to do a giveawat if you don't even have time available to do it".
It's 22 to reclaim, 29 justified waiting days + 16 waiting days. Without counting the days she warn that was off, you didn't even wait what she waited for the winner.
And, for life, depending on the draw or contest/tender, you have 5 to 7 business days to claim the prize or the vacancy.
-
Naruto got a reaction from kanemi in Need Help: How to Hire a Developer With No Knowledge of Coding
with money lol
also dont make them admins in game and stricly dev in discord chat / quick assistance
what are you looking for in your server though cause you might kill some body
you know how easy it is to ruin someones src without them knowing ?
-
-
Naruto reacted to gerardo in Docker Compose - Ragnarok server with Nginx, Cpanel, web, forum, db, etc
Hello,
I just wanna share with you my recent project, it's all in one docker for ragnarok server, actually i only use eamod because i used in another project, but now, i dont care about ragnarok server, so, i just wanna share this, probably this can be used with Hercules, but is just a base project. probablaly u already see this, but for sake of sharing i left this here.
https://github.com/GMGOD/ragnarokDocker
The instructions are in github, but on the future i will update this with more images and all.
Sorry for bad english.
Bye.
-
Naruto got a reaction from AshiHanna in Disable extended minimap button
spend 3 days in the debugger and you might be able to remove it