Advertisement
Guest User

Untitled

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