viewing paste topic/4509-v vendor_control_2.1a.tx | Athena

Posted on the | Last edited on
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188
//===== Hercules Script ====================================
//= Vendor Control
//===== By: ================================================
//= Original by Emistry
//= Rewrite by AnnieRuru
//===== Current Version: ===================================
//= 2.1a
//===== 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
//==========================================================
 
prontera,156,178,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$ = "prontera"; // map
    setarray .@x, 150,153,156,159,162; // x coordinates
    setarray .@y, 175,172,169,166,163,160,157,154,151,148,145,142,139,136,133; // 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;
//  debugmes "Vendor NPC needed -> "+ .count;
    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.
prontera,0,0,4  duplicate(vend_slot)    #vend_slot0 4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot1 4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot2 4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot3 4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot4 4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot5 4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot6 4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot7 4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot8 4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot9 4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot10    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot11    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot12    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot13    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot14    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot15    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot16    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot17    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot18    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot19    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot20    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot21    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot22    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot23    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot24    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot25    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot26    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot27    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot28    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot29    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot30    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot31    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot32    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot33    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot34    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot35    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot36    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot37    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot38    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot39    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot40    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot41    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot42    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot43    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot44    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot45    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot46    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot47    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot48    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot49    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot50    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot51    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot52    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot53    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot54    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot55    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot56    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot57    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot58    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot59    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot60    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot61    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot62    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot63    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot64    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot65    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot66    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot67    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot68    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot69    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot70    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot71    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot72    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot73    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot74    4_BULLETIN_BOARD2
prontera,0,0,4  duplicate(vend_slot)    #vend_slot75    4_BULLETIN_BOARD2
 
Viewed 2033 times, submitted by AnnieRuru.