//===== Hercules Script ==================================== //= Vendor Control //===== By: ================================================ //= Original by Emistry //= Rewrite by AnnieRuru //===== Current Version: =================================== //= 2.1 //===== Compatible With: =================================== //= Hercules 2018-06-02 //===== Description: ======================================= //= Vendors only vend on certain coordinate, looks tidy :P //===== Topic ============================================== //= http://herc.ws/board/topic/4509-vendor-control-rewrite/ //===== Additional Comments: =============================== //= Revert back to use unitwalk //========================================================== mall,99,95,4 script Vending Helper 4_F_JPN2,{ mes "["+ strnpcinfo(NPC_NAME_VISIBLE) +"]"; if ( !getskilllv( "MC_VENDING" ) ) { mes "You dont have ^0055FFVending Skill^000000."; close; } mes "Select a slot and start vending."; while ( true ) { .@menu$ = .@currentpage ? "Previous Page:" : ":"; .@pageindex = .@currentpage * .slotperpage; for ( .@i = 0; .@i < .slotperpage && .@pageindex + .@i < .count; ++.@i ) { if ( !getmapxy( .@map$, .@x, .@y, UNITTYPE_NPC, "#vend_slot"+( .@pageindex + .@i ) ) && getareausers( .map$, .@x, .@y, .@x, .@y ) ) .@menu$ += "Slot No."+( .@pageindex + .@i +1 )+" - ^FF0000[Unavailable]^000000:"; else .@menu$ += "Slot No."+( .@pageindex + .@i +1 )+" - ^00CC00[Available]^000000:"; } if ( .@currentpage != .maxpage ) .@menu$ = .@menu$ + "Next Page"; .@pick = select( .@menu$ ) -1; if ( !.@pick ) { --.@currentpage; } else if ( .@pick == .slotperpage +1 ) { ++.@currentpage; } else break; } .@s = .@currentpage * .slotperpage + .@pick -1 ; if ( !getmapxy( .@map$, .@x, .@y, UNITTYPE_NPC, "#vend_slot"+ .@s ) && getareausers( .map$, .@x, .@y, .@x, .@y ) ) { mes " "; mes "This slot is ^FF0000[UnAvailable]^000000."; close; } warp .@map$, .@x, .@y; hideonnpc "#vend_slot"+ .@s; donpcevent "#vend_slot"+ .@s +"::OnCheckAvailable"; end; OnInit: // ======================= Configuration HERE ============================= .map$ = "mall"; // map setarray .@x, 65,68,71,74,77,80,83,86,89,110,113,116,119,122,125,128,131,134; // x coordinates setarray .@y, 106,104,102,100,98,96,94; // y coordinates .slotperpage = 20; // display how many slots per page (prevent making the menu too long) freeloop true; setcell .map$, 0,0, 500,500, cell_novending, true; .@x_size = getarraysize( .@x ); .@y_size = getarraysize( .@y ); for ( .@i = 0; .@i < .@y_size; ++.@i ) { for ( .@j = 0; .@j < .@x_size; ++.@j ) { if ( checkcell( .map$, .@x[.@j], .@y[.@i], cell_chkpass ) ) { movenpc "#vend_slot"+ .count, .@x[.@j], .@y[.@i]; setcell .map$, .@x[.@j], .@y[.@i], .@x[.@j], .@y[.@i], cell_novending, false; if ( getareausers( .map$, .@x[.@j], .@y[.@i], .@x[.@j], .@y[.@i] ) ) { hideonnpc "#vend_slot"+ .count; donpcevent "#vend_slot"+ .count +"::OnCheckAvailable"; } ++.count; } } } .maxpage = .count / .slotperpage + ( .count % .slotperpage > 0 ) -1; end; } - script vend_slot FAKE_NPC,{ mes "[Vending Slot]"; if ( !getskilllv( "MC_VENDING" ) ) { mes "You dont have ^0055FFVending Skill^000000."; close; } getmapxy .@map$, .@x, .@y, UNITTYPE_NPC; if ( getareausers( .@map$, .@x, .@y, .@x, .@y ) ) { mes "Someone already using this slot"; close; } unitwalk getcharid(3), .@x, .@y; mes "Spot : ^777777Available^000000"; mes "^0055FF[ Vending Area Rules ]^000000"; mes "^FF0000 ~ Use proper Shop Name.^000000"; mes "^777777Player who failed to follow these rules will be punished.^000000"; hideonnpc strnpcinfo(NPC_NAME); donpcevent strnpcinfo(NPC_NAME)+"::OnCheckAvailable"; close; OnCheckAvailable: sleep 10000; getmapxy .@map$, .@x, .@y, UNITTYPE_NPC; while ( getareausers( .@map$, .@x, .@y, .@x, .@y ) ) sleep 10000; hideoffnpc strnpcinfo(NPC_NAME); end; } // Add more if needed. mall,1,1,4 duplicate(vend_slot) #vend_slot1 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot2 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot3 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot4 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot5 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot6 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot7 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot8 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot9 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot10 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot11 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot12 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot13 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot14 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot15 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot16 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot17 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot18 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot19 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot20 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot21 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot22 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot23 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot24 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot25 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot26 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot27 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot28 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot29 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot30 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot31 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot32 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot33 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot34 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot35 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot36 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot37 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot38 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot39 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot40 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot41 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot42 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot43 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot44 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot45 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot46 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot47 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot48 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot49 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot50 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot51 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot52 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot53 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot54 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot55 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot56 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot57 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot58 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot59 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot60 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot61 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot62 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot63 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot64 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot65 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot66 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot67 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot68 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot69 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot70 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot71 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot72 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot73 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot74 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot75 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot76 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot77 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot78 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot79 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot80 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot81 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot82 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot83 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot84 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot85 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot86 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot87 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot88 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot89 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot90 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot91 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot92 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot93 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot94 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot95 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot96 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot97 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot98 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot99 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot100 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot101 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot102 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot103 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot104 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot105 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot106 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot107 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot108 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot109 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot110 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot111 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot112 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot113 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot114 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot115 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot116 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot117 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot118 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot119 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot120 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot121 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot122 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot123 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot124 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot125 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot126 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot127 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot128 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot129 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot130 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot131 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot132 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot133 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot134 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot135 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot136 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot137 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot139 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot140 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot141 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot142 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot143 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot144 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot145 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot146 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot147 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot148 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot149 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot150 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot151 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot152 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot153 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot154 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot155 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot156 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot157 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot158 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot159 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot160 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot161 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot162 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot163 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot164 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot165 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot166 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot167 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot168 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot169 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot170 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot171 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot172 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot173 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot174 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot175 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot176 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot177 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot178 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot179 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot180 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot181 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot182 4_BOARD3 mall,1,1,4 duplicate(vend_slot) #vend_slot183 4_BOARD3