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,{ .@name$ = strcharinfo(0); // Char Name .@item = 7227; // Item ID .@amount = 1; // Amount .@countitem = countitem( .@item* ); // Countitem if( .@countitem < 1 ) { mes "[ Cash Converter ]"; mes "You don't have any ^0000FF"+ getitemname(.@item) +"^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(.@item) +"^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: "+ .@countitem +" x "+ getitemname( .@item ) +" to "+ ( .@countitem * .@amount ) +" Cash Point"+ (.@countitem * .@amount > 1 ? "s" : "") +""; next; if( select("- Convert","- Cancel") == 1 ) { progressbar "0x11CC99",1; specialeffect2 EF_REMOVETRAP; delitem .@item,.@countitem; #CASHPOINTS = #CASHPOINTS + ( .@countitem * .@amount ); message .@name$,"You have recieved "+ .@countitem * .@amount +" 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 .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3"; set .@menu$, ""; for(.@i = 1; .@i <= 10; .@i++) { if(getequipisequiped(.@i)) { set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]"; .@equipped = 1; } set .@menu$, .@menu$ + ":"; } if (.@equipped == 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 .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) { set .menu$, .menu$+.Shops$[.@i]+":"; npcshopdelitem "qshop"+.@i,909; } end; OnMenu: set .@size, getarraysize(@i); if (!.@size) set @shop_index, select(.menu$); else if (.@size == 1) set @shop_index, @i[0]; else { for(set .@j,0; .@j<.@size; set .@j,.@j+1) set .@menu$, .@menu$+.Shops$[@i[.@j]]+":"; set @shop_index, @i[select(.@menu$)-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"+@shop_index,1; npcshopattach "qshop"+@shop_index; end; OnBuyItem: // .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... } setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]); copyarray .@q[3],getd(".q_"+@shop_index+"_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+@shop_index+"_"+.@q[0])); set .@q[2],.@q[1]*.@q[3]; if (!.@q[2] || .@q[2] > 30000) { message strcharinfo(0),"You can't purchase that many "+getitemname(.@q[0])+"."; end; } mes "[Quest Shop]"; mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000"; mes "Requirements:"; disable_items; if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000"; if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000"; if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000"; next; setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[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 .@preview,1; addtimer 1000, strnpcinfo(0)+"::OnEnd"; while(1) { switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[7])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) { case 1: if (@qe[0]) { mes "[Quest Shop]"; mes "You're missing one or more quest requirements."; close; } if (!checkweight(.@q[0],.@q[2])) { mes "[Quest Shop]"; mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000"; close; } if (.@q[4]) set Zeny, Zeny-(.@q[4]*.@q[1]); if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]); if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) delitem .@q[.@i],.@q[.@i+1]*.@q[1]; getitem .@q[0],.@q[2]; if (.Announce) announce strcharinfo(0)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):callfunc("F_InsertArticle",getitemname(.@q[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 .@j[0],getarg(2),getarg(3),getarg(4); for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) { if (getitemname(getarg(.@i)) == "null") { debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped)."; return; } else setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1); } copyarray getd(".q_"+getarg(0)+"_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j); 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 .@s$,getitemname(getarg(0)); switch(.ShowSlot) { case 1: if (!getitemslots(getarg(0))) return .@s$; case 2: if (getiteminfo(getarg(0),2) == 4 || getiteminfo(getarg(0),2) == 5) return .@s$+" ["+getitemslots(getarg(0))+"]"; default: return .@s$; } } } function script qshop { deletearray @i[0],getarraysize(@i); for(set .@i,0; .@i<getargcount(); set .@i,.@i+1) set @i[.@i],getarg(.@i); 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 .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3"; set .@menu$, ""; for(.@i = 1; .@i <= 10; .@i++) { if(getequipisequiped(.@i)) { set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]"; .@equipped = 1; } set .@menu$, .@menu$ + ":"; } if (.@equipped == 0) { mes .NpcName$; mes "I don't think I can refine any items you have..."; close; } // Get part to upgrade @part = select(.@menu$); 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 .@refTimes = 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: .@refTimes = 1; break; case 2: mes .NpcName$; mes "Very well, how many times"; mes "do you want to refine this item?"; next; do { input .@refTimes; if (.@refTimes <= 0 || (.@refTimes + @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 *= .@refTimes; mes .NpcName$; mes "To refine this I need"; mes .@refTimes + " ^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) < .@refTimes) || (Zeny < @price)) { // Can't pay mes .NpcName$; mes "You don't seem to have"; mes "enough Zeny or "+getitemname(.@item)+"..."; mes "Go get some more. I'll be"; mes "here all day if you need me."; close; } .@refResult = false; // Refine result useSecure = -1; // secure item usage useChance = -1; // chance item usage for (.@i = 0; .@i < .@refTimes; .@i++) { @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; } } .@refineRes = Refine(); if (.@refineRes) { .@refineCount++; } } if (! .@refineRes) { mes .NpcName$; mes "Well, it wasn't a perfect work,"; mes "but at least your items are in good shape!"; close; } mes .NpcName$; .@win = rand(1,3); if (.@win == 1) { mes "Perfect!"; mes "Heh heh!"; mes "Once again,"; mes "flawless work"; mes "from the master~"; } else if(.@win == 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; .@refineChance = @chance; if (useChance == true) { delitem @bonusId, 1; .@refineChance += @bonus; } if (.@refineChance <= 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 { .@failType = 0; if (.FailResults[0] && .FailResults[0] >= rand(100)) { // Stay as Is downrefitem @part, 0; .@failType = 1; } else if (.FailResults[1] && .FailResults[1] >= rand(100)) { // Go down one level downrefitem @part, 1; .@failType = 2; } else if (.FailResults[2] && .FailResults[2] >= rand(100)) { // Go down to +0 downrefitem @part, @refCount; .@failType = 3; } else { // Destroys the item failedrefitem @part; .@failType = 4; } mes .NpcName$; emotion (!rand(5))?e_cash:e_omg; if (.@failType == 1) { // Nothing mes "Unfortunaly it failed, but at least your item is in a good shape, right?"; return true; } else if(.@failType == 2) { // -1 mes "Crap!"; mes "It couldn't take"; mes "much more tempering!"; mes "Sorry about this..."; } else if (.@failType == 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 && .@refineChance < 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))) { .@tChance = @chance + @bonus; mes "- +" + (@refCount+1) +" Success Chance: " + (.@tChance > 100 ? 100 : .@tChance) +"%"; mes "- Increase Chance Item: " + getitemname(@bonusId) + " (+"+@bonus+"%)"; } else { mes "- +" + (@refCount+1) +" Success Chance: " + @chance + "%"; } } // ShowSecureInfo() // Displays information about refine secure items function ShowSecureInfo { .@secId = GetSecure(); if (.@secId && ((@chance >= 100 && .SecureConsumeType > 0) || (@chance < 100))) { if (.SecureType == 0) { mes "- Refine Protect Item: " + getitemname(.@secId); } else if (.SecureType == 1) { mes "- +"+@refCount+" Refine Protect Item: " + getitemname(.@secId); } } } // 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[(.@curRef * 3)]; else if (@part == EQI_HEAD_TOP || @part == EQI_HEAD_MID || @part == EQI_HEAD_LOW) // Headgear return .SecureItems[(.@curRef * 3) + 1]; else // Armor return .SecureItems[(.@curRef * 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 .@i, countitem(7227); mes "[TCG Exchanger]"; mes "You have ^0055FF"+.@i+" TCG^000000."; if (!.@i) { 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 .@j; mes "[TCG Exchanger]"; if (.@j < 2 || .@j > countitem(7227)) { mes "That's an invalid amount."; close; } mes "Are you sure you want to exchange ^0055FF"+.@j+" TCG^000000?"; if(select(" - Yes: - No")==2) close; mes " "; delitem 7227, .@j; set #CASHPOINTS, #CASHPOINTS+(.@j*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...