viewing paste Unknown #21819 | 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
/*=========================================================
Points to Item Exchanger
by Mumbles
===========================================================
Request: http://goo.gl/MplDtF
===========================================================
Preview: http://youtu.be/V-6ahRLqRi4
===========================================================
Description:
Exchanges items for points and vice-versa at a fixed rate.
===========================================================
Compatibility:
Optimised for Hercules emulators.
===========================================================
Changelog:
v1.0 - First version.
    v1.0.1 - Added changelog.
=========================================================*/
 
prontera,164,169,3  script  Donation Manager::points2item   4_M_OPERATION,{
    
    /*-----------------------------------------------------
    Script
    -----------------------------------------------------*/
    mes .npc_name$;
    mes "Hello there, ^FF8800"+ strcharinfo(0) +"^000000! "+
        "Would you exchange your "+ .pod_name$ +" "+
        "for "+ .points_name$ +"?";
    mes " ";
    mes "Exchange Rate: "+ .rate +":1";
    mes .points_name$ +": [^FF0000"+ getd(.points_var$) +"^000000]";
    next;
    
    switch (select(implode(.menu_options$, ":"))) {
        case 1:
            mes .npc_name$;
            mes "Okay, come back if you change your mind!";
            break;
            
        case 2:
            mes .npc_name$;
            mes "Please enter the amount of "+ .pod_name$ +" you want to exchange.";
            
            do {
                mes " ";
                mes "Input ^0000FF0^000000 to cancel.";
                next;
                
                input .@amount;
                .@total = .@amount / .rate;
                .@remainder = .@amount % .rate;
                
                // Check break input
                if (!.@amount) {
                    message strcharinfo(0), strnpcinfo(1) +" : Exchange terminated.";
                    close;
                }
                
                // Check total against inventory
                if (countitem(.pod_id) < .@amount) {
                    mes .npc_name$;
                    mes "^FF0000Please enter a valid amount.^000000";
                }
                    
                // Check remainder [loss prevention]
                else if (.@remainder) {
                    mes .npc_name$;
                    mes "Sorry, but you must exchange multiples of "+ .rate +".";
                }
            } while (countitem(.pod_id) < .@amount || .@remainder);
            
            delitem .pod_id, .@amount;
            setd .points_var$, getd(.points_var$) + .@total;
            
            mes .npc_name$;
            mes "You've exchanged "+ .@amount +" "+ .pod_name$ +" for "+ .@total +" "+ .points_name$ +". "+
                "You now have "+ getd(.points_var$) +" "+ .points_name$ +" and "+ countitem(.pod_id) +" "+ .pod_name$ +".";
            break;
        }
        
        close;
    
    
    /*-----------------------------------------------------
    Configuration
    -----------------------------------------------------*/
    OnInit:
        .npc_name$ = "[^0000FFDonation Manager^000000]";
        .rate = 20;     // Exchange rate (1 point * rate = total PoDs)
        .pod_id = Donation_Card;    // Proof of Donation item ID or constant
        .pod_name$ = getitemname(.pod_id) +"(s)";   // Proof of Donation item name
        .points_name$ = "Cash Point(s)";            // Points name
        .points_var$ = "#CASHPOINTS";               // Points variable
        
        // Modifying these options requires updates to the corresponding case
        setarray .menu_options$[0], "^FF0000>^000000 Cancel",
                                    "^0000FF>^000000 Exchange "+ .pod_name$ +" for "+ .points_name$'
        
        end;
    
}
 
Viewed 1486 times, submitted by Dastgir.