Jump to content

banhelba2019

Members
  • Content Count

    200
  • Joined

  • Last visited

  • Days Won

    5

Reputation Activity

  1. Upvote
    banhelba2019 reacted to AnnieRuru in Max Atk   
    @RagnarokOnline2015 must be using RENEWAL
    in renewal, its base atk + weapon atk
    simply equip any weapon will do, like I'm using priest, equip a club
    "@refine 0 10", the refine will increase the value along with bonus bAtk or bonus bAtk2
    in renewal, equip fire-brand will increase the value there
    @Orca must be using pre-renewal
    yes, equip a fire-brand doesn't increase that value,
    to increase bAtk2, the only way is through refine "@refine 0 10" on your fire-brand, or using bonus bAtk2
     
    and I repeat again, THIS IS OFFICIAL <-- tested same thing happen in rathena as well(EDIT)
    this atk/matk stuffs has even confuse some developers
     
    EDIT: seems like I misunderstood the question,
    you want to increase the 65535, not to add to the bAtk2 bonus ...
  2. Upvote
    banhelba2019 got a reaction from RagnarokOnline2015 in Max Atk   
    Well i dont remember raising my max atk ..... I just changed the attk formula so that STR gives more ATK 
    status.c
    void status_calc_misc(struct block_list *bl, struct status_data *st, int level) { nullpo_retv(bl); nullpo_retv(st); //Non players get the value set, players need to stack with previous bonuses. if ( bl->type != BL_PC ) st->batk = st->hit = st->flee = st->def2 = st->mdef2 = st->cri = st->flee2 = 0; if ( bl->type == BL_PC ) st->batk = st->str * 1250; I added the 
        if ( bl->type == BL_PC )         st->batk = st->str * 1250; at the bottom
  3. Upvote
    banhelba2019 got a reaction from RagnarokOnline2015 in Max Atk   
    Thats a pretty good question
     

     
    I can get my attack into the 100ks pretty easily...
     
    You might appreciate this post i made on rathena by Lllaaazzz (me)
    https://rathena.org/board/topic/118087-where-can-i-edit-stat-bonuses/#comment-357024
     
     
     
     
  4. Upvote
    banhelba2019 reacted to Crown The Empire in New damage formula (Dragon Breath)   
    Old damage formula (before the 175/60 update, implemented December 10, 2014 in iRO):
    Damage = [(CurrHP ÷ 50) + (MaxSP ÷ 4)] × (SkillLv × BaseLv ÷ 150) × (95 + DragonTraining_Lv × 5)% New damage formula (after the 175/60 update):
    Damage = [(CurrHP ÷ 50) + (MaxSP ÷ 4)] × (SkillLv × BaseLv ÷ 150) × (95 + DragonTraining_Lv × 5)% × (100 + Ranged Damage Modifiers)% x (Elemental Modifiers)% battle.c (Hercules)
    case RK_DRAGONBREATH: case RK_DRAGONBREATH_WATER: md.damage = ((status_get_hp(src) / 50) + (status_get_max_sp(src) / 4)) * skill_lv; RE_LVL_MDMOD(150); if (sd) md.damage = md.damage * (95 + 5 * pc->checkskill(sd,RK_DRAGONTRAINING)) / 100; md.flag |= BF_LONG|BF_WEAPON; break; battle.ccp (rAthena)
    case RK_DRAGONBREATH: case RK_DRAGONBREATH_WATER: { int damagevalue = (sstatus->hp / 50 + status_get_max_sp(src) / 4) * skill_lv; if(status_get_lv(src) > 100) damagevalue = damagevalue * status_get_lv(src) / 150; if(sd) damagevalue = damagevalue * (100 + 5 * (pc_checkskill(sd,RK_DRAGONTRAINING) - 1)) / 100; ATK_ADD(wd->damage, wd->damage2, damagevalue); #ifdef RENEWAL ATK_ADD(wd->weaponAtk, wd->weaponAtk2, damagevalue); #endif wd->flag |= BF_LONG; } skill.c (Hercules)
    case RK_DRAGONBREATH_WATER: case RK_DRAGONBREATH: { struct status_change *tsc = NULL; if( (tsc = status->get_sc(bl)) && (tsc->data[SC_HIDING] )) { clif->skill_nodamage(src,src,skill_id,skill_lv,1); } else skill->attack(BF_MISC,src,src,bl,skill_id,skill_lv,tick,flag); } skill.cpp (rAthena)
    case RK_DRAGONBREATH_WATER: case RK_DRAGONBREATH: if( tsc && tsc->data[SC_HIDING] ) clif_skill_nodamage(src,src,skill_id,skill_lv,1); else skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag); break; So I think the difference is the new formula takes these range, elemental and racial modifiers into account.
    It seems this formula was recently implemented in rAthena (BF_WEAPON TYPE), while Hercules is still using the old formula (BF_MISC TYPE). I have tried to merge rathena's new formula into Hercules, but encountered several problems.
  5. Upvote
    banhelba2019 reacted to Panallox in High Definition Damage Font   
    View File High Definition Damage Font
    Hi all,
    This is a basic damage font alternative which can be used to bring a little more high definition resolution to Ragnarok! I made this purely because I was tired of staring at the hideously stretched and over-pixelated damage numbers while I was doing some testing. Feel free to give it a try! There is a slightly wider spacing between digits that I wasn't able to close off because the client must determine spacing/positionings between, but if you want to reduce some of the spacing I have provided another .act file suffixed "_larger" which reduces the spacing but makes the damage text a bit larger.
    Thanks
    Submitter Epoque Submitted 03/30/19 Category Sprites & Palettes  
  6. Upvote
    banhelba2019 reacted to Dastgir in Dastgir's Services   
    Hello Hercules Community,

    I am offering my Services to you @ some expense of money.

    Works for Emulator: Hercules/rAthena/Others(if any)
    Services:
    Scripting. (Min Price:5$ ) Source Modification(/Addition).(Min Price: 5$) Converting to/Creating a Plugin[Hercules Specific].(Min Price: 5$) Migrating Your Server. (Min Price: 10$) Adding Custom Items/Maps/Mobs. (Min Price: 5$) Creating/Adding New Skills. (Min Price: 10$) Changing of Emulator (Min Price: 10$) ClientSide Things. (Min Price: 5$) Fixing Errors. (Min Price: 5$) Script Review. Consulting And Anything else, that you want, just drop me a PM
    Maximum Price: Depends on Complexity of the Work
    What Else:
    Free Support for Service bought from me.

    Contact Info:
    Post Here Via PM Payment Methods:
    PayPal Only PM me if you want any other payment method, and I might check If I can have it.

    Status: AVAILABLE
  7. Upvote
    banhelba2019 reacted to raPalooza~ in raPalooza's Cursor   
    File Name: raPalooza's Cursor
    File Submitter: raPalooza~
    File Submitted: 24 May 2016
    File Category: Sprites & Palettes
     
    This is a cursor modification I made for ragnarok, following the thoughts and feeling of my past works,
    I've created this with the intention of innovating the feeling of the game without letting the design break the game visual with a big gap in style.
     
    Some pieces are made from other mmos such as maplestory for example ( and some others I cant remember right now )
     
    I've got some files backed up and lost others due to lost data on my old computer(it's an old project) so it's a little hard to deal modifications from the feedback, but i'll do my best.
     
    A lot of people came asking for this cursor over PM and Posts, glad you guys asked for it, otherwise I would let this project on the shelf, enjoy guys ;]
     
    RAN OUT OF IDEAS FOR THE NAME!
    cYA
     
    Click here to download this file
  8. Upvote
    banhelba2019 reacted to AnnieRuru in can i hide/show items in select list   
    https://rathena.org/board/topic/118341-conditions-for-labels-and-inside-menus/?do=findComment&comment=358053
    just if-else if-else if-else if-else on every statement
  9. Upvote
    banhelba2019 reacted to AnnieRuru in H> unlock menu with certain requeriments   
    why not?
    prontera,155,185,5 script quest 1_F_MARIA,{ mes "quest giver"; next; for ( .@i = 0; .@i < 3; ++.@i ) .@menu$[.@i] = sprintf( _$( "%sQuest %d" ), F_MesColor((quest > .@i *2)? C_GRAY : C_BLACK), .@i +1 ); .@s = select( implode( .@menu$, ":" ) ) -1; .@state = .@s *2; if ( quest > .@state ) { mes "you have completed this quest"; close; } else if ( quest < .@state ) { mes "you can't take this quest yet."; close; } mesf "Go talk to npc %d", .@s +1; quest = .@state +1; close; } function script F_quest_state { .@npcid = getarg(0); .@state = (.@npcid -1) *2 +1; if ( quest == .@state ) { dispbottom sprintf( _$( "complete %d" ), .@npcid ); quest = .@state +1; } end; } prontera,150,180,5 script npc 1 1_F_MARIA,{ F_quest_state(1); } prontera,155,180,5 script npc 2 1_F_MARIA,{ F_quest_state(2); } prontera,160,180,5 script npc 3 1_F_MARIA,{ F_quest_state(3); } prontera,160,185,5 script reset 1_F_MARIA,{ quest = 0; }  
    and this is quest log with achievement system
    { Id: 49920 Name: "Quest 1" }, { Id: 49921 Name: "Quest 2" }, { Id: 49922 Name: "Quest 3" }, [49920] = { Title = "Quest 1", IconName = "ico_nq.bmp", Description = { "Talk to <NAVI>NPC 1<INFO>prontera,150,180,</INFO></NAVI>" }, Summary = "Talk to NPC 1", NpcSpr = "1_F_MARIA", NpcNavi = "prontera", NpcPosX = 150, NpcPosY = 180, }, [49921] = { Title = "Quest 2", IconName = "ico_nq.bmp", Description = { "Talk to <NAVI>NPC 2<INFO>prontera,155,180,</INFO></NAVI>" }, Summary = "Talk to NPC 2", NpcSpr = "1_F_MARIA", NpcNavi = "prontera", NpcPosX = 155, NpcPosY = 180, }, [49922] = { Title = "Quest 3", IconName = "ico_nq.bmp", Description = { "Talk to <NAVI>NPC 3<INFO>prontera,160,180,</INFO></NAVI>" }, Summary = "Talk to NPC 3", NpcSpr = "1_F_MARIA", NpcNavi = "prontera", NpcPosX = 160, NpcPosY = 180, } { Id: 109993 Name: "Custom Quest" Type: "ACH_QUEST" Objectives: { *1: { Description: "Complete Quest 1" } *2: { Description: "Complete Quest 2" } *3: { Description: "Complete Quest 3" } } Points: 0 }, [109993] = { UI_Type = 0, group = "CHATTING", major = 4, minor = 0, title = "Custom Quest", content = { summary = "Visit the Quest Giver", details = "Visit the Quest Giver." }, resource = { [1] = { text = "Complete Quest 1" }, [2] = { text = "Complete Quest 2" }, [3] = { text = "Complete Quest 3" } }, score = 0 }, prontera,155,185,5 script quest 1_F_MARIA,{ mes "quest giver"; next; for ( .@i = 0; .@i < 3; ++.@i ) .@menu$[.@i] = sprintf( _$( "%sQuest %d" ), F_MesColor((questprogress( 49920+ .@i ) == 2)? C_GRAY : C_BLACK), .@i +1 ); .@s = select( implode( .@menu$, ":" ) ) -1; .@qid = 49920+ .@s; if ( questprogress(.@qid) == 2 ) { mes "you have completed this quest"; close; } else if ( .@qid == 49920 ); // break; else if ( questprogress(.@qid -1) != 2 ) { mes "you can't take this quest yet."; close; } mesf "Go talk to npc %d", .@s +1; if ( questprogress(.@qid) == 0 ) setquest .@qid; close; } function script F_quest_state { .@npcid = getarg(0); .@qid = .@npcid -1 + 49920; if ( questprogress(.@qid) == 1 ) { completequest .@qid; dispbottom sprintf( _$( "complete %d" ), .@npcid ); achievement_progress 109993, .@npcid, 1, 1; } end; } prontera,150,180,5 script npc 1 1_F_MARIA,{ F_quest_state(1); } prontera,155,180,5 script npc 2 1_F_MARIA,{ F_quest_state(2); } prontera,160,180,5 script npc 3 1_F_MARIA,{ F_quest_state(3); } prontera,160,185,5 script reset 1_F_MARIA,{ for ( .@i = 49920; .@i <= 49922; ++.@i ) if ( questprogress(.@i) ) erasequest(.@i); end; }  
    have fun playing with it
    actually this is very simple script, just wanna play around a little bit
  10. Upvote
    banhelba2019 reacted to 4144 in [Solved] Hexed 2014-03-05b Hide Map Button Failed   
    Ah then previous developer was broke some patches for old versions, i will try to check this
  11. Upvote
    banhelba2019 reacted to AnnieRuru in Guild Skill Notification   
    https://github.com/AnnieRuru/Release/blob/master/plugins/guild_skill_notification.c

  12. Upvote
    banhelba2019 reacted to astralprojection in Trigger OnMobDrop Event   
    Is there a way to trigger on ion mob drop a specific item?
    - scrip    itemdrop   -1,{
    end;
    OnMobDrop:
         If(nameid = 601)
         dispbottom "Monster dropped ^+getitemname(601):
         end;
    }
     
  13. Upvote
    banhelba2019 reacted to 4144 in Stable packet   
    From server side most or all versions should works. Older than 2017 may have some issues and need test for each client)
    From client side, clients itself works fine, but in some can be issues. And more important not all clients may works patches what you need. Check patches what you need on http://nemo.herc.ws/clients/
    On other emulators popular version 2018-06-21, because this emulators not support newer version. But in hercules you can use any new version too.
  14. Upvote
    banhelba2019 got a reaction from Functor in Model/Texture Pack 01   
    View File Model/Texture Pack 01
    My old models will find no place in my new project. . . 
     
    Future packs will be better organized (yes every model has its own folder maybe I could change it but i didnt)          o/  
     
     
    Submitter lllaaazzz Submitted 03/23/19 Category Maps & Textures  
  15. Upvote
    banhelba2019 got a reaction from Tio Akima in custom card code   
    can be done easily enough
    just by switching 
    in status.c 
    ctrl + f , find SC_AUTOBESERK
    look for these 
    st->max_hp>>2 change them to this
    st->max_hp*0.75 now autobeserk applies at 75% hp
     
    ok to remove the toggle, im not sure off the top of my head but i dont see why not
     
    so using this you need to:
    make a new SC_CARDEFFECT
    just copy impositio manus for straight ATK
    or keep is like provoke but without the defense reduction
     
    now you just gotta figure out how to make it a passive instead of toggled 
  16. Upvote
    banhelba2019 reacted to AnnieRuru in Outfits and Cashmount   
    I knew that, but this doesn't show the weapon sprite
    although its a bit off when enable it

    hmm ... I just re-read the topic, you only want to enable attack/skill on these job sprite,
    not enabling the weapon sprite ... it was from lllaaazzz suggestion
  17. Upvote
    banhelba2019 got a reaction from skyundersea in Outfits and Cashmount   
    no unfortunately i cant test it without downloading a bunch of stuff, but ive looked over it and thats the only thing i can see anyways
    try deleting that entire block i mentioned
    if its job related i have no idea
    few other things :
     
    sc_config.txt
    // Unremovable SC_WEIGHTOVER50, 207 SC_WEIGHTOVER90, 207 SC_WEDDING, 77 SC_XMAS, 77 SC_SUMMER, 77 SC_NOCHAT, 205 SC_FUSION, 77 thats probably 64 + 8 + 4 + 1 or something but doubt it matters
     
    sorry, but youve given me a sweet idea though 
  18. Upvote
    banhelba2019 got a reaction from Rotciv in Create Ground Skill   
    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 
     
  19. Upvote
    banhelba2019 got a reaction from JulioCF in Como adicionar imagem no ALT+U ?   
  20. Upvote
    banhelba2019 got a reaction from Hakahay in Como adicionar imagem no ALT+U ?   
  21. Upvote
    banhelba2019 got a reaction from Echoes in (Name)'s Item creation question   
    go to your skill.c
        switch (skill_id) {                 case BS_DAGGER:                 case BS_SWORD:                 case BS_TWOHANDSWORD:                 case BS_AXE:                 case BS_MACE:                 case BS_KNUCKLE:                 case BS_SPEAR:                 case BS_PLUS:                     flag = battle_config.produce_item_name_input&0x1;                     break;                 case AM_PHARMACY:                 case AM_TWILIGHT1:                 case AM_TWILIGHT2:                 case AM_TWILIGHT3:                     flag = battle_config.produce_item_name_input&0x2;                     break;                 case AL_HOLYWATER:                 /**                  * Arch Bishop                  **/                 case AB_ANCILLA:                     flag = battle_config.produce_item_name_input&0x8;                     break;                 case ASC_CDP:                     flag = battle_config.produce_item_name_input&0x10;                     break;                 default:                     flag = battle_config.produce_item_name_input&0x80;                     break;             } find this and probably somewhere here, i havnt test out adding it to my own items but i did remove names off of one of my creation lists so i know its this 
  22. Upvote
    banhelba2019 got a reaction from bWolfie in RNG anomaly   
    my favorite thing about Ragnarok is having 95% flee and your still getting hit like half the time 1v1 lol 
×
×
  • Create New...

Important Information

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