/
choose3card_1randomcard_0.2r.txt
79 lines (76 loc) · 2.89 KB
/
choose3card_1randomcard_0.2r.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
function script F_MesItemInfo {
.@item = getarg(0);
.@itemname$ = getitemname(.@item);
if (.@itemname$ != "null") {
.@itemslot = getitemslots(.@item);
if (.@itemslot)
.@itemname$ = sprintf("%s [%d]", .@itemname$, .@itemslot);
}
else
.@itemname$ = "Unknown Item";
if (PACKETVER >= 20150729)
return sprintf("<ITEM>%s<INFO>%d</INFO></ITEM>", .@itemname$, .@item);
else if (PACKETVER >= 20130130)
return sprintf("<ITEMLINK>%s<INFO>%d</INFO></ITEMLINK>", .@itemname$, .@item);
else
return .@itemname$;
}
//===== rAthena Script =======================================
//= 3 cards of your choice = 1 random card
//===== By: ==================================================
//= AnnieRuru
//===== Current Version: =====================================
//= 0.2
//===== Compatible With: =====================================
//= rAthena 2020-10-15
//===== Description: =========================================
//= also added no MVP card in the list
//===== Topic ================================================
//= https://rathena.org/board/topic/126214-disable-mini-boss-and-boss-card-in-card-trader/
//===== Additional Comments: =================================
//= add blacklist
//============================================================
prontera,151,183,6 script Sample 1_F_MARIA,{
getinventorylist;
for (.@i = 0; .@i < @inventorylist_count; ++.@i) {
if (.check_card[@inventorylist_id[.@i]]) {
.@menu$ += getitemname(@inventorylist_id[.@i]) + ":";
.@card[@inventorylist_id[.@i]] = @inventorylist_amount[.@i];
.@index[.@c++] = .@i;
.@check_card_count += @inventorylist_amount[.@i];
}
}
if (.@check_card_count < 3) {
mes "You need at least 3 cards to deal with me.";
close;
}
mes "Please select 3 cards...";
.@c = 0;
for (.@i = 0; .@i < 3; ++.@i) {
.@s = select(.@menu$) -1;
.@card_chosen[.@c++] = .@tmp = @inventorylist_id[.@index[.@s]];
if (--.@card[.@tmp] == 0)
.@menu$ = replacestr(.@menu$, getitemname(.@tmp), "");
mes "> 1x " + F_MesItemInfo(.@tmp);
}
mes "Are you sure you want to trade these cards?";
if (select("~ Yes", "~ No") == 2) end;
for (.@i = 0; .@i < 3; ++.@i)
delitem .@card_chosen[.@i], 1;
.@get_cardid = .cardid[rand(.size)];
mes "You get "+ F_MesItemInfo(.@get_cardid);
getitem .@get_cardid, 1;
close;
OnInit:
setarray .@blacklist, 4001, 4002, 4003; // add more
freeloop true;
.@size = getarraysize(.@blacklist);
for (.@i = 0; .@i < .@size; ++.@i)
.@blacklist$ = .@blacklist;
.@query$ = "SELECT `item_db_re`.`id` ";
.@query$ += "FROM `item_db_re` RIGHT JOIN `mob_db_re` ON `item_db_re`.`id` = `mob_db_re`.`DropCardid` ";
.@query$ += "WHERE (mode & "+ MD_MVP +") = 0 AND `DropCardid` != "+ false +" AND `type` = "+ IT_CARD +" AND RIGHT(`name_japanese`, 4) = 'Card' AND `item_db_re`.`id` NOT IN ("+ implode(.@blacklist$, ",")+") GROUP BY 1";
.size = query_sql(.@query$, .cardid);
for (.@i = 0; .@i < .size; ++.@i)
.check_card[.cardid[.@i]] = true;
}