Advertisement
footloose23

Untitled

Apr 14th, 2019
369
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.13 KB | None | 0 0
  1. //===== rAthena Script =====================================
  2. //= Vendor Control
  3. //===== By: ================================================
  4. //= Original by Emistry
  5. //= Rewrite by AnnieRuru
  6. //===== Current Version: ===================================
  7. //= 2.1r
  8. //===== Compatible With: ===================================
  9. //= rAthena 2019-2-10
  10. //===== Description: =======================================
  11. //= Vendors only vend on certain coordinate, looks tidy :P
  12. //===== Topic ==============================================
  13. //= https://rathena.org/board/topic/117737-error-vendinghelp/
  14. //===== Additional Comments: ===============================
  15. //= Revert back to use warp
  16. //==========================================================
  17.  
  18. prontera,156,178,4  script  Vending Helper  4_F_JPN2,{
  19.     mes "["+ strnpcinfo(NPC_NAME_VISIBLE) +"]";
  20.     if ( !getskilllv( "MC_VENDING" ) ) {
  21.         mes "You dont have ^0055FFVending Skill^000000.";
  22.         close;
  23.     }
  24.     mes "Select a slot and start vending.";
  25.     while ( true ) {
  26.         .@menu$ = .@currentpage ? "Previous Page:" : ":";
  27.         .@pageindex = .@currentpage * .slotperpage;
  28.         for ( .@i = 0; .@i < .slotperpage && .@pageindex + .@i < .count; ++.@i ) {
  29.             if ( !getmapxy( .@map$, .@x, .@y, UNITTYPE_NPC, "#vend_slot"+( .@pageindex + .@i ) ) && getareausers( .map$, .@x, .@y, .@x, .@y ) )
  30.                 .@menu$ += "Slot No."+( .@pageindex + .@i +1 )+" - ^FF0000[Unavailable]^000000:";
  31.             else
  32.                 .@menu$ += "Slot No."+( .@pageindex + .@i +1 )+" - ^00CC00[Available]^000000:";
  33.         }
  34.         if ( .@currentpage != .maxpage )
  35.             .@menu$ = .@menu$ + "Next Page";
  36.         .@pick = select( .@menu$ ) -1;
  37.         if ( !.@pick )
  38.             { --.@currentpage; }
  39.         else if ( .@pick == .slotperpage +1 )
  40.             { ++.@currentpage; }
  41.         else
  42.             break;
  43.     }
  44.     .@s =  .@currentpage * .slotperpage + .@pick -1 ;
  45.     if ( !getmapxy( .@map$, .@x, .@y, UNITTYPE_NPC, "#vend_slot"+ .@s ) && getareausers( .map$, .@x, .@y, .@x, .@y ) ) {
  46.         mes " ";
  47.         mes "This slot is ^FF0000[UnAvailable]^000000.";
  48.         close;
  49.     }
  50.     warp .@map$, .@x, .@y;
  51.     hideonnpc "#vend_slot"+ .@s;
  52.     donpcevent "#vend_slot"+ .@s +"::OnCheckAvailable";
  53.     end;
  54. OnInit:
  55.     setbattleflag "min_npc_vendchat_distance", 0;
  56. //  ======================= Configuration HERE =============================
  57.     .map$ = "prontera"; // map
  58.     setarray .@x, 150,153,156,159,162; // x coordinates
  59.     setarray .@y, 175,172,169,166,163,160,157,154,151,148,145,142,139,136,133; // y coordinates
  60.     .slotperpage = 20; // display how many slots per page (prevent making the menu too long)
  61.  
  62.     freeloop true;
  63.     setcell .map$, 0,0, 500,500, cell_novending, true;
  64.     .@x_size = getarraysize( .@x );
  65.     .@y_size = getarraysize( .@y );
  66.     for ( .@i = 0; .@i < .@y_size; ++.@i ) {
  67.         for ( .@j = 0; .@j < .@x_size; ++.@j ) {
  68.             if ( checkcell( .map$, .@x[.@j], .@y[.@i], cell_chkpass ) ) {
  69.                 movenpc "#vend_slot"+ .count, .@x[.@j], .@y[.@i];
  70.                 setcell .map$, .@x[.@j], .@y[.@i], .@x[.@j], .@y[.@i], cell_novending, false;
  71.                 if ( getareausers( .map$, .@x[.@j], .@y[.@i], .@x[.@j], .@y[.@i] ) ) {
  72.                     hideonnpc "#vend_slot"+ .count;
  73.                     donpcevent "#vend_slot"+ .count +"::OnCheckAvailable";
  74.                 }
  75.                 ++.count;
  76.             }
  77.         }
  78.     }
  79.     .maxpage = .count / .slotperpage + ( .count % .slotperpage > 0 ) -1;
  80. //  debugmes "Vendor NPC needed -> "+ .count;
  81.     end;
  82. }
  83.  
  84. -   script  vend_slot   FAKE_NPC,{
  85.     mes "[Vending Slot]";
  86.     if ( !getskilllv( "MC_VENDING" ) ) {
  87.         mes "You dont have ^0055FFVending Skill^000000.";
  88.         close;
  89.     }
  90.     getmapxy .@map$, .@x, .@y, UNITTYPE_NPC;
  91.     if ( getareausers( .@map$, .@x, .@y, .@x, .@y ) ) {
  92.         mes "Someone already using this slot";
  93.         close;
  94.     }
  95. //  unitwalk getcharid(3), .@x, .@y;
  96.     warp strcharinfo(3), .@x, .@y;
  97.     mes "Spot : ^777777Available^000000";
  98.     mes "^0055FF[ Vending Area Rules ]^000000";
  99.     mes "^FF0000 ~ Use proper Shop Name.^000000";
  100.     mes "^777777Player who failed to follow these rules will be punished.^000000";
  101.     hideonnpc strnpcinfo(0);
  102.     donpcevent strnpcinfo(0)+"::OnCheckAvailable";
  103.     close;
  104. OnCheckAvailable:
  105.     sleep 10000;
  106.     getmapxy .@map$, .@x, .@y, UNITTYPE_NPC;
  107.     while ( getareausers( .@map$, .@x, .@y, .@x, .@y ) )
  108.         sleep 10000;
  109.     hideoffnpc strnpcinfo(0);
  110.     end;
  111. }
  112.  
  113. // Add more if needed.
  114. prontera,0,0,4  duplicate(vend_slot)    #vend_slot0 4_BULLETIN_BOARD2
  115. prontera,0,0,4  duplicate(vend_slot)    #vend_slot1 4_BULLETIN_BOARD2
  116. prontera,0,0,4  duplicate(vend_slot)    #vend_slot2 4_BULLETIN_BOARD2
  117. prontera,0,0,4  duplicate(vend_slot)    #vend_slot3 4_BULLETIN_BOARD2
  118. prontera,0,0,4  duplicate(vend_slot)    #vend_slot4 4_BULLETIN_BOARD2
  119. prontera,0,0,4  duplicate(vend_slot)    #vend_slot5 4_BULLETIN_BOARD2
  120. prontera,0,0,4  duplicate(vend_slot)    #vend_slot6 4_BULLETIN_BOARD2
  121. prontera,0,0,4  duplicate(vend_slot)    #vend_slot7 4_BULLETIN_BOARD2
  122. prontera,0,0,4  duplicate(vend_slot)    #vend_slot8 4_BULLETIN_BOARD2
  123. prontera,0,0,4  duplicate(vend_slot)    #vend_slot9 4_BULLETIN_BOARD2
  124. prontera,0,0,4  duplicate(vend_slot)    #vend_slot10    4_BULLETIN_BOARD2
  125. prontera,0,0,4  duplicate(vend_slot)    #vend_slot11    4_BULLETIN_BOARD2
  126. prontera,0,0,4  duplicate(vend_slot)    #vend_slot12    4_BULLETIN_BOARD2
  127. prontera,0,0,4  duplicate(vend_slot)    #vend_slot13    4_BULLETIN_BOARD2
  128. prontera,0,0,4  duplicate(vend_slot)    #vend_slot14    4_BULLETIN_BOARD2
  129. prontera,0,0,4  duplicate(vend_slot)    #vend_slot15    4_BULLETIN_BOARD2
  130. prontera,0,0,4  duplicate(vend_slot)    #vend_slot16    4_BULLETIN_BOARD2
  131. prontera,0,0,4  duplicate(vend_slot)    #vend_slot17    4_BULLETIN_BOARD2
  132. prontera,0,0,4  duplicate(vend_slot)    #vend_slot18    4_BULLETIN_BOARD2
  133. prontera,0,0,4  duplicate(vend_slot)    #vend_slot19    4_BULLETIN_BOARD2
  134. prontera,0,0,4  duplicate(vend_slot)    #vend_slot20    4_BULLETIN_BOARD2
  135. prontera,0,0,4  duplicate(vend_slot)    #vend_slot21    4_BULLETIN_BOARD2
  136. prontera,0,0,4  duplicate(vend_slot)    #vend_slot22    4_BULLETIN_BOARD2
  137. prontera,0,0,4  duplicate(vend_slot)    #vend_slot23    4_BULLETIN_BOARD2
  138. prontera,0,0,4  duplicate(vend_slot)    #vend_slot24    4_BULLETIN_BOARD2
  139. prontera,0,0,4  duplicate(vend_slot)    #vend_slot25    4_BULLETIN_BOARD2
  140. prontera,0,0,4  duplicate(vend_slot)    #vend_slot26    4_BULLETIN_BOARD2
  141. prontera,0,0,4  duplicate(vend_slot)    #vend_slot27    4_BULLETIN_BOARD2
  142. prontera,0,0,4  duplicate(vend_slot)    #vend_slot28    4_BULLETIN_BOARD2
  143. prontera,0,0,4  duplicate(vend_slot)    #vend_slot29    4_BULLETIN_BOARD2
  144. prontera,0,0,4  duplicate(vend_slot)    #vend_slot30    4_BULLETIN_BOARD2
  145. prontera,0,0,4  duplicate(vend_slot)    #vend_slot31    4_BULLETIN_BOARD2
  146. prontera,0,0,4  duplicate(vend_slot)    #vend_slot32    4_BULLETIN_BOARD2
  147. prontera,0,0,4  duplicate(vend_slot)    #vend_slot33    4_BULLETIN_BOARD2
  148. prontera,0,0,4  duplicate(vend_slot)    #vend_slot34    4_BULLETIN_BOARD2
  149. prontera,0,0,4  duplicate(vend_slot)    #vend_slot35    4_BULLETIN_BOARD2
  150. prontera,0,0,4  duplicate(vend_slot)    #vend_slot36    4_BULLETIN_BOARD2
  151. prontera,0,0,4  duplicate(vend_slot)    #vend_slot37    4_BULLETIN_BOARD2
  152. prontera,0,0,4  duplicate(vend_slot)    #vend_slot38    4_BULLETIN_BOARD2
  153. prontera,0,0,4  duplicate(vend_slot)    #vend_slot39    4_BULLETIN_BOARD2
  154. prontera,0,0,4  duplicate(vend_slot)    #vend_slot40    4_BULLETIN_BOARD2
  155. prontera,0,0,4  duplicate(vend_slot)    #vend_slot41    4_BULLETIN_BOARD2
  156. prontera,0,0,4  duplicate(vend_slot)    #vend_slot42    4_BULLETIN_BOARD2
  157. prontera,0,0,4  duplicate(vend_slot)    #vend_slot43    4_BULLETIN_BOARD2
  158. prontera,0,0,4  duplicate(vend_slot)    #vend_slot44    4_BULLETIN_BOARD2
  159. prontera,0,0,4  duplicate(vend_slot)    #vend_slot45    4_BULLETIN_BOARD2
  160. prontera,0,0,4  duplicate(vend_slot)    #vend_slot46    4_BULLETIN_BOARD2
  161. prontera,0,0,4  duplicate(vend_slot)    #vend_slot47    4_BULLETIN_BOARD2
  162. prontera,0,0,4  duplicate(vend_slot)    #vend_slot48    4_BULLETIN_BOARD2
  163. prontera,0,0,4  duplicate(vend_slot)    #vend_slot49    4_BULLETIN_BOARD2
  164. prontera,0,0,4  duplicate(vend_slot)    #vend_slot50    4_BULLETIN_BOARD2
  165. prontera,0,0,4  duplicate(vend_slot)    #vend_slot51    4_BULLETIN_BOARD2
  166. prontera,0,0,4  duplicate(vend_slot)    #vend_slot52    4_BULLETIN_BOARD2
  167. prontera,0,0,4  duplicate(vend_slot)    #vend_slot53    4_BULLETIN_BOARD2
  168. prontera,0,0,4  duplicate(vend_slot)    #vend_slot54    4_BULLETIN_BOARD2
  169. prontera,0,0,4  duplicate(vend_slot)    #vend_slot55    4_BULLETIN_BOARD2
  170. prontera,0,0,4  duplicate(vend_slot)    #vend_slot56    4_BULLETIN_BOARD2
  171. prontera,0,0,4  duplicate(vend_slot)    #vend_slot57    4_BULLETIN_BOARD2
  172. prontera,0,0,4  duplicate(vend_slot)    #vend_slot58    4_BULLETIN_BOARD2
  173. prontera,0,0,4  duplicate(vend_slot)    #vend_slot59    4_BULLETIN_BOARD2
  174. prontera,0,0,4  duplicate(vend_slot)    #vend_slot60    4_BULLETIN_BOARD2
  175. prontera,0,0,4  duplicate(vend_slot)    #vend_slot61    4_BULLETIN_BOARD2
  176. prontera,0,0,4  duplicate(vend_slot)    #vend_slot62    4_BULLETIN_BOARD2
  177. prontera,0,0,4  duplicate(vend_slot)    #vend_slot63    4_BULLETIN_BOARD2
  178. prontera,0,0,4  duplicate(vend_slot)    #vend_slot64    4_BULLETIN_BOARD2
  179. prontera,0,0,4  duplicate(vend_slot)    #vend_slot65    4_BULLETIN_BOARD2
  180. prontera,0,0,4  duplicate(vend_slot)    #vend_slot66    4_BULLETIN_BOARD2
  181. prontera,0,0,4  duplicate(vend_slot)    #vend_slot67    4_BULLETIN_BOARD2
  182. prontera,0,0,4  duplicate(vend_slot)    #vend_slot68    4_BULLETIN_BOARD2
  183. prontera,0,0,4  duplicate(vend_slot)    #vend_slot69    4_BULLETIN_BOARD2
  184. prontera,0,0,4  duplicate(vend_slot)    #vend_slot70    4_BULLETIN_BOARD2
  185. prontera,0,0,4  duplicate(vend_slot)    #vend_slot71    4_BULLETIN_BOARD2
  186. prontera,0,0,4  duplicate(vend_slot)    #vend_slot72    4_BULLETIN_BOARD2
  187. prontera,0,0,4  duplicate(vend_slot)    #vend_slot73    4_BULLETIN_BOARD2
  188. prontera,0,0,4  duplicate(vend_slot)    #vend_slot74    4_BULLETIN_BOARD2
  189. prontera,0,0,4  duplicate(vend_slot)    #vend_slot75    4_BULLETIN_BOARD2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement