Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //===== rAthena Script =======================================
- //= Card Compounder
- //===== By ===================================================
- //= llchrisll
- //===== Version ==============================================
- //= 1.0 - Initial Version
- //= 1.1 - Script Optimization
- // - Added config for custom Variable, see .requ_vard$ and .requ_varn$
- //===== Tested With =========================================
- //= rAthena SQL 07/16-2017 Revision
- //===== Description ==========================================
- //= This script allows you to insert any card you in your inventory
- // in any equip you have in exchange for an high fee.
- //===== Comments =============================================
- //= None yet...
- //===========================================================
- prontera,147,167,0 script Card Compounder 100,{
- // GM Settings & Testing Help
- if(getgmlevel() > 0) {
- if(.requ[0] == 1) {
- mes "Zeny:";
- input .@zeny,.requ[1],1000000; // 1m Zeny
- if(.@zeny == 0) set @zeny,.requ[1];
- set .Zeny,@zeny*4;
- } else if(.requ[0] == 2) {
- mes "Cash Points:";
- input .@cash,.requ[1],10000; // 10k Cash Points
- if(.@cash == 0) set .@cash,.requ[1];
- set #CASHPOINTS,.@cash*4;
- } else if(.requ[0] == 3) {
- mes ""+.requ_vard$;
- input @custom,.requ[1],2000;
- if(.@custom == 0) set .@custom,.requ[1];
- setd(""+.requ_varn$),.@custom*4;
- } else if(.requ[0] > 500) {
- mes getitemname(.requ[0])+":";
- input .@item,.requ[1],10000;
- if(.@item == 0) set .@item,.requ[1];
- getitem .requ[0],.@item*4;
- }
- next;
- mes "Balances:";
- mes "Zeny: "+ Zeny;
- mes "Cash Points: "+#CASHPOINTS;
- mes .requ_vard$+": "+getd(""+.requ_varn$);
- set @debug,1;
- next;
- }
- mes .n$;
- mes "Hello, how can I help you?";
- next;
- switch(select("- Compound Cards:- Information:- Nothing")) {
- case 1:
- mes .n$;
- mes "Please choose the item you want to compound cards on from your inventory:";
- next;
- getinventorylist;
- set .@e,0; // Reset Array Position
- for ( set .@i,0; .@i < @inventorylist_count; set .@i,.@i + 1) { // Looping through the Items
- // Available Equipment
- if( (getiteminfo(@inventorylist_id[.@i],2) == 4 || getiteminfo(@inventorylist_id[.@i],2) == 5) && getitemslots(@inventorylist_id[.@i]) > 0 && @inventorylist_identify[.@i] == 1 && @inventorylist_equip[.@i] == 0) {
- // Item ID
- setarray .@eq_list[.@e],@inventorylist_id[.@i];
- if(@debug) dispbottom "Equip Name: "+getitemname(@inventorylist_id[.@i])+" ["+@inventorylist_id[.@i]+"]";
- // Does the items have an refine?
- setarray .@eq_ref[.@e],@inventorylist_refine[.@i];
- // Does the items already have cards compounded?
- setarray .@eq_c1[.@e],@inventorylist_card1[.@i];
- if(@debug) dispbottom "Card 1: "+ getitemname(@inventorylist_card1[.@i])+" ["+@inventorylist_card1[.@i]+"]";
- setarray .@eq_c2[.@e],@inventorylist_card2[.@i];
- if(@debug) dispbottom "Card 2: "+ getitemname(@inventorylist_card2[.@i])+" ["+@inventorylist_card2[.@i]+"]";
- setarray .@eq_c3[.@e],@inventorylist_card3[.@i];
- if(@debug) dispbottom "Card 3: "+ getitemname(@inventorylist_card3[.@i])+" ["+@inventorylist_card3[.@i]+"]";
- setarray .@eq_c4[.@e],@inventorylist_card4[.@i];
- if(@debug) dispbottom "Card 4: "+ getitemname(@inventorylist_card4[.@i])+" ["+@inventorylist_card4[.@i]+"]";
- if(@debug) dispbottom "------------------------------------------------------";
- if(@debug) dispbottom "Array Sizes: Card 1: "+getarraysize(.@eq_c1)+" - Card 2: "+getarraysize(.@eq_c2)+" - Card 3: "+getarraysize(.@eq_c3)+" - Card 4: "+getarraysize(.@eq_c4);
- if(@debug) dispbottom "=============================================";
- if(@debug) dispbottom " ";
- // Menu Creation
- set .@it_m$,.@it_m$ + "- (+"+@inventorylist_refine[.@i]+") " + getitemname(@inventorylist_id[.@i])+" ["+getitemslots(@inventorylist_id[.@i])+"]" + ( (@inventorylist_id[@i+1])?":":"");
- // New Array Position:
- // getarraysize would be bugged if an entry would be 0
- // since it won't be counted as a valid value
- set .@e,.@e + 1;
- }
- // Available Cards
- if(getiteminfo(@inventorylist_id[.@i],2) == 6) {
- setarray .@ca_list[getarraysize(.@ca_list)],@inventorylist_id[.@i];
- setarray .@ca_am[getarraysize(.@ca_am)],@inventorylist_amount[.@i];
- }
- }
- // Menu Selection
- set .@id,select(.@it_m$) - 1;
- set .@max_c,getitemslots(.@eq_list[.@id]);
- if(getd(".@eq_c"+.@max_c+"["+.@id+"]") > 0) {
- mes .n$;
- mes "Each slot is in usage already, please uncompound the current cards and try again.";
- close;
- }
- set .@cards,0;
- set .@slots,.@max_c;
- set .@c,1;
- while(.@c <= .@max_c) {
- if(getd(".@eq_c"+.@c+"["+.@id+"]") == 0) {
- set .@ca_m$,"";
- for ( set .@l,0; .@l < getarraysize(.@ca_list); set .@l,.@l + 1)
- set .@ca_m$,.@ca_m$ + "- "+getitemname(.@ca_list[.@l]) + " ("+.@ca_am[.@l]+")" + ( (.@ca_list[.@l+1])?":":"");
- mes .n$;
- mes "Slots left: "+.@slots;
- next;
- if(prompt(.@ca_m$) != 255) {
- setd(".@card"+@c),.@ca_list[@menu-1];
- if(.@ca_am[@menu-1] == 1) {
- deletearray .@ca_list[@menu-1],1;
- deletearray .@ca_am[@menu-1],1;
- } else setarray .@ca_am[@menu-1],.@ca_am[@menu-1] - 1;
- } else setd(".@card"+.@c),0;
- if(getd(".@card"+.@c) != 0) set .@cards,.@cards + 1;
- }
- set .@slots,.@slots - 1;
- set .@c,.@c + 1;
- }
- mes .n$;
- mes "You will recieve the following Item:";
- mes "Name: 1x +"+.@eq_ref[.@id]+" "+ getitemname(.@eq_list[.@id]) + " with these cards:";
- if(!.@cards) { // No new Cards inserted!
- mes "Error: No Cards inserted.";
- close;
- }
- if(.@card1) mes "Card 1: "+ getitemname(.@card1)+" ["+.@card1+"]";
- if(.@card2) mes "Card 2: "+ getitemname(.@card2)+" ["+.@card2+"]";
- if(.@card3) mes "Card 3: "+ getitemname(.@card3)+" ["+.@card3+"]";
- if(.@card4) mes "Card 4: "+ getitemname(.@card4)+" ["+.@card4+"]";
- if(.requ[0] > 0) {
- set .@cost,.requ[1]*.@cards;
- mes " ";
- mes "Therefore I require";
- mes .@cost + ( (.requ[0] > 500)?"x ":" ") + ( (.requ[0] == 1)?"Zeny":( (.requ[0] == 2)?"Cash Points":( (.requ[0] > 3)?getitemname(.requ[0]):"Custom Points")));
- mes "Proceed?";
- if(select("- Yes:- No") - 1) close;
- if(.requ[0] == 1 && Zeny < .@cost ) {
- mes "I'm sorry, but you don't have the required Zeny for inserting "+.@cards+" Cards.";
- mes "You'll need "+.@cost+" Zeny.";
- close;
- } else if(.requ[0] == 2 && #CASHPOINTS < .@cost) {
- mes "I'm sorry, but you don't have the required Cash Points for inserting "+.@cards+" Cards.";
- mes "You'll need "+.@cost+" Cash Points.";
- close;
- } else if(.requ[0] == 3 && getd(""+.requ_varn$) < .@cost) {
- mes "I'm sorry, but you don't have the required "+.requ_vard$+" for inserting "+.@cards+" Cards.";
- mes "You'll need "+.@cost+" "+.requ_vard$+".";
- close;
- } else if(.requ[0] > 500 && countitem(.requ[0]) < .@cost) {
- mes "I'm sorry, but you don't have the required "+getitemname(.requ[0])+" for inserting "+.@cards+" Cards.";
- mes "You'll need "+.@cost+" "+getitemname(.requ[0])+".";
- close;
- }
- }
- // If there are cards inserted already,
- // re-add them also else they will be deleted
- // and only the new card will be added.
- if(!.@card1 && .@eq_c1[.@id]) set .@card1,.@eq_c1[.@id];
- if(!.@card2 && .@eq_c2[.@id]) set .@card2,.@eq_c2[.@id];
- if(!.@card3 && .@eq_c3[.@id]) set .@card3,.@eq_c3[.@id];
- if(!.@card4 && .@eq_c4[.@id]) set .@card4,.@eq_c4[.@id];
- delitem2 .@eq_list[.@id],1,1,.@eq_ref[.@id],0,.@eq_c1[.@id],.@eq_c2[.@id],.@eq_c3[.@id],.@eq_c4[.@id];
- getitem2 .@eq_list[.@id],1,1,.@eq_ref[.@id],0,.@card1,.@card2,.@card3,.@card4;
- for ( set .@c,1; .@c <= .@max_c; set .@c,.@c+1)
- if(getd(".@card"+.@c)) delitem getd(".@card"+.@c),1;
- if(.requ[0] == 1) set Zeny,Zeny - .@cost;
- else if(.requ[0] == 2) set #CASHPOINTS,#CASHPOINTS - .@cost;
- else if(.requ[0] == 3) setd(""+.requ_varn$),getd(""+.requ_varn$) - .@cost;
- else if(.requ[0] > 500) delitem .requ[0],.requ[1];
- close;
- case 2:
- mes .n$;
- mes "I am able to insert cards in any equipment you want.";
- if(.requ[0] == 0) close;
- mes "The only thing I require is";
- mes .requ[1] + ( (.requ[0] > 500)?"x ":" ") + ( (.requ[0] == 1)?"Zeny":( (.requ[0] == 2)?"Cash Points":( (.requ[0] > 3)?getitemname(.requ[0]):.requ_vard$)));
- mes "for each card you inserted.";
- close;
- case 3:
- close;
- }
- OnInit:
- set .n$,"["+strnpcinfo(1)+"]";
- // ======== Requirement Settings: ============
- // = Format:
- // - .requ[0],<ID>,<Amount>;
- // = ID:
- // - 0 = Nothing/Disabled
- // - 1 = Zeny
- // - 2 = #CASHPOINTS
- // - 3 = Custom Variable, see below
- // - 501 and higher means Item ID
- // Amount should be obvious :D.
- setarray .requ[0],2,100; // Default: 2,100 = 100x Cash Points
- // Custom Points:
- set .requ_vard$,"Custom Points"; // Display Name
- set .requ_varn$,"custom_points"; // Variable Name
- end;
- }
Add Comment
Please, Sign In to add comment