viewing paste Euphy's Card Trader v1.1 | Athena

Posted on the
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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
//===== rAthena Script =======================================
//= Card Trader
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.1 
//===== Compatible With: =====================================
//= rAthena SVN
//===== Description: =========================================
//= Exchange cards for points.
//============================================================
 
prontera,165,196,6  script  Card Trader 90,{
    mes "[Card Trader]";
    mes "Hi, "+strcharinfo(0)+"!";
    mes "What can I do for you?";
    next;
    switch(select(" > Information: > Trade in cards: > Point shop (^0055FF"+getd(.Points$)+"^000000): > Leave")) {
    case 1:
        mes "[Card Trader]";
        mes "Do you find that you've got";
        mes "useless cards lying around?";
        mes "I'll be glad to take them off";
        mes "your hands!";
        next;
        mes "[Card Trader]";
        mes "I'll give you ^0055FF"+.Points[0]+" Point"+((.Points[0] == 1)?"":"s")+"^000000 for each";
        mes "card you give me, and";
        mes "^0055FF"+.Points[1]+" Points^000000 for MVP cards.";
        mes "You can trade those points";
        mes "for items later on.";
        mes "How does that sound?";
        emotion e_cash;
        close;
    case 2:
        mes "[Card Trader]";
        mes "Select the cards you";
        mes "want to trade in.";
        if (.Level) {
            mes " ";
            mes "They must be dropped";
            mes "by monsters of level";
            mes .Level+" and above.";
        }
        deletearray @sold_nameid[0],getarraysize(@sold_nameid);
        callshop "card_shop",2;
        npcshopattach "card_shop";
        end;
    case 3:
        mes "[Card Trader]";
        mes "You have ^0055FF"+getd(.Points$)+"^000000 Point"+((getd(.Points$) == 1)?".":"s.");
        callshop "card_shop",1;
        npcshopattach "card_shop";
        end;
    case 4:
        mes "[Card Trader]";
        mes "*yawn*";
        mes "See you later!";
        emotion e_yawn;
        close;      
    }
 
OnSellItem:
    mes "Cards to sell:";
    mes "-----------------------------------";
    for(set .@i,0; .@i < getarraysize(@sold_nameid); set .@i,.@i+1)
        if (@sold_nameid[.@i] > 4000 && @sold_nameid[.@i] < 4700) {
            if (.Level) {
                query_sql("SELECT `LV` FROM `mob_db` WHERE `DropCardid` = "+@sold_nameid[.@i],.@lv);
                if (.@lv < .Level) {
                    dispbottom getitemname(@sold_nameid[.@i])+" is under the minimum level.";
                    continue;
                }
            }
            set .@card_id[getarraysize(.@card_id)], @sold_nameid[.@i];
            set .@card_amt[getarraysize(.@card_amt)], @sold_quantity[.@i];
            set .@mvp, compare(.MVP$,""+@sold_nameid[.@i]);
            mes ((.@mvp)?"  ^FF0000":"  ^777777")+@sold_quantity[.@i]+"x "+getitemname(@sold_nameid[.@i])+"^000000";
            set .@card_total, .@card_total+(@sold_quantity[.@i]*((.@mvp)?.Points[1]:.Points[0]));
        }
    deletearray @sold_nameid[0], getarraysize(@sold_nameid);
    deletearray @sold_quantity[0], getarraysize(@sold_quantity);
    if (!.@card_id) {
        mes "  ^777777(none)^000000";
        emotion e_swt;
        close;
    }
    mes " ";
    mes "---------- Total: ^0055FF"+.@card_total+" pt.^000000 -------";
    next;
    if(select(" > ^0055FFComplete trade...^000000: > ^777777Cancel^000000") == 2) {
        mes "[Card Trader]";
        mes "Oh, okay...";
        emotion e_hmm;
        close;
    }
    for(set .@i,0; .@i < getarraysize(.@card_id); set .@i,.@i+1)
        delitem .@card_id[.@i],.@card_amt[.@i];
    setd .Points$, getd(.Points$)+.@card_total;
    mes "[Card Trader]";
    mes "All done!";
    emotion e_ho;
    close;
 
OnBuyItem:
    for(set .@i,0; .@i < getarraysize(@bought_nameid); set .@i,.@i+1)
        for(set .@j,0; .@j <getarraysize(.Shop); set .@j,.@j+2)
            if (@bought_nameid[.@i] == .Shop[.@j]) {
                set .@cost, .@cost+(.Shop[.@j+1]*@bought_quantity[.@i]);
                break;
            }
    if (.@cost > getd(.Points$)) {
        mes "[Card Trader]";
        mes "You don't have enough Points.";
        emotion e_omg;
    }
    else {
        mes "Items purchased:";
        mes "-----------------------------------";
        for(set .@i,0; .@i < getarraysize(@bought_nameid); set .@i,.@i+1) {
            getitem @bought_nameid[.@i], @bought_quantity[.@i];
            mes "  ^777777"+@bought_quantity[.@i]+"x "+getitemname(@bought_nameid[.@i])+"^000000";
        }
        mes " ";
        mes "---------- Total: ^0055FF"+.@cost+" pt.^000000 -------";
        setd .Points$, getd(.Points$)-.@cost;
        emotion e_cash;
    }
    deletearray @bought_nameid[0], getarraysize(@bought_nameid);
    deletearray @bought_quantity[0], getarraysize(@bought_quantity);
    close;
 
OnInit:
    set .Level,0;          // Minimum monster level to trade corresponding cards.
    set .Points$,"#Card_Points";    // Variable to store points.
    setarray .Shop[0],      // Card Shop items: <ID>,<point cost>
      4001,1,4004,1,4033,1,4196,1,4197,25,4054,50,4174,75,4047,100;
    setarray .Points[0],1,5;    // Points per <normal card>,<MVP card>
    set .MVP$,          // List of MVP cards.
      "4121,4123,4128,4131,4132,4134,4135,4137,4142,4143,4144,4145,4146,4147,4148,4168,4236,"+
      "4241,4263,4276,4302,4305,4318,4324,4330,4342,4357,4359,4361,4363,4365,4399,4403,4407";
    
    npcshopdelitem "card_shop",909;
    for(set .@i,0; .@i < getarraysize(.Shop); set .@i,.@i+2)
        npcshopadditem "card_shop",.Shop[.@i],.Shop[.@i+1];
    end;
}
-   shop    card_shop   -1,909:-1
Viewed 3054 times, submitted by mumbles.