/*
CREATE TABLE IF NOT EXISTS `ero_npc_trade_item` (
`cid` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`name` VARCHAR(30) NOT NULL DEFAULT '',
`nameid` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`amount` INT(11) UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY (`cid`,`nameid`,`amount`)
) ENGINE=MyISAM;
*/
prontera,155,175,5 script Item Collector::item_collector_npc 4_F_KAFRA9,{
doevent "trade_item_main::OnTalk";
}
- script trade_item_main -1,{
OnInit:
// Top Rank
.top_rank = 10;
// NPC take what item ID (empty = all items)
setarray .itemid, 512;
// list of not allowed items
setarray .blacklist_itemid, 501, 502, 4001;
.itemid_size = getarraysize(.itemid);
for (.@i = 0; .@i < .itemid_size; .@i++) {
.itemid$ = (.@i > 0 ? "," : "") + .itemid$ + .itemid[.@i];
.is_allow[.itemid[.@i]] = 1;
}
.allow_all_item = !.itemid_size;
.blacklist_itemid_size = getarraysize(.blacklist_itemid);
for (.@i = 0; .@i < .blacklist_itemid_size; .@i++)
.is_blacklist[.blacklist_itemid[.@i]] = 1;
end;
OnTalk:
.@is_gm = (getgmlevel() >= 99);
mes "^0055FF[ Item Collector ]^000000";
mes "Do you have any used items? You may give it to me.";
if (!.allow_all_item) {
for (.@i = 0; .@i < .itemid_size; .@i++)
mes "\n~ " + mesitemlink(.itemid[.@i], false);
}
mes " ";
mes "I'll always remember who giveaway his items to me.";
switch(select(
"View Top "+.top_rank+" Rank",
"Give Item to NPC",
(.@is_gm) ? "^FF0000[GM]^000000 Reset Ranking" : ""
)) {
default:
case 1:
do {
clear;
mes "[ View Top "+.top_rank+" Rank ]";
switch(select(
"Any",
"Filter by Character Name",
(.allow_all_item) ? "":"Filter by ItemID"
)) {
default:
break;
case 2:
.@filter_by = 1;
mes "Enter Character Name";
break;
case 3:
.@filter_by = 2;
mes "Enter ItemID";
break;
}
if (.@filter_by && .@filter_by != 3)
input .@input$;
.@sql$ = "SELECT `name`, `nameid`, SUM(`amount`) AS `total` "
+ "FROM `ero_npc_trade_item` "
+ "WHERE 1 = 1 "
+ (.allow_all_item ? "" : "AND `nameid` IN ("+escape_sql(.itemid$)+") ")
+ ((.@filter_by == 1) ? "AND `name` IN ("+escape_sql(.@input$)+") " : "")
+ ((.@filter_by == 2) ? "AND `nameid` IN ("+escape_sql(.@input$)+") " : "")
+ "GROUP BY `cid`, `nameid`, `name`"
+ "ORDER BY `total` DESC LIMIT "+.top_rank;
query_sql(.@sql$, .@name$, .@nameid, .@total);
.@size = getarraysize(.@name$);
if (!.@size) {
mes "no record found.";
break;
}
for (.@i = 0; .@i < .@size; .@i++)
mes "["+(.@i+1)+".] "+mesitemlink(.@nameid[.@i], false, .@name$[.@i])+" ("+F_InsertComma(.@total[.@i])+")";
next;
} while (true);
break;
case 2:
clear;
mes "[ Give Item to NPC ]";
if (!.allow_all_item) {
mes "I accept the following items:";
for (.@i = 0; .@i < .itemid_size; .@i++)
mes "\n~ " + mesitemlink(.itemid[.@i], false);
}
getinventorylist;
for (.@i = 0; .@i < @inventorylist_count; .@i++) {
if (@inventorylist_bound[.@i] <= 0
&& @inventorylist_expire[.@i] <= 0
&& @inventorylist_equip[.@i] <= 0
&& @inventorylist_tradable[.@i]
&& .is_blacklist[@inventorylist_id[.@i]] == 0
&& (.allow_all_item || .is_allow[@inventorylist_id[.@i]])
) {
.@menu$ = .@menu$ + replacestr(getitemname(@inventorylist_id[.@i]), ":", " ") + " ("+F_InsertComma(@inventorylist_amount[.@i])+" left)";
.@count++;
}
.@menu$ = .@menu$ + ":";
}
if (.@count)
.@i = select(.@menu$) - 1;
if (!@inventorylist_id[.@i]) {
mes "Unfortunately, you dont have any item available to give to NPC.";
close;
}
clear;
mes "[ Give Item to NPC ]";
mes "How many "+mesitemlink(@inventorylist_id[.@i], false)+" will be given to me?";
mes "(You have "+F_InsertComma(@inventorylist_amount[.@i])+" left)";
input .@amount, 0, @inventorylist_amount[.@i];
clear;
mes "[ Give Item to NPC ]";
if (.@amount) {
delitemidx @inventorylist_idx[.@i], .@amount;
clear;
mes "[ Give Item to NPC ]";
mes "Thank you, you donated "+.@amount+"x "+mesitemlink(@inventorylist_id[.@i], false)+" to me.";
npctalk "<Item Collector> Thank you, '"+strcharinfo(0)+"' donated "+.@amount+"x "+itemlink(@inventorylist_id[.@i], @inventorylist_refine[.@i], @inventorylist_card1[.@i], @inventorylist_card2[.@i], @inventorylist_card3[.@i], @inventorylist_card4[.@i], @inventorylist_enchantgrade[.@i])+" to me.", "item_collector_npc";
query_sql("INSERT INTO `e_npc_trade_item` (`cid`,`name`,`nameid`,`amount`) VALUES ("+getcharid(0)+",'"+escape_sql(strcharinfo(0))+"',"+@inventorylist_id[.@i]+","+.@amount+") ON DUPLICATE KEY UPDATE `amount` = `amount` + "+.@amount);
}
mes "Thank for your kindness.";
break;
case 3:
clear;
mes "[ Reset Ranking ]";
mes "This action cant be undo, confirm your action?";
if (select("Yes, confirm.","Cancel") == 1) {
query_sql("TRUNCATE `e_npc_trade_item`");
clear;
mes "[ Reset Ranking ]";
mes "All record has been deleted.";
}
break;
}
close;
}
Comments
0 B
|👍
/👎
0 B
|👍
/👎
0 B
|👍
/👎