Jump to content

SevySevSevy

Members
  • Posts

    54
  • Joined

  • Last visited

Everything posted by SevySevSevy

  1. good to hear that, my server won't be opening till next week good thing this script might be one of my servers main attraction xD
  2. no I'm still at Comic-con, ill be back to my home computer on Monday (3 more days) where can test things, this laptop is not setup for RO I'll be waiting then How's the Comic-con going ?
  3. Hello, I would like to request an event script that would run every 3 days and will pick any random player online and reward them a certain amount of zeny lets say 100m zennies. The npc should announce who the lucky winner is too. TIA
  4. any update about the debug msg ? can we remove it ? it spams my map server like hell xD
  5. use bonus bAtkRange,N; change the N to ur desired range. for the nightvision goggles
  6. Well that would just add OCA to the shop list. I want the NPC to trade players OCA's for 2 Points just like the normal cards. bump!
  7. Hello, can someone help me with this script ? I want it to accept OCA ( old card album #616 ) for 2 points too like normal cards. Here's the script : //===== rAthena Script ======================================= //= Card Trader //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.1 //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= //= Exchange cards for points. //============================================================ prontera,175,159,4 script Card Trader 90,{ mes "[Card Trader]"; mes "Hi, "+strcharinfo(0)+"!"; mes "What can I do for you?"; next; switch(select(" > Information: > Trade in cards: > Point shop (^0055FF"+getd(.Points$)+"^000000): > Leave")) { case 1: mes "[Card Trader]"; mes "Do you find that you've got"; mes "useless cards lying around?"; mes "I'll be glad to take them off"; mes "your hands!"; next; mes "[Card Trader]"; mes "I'll give you ^0055FF"+.Points[0]+" Point"+((.Points[0] == 1)?"":"s")+"^000000 for each"; mes "card you give me, and"; mes "^0055FF"+.Points[1]+" Points^000000 for MVP cards."; mes "You can trade those points"; mes "for items later on."; mes "How does that sound?"; emotion e_cash; close; case 2: mes "[Card Trader]"; mes "Select the cards you"; mes "want to trade in."; if (.Level) { mes " "; mes "They must be dropped"; mes "by monsters of level"; mes .Level+" and above."; } deletearray @sold_nameid[0],getarraysize(@sold_nameid); callshop "card_shop",2; npcshopattach "card_shop"; end; case 3: mes "[Card Trader]"; mes "You have ^0055FF"+getd(.Points$)+"^000000 Point"+((getd(.Points$) == 1)?".":"s."); callshop "card_shop",1; npcshopattach "card_shop"; end; case 4: mes "[Card Trader]"; mes "*yawn*"; mes "See you later!"; emotion e_yawn; close; } OnSellItem: mes "Cards to sell:"; mes "-----------------------------------"; for(set .@i,0; .@i<getarraysize(@sold_nameid); set .@i,.@i+1) if (@sold_nameid[.@i] > 4000 && @sold_nameid[.@i] < 4700) { if (.Level) { query_sql("SELECT `LV` FROM `mob_db` WHERE `DropCardid` = "+@sold_nameid[.@i],.@lv); if (.@lv < .Level) { dispbottom getitemname(@sold_nameid[.@i])+" is under the minimum level."; continue; } } set .@card_id[getarraysize(.@card_id)], @sold_nameid[.@i]; set .@card_amt[getarraysize(.@card_amt)], @sold_quantity[.@i]; set .@mvp, compare(.MVP$,""+@sold_nameid[.@i]); mes ((.@mvp)?" ^FF0000":" ^777777")+@sold_quantity[.@i]+"x "+getitemname(@sold_nameid[.@i])+"^000000"; set .@card_total, .@card_total+(@sold_quantity[.@i]*((.@mvp)?.Points[1]:.Points[0])); } deletearray @sold_nameid[0], getarraysize(@sold_nameid); deletearray @sold_quantity[0], getarraysize(@sold_quantity); if (!.@card_id) { mes " ^777777(none)^000000"; emotion e_swt; close; } mes " "; mes "---------- Total: ^0055FF"+.@card_total+" pt.^000000 -------"; next; if(select(" > ^0055FFComplete trade...^000000: > ^777777Cancel^000000") == 2) { mes "[Card Trader]"; mes "Oh, okay..."; emotion e_hmm; close; } for(set .@i,0; .@i<getarraysize(.@card_id); set .@i,.@i+1) delitem .@card_id[.@i],.@card_amt[.@i]; setd .Points$, getd(.Points$)+.@card_total; mes "[Card Trader]"; mes "All done!"; emotion e_ho; close; OnBuyItem: for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1) for(set .@j,0; .@j<getarraysize(.Shop); set .@j,.@j+2) if (@bought_nameid[.@i] == .Shop[.@j]) { set .@cost, .@cost+(.Shop[.@j+1]*@bought_quantity[.@i]); break; } if (.@cost > getd(.Points$)) { mes "[Card Trader]"; mes "You don't have enough Points."; emotion e_omg; } else { mes "Items purchased:"; mes "-----------------------------------"; for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1) { getitem @bought_nameid[.@i], @bought_quantity[.@i]; mes " ^777777"+@bought_quantity[.@i]+"x "+getitemname(@bought_nameid[.@i])+"^000000"; } mes " "; mes "---------- Total: ^0055FF"+.@cost+" pt.^000000 -------"; setd .Points$, getd(.Points$)-.@cost; emotion e_cash; } deletearray @bought_nameid[0], getarraysize(@bought_nameid); deletearray @bought_quantity[0], getarraysize(@bought_quantity); close; OnInit: set .Level,0; // Minimum monster level to trade corresponding cards. set .Points$,"#Card_Points"; // Variable to store points. setarray .Shop[0], // Card Shop items: <ID>,<point cost> 30814,300,12246,750; setarray .Points[0],2,150; // Points per <normal card>,<MVP card> set .MVP$, // List of MVP cards. "4121,4123,4128,4131,4132,4134,4135,4137,4143,4144,4145,4146,4147,4148,4168,4236,"+ "4241,4263,4276,4302,4305,4318,4324,4330,4342,4357,4359,4361,4363,4365,4399,4403,4407"; npcshopdelitem "card_shop",909; for(set .@i,0; .@i<getarraysize(.Shop); set .@i,.@i+2) npcshopadditem "card_shop",.Shop[.@i],.Shop[.@i+1]; end; } - shop card_shop -1,909:-1
  8. here you are Thankyou very much, you really helping me a lot.
  9. Can someone please add Ninja,Taekwon and Gunslinger class on this Class Specialization script by euphy ?? I know how to add the case 25: Option("Kensei","Final Stike Master",30782,"Tenzou","Element Bender",30783); part of the script but I dont know how to allow the jobs mentioned above when the NPC checks if you can specialize or not. Heres the full script . //===== eAthena Script ======================================= //= Class Specialization //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.2 //===== Description: ========================================= //= A class expansion system allowing characters to //= "specialize" in a particular aspect of their job. //============================================================ aretnorp,219,317,4 script Legend's Quest 588,{ function Option; // --------------------- Config --------------------- // Max: Maximum base level, maximum job level, // and maximum job level for Super Novices. // SReq: Items required to specialize. // Format is "ID1,Count1,ID2,Count2,..." // If no requirements, use a single 0. // DReq: Zeny, in MILLIONS, to despecialize. // If no requirement, use 0. setarray .Max[0],255,120,90; setarray .SReq[0],7443,10,30705,15,1009,1500,916,300,954,500,7294,20,969,100,617,50,938,1000,616,25,7211,10,7297,15,7023,30,7017,30,30716,1; set .DReq,150; set .n$,"[ Krito ]"; // -------------------------------------------------- mes .n$; if (BaseLevel < .Max[0]) { mes "Sorry, but I can only speak to the worthy ones..."; close; } if (Class != 23 && (Class < 4008 || Class > 4022)) { mes "This feature is not available for your class."; close; } if ((JobLevel < .Max[1]) || (Class == 23 && JobLevel < .Max[2])) { mes "You must master your class before using this feature."; close; } mes "Welcome, I see you have mastered your class."; sleep2 500; mes "Do you know that the process of being a ^0055ffLegend^000000 can greatly enhance your attributes."; sleep2 750; mes "I have been practicing the art of Legend transformation, with hard work and determination"; sleep2 750; mes "I perfected it and now I offer Legends transformation to the worthy..."; sleep2 750; mes "^ff0000Do you want to be transformed into a Legend?^000000"; sleep2 750; next; if(select("I want to be a Legend!:I'll think about it.")==2) goto Closing; mes .n$; for (set .@i,3350; .@i<=3377; set .@i,.@i+1) if (countitem(.@i)>0) { sleep2 1000; goto Despecialize; } sleep2 500; if (getarraysize(.SReq)) { mes "The process is not simple."; sleep2 1000; mes "I require the following items:"; sleep2 750; set .@i,0; while (.@i < getarraysize(.SReq)) { mes " ~ ^FF0000"+getitemname(.SReq[.@i])+"^000000 [^0055ff"+countitem(.SReq[.@i])+"^000000/"+.SReq[.@i+1]+"]"; sleep2 100; set .@i, .@i+2; } next; if(select("I've got them all.:I'll come back later.")==2) close; set .@i,0; while (.@i < getarraysize(.SReq)) { if (countitem(.SReq[.@i]) < .SReq[.@i+1]) { mes .n$; sleep2 500; mes "You're missing some items."; sleep2 500; mes "I'll need all the materials"; mes "for this to work."; close; } set .@i, .@i+2; } mes .n$; } switch(Class){ case 23: Option("Ultra Novice","Heightened magical powers",3372,"Hyper Novice","Insurmountable in strength",3373); case 4008: Option("Slayer","Agile sword-bearer",3350,"Lancer","Spear expert",3351); case 4009: Option("Cardinal","Divine healer",3354,"Battle Priest","Powerful acolyte-warrior",3355); case 4010: Option("Evoker","Bolt-oriented magician",3364,"Sorcerer","Area-oriented spellcaster",3365); case 4011: Option("Goldsmith","Master forger",3376,"Battlesmith","Impulsive axeman",3377); case 4012: Option("Scout","Swift archer",3368,"Ranger","Dagger-wielder",3369); case 4013: Option("Virus","Strength in poison",3362,"Reaver","High-defense killer",3363); case 4015: Option("Guardian","Unstoppable tank",3352,"Templar","Holy mercenary",3353); case 4016: Option("Brawler","Lethal combos",3356,"Zealot","Fanatic striker",3357); case 4017: Option("Geomancer","Single-spell sorcerer",3366,"Enchanter","Melee assaulter",3367); case 4018: Option("Raider","Cunning marksman",3374,"Backstabber","Delusive assassin",3375); case 4019: Option("Apothecary","Potion-brewer",3370,"Terrorist","Malicious bomber",3371); case 4020: Option("Minstrel","Gifted bard",3358,"Jester","Musical killer",3359); case 4021: Option("Performer","Gifted dancer",3360,"Siren","Musical killer",3361); case 25: Option("Kensei","Final Stike Master",30782,"Tenzou","Element Bender",30783); case case default: mes "Something went wrong. Try again."; close; } function Option { mes "^0055ff > "+getarg(0); sleep2 200; mes "^777777 > "+getarg(1)+"."; mes " "; sleep2 200; mes "^0055ff > "+getarg(3); sleep2 200; mes "^777777 > "+getarg(4)+".^000000"; set @menu$,"^0055ff"+getarg(0)+":"+getarg(3)+":^777777Cancel^000000"; sleep2 1000; next; switch(select(@menu$)) { case 1: set @sring,getarg(2); set @sclass$,getarg(0); goto SConfirm; case 2: set @sring,getarg(5); set @sclass$,getarg(3); goto SConfirm; case 3: goto Closing; } } SConfirm: mes .n$; mes "Are you sure you want to specialize as the ^0055ff" + @sclass$ + "^000000 class?"; mes " "; sleep2 500; next; if(select("I need more time to think.:I am ready.")==1) goto Closing; progressbar "",2; specialeffect2 248; if (getarraysize(.SReq)) { set .@i,0; while (.@i < getarraysize(.SReq)) { delitem .SReq[.@i], .SReq[.@i+1]; set .@i, .@i+2; } } mes .n$; mes "...finished!"; sleep2 500; mes "Here's your ^0055ff" + getitemname(@sring) + "^000000."; sleep2 200; getitem @sring,1; ResetStatus; set StatusPoint, StatusPoint + 2000; sleep2 200; set legendok, 1; announce ""+ strcharinfo(0) +" has completed the Legends Quest, He is now part of history.",bc_all; nude; equip @sring; close; Despecialize: mes "You've already specialized!"; sleep2 1000; if (.DReq) { mes " "; mes "^777777There is a way to switch, if you really want to... but it's costly.^000000"; sleep2 1000; next; if(select("Okay, never mind.:I still want to switch!")==1) close; mes .n$; sleep2 1000; mes "...okay."; sleep2 800; mes "To undo the specialization process, I'll need ^ff0000" + .DReq + " million Zeny^000000 to"; mes "obtain all the materials I need."; mes " "; sleep2 1000; mes "Are you sure?"; sleep2 1000; next; if(select("What? No way!:Yes.")==1) goto Closing; mes .n$; if (Zeny < (.DReq*1000000)) { sleep2 500; mes "You don't have enough Zeny."; sleep2 500; mes "It's an expensive procedure, so please reconsider."; close; } } else { mes "Your ring will be deleted if you despecialize."; sleep2 1000; next; if(select("Oh, never mind then.:Let me despecialize!")==1) close; mes .n$; sleep2 1000; mes "Do you really want to despecialize?"; sleep2 500; next; if(select("No, I've changed my mind.:Yes.")==1) close; mes .n$; } progressbar "", 2; specialeffect2 338; set Zeny, Zeny - (.DReq*1000000); for (set .@i,3350; .@i<=3377; set .@i,.@i+1) if (countitem(.@i)>0) delitem .@i,1; mes "...finished!"; sleep2 1000; mes "^777777(I hope you don't regret this...)^000000"; sleep2 1000; close; Closing: mes .n$; mes "Come back when you've"; mes "made your decision."; close; } function script SpecEffect { function dd { while(.@j<=getarg(2)){ set .@j, .@j+1; specialeffect2 getarg(0); sleep2(getarg(1)); } return; } if(@effectdelay < gettimetick(2)) { set @effectdelay, gettimetick(2)+5; dd(54,10,2); dd(55,10,2); dd(668,10,2); dd(58,10,2); dd(377,10,2); dd(500,20,2); } } TIA
  10. Problem fixed thanks stolao !
  11. that's totally a cool idea. I hope someone can make it. bumping this one up!
  12. Hey stolao, how can i remove the debug msgs im getting when someone uses the Healer script on my server? Im getting this debug msg on my map server. [ Debug ] : source (NPC): PCSTATCALC (invisible/not on a map)
  13. Hello, my map server displays this debug code everytime someone uses the healer. [ Debug ] : source (NPC): PCSTATCALC (invisible/not on a map) I found out it's because of Stolao's Weapon Mastery script. I don't to remove the Weapon Mastery on my server but I want the debug msg to be solved/fixed. Sadly I don't know how, can someone please help me on what to edit on this script : //===== EinherjarRO Scripts ================================== //= WeaponMasteries //===== By: ================================================== //= Stolao //===== Current Version: ===================================== //= 1.0F //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= //= As you train using a particulat weapon type you get passive //= buffs depending on how much yo have used that type //= There are five types Onslaught, Swiftness, Safeguard, Ranged and Mystical //===== Comments: ============================================ //= [Stolao] //= Designed for mid sized mid rate servers, not tested on large server yet //= Scythe is a custom weapon type I designed for my necromancer class //===== Additional Comments: ================================= //= 1.00 Origioanal Make //= 1.01 +33% Masteries >> Atk //= 1.02 +50% Masteries >> 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.0F Removed dependency from ONNPCKILLEVENT.txt (for release version) //= 1.10 Changed Mysticals, Castrate, Delayrate, Sprate to be -10% at max level //= 1.11 Changed Mysticals, EquipmentMatk to be 250 at max level //= 1.12 Fixed typo in Safeguard //===== Contact Ifo: ========================================= //= [Stolao] //= Email: [email protected] //============================================================ // // Str - Onslaught: 2HSword,1HAxe,2HAxe,1HMace,2HMace(unused),Knuckle // Agi - Swiftness: Specialty,Dagger,Fuuma Shuriken,Katar // Vit - Safeguard: 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/4; if(OnslaughtMaster >= 2)bonus bAtk,1+OnslaughtMaster/2; if(OnslaughtMaster >= 4)bonus bAtk2,1+OnslaughtMaster/2; if(OnslaughtMaster >= 8)bonus bPerfectHitAddRate,1+OnslaughtMaster/4; if(OnslaughtMaster >= 16)bonus bBaseAtk,OnslaughtMaster-9; if(OnslaughtMaster >= 32)bonus bCritAtkRate,OnslaughtMaster+22; if(OnslaughtMaster >= 64)bonus bAspdRate,OnslaughtMaster/4; if(OnslaughtMaster >= 128)bonus bSplashAddRange,1; bonus bStr,1+OnslaughtMaster/9; bonus bAtkrate,1+OnslaughtMaster/4; return; } function script Swiftness_M { if(SwiftnessMaster >= 1)bonus bSpeedAddRate,1+SwiftnessMaster/4; if(SwiftnessMaster >= 2)bonus bFlee,SwiftnessMaster/2; if(SwiftnessMaster >= 4)bonus bDoubleAddRate,1+SwiftnessMaster/8; if(SwiftnessMaster >= 8)bonus bFlee2,1+SwiftnessMaster/8; if(SwiftnessMaster >= 16)bonus bPerfectHitAddRate,1+SwiftnessMaster/8; if(SwiftnessMaster >= 32)bonus bHPDrainValue,SwiftnessMaster/4-2; if(SwiftnessMaster >= 64)bonus bCritical,1+OnslaughtMaster/4; if(SwiftnessMaster >= 128)bonus bCritAtkRate,SwiftnessMaster-28; bonus bAgi,1+SwiftnessMaster/9; bonus bAspdRate,1+SwiftnessMaster/4; return; } function script Safeguard_M { if(SafeguardMaster >= 1)bonus bHPrecovRate,22+SafeguardMaster; if(SafeguardMaster >= 2)bonus bDef,1+SafeguardMaster/8; if(SafeguardMaster >= 4)bonus bMdef,1+SafeguardMaster/8; if(SafeguardMaster >= 8)bonus bMaxHPrate,1+SafeguardMaster/4; if(SafeguardMaster >= 16)bonus bCriticalDef,SafeguardMaster/8-1; if(SafeguardMaster >= 32)bonus bNearAtkDef,SafeguardMaster/8-1; if(SafeguardMaster >= 64)bonus bLongAtkDef,SafeguardMaster/8-1; if(SafeguardMaster >= 128)bonus bMagicAtkDef,SafeguardMaster/8-1; bonus bVit,1+SafeguardMaster/9; bonus bMaxHP,SafeguardMaster*6+7; return; } function script Ranged_M { if(RangedMaster >= 1)bonus bSpeedAddRate,1+RangedMaster/8; if(RangedMaster >= 2)bonus bCritical,1+RangedMaster/8; if(RangedMaster >= 4)bonus bFlee,1+RangedMaster/4; if(RangedMaster >= 8)bonus bAspd,RangedMaster; if(RangedMaster >= 16)bonus bHit,RangedMaster; if(RangedMaster >= 32)bonus bLongAtkRate,RangedMaster/8; if(RangedMaster >= 64)bonus bAtkRange,RangedMaster/64; if(RangedMaster >= 128)bonus bCritAtkRate,11+RangedMaster/2; bonus bDex,1+RangedMaster/9; bonus bAtkrate,1+RangedMaster/4; return; } function script Mystical_M { if(MysticalMaster >= 1)bonus bSPrecovRate,22+MysticalMaster; if(MysticalMaster >= 2)bonus bMaxSP,MysticalMaster*3+16; if(MysticalMaster >= 4)bonus bCastrate,-2-MysticalMaster/16; if(MysticalMaster >= 8)bonus bUseSPrate,-2-MysticalMaster/16; if(MysticalMaster >= 16)bonus bDelayrate,-2-MysticalMaster/16; if(MysticalMaster >= 32)bonus bHealPower,22+MysticalMaster; if(MysticalMaster >= 64)bonus bEquipmentMatk,2*MysticalMaster-6; if(MysticalMaster >= 128)bonus bNoCastCancel,1; bonus bInt,1+MysticalMaster/9; bonus bMAtkrate,1+MysticalMaster/4; return; } - script PCSTATCALC -1,{ OnWeaponInfo: set .@M$,.@atcmd_parameters$[0]; if((.@M$ == "")){ switch(getiteminfo(getequipid(EQI_HAND_R),11)){ case 3: case 6: case 7: case 8: case 9: case 12: set .@M$,"Onslaught"; Break; case 0: case 1: case 16: case 22: set .@M$,"Swiftness"; Break; case 2: case 4: case 5: case -1: set .@M$,"Safeguard"; Break; case 11: case 13: case 14: case 17: case 18: case 19: case 20: case 21: set .@M$,"Ranged"; Break; case 10: case 15: case 23: case 24: set .@M$,"Mystical"; Break; } } if(.@M$ == "Onslaught" || .@M$ == "onslaught") set .@i,1; if(.@M$ == "Swiftness" || .@M$ == "swiftness") set .@i,2; if(.@M$ == "Safeguard" || .@M$ == "Safeguard") set .@i,3; if(.@M$ == "Ranged" || .@M$ == "ranged" ) set .@i,4; if(.@M$ == "Mystical" || .@M$ == "mystical" ) set .@i,5; set .@X,atoi(.@atcmd_parameters$[1]); if(!.@X) set .@X,getd(""+.@M$+"Master"); switch(.@i){ case 1: dispbottom "Onslaught Lv: "+.@X+" "+OnslaughtExp+" / "+((OnslaughtMaster*OnslaughtMaster*25)+10+OnslaughtMaster)+"xp"; dispbottom "Str +"+(1+.@X/9)+""; dispbottom "Atk +"+(1+.@X/4)+"%"; if(.@X >= 1)dispbottom "Critical Chance +"+(1+.@X/4)+""; if(.@X >= 2)dispbottom "Atk +"+(1+.@X/2)+""; if(.@X >= 4)dispbottom "Weapon Atk +"+(1+.@X/2)+""; if(.@X >= 8)dispbottom "Perfect Hit +"+(1+.@X/4)+""; if(.@X >= 16)dispbottom "Base Atk +"+(.@X-9)+""; if(.@X >= 32)dispbottom "Crit Damage +"+(.@X+22)+"%"; if(.@X >= 64)dispbottom "Aspd +"+.@X/4+"%"; 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/9)+""; dispbottom "Aspd +"+(1+.@X/4)+"%"; if(.@X >= 1)dispbottom "Moving speed +"+(1+.@X/4)+"%"; if(.@X >= 2)dispbottom "Flee +"+(.@X/2)+""; if(.@X >= 4)dispbottom "Double Attack Chance +"+(1+.@X/8)+"%"; if(.@X >= 8)dispbottom "Perfect Dodge +"+(1+.@X/8)+""; if(.@X >= 16)dispbottom "On-target impact chance +"+(1+.@X/8)+"%"; if(.@X >= 32)dispbottom "Heals "+(.@X/4-2)+" HP with each normal attack"; if(.@X >= 64)dispbottom "Critical Chance +"+(1+.@X/4)+""; if(.@X >= 128)dispbottom "Crit Damage +"+(.@X-28)+"%"; break; case 3: dispbottom "Safeguard Lv: "+.@X+" "+SafeguardExp+" / "+((SafeguardMaster*SafeguardMaster*25)+10+SafeguardMaster)+"xp"; dispbottom "Vit +"+(1+.@X/9)+""; dispbottom "Max HP +"+(.@X*6+7)+""; if(.@X >= 1)dispbottom "Natural HP recovery ratio +"+(22+.@X)+"%"; if(.@X >= 2)dispbottom "Def +"+(1+.@X/8)+""; if(.@X >= 4)dispbottom "Mdef +"+(1+.@X/8)+""; if(.@X >= 8)dispbottom "Max HP +"+(1+.@X/4)+"%"; if(.@X >= 16)dispbottom "Adds "+(.@X/8-1)+" damage reduction against Critical Hits"; if(.@X >= 32)dispbottom "Adds "+(.@X/8-1)+" damage reduction against melee physical attacks"; if(.@X >= 64)dispbottom "Adds "+(.@X/8-1)+" damage reduction against ranged physical"; if(.@X >= 128)dispbottom "Adds "+(.@X/8-1)+" damage reduction against magical attacks"; break; case 4: dispbottom "Ranged Lv: "+.@X+" "+RangedExp+" / "+((RangedMaster*RangedMaster*25)+10+RangedMaster)+"xp"; dispbottom "Dex +"+(1+.@X/9)+""; dispbottom "Atk +"+(1+.@X/4)+"%"; if(.@X >= 1)dispbottom "Moving speed +"+(1+.@X/8)+"%"; if(.@X >= 2)dispbottom "Critical +"+(1+.@X/8)+""; if(.@X >= 4)dispbottom "Flee +"+(1+.@X/2)+""; if(.@X >= 8)dispbottom "Aspd +"+(.@X)+""; if(.@X >= 16)dispbottom "Hit +"+(.@X)+""; if(.@X >= 32)dispbottom "Increases damage of ranged attacks by "+(.@X/8)+"%"; if(.@X >= 64)dispbottom "Atk Range +"+(1+.@X/64)+""; if(.@X >= 128)dispbottom "Crit Damage +"+(11+.@X/2)+"%"; break; case 5: dispbottom "Mystical Lv: "+.@X+" "+MysticalExp+" / "+((MysticalMaster*MysticalMaster*25)+10+MysticalMaster)+"xp"; dispbottom "Int +"+(1+.@X/9)+""; dispbottom "Matk +"+(1+.@X/4)+"%"; if(.@X >= 1)dispbottom "Natural SP recovery ratio +"+(.@X+22)+"%"; if(.@X >= 2)dispbottom "Max SP +"+(16+.@X*3)+""; if(.@X >= 4)dispbottom "Skill casting time "+(-2-.@X/16)+"%"; if(.@X >= 8)dispbottom "SP consumption "+(-2-.@X/16)+"%"; if(.@X >= 16)dispbottom "Decreases skill delay by "+(2+.@X/16)+"%"; if(.@X >= 32)dispbottom "Increase heal amount of all heal skills by "+(22+.@X)+"%"; if(.@X >= 64)dispbottom "Weapon magical attack power +"+(2*.@X-6)+""; if(.@X >= 128)dispbottom "Prevents casting from being interrupted when hit"; break; default: dispbottom "@wi <Type>[, <Level>]"; dispbottom "Type: Onslaught, Swiftness, Safeguard, Ranged, Mystical"; dispbottom "Level: Level of mastery you wish to see effects for, Blank = current level"; break; } end; OnWeaponLevel: set .@M$,.@atcmd_parameters$[0]; set .@X,atoi(.@atcmd_parameters$[1]); if((.@M$ != "Onslaught" && .@M$ != "Swiftness" && .@M$ != "Safeguard" && .@M$ != "Ranged" && .@M$ != "Mystical" && .@M$ != "All")||!.@X){ dispbottom "@wlvl <type> <lvl>"; dispbottom "Onslaught, Swiftness, Safeguard, Ranged, Mystical, All"; end; } if(.MaxMastery >= .@X){ if(.@M$ == "All"){ setarray .@X$[0],"Onslaught","Swiftness","Safeguard","Ranged","Mystical"; set .@i,0; while(.@i < 5){ setd ""+.@X$[.@i]+"Master",.@X; setd ""+.@X$[.@i]+"Exp",0; dispbottom ""+.@X$[.@i]+" Mastery has advanced to Lv "+.@X+"!"; set .@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: Onslaught_M; Break; case 0: case 1: case 16: case 22: Swiftness_M; Break; case 2: case 4: case 5: case -1: Safeguard_M; Break; case 11: case 13: case 14: case 17: case 18: case 19: case 20: case 21: Ranged_M; Break; case 10: case 15: case 23: case 24: Mystical_M; Break; } end; OnNPCKillEvent: if(strcharinfo(3) != "pvp_y_1-1") end; set .@M$,""; switch(getiteminfo(getequipid(EQI_HAND_R),11)){ case 3: case 6: case 7: case 8: case 9: case 12: Set .@M$,"Onslaught"; Break; case 0: case 1: case 16: case 22: Set .@M$,"Swiftness"; Break; case 2: case 4: case 5: case -1: Set .@M$,"Safeguard"; Break; case 11: case 13: case 14: case 17: case 18: case 19: case 20: case 21: Set .@M$,"Ranged"; Break; case 10: case 15: case 23: case 24: Set .@M$,"Mystical"; Break; } if(.MaxMastery >= getd(""+ .@M$ + "Master")){ Setd ""+.@M$+"Exp",getd(""+.@M$+"Exp")+strmobinfo(3,killedrid)*(1+countitem(.wExpBoost))+.wLvBonus*getiteminfo(getequipid(EQI_HAND_R),13); 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: set .MaxMastery,150; //Sets the max Weapon Mastery Level //Default 128 // **Dont Set too high without editing Safeguard masteries, Safeguard over level 800 will be immune to all damage set .expcurve,175; //Exp curve for weapon mastery //Next Lv Exp Cost = Lv*(Lv*.expcurve)+10+Lv //Larger .expcurve is harder to level up //Default 25 set .wExpBoost,30707; //Item ID of wlv exp booster set .wLvBonus,1; //Amount of extra Weapon Exp from higher level weapons equipped //Bonus exp = WLv*.wLvBonus //Default 1 bindatcmd("wi" ,"PCSTATCALC::OnWeaponInfo",0,99); bindatcmd("weaponinfo" ,"PCSTATCALC::OnWeaponInfo",0,99); bindatcmd("wlvlup" ,"PCSTATCALC::OnWeaponLevel",60,99); bindatcmd("wlvl" ,"PCSTATCALC::OnWeaponLevel",60,99); end; }
  14. aren't those just modified homunc, think its just a recolor and .act adjustment I think so.. if these are modified homunc then they can be extracted from a server's GRF that contains these sprites, right ?
  15. Does anyone have a custom falcon ? like these : Or any other falcon sprites ? I can't find any of em at spriterepo. Hope someone shares
  16. Hello,does anyone know how to fix this ? I didnt add any new NPC/scripts/SRC to my server. I restarted it and now this happens when someone logs in. Script_rid2sd: fatal error! Player not attached Funtion : atcommand (1 paremeter): Data : string value="@aura 0" Source NPC FAKE_NPC (invisible/not on map) Server recieved crash signal . Attempting to save all online players. this is the log of my map server.
  17. Okay, im downloading NEMO now. I tried rediffing using WeeDiff still not working. After patching using NEMO patcher the client wont even start. :// Here's the error : BTW : The player's who is experiencing this error we're able to login without any error before I rebooted my server. after rebooting. the problem started for them but the others can still login.
×
×
  • Create New...