Jump to content

ahloi007

Members
  • Posts

    78
  • Joined

Everything posted by ahloi007

  1. Yes it's work! xD thanks ya! Wow! Finally it's work! Thanks ya!
  2. Okay Thanks! I got it xD Thanks ya! just figure it out xD
  3. Thanks sir, but the npc function still remain the same 1 TCG =1 cash point not 6 TCG =1 cash point. But I still like this npc as well because easy for player use. Sir, this npc function well but can you make it like auto detect the amount of TCG card and straight away convert it into cash point instead of key in the amount? Because just now I have tried it, even I got 1 TCG it still can convert into cash point and obtain 0 cash point but if I key in the amount of 6 TCG card it function well. Or can please change it into cash amount that need to be exchange? I scare later those people got confuse when using this npc xD Please let me know if you can't understand what I'm saying, sorry for my bad english
  4. Hi, can I know how to edit this Cash Converter Npc at below? I want to make it like 6 TCG card to 1 cash point.. But I have tried several times to edit it but the Cash Point amount give out doesn't get what I want. Can please point out where should I need to edit in details? Because I'm still new to here. *lol prt_in,44,100,3 script CP Converter 532,{ [email protected]$ = strcharinfo(0); // Char Name [email protected] = 7227; // Item ID [email protected] = 1; // Amount [email protected] = countitem( [email protected]* ); // Countitem if( [email protected] < 1 ) { mes "[ Cash Converter ]"; mes "You don't have any ^0000FF"+ getitemname([email protected]) +"^000000 in your Inventory to be exchanged for Cash Points."; mes "Please come back to me if you have it already."; close; } mes "[ Cash Converter ]"; mes rand(2) ? ""+callfunc("F_Hi")+" I'm Cash Converter, of Prontera Rune-Midgard City." : ""+callfunc("F_Hi")+" I can able to exchange your ^0000FF"+ getitemname([email protected]) +"^000000 to Cash Points."; mes " "; mes "What would you like to do?"; next; mes "[ Cash Converter ]"; mes "^FF0000Information:^000000"; mes "^777777 -------------------- ^000000"; mes "Exchange Rate: "+ [email protected] +" x "+ getitemname( [email protected] ) +" to "+ ( [email protected] * [email protected] ) +" Cash Point"+ ([email protected] * [email protected] > 1 ? "s" : "") +""; next; if( select("- Convert","- Cancel") == 1 ) { progressbar "0x11CC99",1; specialeffect2 EF_REMOVETRAP; delitem [email protected],[email protected]; #CASHPOINTS = #CASHPOINTS + ( [email protected] * [email protected] ); message [email protected]$,"You have recieved "+ [email protected] * [email protected] +" Cash Point"+ (#CASHPOINTS > 1 ? "s" : "") +" and a of Total: "+ #CASHPOINTS +" Cash Point"+ (#CASHPOINTS > 1 ? "s" : "") +""; mes "[ Cash Converter ]"; mes "You have successfully exchanged."; } close; }
  5. I'm sorry, can you please explained in details? Because I'm still new to this... *lol
  6. function script F_Rand { return getarg(rand(getargcount())); } Hi there, this is the random box script that I am using right now. Can I know how to add on the % to the item give out through this script ?
  7. Emistry, the npc do appeared in game but doesn't working perfectly. and I found this error too. Thanks for your information It's work perfectly!!!
  8. Im sorry that I forgot mention that my server is Pre-re and the max refine is +10 only
  9. Dear all, Can I know how do I add on a function for the existing refiner npc? Example: Before you confirm what item u need to refine ( upper headgear, armor and weapon ), the npc will ask "Do you have xxx item ? It will protect your armor/weapon from broken." If yes, it will consume the xxx item to protect the armor / weapon from broken if the refine failed; No will just keep on continue refine the item. The refine rate still remain the same, nothing change . But if the refine failed, the armor/weapon will still be there just the xxx item gone. Sorry for my bad english. Hope you guys understand what I mean.
  10. // Group requirement if (getgroupid() < .UseMinLv) { mes .NpcName$; mes "I'm sorry, but I can't help you."; mes "See you."; close; } mes .NpcName$; mes "I'm the Armsmith."; mes "I can refine all kinds of weapons, armor and equipment, so let me"; mes "know what you want me to refine."; next; setarray [email protected]$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3"; set [email protected]$, ""; for([email protected] = 1; [email protected] <= 10; [email protected]++) { if(getequipisequiped([email protected])) { set [email protected]$, [email protected]$ + [email protected]$[[email protected]] + "-" + "[" + getequipname([email protected]) + "]"; [email protected] = 1; } set [email protected]$, [email protected]$ + ":"; } if ([email protected] == 0) { mes .NpcName$; mes "I don't think I can refine any items you have..."; close; Is it this one? Sry for my late reply....
  11. The type of item shown in the list was wrong, how can I fix this problem? If anyone knows please tell me how to do, Thanks you!
  12. Thanks for help guys... But I fixed it by adding "Sleep 10;" When doing research with the hatmaker npc, I saw this code then I try it.. lol // ----------------------------------------------------------- // Quest items -- do NOT use a reward item more than once! // Add(<shop ID>,<reward ID>,<reward amount>, // <Zeny cost>,<point cost>, // <required item ID>,<required item amount>{,...}); // ----------------------------------------------------------- Sleep 10; Add(1,30101,1,0,0,7086,1,969,10,999,40,1003,50,984,2); Add(1,30102,1,0,0,1059,250,2221,1,2227,1,7063,600); Add(1,30103,1,0,0,2252,1,1036,400,7001,50,4052,1); Add(1,30104,1,0,0,2252,1,1054,450,943,1200); Sleep 10; Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10); Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10); Sleep 10; Add(3,531,1,3,0,512,1,713,1); Add(3,532,1,3,0,513,1,713,1); Add(3,533,1,3,0,514,1,713,1); Add(3,534,1,3,0,515,1,713,1); By the way can I know what is the meaning or function of " Sleep 10; " p/s Sorry for my bad english =) Thanks again!
  13. //===== rAthena Script ======================================= //= Euphy's Quest Shop //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.6c //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= A dynamic quest shop based on Lunar's, with easier config. //= Includes support for multiple shops & cashpoints. //= Item Preview script by ToastOfDoom. //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.2 Added category support. //= 1.3 More options and fixes. //= 1.4 Added debug settings. //= 1.5 Replaced categories with shop IDs. //= 1.6 Added support for purchasing stackables. //= 1.6a Added support for previewing costumes and robes. //= 1.6b Added 'disable_items' command. //= 1.6c Replaced function 'A_An' with "F_InsertArticle". //============================================================ // Shop NPCs -- supplying no argument displays entire menu. // callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}}; //============================================================ prontera,164,203,6 script Quest Shop#1 998,{ callfunc "qshop"; } // Script Core //============================================================ - script quest_shop -1,{ function Add; function Chk; function Slot; OnInit: freeloop(1); // ----------------------------------------------------------- // Basic shop settings. // ----------------------------------------------------------- set .Announce,1; // Announce quest completion? (1: yes / 0: no) set .ShowSlot,1; // Show item slots? (2: all equipment / 1: if slots > 0 / 0: never) set .ShowID,0; // Show item IDs? (1: yes / 0: no) set .ShowZeny,0; // Show Zeny cost, if any? (1: yes / 0: no) set .MaxStack,100; // Max number of quest items purchased at one time. // ----------------------------------------------------------- // Points variable -- optional quest requirement. // setarray .Points$[0],"<variable name>","<display name>"; // ----------------------------------------------------------- setarray .Points$[0],"#CASHPOINTS","Cash Points"; // ----------------------------------------------------------- // Shop IDs -- to add shops, copy dummy data at bottom of file. // setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...}; // ----------------------------------------------------------- setarray .Shops$[1],"Headgears","Weapons","Other"; // ----------------------------------------------------------- // Quest items -- do NOT use a reward item more than once! // Add(<shop ID>,<reward ID>,<reward amount>, // <Zeny cost>,<point cost>, // <required item ID>,<required item amount>{,...}); // ----------------------------------------------------------- Add(1,30101,1,0,0,7086,1,969,10,999,40,1003,50,984,2); Add(1,30102,1,0,0,1059,250,2221,1,2227,1,7063,600); Add(1,30103,1,0,0,2252,1,1036,400,7001,50,4052,1); Add(1,30104,1,0,0,2252,1,1054,450,943,1200); Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10); Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10); Add(3,531,1,3,0,512,1,713,1); Add(3,532,1,3,0,513,1,713,1); Add(3,533,1,3,0,514,1,713,1); Add(3,534,1,3,0,515,1,713,1); // ----------------------------------------------------------- freeloop(0); set .menu$,""; for(set [email protected],1; [email protected]<=getarraysize(.Shops$); set [email protected],[email protected]+1) { set .menu$, .menu$+.Shops$[[email protected]]+":"; npcshopdelitem "qshop"[email protected],909; } end; OnMenu: set [email protected], getarraysize(@i); if ([email protected]) set @shop_index, select(.menu$); else if ([email protected] == 1) set @shop_index, @i[0]; else { for(set [email protected],0; [email protected]<[email protected]; set [email protected],[email protected]+1) set [email protected]$, [email protected]$+.Shops$[@i[[email protected]]]+":"; set @shop_index, @i[select([email protected]$)-1]; } deletearray @i[0],getarraysize(@i); if (.Shops$[@shop_index] == "") { message strcharinfo(0),"An error has occurred."; end; } dispbottom "Select one item at a time."; callshop "qshop"[email protected]_index,1; npcshopattach "qshop"[email protected]_index; end; OnBuyItem: // [email protected][] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... } setarray [email protected][0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]); copyarray [email protected][3],getd(".q_"[email protected]_index+"_"[email protected][0]+"[0]"),getarraysize(getd(".q_"[email protected]_index+"_"[email protected][0])); set [email protected][2],[email protected][1]*[email protected][3]; if ([email protected][2] || [email protected][2] > 30000) { message strcharinfo(0),"You can't purchase that many "+getitemname([email protected][0])+"."; end; } mes "[Quest Shop]"; mes "Reward: ^0055FF"+(([email protected][2] > 1)[email protected][2]+"x ":"")+Slot([email protected][0])+"^000000"; mes "Requirements:"; disable_items; if ([email protected][4]) mes " > "+Chk(Zeny,[email protected][4]*[email protected][1])+([email protected][4]*[email protected][1])+" Zeny^000000"; if ([email protected][5]) mes " > "+Chk(getd(.Points$[0]),[email protected][5]*[email protected][1])+([email protected][5]*[email protected][1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+([email protected][5]*[email protected][1])+")^000000"; if ([email protected][6]) for(set [email protected],6; [email protected]<getarraysize([email protected]); set [email protected],[email protected]+2) mes " > "+Chk(countitem([email protected][[email protected]]),[email protected][[email protected]+1]*[email protected][1])+((.ShowID)?"{"[email protected][[email protected]]+"} ":"")+Slot([email protected][[email protected]])+" ("+countitem([email protected][[email protected]])+"/"+([email protected][[email protected]+1]*[email protected][1])+")^000000"; next; setarray @qe[1], getiteminfo([email protected][0],5), getiteminfo([email protected][0],11); if (@qe[2] > 0 && ((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512) || (@qe[1] & 1024) || (@qe[1] & 2048) || (@qe[1] & 4096) || (@qe[1] & 4) || (@qe[1] & 8192))) set [email protected],1; addtimer 1000, strnpcinfo(0)+"::OnEnd"; while(1) { switch(select(" ~ Purchase ^0055FF"+getitemname([email protected][0])+"^000000:"+(([email protected] && [email protected][7])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) { case 1: if (@qe[0]) { mes "[Quest Shop]"; mes "You're missing one or more quest requirements."; close; } if (!checkweight([email protected][0],[email protected][2])) { mes "[Quest Shop]"; mes "^FF0000You need "+((([email protected][2]*getiteminfo([email protected][0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000"; close; } if ([email protected][4]) set Zeny, Zeny-([email protected][4]*[email protected][1]); if ([email protected][5]) setd .Points$[0], getd(.Points$[0])-([email protected][5]*[email protected][1]); if ([email protected][6]) for(set [email protected],6; [email protected]<getarraysize([email protected]); set [email protected],[email protected]+2) delitem [email protected][[email protected]],[email protected][[email protected]+1]*[email protected][1]; getitem [email protected][0],[email protected][2]; if (.Announce) announce strcharinfo(0)+" has created "+(([email protected][2] > 1)[email protected][2]+"x "+getitemname([email protected][0]):callfunc("F_InsertArticle",getitemname([email protected][0])))+"!",0; specialeffect2 EF_FLOWERLEAF; close; case 2: setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1; if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2]; else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2]; else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2]; else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2]; break; case 3: close; } } OnEnd: if (@qe[7]) { changelook LOOK_HEAD_BOTTOM, @qe[3]; changelook LOOK_HEAD_TOP, @qe[4]; changelook LOOK_HEAD_MID, @qe[5]; changelook LOOK_ROBE, @qe[6]; } deletearray @qe[0],8; end; function Add { if (getitemname(getarg(1)) == "null") { debugmes "Quest reward #"+getarg(1)+" invalid (skipped)."; return; } setarray [email protected][0],getarg(2),getarg(3),getarg(4); for(set [email protected],5; [email protected]<getargcount(); set [email protected],[email protected]+2) { if (getitemname(getarg([email protected])) == "null") { debugmes "Quest requirement #"+getarg([email protected])+" invalid (skipped)."; return; } else setarray [email protected][[email protected]],getarg([email protected]),getarg([email protected]+1); } copyarray getd(".q_"+getarg(0)+"_"+getarg(1)+"[0]"),[email protected][0],getarraysize([email protected]); npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0); return; } function Chk { if (getarg(0) < getarg(1)) { set @qe[0],1; return "^FF0000"; } else return "^00FF00"; } function Slot { set [email protected]$,getitemname(getarg(0)); switch(.ShowSlot) { case 1: if (!getitemslots(getarg(0))) return [email protected]$; case 2: if (getiteminfo(getarg(0),2) == 4 || getiteminfo(getarg(0),2) == 5) return [email protected]$+" ["+getitemslots(getarg(0))+"]"; default: return [email protected]$; } } } function script qshop { deletearray @i[0],getarraysize(@i); for(set [email protected],0; [email protected]<getargcount(); set [email protected],[email protected]+1) set @i[[email protected]],getarg([email protected]); doevent "quest_shop::OnMenu"; end; } // Dummy shop data -- copy as needed. //============================================================ - shop qshop1 -1,909:-1 - shop qshop2 -1,909:-1 - shop qshop3 -1,909:-1 - shop qshop4 -1,909:-1 - shop qshop5 -1,909:-1 I have used Euphy's Quest NPC just now and I faced a problem with it. After I added this npc to my server and click on the npc it was fine... But after I selected a category "Headgears" on it, then it come out with Jellopy I have no idea how to fix this.. Please guide me!
  14. Im searching for latest Basic waper npc script with renewal map and it can warp player to "Town", "Dungeon Entrance","Fields" only... I have done searching in google but I got old version of it and doesnt have renewal maps. Did anyone can help me? thanks you and sorry for my bad english.. =)
  15. prt_in,63,60,2 script Kx Refiner 85,{ function ShowChanceInfo; function ShowSecureInfo; function GetChanceBonus; function GetSecure; function ConsumeSecure; function Refine; function ConsumeChance; // Group requirement if (getgroupid() < .UseMinLv) { mes .NpcName$; mes "I'm sorry, but I can't help you."; mes "See you."; close; } mes .NpcName$; mes "I'm the Armsmith."; mes "I can refine all kinds of weapons, armor and equipment, so let me"; mes "know what you want me to refine."; next; setarray [email protected]$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3"; set [email protected]$, ""; for([email protected] = 1; [email protected] <= 10; [email protected]++) { if(getequipisequiped([email protected])) { set [email protected]$, [email protected]$ + [email protected]$[[email protected]] + "-" + "[" + getequipname([email protected]) + "]"; [email protected] = 1; } set [email protected]$, [email protected]$ + ":"; } if ([email protected] == 0) { mes .NpcName$; mes "I don't think I can refine any items you have..."; close; } // Get part to upgrade @part = select([email protected]$); if(!getequipisequiped(@part)) { mes .NpcName$; mes "You're not wearing"; mes "anything there that"; mes "I can refine."; emotion e_an; close; } //Check if the item is refinable... else if(!getequipisenableref(@part)) { mes .NpcName$; mes "I don't think I can"; mes "refine this item at all..."; close; } //Check to see if the items is already +MAX_REFINE else if(getequiprefinerycnt(@part) >= .MaxRefine) { mes .NpcName$; mes "I can't refine this"; mes "any more. This is as"; mes "refined as it gets!"; close; } // Save some upgrade data @refId = getequipid(@part); // item id @refCount = getequiprefinerycnt(@part); // refine count @refLv = getequipweaponlv(@part); // weapon level @price = .RefinePrices[@refLv]; // Refine Price @item = .RefineItems[@refLv]; // Refine Item @chance = getequippercentrefinery(@part); // Refine Chance @safe = .SafeLevels[@refLv]; // Safe limit [email protected] = 1; if (.DisplayRefineInfo) { mes .NpcName$; mes "Here's some information: "; mes "- Safe Limit: " + @safe; ShowChanceInfo(); ShowSecureInfo(); next; } // Multiple refine option if (getgroupid() >= .MultipleRefineMinLv) { mes .NpcName$; mes "I can refine this one time, or multiple times,"; mes "what do you say?"; next; switch(select("Refine one time.:Refine multiple times.:I've changed my mind.")) { case 1: [email protected] = 1; break; case 2: mes .NpcName$; mes "Very well, how many times"; mes "do you want to refine this item?"; next; do { input [email protected]; if ([email protected] <= 0 || ([email protected] + @refCount) > .MaxRefine) { mes .NpcName$; mes "Hey, I can't refine this item that much!"; next; mes .NpcName$; mes "Try again."; next; } else { break; } } while(true); break; case 3: mes .NpcName$; mes "Ok, come back when you need my services."; close; } } @price *= [email protected]; mes .NpcName$; mes "To refine this I need"; mes [email protected] + " ^003366"+getitemname(@item)+"^000000 and"; mes "a service fee of " + @price + " Zeny."; mes "Do you really wish to continue?"; next; if (select("Yes:No") == 2) { mes .NpcName$; mes "Yeah..."; mes "There's no need to"; mes "rush. Take your time."; close; } else if((countitem(@item) < [email protected]) || (Zeny < @price)) { // Can't pay mes .NpcName$; mes "You don't seem to have"; mes "enough Zeny or "+getitemname([email protected])+"..."; mes "Go get some more. I'll be"; mes "here all day if you need me."; close; } [email protected] = false; // Refine result useSecure = -1; // secure item usage useChance = -1; // chance item usage for ([email protected] = 0; [email protected] < [email protected]; [email protected]++) { @secId = GetSecure(); @refCount = getequiprefinerycnt(@part); // refine count if (@secId && ConsumeSecure()) { if (!countitem(@secId)) { @secId = 0; useSecure = false; } else if (countitem(@secId) && ((.SecureAsk == 1) || (.SecureAsk == 2 && useSecure == -1))) { mes .NpcName$; mes "Seems like you have a " + getitemname(@secId) + "."; mes "Do you want to use it to protect your item?"; next; if (select("Yes:No") == 1) useSecure = true; else useSecure = false; mes .NpcName$; mes "All right!"; next; } } GetChanceBonus(); if (@bonusId && ConsumeChance()) { if (!countitem(@bonusId)) { @bonusId = 0; @bonus = 0; useChance = false; } else if ((.ChanceAsk == 1) || (.ChanceAsk == 2 && useChance == -1)) { mes .NpcName$; mes "Seems like you have a " + getitemname(@bonusId) + "."; mes "Do you want to use it to increase your success rate?"; next; if (select("Yes:No") == 1) useChance = true; else useChance = false; mes .NpcName$; mes "All right"; next; } } if (((@chance + @bonus) < 100) && useSecure != true) { mes .NpcName$; mes "Oh no! If I refine this again"; mes "there's a risk it could be destroyed!"; mes "That means that That means that "; mes "^FF0000this item^000000, and ^FF0000anything^000000 on it"; mes "^FF0000will be gone^000000."; next; mes .NpcName$; mes "Do you still want to continue?"; next; if (select("Yes:No") == 2) { mes .NpcName$; mes "I completely agree..."; mes "I might be a great refiner, but sometimes even I make mistakes."; close; } } [email protected] = Refine(); if ([email protected]) { [email protected]++; } } if (! [email protected]) { mes .NpcName$; mes "Well, it wasn't a perfect work,"; mes "but at least your items are in good shape!"; close; } mes .NpcName$; [email protected] = rand(1,3); if ([email protected] == 1) { mes "Perfect!"; mes "Heh heh!"; mes "Once again,"; mes "flawless work"; mes "from the master~"; } else if([email protected] == 2) { mes "Success...!"; mes "Yet again, my amazing"; mes "talent truly dazzles"; mes "and shines today."; } else { mes "Heh heh!"; mes "I'm all done."; mes "No doubt, my work is"; mes "to your satisfaction."; mes "Sheer, utter perfection~"; } close; // Refine () // Tries to refine item at @part function Refine { //custom checks if(getequipisequiped(@part) == 0) { // hacker has removed the item (not changed, why?) mes .NpcName$; mes "Look here... you don't have any Items on..."; close; } else if(getequiprefinerycnt(@part) != @refCount || getequipid(@part) != @refId) { // hacker has changed the item mes .NpcName$; emotion e_an; mes "Wait a second..."; mes "Do you think I'm stupid?!"; mes "You switched the item while I wasn't looking! Get out of here!"; close; } delitem @item, 1; Zeny -= @price; [email protected] = @chance; if (useChance == true) { delitem @bonusId, 1; [email protected] += @bonus; } if ([email protected] <= rand(100)) { // Failed if (useSecure == true) { delitem @secId, 1; downrefitem @part, 0; mes "Unfortunaly it failed, but at least your item is in a good shape, right?"; } else { [email protected] = 0; if (.FailResults[0] && .FailResults[0] >= rand(100)) { // Stay as Is downrefitem @part, 0; [email protected] = 1; } else if (.FailResults[1] && .FailResults[1] >= rand(100)) { // Go down one level downrefitem @part, 1; [email protected] = 2; } else if (.FailResults[2] && .FailResults[2] >= rand(100)) { // Go down to +0 downrefitem @part, @refCount; [email protected] = 3; } else { // Destroys the item failedrefitem @part; [email protected] = 4; } mes .NpcName$; emotion (!rand(5))?e_cash:e_omg; if ([email protected] == 1) { // Nothing mes "Unfortunaly it failed, but at least your item is in a good shape, right?"; return true; } else if([email protected] == 2) { // -1 mes "Crap!"; mes "It couldn't take"; mes "much more tempering!"; mes "Sorry about this..."; } else if ([email protected] == 3) { // Down to +0 mes "OH! MY GOD!"; mes "Damn it! Not again!"; mes "I'm terribly sorry, but you know practice does make perfect."; mes "Um, right? Heh heh..."; } else { // Break mes "Nooooooo!"; mes "It broke!"; mes "I-I'm sorry!"; close; } return false; } } else { // Secure - Consume always if (useSecure == true && ((.SecureConsumeType == 1 && [email protected] < 100) || .SecureConsumeType == 2)) delitem @secId, 1; successrefitem @part; } return true; } // ShowChanceInfo() // Displays information about refine success chance and items function ShowChanceInfo { GetChanceBonus(); // sets @bonus and @bonusId if (@bonusId && ((@chance >= 100 && .ChanceConsumeType > 0) || (@chance < 100))) { [email protected] = @chance + @bonus; mes "- +" + (@refCount+1) +" Success Chance: " + ([email protected] > 100 ? 100 : [email protected]) +"%"; mes "- Increase Chance Item: " + getitemname(@bonusId) + " (+"[email protected]+"%)"; } else { mes "- +" + (@refCount+1) +" Success Chance: " + @chance + "%"; } } // ShowSecureInfo() // Displays information about refine secure items function ShowSecureInfo { [email protected] = GetSecure(); if ([email protected] && ((@chance >= 100 && .SecureConsumeType > 0) || (@chance < 100))) { if (.SecureType == 0) { mes "- Refine Protect Item: " + getitemname([email protected]); } else if (.SecureType == 1) { mes "- +"[email protected]+" Refine Protect Item: " + getitemname([email protected]); } } } // GetChanceBonus() // Retrieves the chance and item used // and stores in @bonus and @bonusId function GetChanceBonus { @bonus = 0; @bonusId = 0; if (.UseChanceItems) { @bonusId = .ChanceItems[@refLv * 2]; if (@bonusId) @bonus = .ChanceItems[@refLv * 2 + 1]; } } // <secId> GetSecure() // Retrieve the secure info for this item // Returns: the Item ID function GetSecure { if (.UseSecureItems) { if (.SecureType == 0) { // Each weapon type has one item to protect it return .SecureItems[@refLv]; } else { // Each refine level + item type has one item to protect it if (@part == EQI_HAND_R || (@part == EQI_HAND_L && @wLvl > 0)) // Weapon return .SecureItems[([email protected] * 3)]; else if (@part == EQI_HEAD_TOP || @part == EQI_HEAD_MID || @part == EQI_HEAD_LOW) // Headgear return .SecureItems[([email protected] * 3) + 1]; else // Armor return .SecureItems[([email protected] * 3) + 2]; } } } // ConsumeChance() // Checks if it can consume chance item function ConsumeChance { if (.UseChanceItems) { if ((.ChanceConsumeType > 0) || (@refCount >= @safe)) return true; } return false; } // ConsumeSecure() // Checks if it can consume secure item function ConsumeSecure { if (.UseSecureItems) { if ((.SecureConsumeType <= 1 && @refCount >= @safe) || .SecureConsumeType == 2) return true; } return false; } OnInit: // ====================== // Basic Settings // ====================== .NpcName$ = "[Refiner]"; // Name of the NPC for dialogues .UseMinLv = 0; // Minimal user group to use this NPC .MultipleRefineMinLv = 0; // Required user group to refine more than one time // at once .DisplayRefineInfo = true; // Should NPC display information about // refine (such as success chance) .UseSecureItems = true; // Enables the use of items to protect // from fails (see .SecureItems array) .UseChanceItems = true; // Enables the use of items that increase // the success chance (see .ChanceItems array) .MaxRefine = 10; // The maximum refine // The chance of each special fail result to occur. // If none of them happen, item will be destroyed. // 100 = 100% setarray .FailResults[0], 0, // Stay as is 0, // Go down one level 0; // Go down to +0 // Items used to refine by Weapon Level: setarray .RefineItems[0], 985, // Elunium - Armor (Level 0) 1010, // Phracon - Level 1 1011, // Emveretarcon - Level 2 984, // Oridecon - Level 3 984; // Oridecon - Level 4 // Price in Z of the refine by Weapon Level: setarray .RefinePrices[0], 2000, // Armor (Level 0) 50, // Level 1 200, // Level 2 5000, // Level 3 20000; // Level 4 // Safe levels by Weapon Level: setarray .SafeLevels[0], 4, // Armor (Level 0) 7, // Level 1 6, // Level 2 5, // Level 3 4; // Level 4 // ====================== // Refine Protector // ====================== if (.UseSecureItems) { // These settings are used only if .UseSecureItems is true. // How .SecureItems items will work? // 0 - Each weapon type has one item to protect it // 1 - Each refine level + item type has one item to protect it .SecureType = 1; // Ask if wants to use a secure item? // 0 - don't ask (if item is inventory, use it) // 1 - Ask before every refine attempt // 2 - Ask once for all refine attempts // (when refining multiple times, otherwise works like 1) .SecureAsk = 1; // How Secure Items are consumed? // 0 - If it will break, consume. // 1 - Consume always (except on safe refine) // 2 - Consume always (even on safe refines) .SecureConsumeType = 0; // Items used to protect the refine. // These are the items consumed when protecting the // refine, they are consumed according to .SecureConsumeType; // Use 0 to not use an item for this level. // If .SecureType is 0, each array item means one weapon Level. // If .SecureType is 1, each three array items means one refine // level, and follows the order // <weapon>, <headgear>, <armor> // // Setup the array down there according to your .SecureType above. // // Note: Officially there is no Weapon Level higher than 4, // these values exists there mainly for by refine protection, // but can be used for custom items. if (.SecureType == 0) { // If .SecureType is 0 setarray .SecureItems[0], 0, // Armor (Level 0) 0, // Level 1 0, // Level 2 0, // Level 3 0; // Level 4 } else { // If .SecureType is 1 // Item Types: // Weapn // Headgear // Armor (Every armor except headgear) setarray .SecureItems[0], 6234, 6234, 6234, // +0 6234, 6234, 6234, // +1 6234, 6234, 6234, // +2 6234, 6234, 6234, // +3 6234, 6234, 6234, // +4 6234, 6234, 6234, // +5 6234, 6234, 6234, // +6 6234, 6234, 6234, // +7 6234, 6234, 6234, // +8 6234, 6234, 6234; // +9 } } // =============================== // Refine Chance Increase // =============================== if (.UseChanceItems) { // These settings are used only if .UseChanceItems is true. // How Chance Items are consumed? // 0 - Consume if above safe level // 1 - Consume always (even on safe refines) .ChanceConsumeType = 0; // Ask if wants to use a chance item? // 0 - don't ask (if item is inventory, use it) // 1 - Ask before every refine attempt // 2 - Ask once for all refine attempts // (when refining multiple times, otherwise works like 1) .ChanceAsk = 2; // Items used to increase the refine success and the increase, by Weapon Level. // These are the items consumed during the refine to increase // the success rate of the refine, they are consumed according to // .ChanceConsumeType; // Format: <Item ID>, <Increase> // An increase of 1 is equal to 1% to the total, // so if the success rate is 80%, it will be 81%. // Use 0 as ID to not use an item for this level. setarray .ChanceItems[0], 30323, 3, // Armor (Level 0) 30323, 5, // Level 1 30323, 5, // Level 2 30323, 5, // Level 3 30323, 3; // Level 4 } end; A configurable refiner with lots of options, like: - Use items to increase chance - Use items to avoid losing the item - Refine more than one time in a single click - Ask if player wants to use items to increase chance/protect - Different fail results The problem I have faced was the "- Refine more than one time in a single click" This function got problem ,it will ask how many times do you want to refine, if u keyin 10 times refine and it will straight away refine the item to +10 with 100% successful rate same like @refine I dont want this kind of function how could I change or remove this function? Please help me to solve this problem. p/s: This script was taken by other resource.
  16. Okay my problem is that Im using a script that from other topic and Im trying to use this script. After I added this NPC script to my server I realize that the NPC function got a little problem. Problem facing: 1.This is a Bloody Branch Quest NPC. 2. The npc function is like this "1 bloody branch =100 Dead Branch + 10M zeny 3.If you got all the requirement items(100 Dead branch (Item id 604) + 10M zeny), the npc will gv 1 Bloody Branch(12103)) 4.After u claim for your Bloody Branch, the Dead Branch will disappear for sure and the 10m zeny will decrease from your total Zeny. But the zeny still remind the same. So how to do fix the zeny problem? can teach me? And I would like to add another require item for the BB Quest. That'all that I want to say.. =)
  17. mes "1 Bloody Branch = 100 Dead Branch + 10mZ"; next; if(countitem(604) < 100 || Zeny < 10000000) { mes "Not enough requirements"; close; } mes "Here you go"; delitem 604,100; set Zeny,10000000; getitem 12103,1; close; } Can I know how do I add more quest items needed? mes "1 Bloody Branch = 100 Dead Branch + 10mZ + 100 Apples"; next; if(countitem(604) < 100 || countitem(512) < 100 || Zeny < 10000000) { mes "Not enough requirements"; close; } mes "Here you go"; delitem 604,100; delitem 512,100 set Zeny,10000000; getitem 12103,1; close; } And I added 1 more item 512 but it does function well and 1 more thing is the zeny doesn't decrease after i claim for my items....
  18. problem solved!! thank you... xD
  19. prontera,140,199,5 script Cash Point Exchanger 497,{ set [email protected], countitem(7227); mes "[TCG Exchanger]"; mes "You have ^0055FF"[email protected]+" TCG^000000."; if ([email protected]) { mes "Please come back later."; close; } mes "I can trade ^FF00002 TCG^000000 for ^FF00001 Cash Points^000000."; next; if(select(" - Trade: - ^777777Leave^000000")==2) close; mes "[TCG Exchanger]"; mes "How many would you like to exchange?"; next; input [email protected]; mes "[TCG Exchanger]"; if ([email protected] < 2 || [email protected] > countitem(7227)) { mes "That's an invalid amount."; close; } mes "Are you sure you want to exchange ^0055FF"[email protected]+" TCG^000000?"; if(select(" - Yes: - No")==2) close; mes " "; delitem 7227, [email protected]; set #CASHPOINTS, #CASHPOINTS+([email protected]*1); mes "You now have "+#CASHPOINTS+" Cash Points."; close; } //This wasn't my script, I took from other people and the original script was 1 TCG to 5 Cash Point ( it worked perfectly) but I changed the TCG exchange rate: 2 TCG card to 1 cash point. It became 2 TCG card to 2 Cash point. Did I change wrong thing inside it? Sorry for disturb and my bad english. =) Im new to here* nice to meet y'all
×
×
  • Create New...

Important Information

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