Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Split into two files according to their functions and renamed them: > F_GetMobData = func_getmobdata.txt > F_Pages = func_page.txt << == |*| Instanced Loot System v1.0 [RE] - @Release |*| == >> << == |*| Armor Enchanter v1.0 [RE] - @Release |*| == >> - Pretty much a copy of the Costume Enchanter, but more features and better config << == |*| Unofficial Bio Lab Nightmare NPC's v1.0 [RE] - @Release |*| == >> - Missing official texts and correct warp coordinates << == |*| Hunting Grounds v1.0 [WIP] - @Modified |*| == >> - Added more config options regarding Level Range, Required Members for each Instance << == |*| Dungeon Quest Service v1.0 [RE] - @Modified |*| == >> - Very small typo << == |*| Card Compounder v1.1 [RE] - @Modified |*| == >> - Fixed an bug duo missing variable change from Script Optimization << == |*| Costume Enchanter v1.2 [REQ] - @Modified |*| == >> - Fixed an typo << == |*| General - @update |*| == >> - Headers.txt - Project_List.txt - Merged TOS.md with README.md and updated it a bit
220 lines (206 sloc)
8.54 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //===== 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$ | |
| // - Fixed an bug duo missing variable change from Script Optimization | |
| //===== 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 " "; | |
| 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; | |
| } |