card_seller.txt 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. //===== rAthena Script =======================================
  2. //= Card Seller A-Z
  3. //===== Description: =========================================
  4. //= Sells all cards dropped by mobs, grouped alphabetically.
  5. //= MVP cards are excluded from the list.
  6. //=
  7. //= NOTE: Requires SQL item and mob databases.
  8. //===== Changelogs: ==========================================
  9. //= 1.0 First version [AnnieRuru]
  10. //= 1.1 Minor edits [Euphy]
  11. //= 1.2 Update for monster mode and enchants [Lemongrass]
  12. //============================================================
  13. prontera,155,177,5 script Card Seller 100,{
  14. .@menu$ = getvariableofnpc( .alphabet_menu$, "card_seller_creation" );
  15. if (.@menu$ == "") {
  16. mes "[Card Seller]";
  17. mes "I am sorry, it seems like something went wrong.";
  18. mes "I cannot find any cards in our database at the moment.";
  19. mes "Please contact a game master.";
  20. close;
  21. }
  22. mes "[Card Seller]";
  23. mes "Welcome!";
  24. mes "I can sell you any normal monster card in the game. Would you like to have a look?";
  25. next;
  26. .@s = select(.@menu$) -1;
  27. close2;
  28. callshop "card_mob#"+ getvariableofnpc( .alphabet$[.@s], "card_seller_creation" ), 1;
  29. end;
  30. }
  31. - script card_seller_creation -1,{
  32. end;
  33. OnInit:
  34. if (checkre(0)) {
  35. .@mob_db$ = "mob_db_re";
  36. .@item_db$ = "item_db_re";
  37. } else {
  38. .@mob_db$ = "mob_db";
  39. .@item_db$ = "item_db";
  40. }
  41. freeloop 1;
  42. .@total = query_sql( "SELECT DISTINCT LEFT( `name_japanese`, 1 ) AS alphabets FROM `"+ .@item_db$ +"` WHERE `type` = " + IT_CARD + " AND `id` IN ( SELECT DISTINCT `dropcardid` FROM `"+ .@mob_db$ +"` WHERE ~(`MODE`) & " + MD_MVP + " ) ORDER BY alphabets;", .@alphabet$ );
  43. for ( .@i = 0; .@i < .@total; .@i++ ) {
  44. .@nb = query_sql( "SELECT `"+ .@item_db$ +"`.`id` FROM `"+ .@item_db$ +"` WHERE `type` = " + IT_CARD + " AND LEFT( `name_japanese`, 1 ) = '"+ .@alphabet$[.@i] +"' AND `id` IN ( SELECT DISTINCT `dropcardid` FROM `"+ .@mob_db$ +"` WHERE ~(`MODE`) & " + MD_MVP + " ) ORDER BY `name_japanese` LIMIT 128;", .@id );
  45. if (.@nb > 0) {
  46. .alphabet$[.@size_alphabet++] = .@alphabet$[.@i];
  47. .alphabet_menu$ = .alphabet_menu$ + .@alphabet$[.@i] +" Cards:";
  48. npcshopdelitem "card_mob#"+ .@alphabet$[.@i], 501;
  49. for ( .@j = 0; .@j < .@nb; .@j++ ) {
  50. if (callfunc( "F_IsCharm", .@id[.@j] ) == true)// Skip enchants in case someone added them as card drop
  51. continue;
  52. npcshopadditem "card_mob#"+ .@alphabet$[.@i], .@id[.@j], 1000000;
  53. }
  54. }
  55. }
  56. freeloop 0;
  57. end;
  58. }
  59. - shop card_mob#A -1,501:1000
  60. - shop card_mob#B -1,501:1000
  61. - shop card_mob#C -1,501:1000
  62. - shop card_mob#D -1,501:1000
  63. - shop card_mob#E -1,501:1000
  64. - shop card_mob#F -1,501:1000
  65. - shop card_mob#G -1,501:1000
  66. - shop card_mob#H -1,501:1000
  67. - shop card_mob#I -1,501:1000
  68. - shop card_mob#J -1,501:1000
  69. - shop card_mob#K -1,501:1000
  70. - shop card_mob#L -1,501:1000
  71. - shop card_mob#M -1,501:1000
  72. - shop card_mob#N -1,501:1000
  73. - shop card_mob#O -1,501:1000
  74. - shop card_mob#P -1,501:1000
  75. - shop card_mob#Q -1,501:1000
  76. - shop card_mob#R -1,501:1000
  77. - shop card_mob#S -1,501:1000
  78. - shop card_mob#T -1,501:1000
  79. - shop card_mob#U -1,501:1000
  80. - shop card_mob#V -1,501:1000
  81. - shop card_mob#W -1,501:1000
  82. - shop card_mob#X -1,501:1000
  83. - shop card_mob#Y -1,501:1000
  84. - shop card_mob#Z -1,501:1000