diff options
Diffstat (limited to 'npc/custom/item_signer.txt')
-rw-r--r-- | npc/custom/item_signer.txt | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/npc/custom/item_signer.txt b/npc/custom/item_signer.txt new file mode 100644 index 000000000..a3aba3771 --- /dev/null +++ b/npc/custom/item_signer.txt @@ -0,0 +1,133 @@ +//===== rAthena Script ======================================= +//= Sign Your Items +//===== By: ================================================== +//= Lupus +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Write you name on your rare equipment or weapon ^_- +//===== Additional Comments: ================================= +//= 1.1 Cleaned and edited for general use. [Euphy] +//============================================================ + +prt_in,24,61,7 script Perchik 47,{ + + setarray .@Item[0],644,3; // Item requirements: <ID>,<Count>{,...} (0 to disable) + setarray .@Cost[0],0,5000; // Zeny requirements: <base price>,<price per refine> + + mes "[Perchik]"; + mes "I can ^0055FFsign your name^000000 on almost any rare item you hold."; + next; + if(select("Tell me more...:Sign my items, please!") == 1) { + mes "[Perchik]"; + mes "I can put your name on any slotless equipment or weapon."; + emotion e_ic; + next; + mes "[Perchik]"; + if (getarraysize(.@Item) || getarraysize(.@Cost)) { + mes "For my work I accept:"; + if (getarraysize(.@Item)) for(set .@i,0; .@i<getarraysize(.@Item); set .@i,.@i+2) + mes " ~ "+.@Item[.@i+1]+"x "+getitemname(.@Item[.@i]); + if (.@Cost[0]) mes " ~ "+.@Cost[0]+" Zeny"; + if (.@Cost[1]) mes " ~ "+.@Cost[1]+" Zeny per refine"; + } + else mes "I work for free, but..."; + next; + emotion e_cry; + mes "[Perchik]"; + mes "Alas, I have 12 hungry children"; + mes "and a very angry wife."; + next; + mes "[Perchik]"; + mes "Or it was 12 angry children"; + mes "and a very hungry wife..."; + emotion e_hmm; + close; + } + mes "[Perchik]"; + mes "Show me your items to sign..."; + next; + setarray .@pos$[1],"Upper Headgear","Armor","Left hand","Right hand","Garment","Footgear","Left Accessory","Right Accessory","Mid Headgear","Lower Headgear"; + set .@menu$,""; + for (set .@i,1; .@i<=10; set .@i,.@i+1) { + if (getequipisequiped(.@i)) + set .@menu$, .@menu$+.@pos$[.@i]+" [^0055FF"+getequipname(.@i)+"^000000]"; + set .@menu$, .@menu$+":"; + } + set .@part, select(.@menu$); + set .@id, getequipid(.@part); + set .@ref, getequiprefinerycnt(.@part); + mes "[Perchik]"; + if (!getequipisequiped(.@part)) { + mes "Nothing is equipped there!"; + emotion e_wah; + close; + } + for(set .@i,0; .@i<4; set .@i,.@i+1) + set .@slot[.@i], getequipcardid(.@part,.@i); + if (.@slot[0]==255 || .@slot[0]==254 || .@slot[0]<0) { + mes "Alas, this item's already signed."; + mes "I would never touch a master's work."; + emotion e_hmm; + close; + } + if (.@slot[0]>4000 && .@slot[0]<5000) { + mes "A card? Here?!"; + mes "As I said before, I don't sign items with cards."; + emotion e_hmm; + close; + } + if (getiteminfo(.@id,10)) { + mes "Sorry, I don't sign slotted items."; + emotion e_sry; + close; + } + getinventorylist; + for(set .@i,0; .@i<@inventorylist_count; set .@i,.@i+1) + if (@inventorylist_expire[.@i] != 0) { + mes "Sorry, I don't sign rental items!"; + emotion e_hmm; + close; + } + set .@price, .@Cost[0]+(.@Cost[1]*.@ref); + if (getarraysize(.@Item) || .@price) { + mes "I will need:"; + if (getarraysize(.@Item)) for(set .@i,0; .@i<getarraysize(.@Item); set .@i,.@i+2) { + mes " ~ "+.@Item[.@i+1]+"x "+getitemname(.@Item[.@i]); + if (countitem(.@Item[.@i]) < .@Item[.@i+1]) set .@nr,1; + } + if (.@price) mes " ~ "+.@price+" Zeny"; + } + mes "Shall I sign your ^0055FF"+getitemname(.@id)+"^000000?"; + next; + if(select("Ok!:Leave")==2) { + mes "[Perchik]"; + mes "See you..."; + emotion e_yawn; + close; + } + mes "[Perchik]"; + if (Zeny < .@price || .@nr) { + mes "I don't work for 'thanks'."; + emotion e_sry; + close; + } + if (!countitem2(.@id,1,.@ref,0,.@slot[0],.@slot[1],.@slot[2],.@slot[3])) { + mes "Where is "+getitemname(@id)+"...?"; + npctalk "You're a snoozy cheater!"; + logmes "CHEATER: Tried to sign an item not having it: "+getitemname(@id); + emotion e_wah; + close; + } + if (.@price) set Zeny, Zeny-.@price; + if (getarraysize(.@Item)) for(set .@i,0; .@i<getarraysize(.@Item); set .@i,.@i+2) + delitem .@Item[.@i], .@Item[.@i+1]; + delitem2 .@id,1,1,.@ref,0,.@slot[0],.@slot[1],.@slot[2],.@slot[3]; + mes "Done!"; + emotion e_proud; + getitem2 .@id,1,1,.@ref,0,254,0,getcharid(0)&0xffff,(getcharid(0)>>16)&0xffff; + equip .@id; + close; +} |