//Donation NPC ver 1.02 //By: ToastOfDoom //floating shops..need one for each group - shop donationShop_0 -1,512:-1 - shop donationShop_1 -1,512:-1 - shop donationShop_2 -1,512:-1 - shop donationShop_3 -1,512:-1 - shop donationShop_4 -1,512:-1 - shop donationShop_5 -1,512:-1 - shop donationShop_6 -1,512:-1 - shop donationShop_7 -1,512:-1 - shop donationShop_8 -1,512:-1 - shop donationShop_9 -1,512:-1 - shop donationShop_10 -1,512:-1 - shop donationShop_11 -1,512:-1 - shop donationShop_12 -1,512:-1 - shop donationShop_13 -1,512:-1 - shop donationShop_14 -1,512:-1 - shop donationShop_15 -1,512:-1 - shop donationShop_16 -1,512:-1 - shop donationShop_17 -1,512:-1 - script DonationBase -1,{ OnStart: if(.shop_base_name$ == "") donpcevent strnpcinfo(3)+"::OnInit"; // preview anti-theft protection ^_^ =============== set @bottomview, getlook(3); set @topview, getlook(4); set @midview, getlook(5); mes "[Donation Items Shop]"; mes " "; mes "Welcome "+ strcharinfo(0) +"!!!"; mes "This is where you exchange your ^0000FFProof of Donation Tickets (PODs)^000000 that you get from donation."; mes " "; mes "Please visit our site ^0000FFwww.myro.tk^000000 donations page to learn about donating."; next; mes "[Donation Items Shop]"; mes " "; mes "Select the item you would like to view or buy and click the buy button. ^0000FFProof of Donation Tickets (PODs)^000000 are used to buy items here. POD exhange rates are shown on the side column."; mes "^FF0000Discounts do not apply^000000."; next; mes "[Donation Items Shop]"; mes "^FF0000Note:^000000 If you try to 'buy' multiple items, only the 1st one will be bought. ^FF0000Discount Skills do not apply^000000."; mes "All prices are in ^0000FFPODs^000000"; mes "^FF0000ITEMS ARE NON-REFUNDABLE^000000"; next; OnSelectGroup: set @group, select(.group_menu$) - 1; OnOpenShop: callshop .shop_base_name$ + @group, 1; end; OnBuyItem: set .@item, @bought_nameid[0]; set .@items$, ".items_" + @group; set .@costs$, ".costs_" + @group; set .@quantities$, ".quantity_" + @group; //search for item cost set .@num_items, getarraysize(getd(.@items$)); for(set .@i, 0; .@i < .@num_items; set .@i, .@i + 1) { if(getelementofarray(getd(.@items$), .@i) == .@item) { set .@cost, getelementofarray(getd(.@costs$), .@i); set .@quantity, getelementofarray(getd(.@quantities$), .@i); break; } } if(!.@cost) //couldn't find cost...weird stuff..ending npc end; set .@item_name$, getitemname(.@item); if(getiteminfo(@item, 2) == 4 || getiteminfo(.@item, 2) == 5) set .@item_name$, .@item_name$+" ["+getitemslots(.@item)+"]"; ///////do preview if headgear========================== deltimer strnpcinfo(3) + "::OnLeave"; addtimer 1000, strnpcinfo(3) + "::OnLeave"; set .@equip, getiteminfo(.@item, 5); set .@view, getiteminfo(.@item, 11); if(.@equip != -1 && .@view > 0) { if(.@equip & 1) atcommand "@changelook 3 " + .@view; if(.@equip & 256) atcommand "@changelook 1 " + .@view; if(.@equip & 512) atcommand "@changelook 2 " + .@view; } //show info set .@pass, 1; mes "Item: ^0000FF" + .@item_name$ + "^000000"; mes "Quantity: ^0000FF" + .@quantity + "^000000"; mes "Cost: ^0000FF" + .@cost + "x ^000000" + getitemname(.cost_item); mes " "; if(countitem(.cost_item) < .@cost) { mes "[^FF0000x^000000] You do not have enough ^0000FF" + getitemname(.cost_item) +"^000000 (PODs) to purchase this"; set .@pass, 0; } else mes "[^00FF00O^000000] You have enough ^0000FF" + getitemname(.cost_item) +"^000000 (PODs) to purchase this"; if(!checkweight(.@item, .@quantity)) { mes " "; mes "[^FF0000x^000000] You will be overweight if you purchase this item. Please remove some items and try again"; set .@pass, 0; } set .@notice, getd(".notice_" + .@item); if(.@notice) { mes " "; mes "This item cannot be: "; set .@i, 0; while(.@notice && .@i <= 6) { if(.@notice & 1) mes "- ^FF0000" + .notice_types$[.@i] + "^000000"; set .@notice, .@notice >> 1; set .@i, .@i + 1; } } next; if(.@pass && .can_purchase ) { mes "Would you like to purchase ^0000FF" + .@quantity + "x " + .@item_name$ + "^000000 for ^0000FF" + .@cost + " " + getitemname(.cost_item) + "^000000 (PODs)?"; next; if(select("Yes:No") == 1) { if(countitem(.cost_item) >= .@cost) { delitem .cost_item, .@cost; getitem .@item, .@quantity; logmes " OOOOOOOOOOOOOOOOOO HAS BOUGHT " + .@item_name$ + ":" + .@item + ":" + .@quantity + ": "+ .@cost; //checks for announce flag set .@notice, getd(".notice_" + .@item); if(.@notice & 128) announce strcharinfo(0) + " has just bought a " + .@item_name$, 0; } else { mes "Error"; logmes "XXXXXXXXXXXXXX Possible Exploit with Donation Trader : XXXXXXXXXX " + .@item_name$ + ":" + .@item + ":" + .@quantity + ": "+ .@cost; close; } } } //reset look to original atcommand "@changelook 1 " + @topview; atcommand "@changelook 2 " + @midview; atcommand "@changelook 3 " + @bottomview; mes "Would you like to continue looking?"; next; switch(select("Yes:Yes, but send me back to the item type selection:No")) { case 1: goto OnOpenShop; case 2: goto OnSelectGroup; default: } close; OnInit: // can they purchase ?? ( 1 = can , 0 = cant ) set .can_purchase,0; //Usable setarray .items_0[0], 14608,12220,12280,12272,12273,12274,12275,13751,13757,12250,12251,12252,12254,12255,607,608,12103,12210,12114,12115,12116,12117; setarray .quantity_0[0], 3,100,80,30,30,30,30,1,1,50,50,50,50,50,120,250,4,2,50,50,50,50; setarray .costs_0[0], 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1; //Armor setarray .items_1[0], 15032,15012,2394,2367,2345,2347,2349,2351,2388,2357,2383,2382,2374,2375,2377,2378,2379,2380,2381,2370,2384,2376; setarray .quantity_1[0], 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; setarray .costs_1[0], 68,88,88,8,12,18,18,18,12,12,18,30,30,30,38,38,38,38,38,38,38,80; //Headgears 1 setarray .items_2[0], 2219,5051,5220,2237,5233,5232,5230,5182,5137,5262,5149,5187,5070,5210,5189,5198,5174,5153,5252,5165, 5139,5277,5226,5265,5267,5138,5254,5253,5212,5103,5257,5255,5380,5285,5213,5211,5170,5278,5293,5259, 5289,5287,5383,5382,5324,5283,5266,5286,5227,5171,5200,5188,5426,5427,5801,5805,5013,2202,2204,5101,5325,5288, 5130,5214,5271,5022,5205,5304,5808,30002,5308,5311,5376,5315,5314,5313,5372,5375,5312,5378,5320, 30011,30019,30020,5373,5365,5400,5387,5404,5491,5417,5364,5384,5397,5503,5184,5396,5468,5390,5388,5363,5359,5393,5395,5361,30017,30018,5336; setarray .quantity_2[0], 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; setarray .costs_2[0], 1,8,8,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,8,8,18,12,12,12,12, 12,12,18,18,21,21,21,30,50,70,1,1,18,38,38,1,4,5,12,12,21,30,5,5,8,8,8,12,18,18,18,21,21,21,30,50,50,70,1,1,2,2,2,2,4,12,12,12,15,18,18,18,18,20,28,28,28,30,68,68,10000; //Headgears 2 setarray .items_3[0], 5526,5527,5528,5531,5538,5519,5512,5513,5514,5515,5545,5546,5549,5550,5569,5570,5581,5582,5598,5599,5676,5677,5662,5663,5739,5740,5744,5745,5588,5589,5520,5600,5529,5436,5535,5596,5478,5485,5358,5479,5480,5379,5489,5464,5477,5462,5470,5483,5490,5463,5466,5467,5389,5457,5333,5335,5338,5346,5409,5423,5371,5360,5401,5421,5442,5446,5428,5475,5497,5496,5465,5469,5460,5521,5807,5501,5800,5502,30004,30006,5498,5495,5803; setarray .quantity_3[0], 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; setarray .costs_3[0], 12,12,12,12,12,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,24,28,80,8,18,42,8,8,12,12,12,12,18,18,18,21,28,28,28,35,38,42,48,5,8,8,8,8,12,18,18,21,42,88,5,5,5,8,8,8,12,18,28,28,38,38,42,58,58,68,88,88,100; //Headgears 3 setarray .items_4[0], 5472,5406,5516,5208,5339,5317,5664,5597,5530,5591,5537,5594,5859,5403,5476,5572,5523,5665,5563,5682,5611,5554,5762,5586,5562,5507,5506,5690,5481,5660,5654,5557,5784,18539,5601,5786,5772,5362,5757,5567; setarray .quantity_4[0], 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; setarray .costs_4[0], 2,3,3,3,4,5,5,8,8,8,8,8,8,8,8,8,8,12,12,12,12,12,12,12,12,18,18,18,18,18,18,18,18,28,28,28,30,68,98,98; //Weapons setarray .items_5[0], 13042,1279,1280,16010,1281,1486,1546,1577,1576,1426,2002,13416,16001,1187,1310,1981,30701,1649,1433,1927,1646,16000,12935,13110,13176,13177,13178,13179,13171,1186,1637,1743,1635,1640,13307,13306,1424,13023,1228,13037,1425,1419,1567,1978,1924,13034,13035,13412,13413,1633,1565,1530,1736,1266,1728,2000,13166,1738,1628,1267; setarray .quantity_5[0], 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; setarray .costs_5[0], 48,48,48,48,48,48,48,58,58,58,68,68,68,68,38,42,68,88,38,42,48,58,4,8,12,12,12,12,12,21,21,21,25,38,28,28,4,5,12,12,12,12,18,18,18,18,18,18,18,21,30,38,8,12,12,18,18,21,42,10000; //Shields setarray .items_6[0], 2137,2138,30805,2127,2115,2130,2131; setarray .quantity_6[0], 1,1,1,1,1,1,1; setarray .costs_6[0], 28,21,4,42,5,12,8; //Garments setarray .items_7[0], 2565,2543,2554,30803,2515,2524,2540,2535,2539,2538,2537,2542,2541; setarray .quantity_7[0], 1,1,1,1,1,1,1,1,1,1,1,1,1; setarray .costs_7[0], 28,68,68,5,4,12,12,12,21,30,50,38,10000; //Shoes setarray .items_8[0], 2464,2471,13958,2421,2437,2435,2436,2410,2433,2423,2439; setarray .quantity_8[0], 1,1,1,1,1,1,1,1,1,1,1; setarray .costs_8[0], 28,68,3,4,12,21,21,38,38,70,1000; //Accessories setarray .items_9[0], 2731,2772,5817,2737,2787,2620,2744,30804,2693,2688,2689,2692,2691,2690,2694,2630,2701,2629,2702,2729,2730,2733,2712,2709; setarray .quantity_9[0], 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; setarray .costs_9[0], 18,48,68,48,21,21,32,2,4,4,4,4,4,4,4,5,12,21,21,38,8,12,42,10000; //Renewal Gear Sets setarray .items_10[0], 2444,2549,2394,2477,2577,2886,15038,2479,2580,2890,15042,2476,2575,2884,15037,2485,2587,15048,2484,15047,2483,2586,15046; setarray .quantity_10[0], 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; setarray .costs_10[0], 28,28,88,28,28,28,38,28,28,28,38,38,38,38,38,58,58,58,58,58,58,58,58; //Costume Items setarray .items_11[0], 19576,19579,19587,19588,19589,19590,19598,19599,19600,19601,19617,19649,19650,19661,19676,19696,19707,19728,19731,19737,19750,19751,19764,19767,19779,19780,19785,19824,19825,19826,19856,19883,19884,19903,19917,19919,19970,19544,19573,19520,19518,19519,19537,19521,19516,19506,19507,19517,19542,19511,19512,19509,19510,19513,19541,19514,19505,19553,19540,19543,19539; setarray .quantity_11[0], 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; setarray .costs_11[0], 68,48,48,38,48,38,48,58,68,38,38,48,48,58,58,48,48,68,48,58,58,58,38,48,68,58,38,58,38,68,58,58,48,68,48,58,58,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,68; //Cards setarray .items_12[0], 4352,4474,4441,4361,4399,4359,4145,4357,4365,4403,4427; setarray .quantity_12[0], 1,1,1,1,1,1,1,1,1,1,1; setarray .costs_12[0], 28,38,42,12,35,18,38,8,18,21,5; //Misc setarray .items_13[0], 6124,6223,6224,14034,14033,9028,7776,12214,7621,9039,12360,12364,12365,12366,12368; setarray .quantity_13[0], 1,3,3,1,1,1,1,6,10,1,3,3,3,3,3; setarray .costs_13[0], 1,1,1,1,1,5,2,1,1,8,1,1,1,1,1; //Rentals setarray .items_14[0], 30910,30901,30903,30905,30907,30909,30805,30803,30802,12957,30804,13958,12935,30022,2541,30012,5336,2709,2439,1267; setarray .quantity_14[0], 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; setarray .costs_14[0], 2,1,1,1,2,2,4,5,8,1,2,3,4,10000,10000,10000,10000,10000,10000,10000; //NEW RELEASES setarray .items_15[0], 30910,30901,30903,30905,30907,30909,19576,19579,19587,19588,19589,19590,19598,19599,19600,19601,19617,19649,19650,19661,19676,19696,19707,19728,19731,19737,19750,19751,19764,19767,19779,19780,19785,19824,19825,19826,19856,19883,19884,19903,19917,19919,19970; setarray .quantity_15[0], 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; setarray .costs_15[0], 2,1,1,1,2,2,68,48,48,38,48,38,48,58,68,38,38,48,48,58,58,48,48,68,48,58,58,58,38,48,68,58,38,58,38,68,58,58,48,68,48,58,58; //BATTLEGROUNDS ITEMS setarray .items_16[0], 15052,5823,2845,2781,2675,5566,18612,5661,5574,5418,5450,12957,5434,5424,5473,5445,30804,5438,5439,5440,5441,5508,5509,5539,5511,5447,5203,13958,5415,5819,6124,30805; setarray .quantity_16[0], 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; setarray .costs_16[0], 10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000; //NOT FOR SALE setarray .items_17[0], 5564,30032,5592,18503,18505,5548,30025,5518,30029,5471,5420,30024,30030,30022,2541,30012,1267,5430,5357,2703,5305,5374,5377; setarray .quantity_17[0], 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1; setarray .costs_17[0], 10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000; //group names usable=0 headgears1=2 setarray .groups$[0], "Usable", "Armors", "Headgears 1", "Headgears 2", "Headgears 3", "Weapons", "Shields", "Garments", "Shoes", "Accessories", "Renewal Gear Sets", "Costume Items", "Cards", "Etc.", "Rentals", "New Releases", "Battlegrounds Items (For Viewing Only)", "Display (For Viewing Only, Not for Sale)"; //Item notices // //1:Item can't be drop //2:Item can't be traded (nor vended) //4:Wedded partner can override restriction 2. //8:Item can't be sold to npcs //16:Item can't be placed in the cart //32:Item can't be placed in the storage //64:Item can't be placed in the guild storage //128:Item is announced when brought setarray .notice_items[0], 19539,15038,15042,15037,15048,15047,15046,18539,5601,5786,5772,5362,5757,5567,1279,1280,16010,1281,1486,1546,1577,1576,1426,2002,13416,16001,1187,2543,2394,5529,2554,6124,30029,5803,30006,5495,5498,4441,5421,5357,5430,4399, 5013, 2629, 1530, 2410, 4145,2537,2729,2703,30022,2541,30012,1267; setarray .notice_flag[0], 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,75,128,128,203,139,203,171,128,128,128,207,128,203,203,79, 207, 79, 207, 207, 107,75,75,128,128,128,128,128; //notice names setarray .notice_types$[0], "Dropped", "Traded/vended", "Traded to wedded partner", "Sold to an NPC", "Placed in a cart", "Put into storage", "Put into guild storage"; //exchange item set .cost_item, 7179; set .shop_base_name$, "donationShop_"; set .num_groups, getarraysize(.groups$); for(set .@i, 0; .@i < .num_groups; set .@i, .@i + 1) { set .@items$, ".items_" + .@i; set .@costs$, ".costs_" + .@i; set .@num_items, getarraysize(getd(.@items$)); if(.@num_items) { //makes group menu string set .group_menu$, .group_menu$ + .groups$[.@i]; //adds items to shop set .@shop_name$, .shop_base_name$ + .@i; npcshopitem .@shop_name$, getelementofarray(getd(.@items$), 0), getelementofarray(getd(.@costs$), 0); for(set .@k, 1; .@k < .@num_items; set .@k, .@k + 1) npcshopadditem .@shop_name$, getelementofarray(getd(.@items$), .@k), getelementofarray(getd(.@costs$), .@k); npcshopattach .@shop_name$; sleep 1; //prevent infinite loop error } set .group_menu$, .group_menu$ + ":"; } //setup notice flags for easy search set .num_notice_items, getarraysize(.notice_items); for(set .@i, 0; .@i < .num_notice_items; set .@i, .@i + 1) { setd(".notice_" + .notice_items[.@i], .notice_flag[.@i]); } end; OnLeave: //remove preview atcommand "@changelook 1 " + @topview; atcommand "@changelook 2 " + @midview; atcommand "@changelook 3 " + @bottomview; end; } payon,172,239,4 script Donation Items::Donation Items1 829,{ if(getwaitingroomstate(3)) donpcevent strnpcinfo(3)+"::OnInit"; doevent "DonationBase::OnStart"; end; OnInit: delwaitingroom strnpcinfo(3); waitingroom "Items for your POD Tickets here!",0; } morocc,183,97,3 duplicate(Donation Items1) Donation Items#4 829 turbo_room,64,87,6 duplicate(Donation Items1) Donation Items#2 829 prontera,192,191,4 duplicate(Donation Items1) Donation Items#3 829 prontera,171,79,3 duplicate(Donation Items1) Donation Items#5 829 izlude,89,131,7 duplicate(Donation Items1) Donation Items#6 829 morocc,166,286,3 duplicate(Donation Items1) Donation Items#7 829 amatsu,102,98,6 duplicate(Donation Items1) Donation Items#8 829 gonryun,186,134,3 duplicate(Donation Items1) Donation Items#9 829 bat_room,163,155,3 duplicate(Donation Items1) Donation Items#10 829 aldebaran,126,129,3 duplicate(Donation Items1) Donation Items#11 829 alberta,85,59,5 duplicate(Donation Items1) Donation Items#12 829 alberta,31,247,5 duplicate(Donation Items1) Donation Items#13 829 //izlude,95,137,5 duplicate(Donation Items1) Donation Items#14 829 geffen,104,73,5 duplicate(Donation Items1) Donation Items#15 829 yuno,136,173,6 duplicate(Donation Items1) Donation Items#16 829 hugel,65,154,6 duplicate(Donation Items1) Donation Items#17 829 prontera,170,328,3 duplicate(Donation Items1) Donation Items#18 829 turbo_room,117,180,3 duplicate(Donation Items1) Donation Items#19 829 malaya,248,218,3 duplicate(Donation Items1) Donation Items#20 829