Jump to content

Garr

Members
  • Content Count

    482
  • Joined

  • Last visited

  • Days Won

    8

Reputation Activity

  1. Like
    Garr got a reaction from evilpuncker in NPC Syntax Highligh for Notepad++   
    If you want you can use mine, I use it with white BG, also converted all hercules commands/maps/constants not so long ago.
     
    https://www.mediafire.com/?651l534mjmdlec3
     
    (It doesn't let me attach xml files, so >.> )
     
    Example
  2. Upvote
    Garr got a reaction from Angery Woodpecker in Item that gives constant Soul Link Effect   
    Try this:
    function script soullink { switch ( BaseJob ) { case 18: .@spirit = 445; break; case 20: case 15: .@spirit = 447; break; case 19: .@spirit = 455; break; case 4047: .@spirit = 448; break; case 17: .@spirit = 456; break; case 16: .@spirit = 449; break; case 12: .@spirit = 457; break; case 14: .@spirit = 450; break; case 10: .@spirit = 458; break; case 23: .@spirit = 451; break; case 11: .@spirit = 460; break; case 7: .@spirit = 452; break; case 4049: .@spirit = 461; break; case 8: .@spirit = 454; break; case 9: .@spirit = 453; break; } sc_start4 SC_SOULLINK, -1, 5, .@spirit,0,0; skilleffect .@spirit, 5; // Start Soul Link Effect. end;} (I don't know why there was .@j there instead of SC_SOULLINK or 185, but since it's not initialized anywhere it started status #0, which is SC_STONE)
    Otherwise it should work, I used something like this once and it was providing full link benefits.
  3. Upvote
    Garr got a reaction from Sephus in Kafra with storage + gstorage   
    To be honest, I learned most of the things just from reading documentation /swt
     
    Easiest way to find out is open /doc/script_commands.txt and find the command there. That's the best method, or you can use this site, but It's not up-to-date with Hercules commands and works better if you're looking for some particular basic command.
    callfunc "F_Kafra",5,0,1,20,600; All the following numbers are arguments, which are used within function itself to determine the outcome, they are fetched from within function via getarg(N) command. Their indexes start from 0 and go on forward, like getarg(0) will return 5, and getarg(3) will return 20.
     
    According to function itself, here's what arguments are used for:
    First argument: index - 0, value - 5, determines what kind of message Kafra will display before calling menu;
    Second argument: index - 1, value - 0, determines what menu Kafra will call out;
    Third argument: index - 2, value - 1, passed on to F_KafInfo function, determines Information provided when menu option "Check Other Information" is selected;
    Fourth argument: index - 3, value - 20, passed on to F_KafStor function, determines cost of opening storage;
    Fifth argument: index - 4, value - 600, passed on to F_KafCart function, determines cost of renting a cart.
     
    When you want to find out what each number means for each function call, open said function script and check out where getarg(N) is called.
  4. Upvote
    Garr got a reaction from dfabsgwapings in Chat/PM issue   
    Go into friend window options, and uncheck opening 1:1 chats.
  5. Upvote
    Garr got a reaction from Singularity in Luk and freezing   
    It's pretty simple, first thing you'll need to know is that max for tick_def is 10000 (100%). Out of this and luk that you want immunity on you solve simple equation:
    x = 10000 / ChosenLuk;
     
    After that just change this line:
     
    tick_def = st->luk*40; to
    tick_def = st->luk*x; Where x is the result of equation.
    Example: You want immunity on 300 luk, that means
    x = 10000 / 300;
    x = 34;
    (It's for you to decide where to round, up or down. I rounded up. That measn that actual luk you'll need for immunity is 295. If you round it down, then needed luk will be 303)
    So the resulting line will be:
    tick_def = st->luk*34;
  6. Upvote
    Garr got a reaction from Hafflex in Is there another way to increase monster size? current max size: 2 (big)   
    Hmm. That depends on the client you're using. If I remember correctly latest ones have a table that lets you increase size of monster sprite. Iirc it's the one in system called monster_size_effect.lub (or lua).
     
    But I'm not sure starting which client it works. Otherwise I don't know any options besides resizing sprite itself, sorry.
  7. Upvote
    Garr reacted to Ragno in [Instance]Horror Toy Factory (Aegis Server)   
    I have converted it to Hercules format:
     
    xm_d - Hercules.rar
     
    This uses AnnieRuru's Plugin: http://herc.ws/board/topic/11097-setmobdata-getmobdata/ in the battle against Celine Kimi.
     
    I have still not played it, only converted trying to be as close as possible to the original scripts. However, I duplicate some npcs in order to compact script and make it more readable.
     
    I hope this helps to Ridley's script and make it easier to other people to translate it from chinese.
  8. Upvote
    Garr got a reaction from Helena in Array help   
    Replace
    .itemname$[ .@k ] = getitemname( .itemid[ .@k ] ); with
    .itemname$[ .@k ] = (getitemname( .itemid[ .@k ] ) != "null")?getitemname( .itemid[ .@k ] ):""; That way nothing will be altered, client doesn't show empty options (""), but still counts them in when returning chosen index.
  9. Upvote
    Garr got a reaction from mrlongshen in Overwrite item price in ragnarok   
    1) Just open SDE
    2) Open item db
    3) Use "[type] 6" as filter
    4) Select 1 card, then ctrl+A
    5) Edit sell & buy price on the right window (it will edit ALL selected items)
    6) Save
    7) ...
    8) Profit!
  10. Upvote
    Garr got a reaction from Obitto in Hexed   
    Did you copy the new needed lua files into data folder/grf?
     
    If not, they are in support folder of NEMO, you need to copy them using the same path.
  11. Upvote
    Garr got a reaction from uzami in MOB's   
    You don't have their IDs attached to sprites in npcidentity.lua(lub)/jobname.lua(lub). Check out adding custom mob.
  12. Upvote
    Garr reacted to Angelmelody in Weapon Mastery Problems   
    bEquipmentMatk was renamed as bMatk
  13. Upvote
    Garr got a reaction from Lamex in Weapon Mastery Problems   
    Oh. I had no idea. Fixed in my initial post then.
  14. Upvote
    Garr got a reaction from Lamex in Weapon Mastery Problems   
    Several case issues (Break vs break), added callfunc,fixed SC_ name, replaced all set with direct assignment, made NPC's sprite use constant. I think that's pretty much it.
  15. Upvote
    Garr got a reaction from Lamex in Weapon Mastery Problems   
    Hmm. Here, try this, at least Haru's script checker doesn't see any more errors:
    //===== EinherjarRO Scripts ================================== //= WeaponMasteries //===== By: ================================================== //= Stolao //===== Current Version: ===================================== //= 1.22 //===== Compatible With: ===================================== //= rAthena SVN & Hercules 844d4291 //===== Description: ========================================= //= As you train using a particular weapon type you get passive //= buffs depending on how much yo have used that type //= There are five types Slash, Stab, Smash, Ranged and Unique //===== Comments: ============================================ //= Masteries can go up to level 9999 with curve of 21 //= Requires OnEvent/OnKillNPCEvent.txt to function //===== Additional Comments: ================================= //= 1.00 Original Make //= 1.01 +33% Mastery >> Atk //= 1.02 +50% Mastery >> Matk //= 1.03 Rename Masteries //= 1.04 Redistibute Weapons into new masteries //= 1.05 Wiped Mastery Bonuses //= 1.06 Added Starting Bonuses //= 1.07 Made OnPCStatCalcEvent for Mastery System //= 1.08 Added mastery Bonueses for Lvl 1, 2, 4, 8, 16, 32 ,64, and 128 //= 1.09 Changed Mysticals MaxSPRate for MaxSp //= 1.0A Added @wi (see bindatcmd.txt) //= 1.0B Added @wlvl (see bindatcmd.txt) //= 1.0C Removed dependency from bindatcmd.txt //= 1.0D Rebalanced a few formulas for differant masteries //= 1.0E Combined with old Sect System //= 1.0F Added Sect give +10 total on varried stats //= 1.10 Added 10% Resistance to sects Element //= 1.11 Added 10% more damage with sects element //= 1.12 Changed Sect Stats from +10 -> +3 //= 1.13 Changed Wm Stat bonus from M/9 -> M/32 //= 1.14 Removed Wm Booster item //= 1.15 Lowered Wm Max Level to 99 //= 1.16 Rewrote Onslaught Formulas for lower effect //= 1.17 Rewrote Switfness Formulas for lower effect //= 1.18 Rewrote Safegaurd Formulas for lower effect //= 1.19 Rewrote Ranged Formulas for lower effect //= 1.1A Rewrote Mystical Formulas for lower effect //= 1.1B Added Exprates = job_exp_rate //= 1.1C Changed Exp Curve to reflect new Exp Rates //= 1.1D Added Debugmes on Overflow //= 1.1E Added Increased Exp from SC_JEXPBOOST,2 //= 1.1F Fixed Spacing/ Readability in OnInit //= 1.20 Fixed Typos //= 1.21 Fixed Bug with No gear On //= 1.22 Fixed Missing ) //===== Contact Ifo: ========================================= //= [Stolao] //= Email: [email protected] //============================================================ // // Str - Onslaught:    2HSword,1HAxe,2HAxe,1HMace,2HMace(unused),Knuckle // Agi - Swiftness:    Specialty,Dagger,Fuuma Shuriken,Katar // Vit - Safegaurd:    Unarmmed,1HSword,1HSpear,2HSpear // Dex - Ranged:    Bow,Instrument,Whip,Revolver,Rifle,Gatling Gun,Shotgun,Grenade Launcher // Int - Mystical:    Rod,Book,2HStaff,Scythe function    script    Onslaught_M    {     if ( OnslaughtMaster >= 1 )    bonus bCritical,1+OnslaughtMaster/20;     if ( OnslaughtMaster >= 2 )    bonus bAtk,1+OnslaughtMaster/4;     if ( OnslaughtMaster >= 4 )    bonus bAtk2,1+OnslaughtMaster/4;     if ( OnslaughtMaster >= 8 )    bonus bPerfectHitAddRate,1+OnslaughtMaster/21;     if ( OnslaughtMaster >= 16 )    bonus bBaseAtk,OnslaughtMaster/4+1;     if ( OnslaughtMaster >= 32 )    bonus bCritAtkRate,OnslaughtMaster/4+1;     if ( OnslaughtMaster >= 64 )    bonus bAspdRate,OnslaughtMaster/22 + 1;     if ( OnslaughtMaster >= 128 )    bonus bSplashAddRange,1;     bonus bStr,1+OnslaughtMaster/32;     bonus bAtkRate,1+OnslaughtMaster/7+((1+OnslaughtMaster/7)*readparam(bStr)/100);         return; } function    script    Swiftness_M    {     if ( SwiftnessMaster >= 1 )    bonus bSpeedAddRate,1+SwiftnessMaster/9;     if ( SwiftnessMaster >= 2 )    bonus bFlee,SwiftnessMaster/3;     if ( SwiftnessMaster >= 4 )    bonus bDoubleAddRate,1+SwiftnessMaster/9;     if ( SwiftnessMaster >= 8 )    bonus bFlee2,1+SwiftnessMaster/33;     if ( SwiftnessMaster >= 16 )    bonus bPerfectHitAddRate,1+SwiftnessMaster/11;     if ( SwiftnessMaster >= 32 )    bonus bCritAtkRate,SwiftnessMaster/9-1;     if ( SwiftnessMaster >= 64 )    bonus bCritical,1+OnslaughtMaster/20;     if ( SwiftnessMaster >= 128 )    bonus2 bHPDrainRate,1+SwiftnessMaster,1+SwiftnessMaster/24;     bonus bAgi,1+SwiftnessMaster/32;     bonus bAspdRate,1+SwiftnessMaster/7+((1+SwiftnessMaster/7)*readparam(bAgi)/100);     return; } function    script    Safegaurd_M    {     if ( SafegaurdMaster >= 1 )    bonus bHPrecovRate,1+SafegaurdMaster/2;     if ( SafegaurdMaster >= 2 )    bonus bDef,1+SafegaurdMaster/20;     if ( SafegaurdMaster >= 4 )    bonus bMdef,1+SafegaurdMaster/24;     if ( SafegaurdMaster >= 8 )    bonus bMaxHPrate,1+SafegaurdMaster/11;     if ( SafegaurdMaster >= 16 )    bonus bNearAtkDef,SafegaurdMaster/20+1;     if ( SafegaurdMaster >= 32 )    bonus bLongAtkDef,SafegaurdMaster/21+1;     if ( SafegaurdMaster >= 64 )    bonus bMagicAtkDef,SafegaurdMaster/22+1;     if ( SafegaurdMaster >= 128 )    bonus bCriticalDef,SafegaurdMaster/23+1;     bonus bVit,1+SafegaurdMaster/32;     bonus bMaxHP,SafegaurdMaster*5+5+((SafegaurdMaster*5+5)*readparam(bVit)/100);     return; } function    script    Ranged_M    {     if ( RangedMaster >= 1 )        bonus bBaseAtk,OnslaughtMaster/3+2;     if ( RangedMaster >= 2 )        bonus bCritical,1+RangedMaster/21;     if ( RangedMaster >= 4 )        bonus bFlee,1+RangedMaster/11;     if ( RangedMaster >= 8 )        bonus bAspd,RangedMaster/11;     if ( RangedMaster >= 16 )        bonus bHit,RangedMaster/9;     if ( RangedMaster >= 32 )        bonus bLongAtkRate,RangedMaster/9-1;     if ( RangedMaster >= 64 )        bonus bCritAtkRate,4+RangedMaster/9;     if ( RangedMaster >= 128 )        bonus bAtkRange,1+RangedMaster/99;     bonus bDex,1+RangedMaster/32;     bonus bAtkRate,1+RangedMaster/7+((1+RangedMaster/7)*readparam(bDex)/100);     return; } function    script    Mystical_M    {     if ( MysticalMaster >= 1 )        bonus bSPrecovRate,1+MysticalMaster/2;     if ( MysticalMaster >= 2 )        bonus bMaxSP,MysticalMaster*2+2;     if ( MysticalMaster >= 4 )        bonus bCastrate,-1-MysticalMaster/20;     if ( MysticalMaster >= 8 )        bonus bUseSPrate,-1-MysticalMaster/21;     if ( MysticalMaster >= 16 )    bonus bDelayrate,-1-MysticalMaster/22;     if ( MysticalMaster >= 32 )    bonus bHealPower,1+MysticalMaster/2;     if ( MysticalMaster >= 64 )    bonus bMatkRate,1+MysticalMaster/7;     if ( MysticalMaster >= 128 )    bonus bNoCastCancel,1;     bonus bInt,1+MysticalMaster/32;     bonus bMatk,1+MysticalMaster+((1+MysticalMaster)*readparam(bInt)/100);          return; } prontera,5,5,5    script    PCSTATCALC    FAKE_NPC,{     end; OnWeaponInfo:     .@M$ = .@atcmd_parameters$[0];     if ( .@M$ == "" ) {         if ( getequipid(EQI_HAND_R) ) {             .@ei = getiteminfo(getequipid(EQI_HAND_R),11);         } else {             .@ei = -1;         }         switch(.@ei) {         case 3:      case 6:     case 7:     case 8:             case 9:        case 12:                    .@M$ = "Onslaught";    break;         case 0:     case 1:     case 16:    case 22:    .@M$ = "Swiftness";    break;         case 2:     case 4:     case 5:        case -1:    .@M$ = "Safegaurd";    break;         case 11:    case 13:    case 14:    case 17:         case 18:    case 19:    case 20:    case 21:    .@M$ = "Ranged";    break;         case 10:    case 15:    case 23:    case 24:    .@M$ = "Mystical";    break;         }     }     if ( strtolower(.@M$) == "onslaught" ) .@i = 1;     if ( strtolower(.@M$) == "swiftness" ) .@i = 2;     if ( strtolower(.@M$) == "safegaurd" ) .@i = 3;     if ( strtolower(.@M$) == "ranged" ) .@i = 4;     if ( strtolower(.@M$) == "mystical" ) .@i = 5;     .@X = atoi(.@atcmd_parameters$[1]);     if ( !.@X ) .@X = getd(""+.@M$+"Master");     switch(.@i) {     case 1:         dispbottom "Onslaught Lv: "+.@X+" "+OnslaughtExp+" / "+((OnslaughtMaster*OnslaughtMaster*25)+10+OnslaughtMaster)+"xp";         dispbottom "Str +"+(1+.@X/32)+"";         dispbottom "Atk +"+(1+.@X/9)+"%";         if ( .@X >= 1 )dispbottom "Critical Chance +"+(1+.@X/20)+"";         if ( .@X >= 2 )dispbottom "Atk +"+(1+.@X/9)+"";         if ( .@X >= 4 )dispbottom "Weapon Atk +"+(1+.@X/11)+"";         if ( .@X >= 8 )dispbottom "Perfect Hit +"+(1+.@X/21)+"";         if ( .@X >= 16 )dispbottom "Base Atk +"+(.@X/4+1)+"";         if ( .@X >= 32 )dispbottom "Crit Damage +"+(.@X/8+3)+"%";         if ( .@X >= 64 )dispbottom "Aspd +"+.@X/16+"%";         if ( .@X >= 128 )dispbottom "Splash attack radius +1";         break;     case 2:             dispbottom "Swiftness Lv: "+.@X+" "+SwiftnessExp+" / "+((SwiftnessMaster*SwiftnessMaster*25)+10+SwiftnessMaster)+"xp";         dispbottom "Agi +"+(1+.@X/32)+"";         dispbottom "Aspd +"+(1+.@X/9)+"%";         if ( .@X >= 1 )dispbottom "Moving speed +"+(1+.@X/9)+"%";         if ( .@X >= 2 )dispbottom "Flee +"+(.@X/2)+"";         if ( .@X >= 4 )dispbottom "Double Attack Chance +"+(1+.@X/9)+"%";         if ( .@X >= 8 )dispbottom "Perfect Dodge +"+(1+.@X/33)+"";         if ( .@X >= 16 )dispbottom "On-target impact chance +"+(1+.@X/11)+"%";         if ( .@X >= 32 )dispbottom ""+(1+SwiftnessMaster)/10+"."+((1+SwiftnessMaster)%10)+"% chance of healing for "+(.@X/24+1)+"% of damage dealt with each normal attack";         if ( .@X >= 64 )dispbottom "Critical Chance +"+(1+.@X/20)+"";         if ( .@X >= 128 )dispbottom "Crit Damage +"+(.@X/9-1)+"%";         break;     case 3:         dispbottom "Safegaurd Lv: "+.@X+" "+SafegaurdExp+" / "+((SafegaurdMaster*SafegaurdMaster*25)+10+SafegaurdMaster)+"xp";         dispbottom "Vit +"+(1+.@X/32)+"";         dispbottom "Max HP +"+(.@X*5+5)+"";         if ( .@X >= 1 )dispbottom "Natural HP recovery ratio +"+(1+.@X/2)+"%";         if ( .@X >= 2 )dispbottom "Def +"+(1+.@X/20)+"";         if ( .@X >= 4 )dispbottom "Mdef +"+(1+.@X/24)+"";         if ( .@X >= 8 )dispbottom "Max HP +"+(1+.@X/9)+"%";         if ( .@X >= 16 )dispbottom "Adds "+(.@X/20+1)+" damage reduction against Critical Hits";         if ( .@X >= 32 )dispbottom "Adds "+(.@X/21+1)+" damage reduction against melee physical attacks";         if ( .@X >= 64 )dispbottom "Adds "+(.@X/22+1)+" damage reduction against ranged physical";         if ( .@X >= 128 )dispbottom "Adds "+(.@X/23+1)+" damage reduction against magical attacks";         break;     case 4:         dispbottom "Ranged Lv: "+.@X+" "+RangedExp+" / "+((RangedMaster*RangedMaster*25)+10+RangedMaster)+"xp";         dispbottom "Dex +"+(1+.@X/32)+"";         dispbottom "Atk +"+(1+.@X/9)+"%";         if ( .@X >= 1 )dispbottom "Moving speed +"+(1+.@X/20)+"%";         if ( .@X >= 2 )dispbottom "Critical +"+(1+.@X/21)+"";         if ( .@X >= 4 )dispbottom "Flee +"+(1+.@X/2)+"";         if ( .@X >= 8 )dispbottom "Aspd +"+(.@X/11)+"";         if ( .@X >= 16 )dispbottom "Hit +"+(.@X/9)+"";         if ( .@X >= 32 )dispbottom "Increases damage of ranged attacks by "+(.@X/11)+"%";         if ( .@X >= 64 )dispbottom "Crit Damage +"+(4+.@X/9)+"%";         if ( .@X >= 128 )dispbottom "Atk Range +"+(1+.@X/99)+"";         break;     case 5:         dispbottom "Mystical Lv: "+.@X+" "+MysticalExp+" / "+((MysticalMaster*MysticalMaster*25)+10+MysticalMaster)+"xp";         dispbottom "Int +"+(1+.@X/32)+"";         dispbottom "Matk +"+(1+.@X/9)+"%";         if ( .@X >= 1 )dispbottom "Natural SP recovery ratio +"+(.@X/2+1)+"%";         if ( .@X >= 2 )dispbottom "Max SP +"+(2+.@X*2)+"";         if ( .@X >= 4 )dispbottom "Skill casting time "+(-1-.@X/20)+"%";         if ( .@X >= 8 )dispbottom "SP consumption "+(-1-.@X/21)+"%";         if ( .@X >= 16 )dispbottom "Decreases skill delay by "+(1+.@X/22)+"%";         if ( .@X >= 32 )dispbottom "Increase heal amount of all heal skills by "+(1+.@X/2)+"%";         if ( .@X >= 64 )dispbottom "Weapon magical attack power +"+(.@X+1);         if ( .@X >= 128 )dispbottom "Prevents casting from being interrupted when hit";         break;     default:         dispbottom "@wi <Type> <Level>";         dispbottom "Type: Onslaught, Swiftness, Safegaurd, Ranged, Mystical";         break;     }     end; OnWeaponLevel:     .@M$ = .@atcmd_parameters$[0];     .@X = atoi(.@atcmd_parameters$[1]);     if ( (.@M$ != "Onslaught" && .@M$ != "Swiftness" && .@M$ != "Safegaurd" && .@M$ != "Ranged" && .@M$ != "Mystical" && .@M$ != "All")||!.@X){         dispbottom "@wlvl <type> <lvl>";         dispbottom "Onslaught,  Swiftness,  Safegaurd,  Ranged,  Mystical,  All";         end;     }     if ( .MaxMastery >= .@X){         if ( .@M$ == "All"){             setarray .@X$[0],"Onslaught","Swiftness","Safegaurd","Ranged","Mystical";             .@i = 0;             while(.@i < 5){                 setd ""+.@X$[.@i]+"Master",.@X;                 setd ""+.@X$[.@i]+"Exp",0;                 dispbottom ""+.@X$[.@i]+" Mastery has advanced to Lv "+.@X+"!";                 .@i = .@i+1;             }         } else {             setd ""+.@M$+"Master",.@X;             setd ""+.@M$+"Exp",0;             dispbottom ""+.@M$+" Mastery has advanced to Lv "+.@X+"!";         }     } else {         dispbottom "Sorry. Your "+.@M$+" Mastery has reached its limit!";     }     end; OnPCStatCalcEvent:     switch(getiteminfo(getequipid(EQI_HAND_R),11)){     case 3:      case 6:     case 7:     case 8:         case 9:        case 12:                    callfunc("Onslaught_M");    break;     case 0:     case 1:     case 16:    case 22:    callfunc("Swiftness_M");    break;     case 2:     case 4:     case 5:        case -1:    callfunc("Safegaurd_M");    break;     case 11:    case 13:    case 14:    case 17:     case 18:    case 19:    case 20:    case 21:    callfunc("Ranged_M");    break;     case 10:    case 15:    case 23:    case 24:    callfunc("Mystical_M");    break;     }     end; OnNPCKillEvent:     if ( .Weapon){         .@M$ = "";         switch(getiteminfo(getequipid(EQI_HAND_R),11)){         case 3:      case 6:     case 7:     case 8:             case 9:        case 12:                    .@M$ = "Onslaught";    break;         case 0:     case 1:     case 16:    case 22:    .@M$ = "Swiftness";    break;         case 2:     case 4:     case 5:        case -1:    .@M$ = "Safegaurd";    break;         case 11:    case 13:    case 14:    case 17:         case 18:    case 19:    case 20:    case 21:    .@M$ = "Ranged";    break;         case 10:    case 15:    case 23:    case 24:    .@M$ = "Mystical";    break;         }         if ( .MaxMastery > getd( .@M$ + "Master")) {             setd .@M$+"Exp",getd(""+.@M$+"Exp") + (strmobinfo(3,killedrid)+.wLvBonus*getiteminfo(getequipid(EQI_HAND_R),13)) * (getbattleflag("job_exp_rate") + getbattleflag("job_exp_rate") * getstatus(SC_CASH_PLUSONLYJOBEXP,2));             if ( getd(""+.@M$+"Exp") > getd(""+.@M$+"Master")*(getd(""+.@M$+"Master")*.expcurve)+10+getd(""+.@M$+"Master")){                 setd ""+.@M$+"Master",getd(""+.@M$+"Master")+1;                 announce ""+.@M$+" Mastery has advanced to Lv "+getd(""+.@M$+"Master")+"!",bc_blue|bc_self;                 setd ""+.@M$+"Exp",0;             }         }     }     end; OnInit:     bindatcmd("wi"        ,"PCSTATCALC::OnWeaponInfo",1,99);     bindatcmd("weaponinfo"    ,"PCSTATCALC::OnWeaponInfo",1,99);     bindatcmd("wlvlup"    ,"PCSTATCALC::OnWeaponLevel",60,99);     bindatcmd("wlvl"    ,"PCSTATCALC::OnWeaponLevel",60,99);     .Weapon = 1;        // Toggle Exp Groth On/Off     //   1 = On     //   0 = Off     .expcurve = 2500;    // Exp curve for weapon mastery     //   Lv*Lv*.expcurve+10+Lv     //   Default 2500     .MaxMastery = 99;    // Sets the max Weapon Mastery Level     //   Default 128     .wLvBonus = 1;    // Amount of extra Weapon Exp from higher level weapons,     //   Bonus exp = WLv*.wLvBonus     //   Default 1     // System Debug     if ( .MaxMastery * .MaxMastery *(.expcurve/10) + .MaxMastery + 10 > 214748364 ){         debugmes "[Weapon Mastery]: Max Exp Overflow Error, Lower .MaxMastery or .expcurve to fix";         end;     } } Note: You'd need a custom plugin from AnnieRuru, OnPCStatCalcEvent.
  16. Upvote
    Garr reacted to AnnieRuru in *setmobdata & *getmobdata   
    hmm ...
    I actually didn't know rathena already has it when I opened this topic
    I admit they at least tried to "make stuffs happens", although some of their design is flaw
     
    I think mine is a little bit better, because mine can modify attack damage for monster, which they can't
    but rathena also has a few stuffs that I didn't have, like the monster no cast skill flag, and I haven't code setmoblook
     
    erm .... HAHAHAHA !!
    so rathena monster's stat cannot change due to a bug
    https://github.com/rathena/rathena/issues/462
    https://github.com/rathena/rathena/issues/516
    https://github.com/rathena/rathena/issues/751
     
    it doesn't matter now, I copy all their good stuffs, so now mine is better than them
     
    patch 1.2
    http://upaste.me/ed6c2196382229bc7
    crazy 500 lines modification, hercules seriously missing many stuffs
  17. Upvote
    Garr got a reaction from evilpuncker in how to check password kafra storage?   
    Close, but not quite
    acc_reg_num_db
  18. Upvote
    Garr got a reaction from Angelmelody in Instances crash   
    Iirc for instances you can't use such long map names, limit is like 6 or 7 characters, I don't quite remember.
     
    Client is crashing because your instance map name gets cut off, and is sent to client like "1@eleme" or something. Try to make map name shorter (4~5 characters after "@", 4 just to be sure) or use map name emulation (you'd still need to change map name client-side, but that'll be easy since you already set resnametable entries.)
  19. Upvote
    Garr got a reaction from Mikhail von Hohenheim in [Question] About herc.ws   
    Only Avira for somewhat reason thinks it's infected. 99.99% site's clean and it's actually antivir fault
  20. Upvote
    Garr got a reaction from Domo in Help me make an NPC to check style variables   
    It's a pretty simple NPC you can make using *getlook script command (*setlook for variable reference)
  21. Upvote
    Garr got a reaction from AnnieRuru in Card Collector   
    You have a small typo on line 52, mvpcards -> .mvpcards
     
    I can't deny that I get the idea behind this, but I somehow find such event strange. Still, awesome script /no1
  22. Upvote
    Garr reacted to AnnieRuru in Card Collector   
    this script gets in the way when I editing the wiki, so I have to dispose here
    ops, I mean, release here
     
    Download:
    script
     
    simple script, the npc announce the name of the card it wants
    if the player having this card, can give to this npc for a reward
     
    found this idea from rathena script request
  23. Upvote
    Garr got a reaction from AnnieRuru in Auraset   
    Why not just change that exact
    return 0; to
    return retVal; I think that'd be easier than rewriting the hook to pre
  24. Upvote
    Garr got a reaction from AnnieRuru in Poring Summoner problem.   
    360/60 is 6...
  25. Upvote
    Garr got a reaction from AnnieRuru in Change monsters stats and rewards according to size   
    I think there's already a conf option for this? conf/battle/monster.conf
    // Whether or not the size of specially summoned mobs influences experience, drop rates,// and stats. The rates will be doubled for large mobs, and halved for small ones.// This is only invoked under the 'monster' command, @monsterbig, and @monstersmall. (Note 1)// Default: nomob_size_influence: yes
×
×
  • Create New...

Important Information

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