Jump to content

Naruto

Members
  • Content Count

    174
  • Joined

  • Last visited

  • Days Won

    10

Reputation Activity

  1. Upvote
    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
  2. Like
    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
  3. Like
    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
  4. Like
    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 
  5. Like
    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)

  6. Like
    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.
  7. Like
    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")); }  
  8. Upvote
    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
  9. Like
    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
  10. Like
    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 ?
  11. Like
    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!
  12. Upvote
    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.
  13. Like
    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 
  14. Like
    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 ~











  15. Upvote
    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
     
  16. Like
    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
     
  17. Like
    Naruto reacted to SyncMaster in Modified chain lightning   
    Worked 👍
  18. Upvote
    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 
  19. Like
    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
     
     
     
     
     
  20. Like
    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.
  21. Upvote
    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 ? 
  22. Upvote
    Naruto got a reaction from Waken in Damage CR_ACIDDEMONSTRATION:   
    lolol
  23. Like
    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.
  24. Like
    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 
×
×
  • Create New...

Important Information

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