Jump to content

Lamex

Members
  • Content Count

    64
  • Joined

  • Last visited

  • Days Won

    1

Reputation Activity

  1. Upvote
    Lamex reacted to Monsieur Panda in [psd] Interface button template   
    Hello,
    If you want to translate your RO interface in your mother tongue (or other), I would like to share my PSDs files which I used to make my french RO
     
     
    Enjoy !
     
    Files in the zip:
    42x20.psd 48x20.psd 54x20.psd 57x20.psd 60x20.PSD 62x20.psd 63x20.PSD 64x20.psd 67x20.psd 68x20.PSD 71x20.psd 85x20.PSD 100x20.psd 221x20.psd 221x40.psd RO Buttons Interface by Monsieur Panda.zip
     
    EDIT: An example on how it looks which parameters / font I use 
     
      
     
  2. Upvote
    Lamex got a reaction from Ridley in Zodiac of the months   
    "You like to make 1 cancer"
     
    Yes pls Kappa
  3. Upvote
    Lamex got a reaction from IndieRO in DailyRewards like this one so cool!   
    I got a code from Stolao's "Daily login reward 1.59" for this sample.
     
    //===== EinherjarRO Scripts ================================== //= Daily Prize, OnPCLoginEvent //===== By: ================================================== //= Stolao //===== Current Version: ===================================== //= 1.59 //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= //= A reward system for players who play more frequently //===== Comments: ============================================ //= Maybe Make .MinWait an array mins,days,weeks,months,years; //===== Additional Comments: ================================= //= For Older See Forums //= 1.51 Changed set .@g formula and move lower into script //= 1.52 Replace all disbottom -> message //= 1.53 Changed Format to Include minuets instead of just hours //= 1.54 Made Time till next rewards display dynamic //= 1.55 Changed a forgotten .PointType$ -> getd(.@TT[1]) //= 1.56 changed .@XT -> .@XT$ //= 1.57 Added Atoi where nessisary //= 1.58 Fixed a swapped .@x and .@x+1 //= 1.59 Serveral Edit Undocumented to fix //===== Contact Info: ======================================== //= [Stolao] //= Email: [email protected] //============================================================ - script LOGIN -1,{ OnWhisperGlobal: OnLoginCmnd: OnPCLoginEvent: sleep2 1000 + .Rest * 60000; set .@i, (gettime(7) * 365 * 24 * 60) + (gettime(8) * 24 * 60) + (gettime(3) * 60) +gettime(2); if(.@i >= (#LastDailyReward + .MinWait)){ if(.@i < #LastDailyReward + .MaxWait){ set #DRewardCon, #DRewardCon + 1; } else { set #DRewardCon, 1; } set .@g, (#DRewardCon > getarraysize(.Rewards$)) ? (getarraysize(.Rewards$)-1) : #DRewardCon; explode(.@XT$,.Rewards$[.@g],"|"); for(set .@x,0; .@x < getarraysize(.@XT$); set .@x,.@x + 1){ set .@TT[.@x], atoi(.@XT$[.@x]); } if(.Mode & 1 && .@TT[4]){ //[Note]: I need to figure out a checkweight for all items tired atm lol, for now ill leave it missing for(set .@x,4; .@x < getarraysize(.@TT); set .@x,.@x + 2){ getitem .@TT[.@x], .@TT[.@x+1]; message strcharinfo(0),"Recived "+ .@TT[.@x+1] +" "+ getitemname(.@TT[.@x]); } } if(.Mode & 2){ if(.@TT[0]){ set zeny,zeny + .@TT[0]; message strcharinfo(0),"Recived "+ .@TT[0] +"z"; } if(.@TT[1]){ setd getd(.Points$[0]),getd(.Points$[0]) + .@TT[1]; message strcharinfo(0),"Recived "+ .@TT[1] +" "+.Points$[1]; } } if(.Mode & 4 && (.@TT[3] || .@TT[4])) getexp .@TT[3], .@TT[4]; if(.Mode & 8){ for(set .@x,0; .@x < getarraysize(.BuffInfo); set .@x,.@x + 4){ if(#DRewardCon % .BuffInfo[.@x + 1] == 0) sc_start .BuffInfo[.@x], .BuffInfo[.@x + 2] * 60000, .BuffInfo[.@x + 3]; } } message strcharinfo(0),"You have collected your daily reward, for "+#DRewardCon+" day"+((#DRewardCon > 1)?"s":"")+" in a row."; //===============Display of pic's with day highlighted.======================= cutin .Pic$[.@g],4; //============================================================================ set #LastDailyReward, .@i; } else { set .@days,(#LastDailyReward + .MinWait - .@i)/60/24; set .@hours,((#LastDailyReward + .MinWait - .@i)/60)%24; set .@mins,(#LastDailyReward + .MinWait - .@i)%60; message strcharinfo(0),"You have "+ ((.@days) ? .@days +":Days " : "") +""+ ((.@hours) ? .@hours +":Hours " : "") +""+ ((.@mins) ? .@mins +":Minutes " : "") +"till your next reward"; } end; OnInit: //Basic Settings // 1: Item | 2: Points | 4: Exp // 8: Gain Buffs Every X Consecutive Days logged in // (a bit value, e.g. 3 = Items & Points from Multi) set .Mode,1; //To Enable @ Command '@loginreward' unslash next lines // * Needs extra commands for typos bindatcmd("relog" ,"LOGIN::OnLoginCmnd",0,99); //Minimum Minuets Between Collecting Daily Reward // Day: 22*60 - 24*60 // Week: 10080 set .MinWait,1; //Minuets Before Lose Consecutive Daily Reward // Day: 48*60 - 50*60 // Week: 20160 set .MaxWait,3000; //Number of mins after logging before collecting prize set .Rest,0; //Point Type // [0] Points earned // [1] Point name in mes setarray .Points$,"#KAFRAPOINTS","K-Points"; // Consecutive Days Buff // Each buff contains 4 variables (32 Total Max) // <Type>,<Days>,<Duration>,<Rate>, // Buff 1 // <Type>,<Days>,<Duration>,<Rate>, // Buff 2 // ...; // // Example: 188,7,45,3 // -Every 7th consecutive day logged in Player gains +3 Str for 45 mins // // Type is 188, which references which SC_ to use, SC_INCSTR in this example // -For a full list of SC_ visit the db/const.txt // Days is days buff is applied, in this example 7, so every 7th day, 14,21,28.... // Duration is buff duration is Minuits, in this example 45 mins // Rate is buff strength, in this example player gains 3 Str setarray .BuffInfo ,260,2,360,1 // Life Insurance for 360 Mins Every 2nd Day ,198,3,120,10 // +10% Hp for 120 Mins Every 3th Day ,196,5,120,25 // +25 Flee for 120 Mins Every 5th Day ,257,7,240,50; // +50% Exp for 240 Mins Every 7th Day // Daily Prize items (max 128 days): // "<Zeny>|<Points>|<BaseExp>|<JobExp>|<itemID-1>|<amount-1>|<itemID-2>|<amount-2>...etc", // Day 1 // "<Zeny>|<Points>|<BaseExp>|<JobExp>|<itemID-1>|<amount-1>|<itemID-2>|<amount-2>...etc" // Day 2 // ...; // Total length of any days string must be 255 or shorter // * If players login longer than the last set // day, they will keep getting the last prize. setarray .Rewards$, "100", // Day 1: 100 Zeny "0|0|0|0|501|5", // Day 2: 5 Red Potion "0|0|0|0|503|5|506|5"; // Day 3: 5 White Potion + 5 Green Potion setarray .Pic$, "tutorial01", //pic with day1 highlighted "tutorial02", //pic with day2 highlighted "tutorial03"; //pic with day3 highlighted end; }  
    So that's what i added:
     
    1) Way to setup pictures.
    setarray .Pic$, "tutorial01", //pic with day1 highlighted "tutorial02", //pic with day2 highlighted "tutorial03"; //pic with day3 highlighted 2) Way to show em up.
    //===============Display of pic's with day highlighted.======================= cutin .Pic$[.@g],4; //============================================================================  
    Like i said its kinda easy. 
     
    P.S. Script skips one day due 1.59 version bug. So you might want to get a 1.5D and change it if you want to use it at ur server and I set 1min timer to get a reward for testing purposes.
  4. Upvote
    Lamex reacted to Cretino in Add duration to disguise   
    I was looking your post and I decided make it, you can test and see if it works, at least here it works normally.
    Sorry for my english, I only understand a little of english.

    @EDIT
    V2: Some little fixes and atcommand 'disguiseguild' with timer now.
    V3: More fixes.

    Usage:

     
     
    disguise_with_timer_by_cretino_hercules_rev30326_v3.patch
    disguise_with_timer_by_cretino_hercules_rev30326_v2.patch
    disguise_with_timer_by_cretino_hercules_rev30326.patch
  5. Upvote
    Lamex got a reaction from Obitto in Add Custom Class   
    Well... it seems wiki post is lil bit outdated (alot). Try this one. http://herc.ws/board/topic/9273-guide-how-to-add-custom-jobs/
     
    And about your question:
     
     
     
  6. Upvote
    Lamex got a reaction from Obitto in Add Custom Class   
    http://herc.ws/wiki/Custom_jobs
  7. Upvote
    Lamex reacted to Aeromesi in [CMD] @shutdown   
    So what exactly is my custom command @.shutdown?
    Well it was based off @ request.
    I modified it a lot and turned it from a whisper into a command, if you input 0 it directly shuts down your map-server.
    You input the amount of minutes you want to start the shutdown.
    If you type @@shutdown after you set a shutdown, it will cancel out that current shutdown you have in progress!

    Enjoy guys, and here you go @   

    Just download attachment, install in npc folder and you're good to go.
    shutdown_cmd.txt
  8. Upvote
    Lamex got a reaction from maczekiel in DailyRewards like this one so cool!   
    data\texture\À¯ÀúÀÎÅÍÆäÀ̽º\illust
  9. Upvote
    Lamex got a reaction from maczekiel in DailyRewards like this one so cool!   
    I got a code from Stolao's "Daily login reward 1.59" for this sample.
     
    //===== EinherjarRO Scripts ================================== //= Daily Prize, OnPCLoginEvent //===== By: ================================================== //= Stolao //===== Current Version: ===================================== //= 1.59 //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= //= A reward system for players who play more frequently //===== Comments: ============================================ //= Maybe Make .MinWait an array mins,days,weeks,months,years; //===== Additional Comments: ================================= //= For Older See Forums //= 1.51 Changed set .@g formula and move lower into script //= 1.52 Replace all disbottom -> message //= 1.53 Changed Format to Include minuets instead of just hours //= 1.54 Made Time till next rewards display dynamic //= 1.55 Changed a forgotten .PointType$ -> getd(.@TT[1]) //= 1.56 changed .@XT -> .@XT$ //= 1.57 Added Atoi where nessisary //= 1.58 Fixed a swapped .@x and .@x+1 //= 1.59 Serveral Edit Undocumented to fix //===== Contact Info: ======================================== //= [Stolao] //= Email: [email protected] //============================================================ - script LOGIN -1,{ OnWhisperGlobal: OnLoginCmnd: OnPCLoginEvent: sleep2 1000 + .Rest * 60000; set .@i, (gettime(7) * 365 * 24 * 60) + (gettime(8) * 24 * 60) + (gettime(3) * 60) +gettime(2); if(.@i >= (#LastDailyReward + .MinWait)){ if(.@i < #LastDailyReward + .MaxWait){ set #DRewardCon, #DRewardCon + 1; } else { set #DRewardCon, 1; } set .@g, (#DRewardCon > getarraysize(.Rewards$)) ? (getarraysize(.Rewards$)-1) : #DRewardCon; explode(.@XT$,.Rewards$[.@g],"|"); for(set .@x,0; .@x < getarraysize(.@XT$); set .@x,.@x + 1){ set .@TT[.@x], atoi(.@XT$[.@x]); } if(.Mode & 1 && .@TT[4]){ //[Note]: I need to figure out a checkweight for all items tired atm lol, for now ill leave it missing for(set .@x,4; .@x < getarraysize(.@TT); set .@x,.@x + 2){ getitem .@TT[.@x], .@TT[.@x+1]; message strcharinfo(0),"Recived "+ .@TT[.@x+1] +" "+ getitemname(.@TT[.@x]); } } if(.Mode & 2){ if(.@TT[0]){ set zeny,zeny + .@TT[0]; message strcharinfo(0),"Recived "+ .@TT[0] +"z"; } if(.@TT[1]){ setd getd(.Points$[0]),getd(.Points$[0]) + .@TT[1]; message strcharinfo(0),"Recived "+ .@TT[1] +" "+.Points$[1]; } } if(.Mode & 4 && (.@TT[3] || .@TT[4])) getexp .@TT[3], .@TT[4]; if(.Mode & 8){ for(set .@x,0; .@x < getarraysize(.BuffInfo); set .@x,.@x + 4){ if(#DRewardCon % .BuffInfo[.@x + 1] == 0) sc_start .BuffInfo[.@x], .BuffInfo[.@x + 2] * 60000, .BuffInfo[.@x + 3]; } } message strcharinfo(0),"You have collected your daily reward, for "+#DRewardCon+" day"+((#DRewardCon > 1)?"s":"")+" in a row."; //===============Display of pic's with day highlighted.======================= cutin .Pic$[.@g],4; //============================================================================ set #LastDailyReward, .@i; } else { set .@days,(#LastDailyReward + .MinWait - .@i)/60/24; set .@hours,((#LastDailyReward + .MinWait - .@i)/60)%24; set .@mins,(#LastDailyReward + .MinWait - .@i)%60; message strcharinfo(0),"You have "+ ((.@days) ? .@days +":Days " : "") +""+ ((.@hours) ? .@hours +":Hours " : "") +""+ ((.@mins) ? .@mins +":Minutes " : "") +"till your next reward"; } end; OnInit: //Basic Settings // 1: Item | 2: Points | 4: Exp // 8: Gain Buffs Every X Consecutive Days logged in // (a bit value, e.g. 3 = Items & Points from Multi) set .Mode,1; //To Enable @ Command '@loginreward' unslash next lines // * Needs extra commands for typos bindatcmd("relog" ,"LOGIN::OnLoginCmnd",0,99); //Minimum Minuets Between Collecting Daily Reward // Day: 22*60 - 24*60 // Week: 10080 set .MinWait,1; //Minuets Before Lose Consecutive Daily Reward // Day: 48*60 - 50*60 // Week: 20160 set .MaxWait,3000; //Number of mins after logging before collecting prize set .Rest,0; //Point Type // [0] Points earned // [1] Point name in mes setarray .Points$,"#KAFRAPOINTS","K-Points"; // Consecutive Days Buff // Each buff contains 4 variables (32 Total Max) // <Type>,<Days>,<Duration>,<Rate>, // Buff 1 // <Type>,<Days>,<Duration>,<Rate>, // Buff 2 // ...; // // Example: 188,7,45,3 // -Every 7th consecutive day logged in Player gains +3 Str for 45 mins // // Type is 188, which references which SC_ to use, SC_INCSTR in this example // -For a full list of SC_ visit the db/const.txt // Days is days buff is applied, in this example 7, so every 7th day, 14,21,28.... // Duration is buff duration is Minuits, in this example 45 mins // Rate is buff strength, in this example player gains 3 Str setarray .BuffInfo ,260,2,360,1 // Life Insurance for 360 Mins Every 2nd Day ,198,3,120,10 // +10% Hp for 120 Mins Every 3th Day ,196,5,120,25 // +25 Flee for 120 Mins Every 5th Day ,257,7,240,50; // +50% Exp for 240 Mins Every 7th Day // Daily Prize items (max 128 days): // "<Zeny>|<Points>|<BaseExp>|<JobExp>|<itemID-1>|<amount-1>|<itemID-2>|<amount-2>...etc", // Day 1 // "<Zeny>|<Points>|<BaseExp>|<JobExp>|<itemID-1>|<amount-1>|<itemID-2>|<amount-2>...etc" // Day 2 // ...; // Total length of any days string must be 255 or shorter // * If players login longer than the last set // day, they will keep getting the last prize. setarray .Rewards$, "100", // Day 1: 100 Zeny "0|0|0|0|501|5", // Day 2: 5 Red Potion "0|0|0|0|503|5|506|5"; // Day 3: 5 White Potion + 5 Green Potion setarray .Pic$, "tutorial01", //pic with day1 highlighted "tutorial02", //pic with day2 highlighted "tutorial03"; //pic with day3 highlighted end; }  
    So that's what i added:
     
    1) Way to setup pictures.
    setarray .Pic$, "tutorial01", //pic with day1 highlighted "tutorial02", //pic with day2 highlighted "tutorial03"; //pic with day3 highlighted 2) Way to show em up.
    //===============Display of pic's with day highlighted.======================= cutin .Pic$[.@g],4; //============================================================================  
    Like i said its kinda easy. 
     
    P.S. Script skips one day due 1.59 version bug. So you might want to get a 1.5D and change it if you want to use it at ur server and I set 1min timer to get a reward for testing purposes.
  10. Upvote
    Lamex reacted to Rytech in Rebellion Development (Rebels)   
    Lets just call them Rebels. *cough* So its been over 2 and a half years since the class was released back in August of 2013 in kRO. Thats a long time and yet barely any of their skills work. You can play as one to get a higher base level, higher stats, access more powerful weapons, the usual but very few skills are usable. Well enough waiting. Time to get skills working.
     
    ill be trying to code their skills in by ID order but if something feels to be complex or can't be coded in right away due to a needed function lacking then ill skip it for later.
     
    RL_GLITTERING_GREED --> No Info RL_RICHS_COIN --> 100% Working RL_MASS_SPIRAL --> 100% Working (Note 1) RL_BANISHING_BUSTER --> Partly Working (Note 2) RL_B_TRAP --> Partly Working RL_FLICKER --> Not Coded RL_S_STORM --> Not Coded RL_E_CHAIN --> 100% Working RL_QD_SHOT --> Not Coded RL_C_MARKER --> Partly Working (Note) RL_FIREDANCE --> Not Coded RL_H_MINE --> Partly Working (Note) RL_P_ALTER --> Not Coded RL_FALLEN_ANGEL --> Not Coded RL_R_TRIP --> 100% Working (Note 3) RL_D_TAIL --> Not Coded RL_FIRE_RAIN --> Not Coded RL_HEAT_BARREL --> Not Coded RL_AM_BLAST --> Not Coded RL_SLUGSHOT --> 100% Working (Note) RL_HAMMER_OF_GOD --> Not Coded RL_R_TRIP_PLUSATK --> Not Coded RL_B_FLICKER_ATK --> Not Coded RL_GLITTERING_GREED_ATK --> No Info  
    Note 1
    ================
    RL_MASS_SPIRAL is turning out to be a interesting skill as info from testers on the warp portal forums are saying this skill is basicly a 10x damage ice pick. This is because level 5 deals 1000% damage + bonus damage depending on the targets DEF. I guess its 1000% dealed through this pick like damage in the same way that MO_INVESTIGATE does. Interesting.
     
    I already recoded this in for r799 and even tho the damage feels its reduced greatly on low DEF targets, anyone with a good bit of DEF and VIT DEF will be feeling it. Its a good skill to use on something with high DEF and VIT like a strong MVP or a Rune Knight / Royal Guard who are covered in think armor and defensive skills. It also has a 15 cell cast range which is screen range but the downside to the skill is that 2 of the 3 second cast is fixed but you can reduce that by 1 sec with a properly casted heated barrel (soon to be coded in as well) but then it has a 10 second cooldown. Finally, there's a high chance to cause bleeding and in my tests when I was capturing timer data, my other test character seemed to get the status almost every time. It has to be AT LEAST 50% chance if not more. Maybe its 70 or 80. ill go with 50 for now.
     
    The skill doesnt consume bullets but it consume 1 of the item Full Metal Jacket. Being like MO_INVESTIGATE it might be forced neutral too and also hit/flee may also not play a role. Well see how it plays out when released.
    ================
     
    Note 2
    ================
    I got the splash 5x5 damage added, but it gets complex after that. The dispell effect only happens on the enemy you targeted and NOT the other enemys hit. But with that said, im feeling it should only happen if you actually hit the target. I can keep it limited to the targeted enemy, but to only happen when hit means I need to put the dispell part in the functions skill_additional_effect. Problem is that I need to set a flag for the original target so that the dispell in skill_additional_effect will only trigger on that target, but the function doesn't accept flags.
     
    Thats just part of my problem. I have yet to figure out how to limit the dispell code to how many buffs it can remove depending on the used skill level. Just a complex skill thats best to revisit later.
    ================
     
    Note 3
    ================
    Round Trip accord to the description "When hit, enemies are knocked out of the skill's range.". To me this sounds like the skill will always knock you back as much as needed to push you out of the skill range. I tried using a fixed range the same as the splash size, but it was too much as hitting someone at the edge of the AoE would just get knocked back another 6 cells nearly out of viewing range.
     
    To resolve this I set the skill to knock back enemys to the first cell outside the skill's AoE range. Felt right after that. Still want a confirm whenever. Also the knock back into the wall damage is not yet coded.
    ================
  11. Upvote
    Lamex reacted to Garr in Weapon Mastery Problems   
    Oh. I had no idea. Fixed in my initial post then.
  12. Upvote
    Lamex reacted to Angelmelody in Weapon Mastery Problems   
    bEquipmentMatk was renamed as bMatk
  13. Upvote
    Lamex reacted to Garr 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.
  14. Upvote
    Lamex reacted to Garr 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.
  15. Upvote
    Lamex reacted to Kubix in Custom Armor enchanter   
    setarray .equipid[0], 1599; <= items that can be enchanted setarray .enchant[0], 9999; <= enchant item id setarray .itemsid[0], 909; <= items that need for enchant setarray .amounts[0], 1; .@menu$ = ""; for( .i = 0; .i < getarraysize( .equipid ); .i ++ ) { .@menu$ += ( .i + 1 ) + ". " + getitemname(.equipid[.i]; .@menu$ += ":"; } @select = select(.@menu$) - 1; if( !isequipped( .equipid[@select] ) ) { mes "equip the item first."; close; } @error = 0; for( .a = 0; .a < getarraysize( .itemsid ); .a ++ ) { if( countitem( .itemsid[.a] ) < .amounts[.a] ) close; // no items delitem .itemsid[.a], .amounts[.a]; } delitem .equipid[@select], 1; getitem2 .equipid[@select], 1, 1, 0, 1, 0, 0, 0, .enchant[0]; close; this is sample.
    need a menu for select the enchant orbs. But you can use this code for create your script
    (not tested)
  16. Upvote
    Lamex reacted to Kubix in viewpoint to partymembers when die   
    - script OnPCDieViewMap -1,{ OnPCDieEvent: if( getcharid(1) ) { getmapxy( .map$, .x, .y, UNITTYPE_PC ); getpartymember getcharid(1), 1; getpartymember getcharid(1), 2; copyarray .@paid[0], $@partymemberaid[0], $@partymembercount; copyarray .@caid[0], $@partymembercid[0], $@partymembercount; for( .@i = 0; .@i < getarraysize(.@paid); .@i ++ ) { if( isloggedin( .@paid[.@i], .@caid[.@i] ) ) { attachrid( .@paid[.@i] ); .@id = rand(500); if( strcharinfo(3) == .map$ ) viewpoint 0, .x, .y, .@id, 0xFF0000; detachrid; } } } end; } Preview:
     
    https://gyazo.com/1e8aaaa304e13d9f9745264c9a0def08
    https://gyazo.com/77928f04c9f80b8313200452bcfff33d
  17. Upvote
    Lamex got a reaction from Domo in Character Sprite NPCs   
    he want make npc with a sprite refference a player. for example healing npc looking like a player priest.
  18. Upvote
    Lamex reacted to Aeromesi in [Help] Instance NPC activation with quest condition.   
    It all depends how you write it. I would seperately attach them and reward the whole party with item/zeny/whatever. Add me on skype and I'll be glad to give you a helping hand (I want to post some of my personal code but I won't do it here)

    Skype ID: itzmichaelmorici



    @@Lamex
  19. Upvote
    Lamex reacted to Hadou Kaen in [Help] Shadow Spell weapon restriction.   
    here is what i did. in battle.c find
    if( wd.flag&BF_SHORT && sc and change to
    if( wd.flag&BF_SHORT|BF_LONG && sc  
    not sure if it is the proper way to change it. i just know it works for me now
  20. Upvote
    Lamex reacted to Kubix in Endless Cellar   
    Updated Endless Cellar for Hercules
     
    Script: GitHub
  21. Upvote
    Lamex reacted to raPalooza~ in Smooth Shadow   
    File Name: Smooth Shadow
    File Submitter: raPalooza~
    File Submitted: 13 Oct 2015
    File Category: Sprites & Palettes
     
    SmoothShadow
    By raPalooza

    Version 2.0 -
    This new version of SmoothShadow I tried to recreate the smooth shadow seen in Tree of Savior, so I used the .tga format to draw the shadow of monster and characters.
     

     
    The result I got was amazing, it gave ragnarok a fresh look! Try it out!
    ps;not sure if with huge mob density the client suffers.
     
    Click here to download this file
  22. Upvote
    Lamex reacted to raPalooza~ in Smooth Shadow   
    Released Version 2.0
    Some Screenshots of the new updated shadow. Using .tga as a base for the .act ;]


    I am very very very excited to share this modification, as I felt a very good new feeling while playing with this shadow, like ragnarok got 3D revamped(as seen in the new mobile version) Check it out BOYZ!

    \o/
  23. Upvote
    Lamex got a reaction from thanna in Compilation Error of a newly obtained Herccules   
    Doesn't new versions of hercules needs to be compiled with the VS 2014 or higher?
  24. Upvote
    Lamex reacted to Dastgir in [Help] spr_conview and actOR not working.   
    They don't support Extended ASCII characters, so move the file to any folder which does not contain Extended ASCII char, and then it would work fine
  25. Upvote
    Lamex reacted to Nova in [Help] Converting Korean to Gibberlish.   
    Use Tokei's GRF Editor:
     


     
    http://herc.ws/board/topic/6047-grf-editor/
    (Use the Mediafire link, it's the most up-to-date version)
×
×
  • Create New...

Important Information

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