Jump to content

hadiesyafiq

Members
  • Content Count

    156
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by hadiesyafiq


  1. hai all master...can you all help me build new script?

    the script like this...

    room like private room 

    quest rent 1m zeny

    only party with 5 person at lest can rent the room

    room function is will summon any mvp in random

    after mvp die room will summon another mvp in random for 5 times...after that all player will warp to prontera and need to wait for 4 hours to rent again..

    have 4 room available that mean after 1 party done other party can join...

    mvp drop like normal drop but room will give reward for who finish the quest..

    if player die..they can rejoin the quest until the quest finish....

     

    can someone teach me...because i am so 'poring' in script

    thanks in advance


  2. Hi all master..can someone teach me make new NPC use this script?

    here the script

    Quote

    -    script    vip    -1,{
    //*********************************************************************
    //    VIP System for eAthena servers Version 3.0
    //*********************************************************************
    //    It allows you to boost experience and drop rate for players who donate
    //    for a specified amount of days.
    //    It makes use of account's GM Levels to specify the account type,
    //    by default values are these:
    //        - Account Level 0 = Non VIP Account
    //        - Account Level 1 = VIP Silver Account
    //        - Account Level 2 = VIP Gold Account
    //        - Account Level 3 = VIP Platinum Account
    //    all of them, of course, customizable ;).
    // ¡Therefore, you can also set =atcommands= for every account level in
    // [yourserver]/conf/atcommand_athena.conf ! Isn't that great?! :D
    //    In other words, VIP players can have access to more @commands than
    //    normal users if you want. This will add more value to the service.
    //
    //    Add, List, Modify and Remove VIP accounts via whisper to this NPC.
    //    Manage VIP accounts in-game! Just whisper any text to the npc "vip"
    //    to access the VIP management menu.
    //
    //    This script requires some database modifications for it to work,
    //    check them at the original post where I posted this script.
    //    URI:    
    //
    //    Created by: Victor H. Olvera (VicThor)
    //    If you like this, please donate to paypal: [email protected]
    //    I'd really like to make more scripts like this, so help if you can!
    //
    //    If you want any special modification or adaptation of this script,
    //    please! feel free to e-mail me at [email protected] I'm $ure I can
    //    provide you with something according to your need$ :)
    //¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

    // Actions and checks when player logs in about his/her account type status.
    OnPCLoginEvent:
        // Auto Join Main Channel
        atcommand "@join #main";
        // Obtain account data
        set .@getAccountType$,query_sql("SELECT `account_type` FROM login WHERE `account_id` = "+getcharid(3)+";",@accountType$);

        // First of all deACTIVEte all VIP benefits
        //sc_end sc_expboost;    
        //sc_end sc_itemboost;
        
        // If account type is PLATINUM
        if (@accountType$ == "PLATINUM") {
            set .@getVipStatus,query_sql("SELECT `status` FROM `vip_platinum` WHERE `account_id` = "+getcharid(3)+";",@vipStatus$); // Get account type status
            set .@getExpirationDate$,query_sql("SELECT DATE_FORMAT(`end_date`, '%Y %m %d') FROM vip_platinum WHERE `account_id` = "+getcharid(3)+";",@expirationDate$);    // Get expiration date
            if (gettimestr("%Y %m %d",21) >= @expirationDate$) // If current date is higher than expiration date...
            {
                //    terminateVip function on line 430, removes player VIP entry from database table "vip_platinum"
                callsub terminateVip,"vip_platinum",getcharid(3); goto L_displayInfo;
            }
            //    If expiration date has not arrived yet, ACTIVEte VIP benefits.
            else
            {
                sc_end SC_CASH_PLUSEXP;
                sc_end SC_CASH_RECEIVEITEM;
                sc_start SC_CASH_PLUSEXP,1000*60*60*24,.VIPs_PlatinumExpRate;
                sc_start SC_CASH_RECEIVEITEM,1000*60*60*24,.VIPs_PlatinumItemRate; goto L_displayInfo;
            }
            
        }
        
        if (@accountType$ == "GOLD") {
            set .@getVipStatus,query_sql("SELECT `status` FROM `vip_gold` WHERE `account_id` = "+getcharid(3)+";",@vipStatus$); // Obtener el estado de la cuenta
            set .@getExpirationDate$,query_sql("SELECT DATE_FORMAT(`end_date`, '%Y %m %d') FROM vip_gold WHERE `account_id` = "+getcharid(3)+";",@expirationDate$);    // Obtener Fecha de expiración
            if (gettimestr("%Y %m %d",21) >= @expirationDate$) // Si la fecha de HOY es mayor que la fecha de expiración...
            {
                //    terminateVip function on line 430, removes player VIP entry from database table "vip_gold"
                callsub terminateVip,"vip_gold",getcharid(3); goto L_displayInfo;
            }
            //    If expiration date has not arrived yet, ACTIVEte VIP benefits.
            else
            {
                sc_end SC_CASH_PLUSEXP;
                sc_end SC_CASH_RECEIVEITEM;
                sc_start SC_CASH_PLUSEXP,1000*60*60*24,.VIPs_GoldExpRate;
                sc_start SC_CASH_RECEIVEITEM,1000*60*60*24,.VIPs_GoldItemRate; goto L_displayInfo;
            }
            
        }
        
        if (@accountType$ == "SILVER") {
            set .@getVipStatus,query_sql("SELECT `status` FROM `vip_silver` WHERE `account_id` = "+getcharid(3)+";",@vipStatus$); // Obtener el estado de la cuenta
            set .@getExpirationDate$,query_sql("SELECT DATE_FORMAT(`end_date`, '%Y %m %d') FROM vip_silver WHERE `account_id` = "+getcharid(3)+";",@expirationDate$);    // Obtener Fecha de expiración
            if (gettimestr("%Y %m %d",21) >= @expirationDate$) // Si la fecha de HOY es mayor que la fecha de expiración...
            {
                //    terminateVip function on line 430, removes player VIP entry from database table "vip_silver"
                callsub terminateVip,"vip_silver",getcharid(3),getcharid(0); goto L_displayInfo;
            }
            //    If expiration date has not arrived yet, ACTIVEte VIP benefits.
            else
            {
                sc_end SC_CASH_PLUSEXP;
                sc_end SC_CASH_RECEIVEITEM;
                sc_start SC_CASH_PLUSEXP,1000*60*60*24,.VIPs_SilverExpRate;
                sc_start SC_CASH_RECEIVEITEM,1000*60*60*24,.VIPs_SilverItemRate; goto L_displayInfo;
            }

        }
        
        // If account type is normal, just display account type information.
        if (@accountType$ == "NORMAL") {
            set .@getVipStatus,query_sql("SELECT `status` FROM `vip_silver` WHERE `account_id` = "+getcharid(3)+";",@vipStatus$); // Obtener el estado de la cuenta
            set .@getExpirationDate$,query_sql("SELECT DATE_FORMAT(`end_date`, '%Y %M %d') FROM vip_silver WHERE `account_id` = "+getcharid(3)+";",@expirationDate$);    // Obtener Fecha de expiración
            goto L_displayInfo;
        }

    // Displays account type status on login on chat window.
    OnAtcommand:
    L_displayInfo:
        dispbottom "----------------------------------------------------------------------";
        dispbottom "Account type:         "+@accountType$;
        dispbottom "Status:                     "+@vipStatus$;
        dispbottom "Expiration date: "+@expirationDate$;
        dispbottom "----------------------------------------------------------------------";
        end;
        
    OnWhisperGlobal:
        if ( getgmlevel() < 99 ) end;
        
    On_gm:
        set .@npcName$,"[VIP System v3.0]";
        
        mes .@npcName$;
        mes "Welcome, "+strcharinfo(0)+"!";
        mes "What can I do for you today?";
        next;
        switch(select("VIP Silver Menu:VIP Gold Menu:VIP Platinum Menu:Quit"))
        {
            case 1:    // VIP Silver
                next;
                mes .@npcName$;
                mes "[VIP SILVER]";
                switch(select("Add/Extend Account:Delete Account:List Accounts:Back"))
                {
                    case 1:    // Add/Extend
                        mes "Type the Account Name";
                        mes "you wish to add.";
                        input .@accountName$;
                        next;
                        mes .@npcName$;
                        mes "[VIP SILVER]";
                        mes "Type the number of days you";
                        mes "wish to add to the account's VIP";
                        mes "status.";
                        next;
                        mes .@npcName$;
                        mes "[VIP SILVER]";
                        input .@silverDays;
                        // Fetch account's ID using the name of the account previously typed.
                        set .@getAccountId,query_sql("SELECT `account_id`FROM login WHERE `userid` = '"+.@accountName$+"';",.@accountId);
                        mes "Identifying account: "+.@accountName$+".";
                        sleep2 rand(100,2000); // Looks like it's working on something :P
                        if (!.@accountId)    // Let's verify if the entered account exists or GM is just high...
                        {
                            mes "ERROR: Couldn't find account.";
                            mes "Verify if you didn't make a typo.";
                            close;
                        }
                        else
                        {     // Now lets check if the account is already 'vip_silver'
                            set .@getSilverAccount,query_sql("SELECT `account_id` FROM vip_silver WHERE `account_id` = "+.@accountId+";",.@silverAccountId);
                            set .@getGoldAccount,query_sql("SELECT `account_id` FROM vip_gold WHERE `account_id` = "+.@accountId+";",.@goldAccountId);
                            set .@getPlatinumAccount,query_sql("SELECT `account_id` FROM vip_platinum WHERE `account_id` = "+.@accountId+";",.@platinumAccountId);
                            if (.@silverAccountId == .@accountId) // If the account is already VIP we will update instead of inserting a new entry.
                            {
                                mes "Account ID: "+.@silverAccountId+".";
                                sleep2 rand(100,850);
                                query_sql("UPDATE vip_silver SET end_date = DATE_ADD(end_date, INTERVAL "+.@silverDays+" DAY) WHERE account_id = "+.@silverAccountId+";");
                                query_sql("UPDATE vip_silver SET `status` = 'ACTIVE' WHERE account_id = "+.@silverAccountId+";");
                                query_sql("UPDATE login SET `account_type` = 'SILVER' WHERE account_id = "+.@silverAccountId+";");
                                mes "Account "+.@silverAccountId+" updated";
                                mes "successfuly!";
                                close;
                            }
                            else if (.@goldAccountId == .@accountId) {    // if Gold Account
                                next;
                                mes "Account ID: "+.@goldAccountId+".";
                                mes "This account is already in the Gold account, delete first if you're going to downgrade him..";
                                close;
                            }
                            else if (.@platinumAccountId == .@accountId) {    // if Platinum Account
                                next;
                                mes "Account ID: "+.@accountId+".";
                                mes "This account is already in the Premium account, delete first if you're going to downgrade him..";
                                close;
                            }
                            else    // If the account is not already a VIP Silver one, add a new entry.
                            {
                                mes "Account ID: "+.@accountId+".";
                                sleep2 rand(100,850);
                                query_sql("INSERT INTO vip_silver (`account_id`,`account_name`,`start_date`,`end_date`,`status`) VALUES ("+.@accountId+",'"+.@accountName$+"','"+gettimestr("%Y-%m-%d",21)+"','"+gettimestr("%Y-%m-%d",21)+"','ACTIVE');");
                                sleep2 100;
                                query_sql("UPDATE vip_silver SET end_date = DATE_ADD(start_date, INTERVAL "+.@silverDays+" DAY) WHERE account_id = "+.@accountId+";");
                                query_sql("UPDATE `login` SET `group_id` = "+.VIPs_SilverAccLevel+" WHERE `account_id` = "+.@accountId+";");
                                query_sql("UPDATE login SET `account_type` = 'SILVER' WHERE account_id = "+.@accountId+";");
                                mes "Account "+.@accountId+" added";
                                mes "successfuly!";
                                close;
                            }
                        }
                        close;
                    case 2:    // Delete
                        set .@getSilverList_1$,query_sql("SELECT account_name FROM vip_silver LIMIT 0,127;", .@silverList_1$); // query_sql can only display the first 128 lines of a table. This is so sad :(
                        if ( getarraysize(.@silverList_1$) == 0 )
                        {
                            mes "There are currently no VIP";
                            mes "Silver accounts.";
                            close;
                        }
                        else
                        {
                            mes "Select the account you wish ";
                            mes "to remove from VIP system.";
                            
                            set .@j$, "1. "+ .@silverList_1$;
                            for (set .@i,1; .@i < getarraysize(.@silverList_1$); set .@i, .@i + 1 )
                                set .@j$, .@j$ +":"+ (.@i+1) +". "+ .@silverList_1$[.@i];
                            set .@j$, .@j$ +":Cancel";
                            next;
                            mes .@npcName$;
                            mes "[VIP SILVER]";
                            set .@menu, select(.@j$) -1;
                            if ( .@menu == getarraysize(.@silverList_1$) ) { next; goto On_gm; }
                            mes "Are you sure you want to remove the account ";
                            mes .@silverList_1$[.@menu] +" ?";
                            if ( select( "Yes:No" ) == 2 ) { next; goto On_gm; }
                            query_sql "SELECT `account_id` FROM `login` WHERE `userid` = '"+.@silverList_1$[.@menu]+"'",.@accountId;
                            query_sql ("UPDATE `login` SET `group_id` = 0 WHERE `userid` = '"+.@silverList_1$[.@menu]+"';");
                            query_sql ("DELETE FROM vip_silver WHERE account_name = '"+.@silverList_1$[.@menu]+"';");
                            query_sql("DELETE FROM `sc_data` WHERE account_id = '"+.@accountId+"' && type = '"+258+"';"); // Delete Status for VIP
                            query_sql("DELETE FROM `sc_data` WHERE account_id = '"+.@accountId+"' && type = '"+259+"';"); // Delete Status for VIP
                            query_sql("ALTER TABLE vip_silver AUTO_INCREMENT = 1;");
                            query_sql("UPDATE `login` SET `account_type` = 'NORMAL' WHERE `userid` = '"+.@silverList_1$[.@menu]+"';");
                            mes "VIP Silver account successfuly deleted!.";
                            close;
                        }
                        close;
                        
                    case 3:    // List
                        mes "VIP Silver accounts list:";
                        // List up to 127 vip accounts
                        set .@getSilverList_1$,query_sql("SELECT account_name FROM vip_silver LIMIT 0, 127;", .@silverList_1$);
                        for (set .@i,0; .@i < getarraysize(.@silverList_1$); set .@i, .@i + 1)
                            mes (.@i+1)+". "+.@silverList_1$[.@i]; // You may want to add a next; command and a new LIMIT 128,255 sentence, in case you need to store and display more than 128 VIP accounts.
                        close;
                    case 4:    // Back
                        goto On_gm;
                }
            
            case 2: // Gold Menu
                next;
                mes .@npcName$;
                mes "[VIP GOLD]";
                switch(select("Add/Extend Account:Delete Account:List Accounts:Back"))
                {
                    case 1:    // Add
                        mes "Type the Account Name";
                        mes "you wish to add.";
                        input .@accountName$;
                        next;
                        mes .@npcName$;
                        mes "[VIP GOLD]";
                        mes "Enter the amount of days you";
                        mes "want to add to this account";
                        mes "status.";
                        next;
                        mes .@npcName$;
                        mes "[VIP GOLD]";
                        input .@goldDays;
                        // Fetch account's ID using the name of the account previously typed.
                        set .@getAccountId,query_sql("SELECT `account_id`FROM login WHERE `userid` = '"+.@accountName$+"';",.@accountId);
                        mes "Identifying account: "+.@accountName$+".";
                        sleep2 rand(100,2000);
                        if (!.@accountId)    // Checks if account exists.
                        {
                            mes "ERROR: Couldn't find account.";
                            mes "Verify the account you typed";
                            close;
                        }
                        else
                        {     // Verify if account is already 'vip_gold'
                            set .@getSilverAccount,query_sql("SELECT `account_id` FROM vip_silver WHERE `account_id` = "+.@accountId+";",.@silverAccountId);
                            set .@getGoldAccount,query_sql("SELECT `account_id` FROM vip_gold WHERE `account_id` = "+.@accountId+";",.@goldAccountId);
                            set .@getPlatinumAccount,query_sql("SELECT `account_id` FROM vip_platinum WHERE `account_id` = "+.@accountId+";",.@platinumAccountId);
                            if (.@goldAccountId == .@accountId) // If it exists, update, not insert
                            {
                                mes "Account ID: "+.@accountId+".";
                                sleep2 rand(100,850);
                                query_sql("UPDATE vip_gold SET end_date = DATE_ADD(end_date, INTERVAL "+.@goldDays+" DAY) WHERE account_id = "+.@goldAccountId+";");
                                query_sql("UPDATE vip_gold SET `status` = 'ACTIVE' WHERE account_id = "+.@goldAccountId+";");
                                query_sql("UPDATE login SET `account_type` = 'GOLD' WHERE account_id = "+.@goldAccountId+";");
                                mes "Account "+.@goldAccountId+" updated";
                                mes "successfuly!";
                                close;
                            }
                            else if (.@silverAccountId == .@accountId) {
                                next;
                                mes "Account ID: "+.@accountId+".";
                                mes "This account is already in the Silver account, delete first if you're going to upgrade him..";
                                close;
                            }
                            else if (.@platinumAccountId == .@accountId) {
                                next;
                                mes "Account ID: "+.@accountId+".";
                                mes "This account is already in the Premium account, delete first if you're going to upgrade him..";
                                close;
                            }
                            else    // If this account is not already 'vip_gold', add an entry.
                            {
                                mes "Account ID: "+.@accountId+".";
                                sleep2 rand(100,850);
                                query_sql("INSERT INTO vip_gold (`account_id`,`account_name`,`start_date`,`end_date`,`status`) VALUES ("+.@accountId+",'"+.@accountName$+"','"+gettimestr("%Y-%m-%d",21)+"','"+gettimestr("%Y-%m-%d",21)+"','ACTIVE');");
                                sleep2 100;
                                query_sql("UPDATE vip_gold SET end_date = DATE_ADD(start_date, INTERVAL "+.@goldDays+" DAY) WHERE account_id = "+.@accountId+";");
                                query_sql("UPDATE `login` SET `group_id` = "+.VIPs_GoldAccLevel+" WHERE `account_id` = "+.@accountId+";");
                                query_sql("UPDATE login SET `account_type` = 'GOLD' WHERE account_id = "+.@accountId+";");
                                mes "Account "+.@accountId+" updated";
                                mes "successfuly!";
                                close;
                            }
                        }
                        close;
                    case 2:    // Delete
                        set .@getGoldList_1$,query_sql("SELECT account_name FROM vip_gold LIMIT 0,127;", .@goldList_1$);
                        if ( getarraysize(.@goldList_1$) == 0 )
                        {
                            mes "There are currently no VIP";
                            mes "accounts.";
                            close;
                        }
                        else
                        {
                            mes "Select the account you wish ";
                            mes "to remove from VIP system Gold.";
                            
                            set .@j$, "1. "+ .@goldList_1$;
                            for (set .@i,1; .@i < getarraysize(.@goldList_1$); set .@i, .@i + 1 )
                                set .@j$, .@j$ +":"+ (.@i+1) +". "+ .@goldList_1$[.@i];
                            set .@j$, .@j$ +":Cancel";
                            next;
                            mes .@npcName$;
                            mes "[VIP GOLD]";
                            set .@menu, select(.@j$) -1;
                            if ( .@menu == getarraysize(.@goldList_1$) ) { next; goto On_gm; }
                            mes "Are you sure you want to remove the account ";
                            mes .@goldList_1$[.@menu] +" ?";
                            if ( select( "Yes:No" ) == 2 ) { next; goto On_gm; }
                            query_sql ("UPDATE `login` SET `group_id` = 0 WHERE `userid` = '"+.@goldList_1$[.@menu]+"';");
                            query_sql ("DELETE FROM vip_gold WHERE account_name = '"+.@goldList_1$[.@menu]+"';");
                            query_sql("ALTER TABLE vip_gold AUTO_INCREMENT = 1;");
                            query_sql("UPDATE `login` SET `account_type` = 'NORMAL' WHERE `userid` = '"+.@goldList_1$[.@menu]+"';");
                            
                            mes "VIP Gold account successfuly deleted!.";
                            close;
                        }                    
                        close;
                        
                    case 3:    // List
                        mes "List Accounts VIP Gold:";
                        // List only 128 accounts due to eAthena's limitations :( very sad indeed.
                        set .@getGoldList_1$,query_sql("SELECT account_name FROM vip_gold LIMIT 0,127;", .@goldList_1$);
                        for (set .@i,0; .@i < getarraysize(.@goldList_1$); set .@i, .@i + 1)
                            mes (.@i+1)+". "+.@goldList_1$[.@i];
                        close;
                    case 4:    // Back
                        goto On_gm;
                }
            case 3: // Menu VIP Platinum
                next;
                mes .@npcName$;
                mes "[VIP PLATINUM]";
                switch(select("Add/Extend Account:Delete Account:List Accounts:Back"))
                {
                    case 1:    // Add
                        mes "Type the Account Name";
                        mes "you wish to add.";
                        input .@accountName$;
                        next;
                        mes .@npcName$;
                        mes "[VIP PLATINUM]";
                        mes "Enter the amount of days you";
                        mes "will add to this account's";
                        mes "status.";
                        next;
                        mes .@npcName$;
                        mes "[VIP PLATINUM]";
                        input .@platinumDays;
                        // Fetch account's ID using the name of the account previously typed.
                        set .@getAccountId,query_sql("SELECT `account_id`FROM login WHERE `userid` = '"+.@accountName$+"';",.@accountId);
                        mes "Identifying account: "+.@accountName$+".";
                        sleep2 rand(100,2000);
                        if (!.@accountId)    // Checks if account exists
                        {
                            mes "ERROR: Couldn't find this account";
                            mes "Enter the account correctly";
                            close;
                        }
                        else
                        {     // Is this account a 'vip_platinum' already?
                            set .@getSilverAccount,query_sql("SELECT `account_id` FROM vip_silver WHERE `account_id` = "+.@accountId+";",.@silverAccountId);
                            set .@getGoldAccount,query_sql("SELECT `account_id` FROM vip_gold WHERE `account_id` = "+.@accountId+";",.@goldAccountId);
                            set .@getPlatinumAccount,query_sql("SELECT `account_id` FROM vip_platinum WHERE `account_id` = "+.@accountId+";",.@platinumAccountId);
                            if (.@platinumAccountId == .@accountId) // If this account is 'vip_platinum' update instead of insterting a new entry.
                            {
                                mes "Account ID: "+.@accountId+".";
                                sleep2 rand(100,850);
                                query_sql("UPDATE vip_platinum SET end_date = DATE_ADD(end_date, INTERVAL "+.@platinumDays+" DAY) WHERE account_id = "+.@platinumAccountId+";");
                                query_sql("UPDATE vip_platinum SET `status` = 'ACTIVE' WHERE account_id = "+.@platinumAccountId+";");
                                query_sql("UPDATE login SET `account_type` = 'PLATINUM' WHERE account_id = "+.@platinumAccountId+";");
                                mes "Account "+.@platinumAccountId+" updated";
                                mes "successfuly!";
                                close;
                            }
                            else if (.@silverAccountId == .@accountId) {
                                next;
                                mes "Account ID: "+.@accountId+".";
                                mes "This account is already in the Silver account, delete first if you're going to upgrade him..";
                                close;
                            }
                            else if (.@goldAccountId == .@accountId) {
                                next;
                                mes "Account ID: "+.@accountId+".";
                                mes "This account is already in the Premium account, delete first if you're going to upgrade him..";
                                close;
                            }
                            else    // If it's not VIP already, insert a new entry
                            {
                                mes "Account ID: "+.@accountId+".";
                                sleep2 rand(100,850);
                                query_sql("INSERT INTO vip_platinum (`account_id`,`account_name`,`start_date`,`end_date`,`status`) VALUES ("+.@accountId+",'"+.@accountName$+"','"+gettimestr("%Y-%m-%d",21)+"','"+gettimestr("%Y-%m-%d",21)+"','ACTIVE');");
                                sleep2 100;
                                query_sql("UPDATE vip_platinum SET end_date = DATE_ADD(start_date, INTERVAL "+.@platinumDays+" DAY) WHERE account_id = "+.@accountId+";");
                                query_sql("UPDATE `login` SET `group_id` = "+.VIPs_PlatinumAccLevel+" WHERE `account_id` = "+.@accountId+";");
                                query_sql("UPDATE login SET `account_type` = 'PLATINUM' WHERE account_id = "+.@accountId+";");
                                mes "Account "+.@accountId+" updated";
                                mes "successfuly!";
                                close;
                            }
                        }
                        close;
                    case 2:    // Delete
                        set .@getPlatinumList_1$,query_sql("SELECT account_name FROM vip_platinum LIMIT 0,127;", .@platinumList_1$);
                        if ( getarraysize(.@platinumList_1$) == 0 )
                        {
                            mes "There are currently no VIP";
                            mes "Platinum accounts.";
                            close;
                        }
                        else
                        {
                            mes "Select the account you wish ";
                            mes "to remove from VIP system Platinum.";
                            
                            set .@j$, "1. "+ .@platinumList_1$;
                            for (set .@i,1; .@i < getarraysize(.@platinumList_1$); set .@i, .@i + 1 )
                                set .@j$, .@j$ +":"+ (.@i+1) +". "+ .@platinumList_1$[.@i];
                            set .@j$, .@j$ +":Cancel";
                            next;
                            mes .@npcName$;
                            mes "[VIP PLATINUM]";
                            set .@menu, select(.@j$) -1;
                            if ( .@menu == getarraysize(.@platinumList_1$) ) { next; goto On_gm; }
                            mes "Are you sure you want to remove the account ";
                            mes .@platinumList_1$[.@menu] +" ?";
                            if ( select( "Yes:No" ) == 2 ) { next; goto On_gm; }
                            query_sql ("UPDATE `login` SET `group_id` = 0 WHERE `userid` = '"+.@platinumList_1$[.@menu]+"';");
                            query_sql ("DELETE FROM vip_platinum WHERE account_name = '"+.@platinumList_1$[.@menu]+"';");
                            query_sql("ALTER TABLE vip_platinum AUTO_INCREMENT = 1;");
                            query_sql("UPDATE `login` SET `account_type` = 'NORMAL' WHERE `userid` = '"+.@platinumList_1$[.@menu]+"';");
                            
                            mes "VIP Platinum account successfuly deleted!.";
                            close;
                        }                    
                        close;
                        
                    case 3:    // List
                        mes "List Accounts VIP Platinum:";
                        set .@getPlatinumList_1$,query_sql("SELECT account_name FROM vip_platinum LIMIT 0,127;", .@platinumList_1$);
                        for (set .@i,0; .@i < getarraysize(.@platinumList_1$); set .@i, .@i + 1)
                            mes (.@i+1)+". "+.@platinumList_1$[.@i];
                        close;
                    case 4:    // Back
                        goto On_gm;
                }
            case 4: // Quit
                close;
        }
        
    terminateVip:    // This function removes any VIP status from the specified account
        set .@dbTableName$,getarg(0);    //    Table name
        set .@accountId,getarg(1);        //    Account ID

        sc_end SC_CASH_PLUSEXP;
        sc_end SC_CASH_RECEIVEITEM;
        query_sql("UPDATE `login` SET `group_id` = 0 WHERE account_id = "+.@accountId+";"); // Set account level to 0
        query_sql("DELETE FROM "+.@dbTableName$+" WHERE account_id = '"+.@accountId+"';"); // Delete VIP table entry
        query_sql("DELETE FROM `sc_data` WHERE account_id = '"+.@accountId+"' && type = '"+258+"';"); // Delete Status for VIP
        query_sql("DELETE FROM `sc_data` WHERE account_id = '"+.@accountId+"' && type = '"+259+"';"); // Delete Status for VIP
        query_sql("ALTER TABLE "+.@dbTableName$+" AUTO_INCREMENT = 1;"); // Tries to reset id count
        query_sql("UPDATE `login` SET `account_type` = 'NORMAL' WHERE `account_id` = "+.@accountId+";"); // Set account type to "NORMAL" in 'login' table
        goto L_displayInfo;

    //**************** VIP SYSTEM CONFIGURATION    *************************
    OnInit:
    set .VIPs_SilverAccLevel,1;        // Group ID assigned for VIP Silver        *
    set .VIPs_GoldAccLevel,2;        // Group ID assigned for VIP Gold            *
    set .VIPs_PlatinumAccLevel,3;    // Group ID assigned for VIP Platinum    *
    set .VIPs_SilverExpRate,100;        // VIP Silver Exp Boost in % ( 1 = 1% )        *
    set .VIPs_GoldExpRate,150;        // VIP Gold Exp Boost in % ( 1 = 1% )            *
    set .VIPs_PlatinumExpRate,200;    // VIP Platinum Exp Boost in % ( 1 = 1% )        *
    set .VIPs_SilverItemRate,200;        // VIP Silver Item Drop Boost in % ( 1 = 1% )    *
    set .VIPs_GoldItemRate,250;        // VIP Gold Item Drop Boost in % ( 1 = 1% )    *
    set .VIPs_PlatinumItemRate,300;    // VIP Platinum Item Drop Boost in % ( 1 = 1%)*
    set .VIPs_AdminGmLevel,99;        // Define GM Level enabled to add, list and    *
                                    // remove VIP entries. Any GM with access le-    *
                                    // vel equal or higher than this will be able    *
                                    // to manage VIP Accounts.                        *

    /* additional @command to display vip status */
    bindatcmd "vip",strnpcinfo(3)+"::OnAtcommand",0;
    //    ********************************************************************
    }

    function    script    VIP_SILVER    {
        if (getgmlevel() >= 20) {
        end;
        }
        else {
        //Configs
        set .@accountId,getarg(0);
        set .@silverDays,getarg(1);
        set .@VIPs_SilverAccLevel,1;
        set .AccountType$,"Silver";
        query_sql "SELECT `userid` FROM `login` WHERE `account_id` = "+.@accountId+";",.@accountName$;

        // Now lets check if the account is already 'vip_silver'
        set .@getSilverAccount,query_sql("SELECT `account_id` FROM vip_silver WHERE `account_id` = "+.@accountId+"",.@silverAccountId);
        set .@getGoldAccount,query_sql("SELECT `account_id` FROM vip_gold WHERE `account_id` = "+.@accountId+"",.@goldAccountId);
        set .@getPlatinumAccount,query_sql("SELECT `account_id` FROM vip_platinum WHERE `account_id` = "+.@accountId+"",.@platinumAccountId);
        if (.@silverAccountId == .@accountId) // If the account is already VIP we will update instead of inserting a new entry.
        {
            query_sql("UPDATE vip_silver SET end_date = DATE_ADD(end_date, INTERVAL "+.@silverDays+" DAY) WHERE account_id = "+.@silverAccountId+";");
            query_sql("UPDATE vip_silver SET `status` = 'ACTIVE' WHERE account_id = "+.@silverAccountId+";");
            query_sql("UPDATE login SET `account_type` = 'SILVER' WHERE account_id = "+.@silverAccountId+";");
            mes "Your account has been updated to ^FF0000"+.AccountType$+"^000000 with ^0000FF"+.@silverDays+"^000000days.";
            mes "Please relog to see the changes in your account.";
            close;
        }
        else if (.@goldAccountId == .@accountId) {    // if Gold Account
            mes "You're account is already in ^FF0000Gold^000000 account, please use this once you're account is not GOLD anymore.";
            getitem getarg(2),1;
            close;
        }
        else if (.@platinumAccountId == .@accountId) {    // if Platinum Account
            mes "You're account is already in ^FF0000Platinum^000000 account, please use this once you're account is not PLATINUM anymore.";
            getitem getarg(2),1;
            close;
        }
        else    // If the account is not already a VIP Silver one, add a new entry.
        {
            query_sql("INSERT INTO vip_silver (`account_id`,`account_name`,`start_date`,`end_date`,`status`) VALUES ("+.@accountId+",'"+.@accountName$+"','"+gettimestr("%Y-%m-%d",21)+"','"+gettimestr("%Y-%m-%d",21)+"','ACTIVE');");
            sleep2 100;
            query_sql("UPDATE vip_silver SET end_date = DATE_ADD(start_date, INTERVAL "+.@silverDays+" DAY) WHERE account_id = "+.@accountId+";");
            query_sql("UPDATE `login` SET `group_id` = "+.@VIPs_SilverAccLevel+" WHERE `account_id` = "+.@accountId+";");
            query_sql("UPDATE login SET `account_type` = 'SILVER' WHERE account_id = "+.@accountId+";");
            mes "Your account has been updated to ^FF0000"+.AccountType$+"^000000 with ^0000FF"+.@silverDays+"^000000days.";
            mes "Please relog to see the changes in your account.";
            close;
        }
        }
    }

    function    script    VIP_GOLD    {
        if (getgmlevel() >= 20) {
        end;
        }
        else {
        //Configs
        set .@accountId,getarg(0);
        set .@goldDays,getarg(1);
        set .@VIPs_GoldAccLevel,2;
        set .AccountType$,"Gold";
        query_sql "SELECT `userid` FROM `login` WHERE `account_id` = "+.@accountId+";",.@accountName$;
        
         // Verify if account is already 'vip_gold'
        set .@getSilverAccount,query_sql("SELECT `account_id` FROM vip_silver WHERE `account_id` = "+.@accountId+";",.@silverAccountId);
        set .@getGoldAccount,query_sql("SELECT `account_id` FROM vip_gold WHERE `account_id` = "+.@accountId+";",.@goldAccountId);
        set .@getPlatinumAccount,query_sql("SELECT `account_id` FROM vip_platinum WHERE `account_id` = "+.@accountId+";",.@platinumAccountId);
        if (.@goldAccountId == .@accountId) // If it exists, update, not insert
        {
            query_sql("UPDATE vip_gold SET end_date = DATE_ADD(end_date, INTERVAL "+.@goldDays+" DAY) WHERE account_id = "+.@goldAccountId+";");
            query_sql("UPDATE vip_gold SET `status` = 'ACTIVE' WHERE account_id = "+.@goldAccountId+";");
            query_sql("UPDATE login SET `account_type` = 'GOLD' WHERE account_id = "+.@goldAccountId+";");
            mes "Your account has been updated to ^FF0000"+.AccountType$+"^000000 with ^0000FF"+.@goldDays+"^000000days.";
            mes "Please relog to see the changes in your account.";
            close;
        }
        else if (.@silverAccountId == .@accountId) {
            mes "You're account is already in ^FF0000Silver^000000 account, please use this once you're account is not SILVER anymore.";
            getitem getarg(2),1;
            close;
        }
        else if (.@platinumAccountId == .@accountId) {
            mes "You're account is already in ^FF0000Platinum^000000 account, please use this once you're account is not PLATINUM anymore.";
            getitem getarg(2),1;
            close;
        }
        else    // If this account is not already 'vip_gold', add an entry.
        {
            query_sql("INSERT INTO vip_gold (`account_id`,`account_name`,`start_date`,`end_date`,`status`) VALUES ("+.@accountId+",'"+.@accountName$+"','"+gettimestr("%Y-%m-%d",21)+"','"+gettimestr("%Y-%m-%d",21)+"','ACTIVE');");
            sleep2 100;
            query_sql("UPDATE vip_gold SET end_date = DATE_ADD(start_date, INTERVAL "+.@goldDays+" DAY) WHERE account_id = "+.@accountId+";");
            query_sql("UPDATE `login` SET `group_id` = "+.@VIPs_GoldAccLevel+" WHERE `account_id` = "+.@accountId+";");
            query_sql("UPDATE login SET `account_type` = 'GOLD' WHERE account_id = "+.@accountId+";");
            mes "Your account has been updated to ^FF0000"+.AccountType$+"^000000 with ^0000FF"+.@goldDays+"^000000days.";
            mes "Please relog to see the changes in your account.";
            close;
        }
        }
    }

    function    script    VIP_PLATINUM    {
        if (getgmlevel() >= 20) {
        end;
        }
        else {
        //Configs
        set .@accountId,getarg(0);
        set .@platinumDays,getarg(1);
        set .@VIPs_PlatinumAccLevel,2;
        set .AccountType$,"Platinum";
        query_sql "SELECT `userid` FROM `login` WHERE `account_id` = "+.@accountId+";",.@accountName$;
        
         // Is this account a 'vip_platinum' already?
        set .@getSilverAccount,query_sql("SELECT `account_id` FROM vip_silver WHERE `account_id` = "+.@accountId+";",.@silverAccountId);
        set .@getGoldAccount,query_sql("SELECT `account_id` FROM vip_gold WHERE `account_id` = "+.@accountId+";",.@goldAccountId);
        set .@getPlatinumAccount,query_sql("SELECT `account_id` FROM vip_platinum WHERE `account_id` = "+.@accountId+";",.@platinumAccountId);
        if (.@platinumAccountId == .@accountId) // If this account is 'vip_platinum' update instead of insterting a new entry.
        {
            query_sql("UPDATE vip_platinum SET end_date = DATE_ADD(end_date, INTERVAL "+.@platinumDays+" DAY) WHERE account_id = "+.@platinumAccountId+";");
            query_sql("UPDATE vip_platinum SET `status` = 'ACTIVE' WHERE account_id = "+.@platinumAccountId+";");
            query_sql("UPDATE login SET `account_type` = 'PLATINUM' WHERE account_id = "+.@platinumAccountId+";");
            mes "Your account has been updated to ^FF0000"+.AccountType$+"^000000 with ^0000FF"+.@platinumDays+"^000000days.";
            mes "Please relog to see the changes in your account.";
            close;
        }
        else if (.@silverAccountId == .@accountId) {
            mes "You're account is already in ^FF0000Silver^000000 account, please use this once you're account is not SILVER anymore.";
            getitem getarg(2),1;
            close;
        }
        else if (.@goldAccountId == .@accountId) {
            mes "You're account is already in ^FF0000Gold^000000 account, please use this once you're account is not GOLD anymore.";
            getitem getarg(2),1;
            close;
        }
        else    // If it's not VIP already, insert a new entry
        {
            query_sql("INSERT INTO vip_platinum (`account_id`,`account_name`,`start_date`,`end_date`,`status`) VALUES ("+.@accountId+",'"+.@accountName$+"','"+gettimestr("%Y-%m-%d",21)+"','"+gettimestr("%Y-%m-%d",21)+"','ACTIVE');");
            sleep2 100;
            query_sql("UPDATE vip_platinum SET end_date = DATE_ADD(start_date, INTERVAL "+.@platinumDays+" DAY) WHERE account_id = "+.@accountId+";");
            query_sql("UPDATE `login` SET `group_id` = "+.@VIPs_PlatinumAccLevel+" WHERE `account_id` = "+.@accountId+";");
            query_sql("UPDATE login SET `account_type` = 'PLATINUM' WHERE account_id = "+.@accountId+";");
            mes "Your account has been updated to ^FF0000"+.AccountType$+"^000000 with ^0000FF"+.@goldDays+"^000000days.";
            mes "Please relog to see the changes in your account.";
            close;
        }
        }
    }

    this function is add/delete vip account by GM

    can i change the script use visible NPC and can access by player the function is like this:

    player can buy the VIP account use NPC

    Example

    mes "hai there you want to upgrade your account?"

    next;

    menu vip silver,Vip Gold,Vip Platinum;

    vip silver 7days,15days,30days

    vip Gold 7days,15days,30days

    vip Platinum 7days,15days,30days

    price 7days 10cash,15days 100cash and 30days 1000cash

     

    above an example...but it possible we make like that?

    so no need GM add player can buy by them self but have price..

    thanks in advance


  3. On 12/10/2019 at 7:48 PM, Kuroe said:

    //===== Hercules Script ====================================== //= Warper //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.4b //===== Description: ========================================= //= A complete - but very condensed - warper script. //= Some coordinates written by Tekno-Kanix and ToastOfDoom. //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.1 Added missing duplicates and fixed coordinates. //= 1.2 Added new episodes and simplified functions. //= 1.3 Added Renewal checks and Instances menu. //= Aligned coordinates with @go. //= 1.4 Added new Guild Dungeons. //= 1.4a Slight edits. //= 1.4b Added Wolfchev's Laboratory warp. //============================================================ - script Warper FAKE_NPC,{ function Go; function Disp; function Pick; function Restrict; // -------------------------------------------------- // Main Menu: // -------------------------------------------------- menu "Last Warp ^777777["+lastwarp$+"]^000000",-, " ~ Towns",Towns, " ~ Fields",Fields, " ~ Dungeons",Dungeons, " ~ Guild Castles",Castles, " ~ Guild Dungeons",Guild_Dungeons, " ~ Instances",Instances, " ~ Special Areas",Special; if (lastwarp$ == "") message strcharinfo(PC_NAME),"You haven't warped anywhere yet."; else mes ("Select payment method"); next; switch(select("Zeny","Ticket","Cancel")) { case 1: if (Zeny < 3000) { mes ("Sorry you don't have enough Zeny"); close; } warp lastwarp$,lastwarpx,lastwarpy; end; case 2: if (countitem(7227) < 1) { mes ("Sorry you don't have enough TCG Card(s)"); close; } delitem 7227,1; warp lastwarp$,lastwarpx,lastwarpy; end; case 3: close; } // ------------------- Functions ------------------- // * Go("<map>",<x>,<y>); // ~ Warps directly to a map. // // * Disp("<Menu Option>",<first option>,<last option>); // * Pick("<map_prefix>"{,<index offset>}); // ~ Dynamic menu and map selection (auto-numbered). // // * Disp("<Option 1>:<Option 2>:<etc.>"); // * Pick("","<map1>","<map2>","<etc.>"); // ~ Manual menu and map selection (listed). // // * Restrict("<RE | Pre-RE>"{,<menu option numbers>}); // ~ Only allows map for Renewal or Pre-Renewal modes. // If menu option numbers are given, only those maps // will be restricted (i.e. not for "Go"). // // Other notes: // ~ Array @c[] holds all (x,y) coordinates. // ~ Use @c[2] EXCEPT when maps begin dynamically // at 0: use @c[0] and Pick() offset 1. // -------------------------------------------------- function Go { mes ("Select payment method"); next; switch(select("Zeny","Ticket","Cancel")) { case 1: if (Zeny < 3000) { mes ("Sorry you don't have enough Zeny"); close; } Zeny -= 3000; lastwarp$ = getarg(0); lastwarpx = getarg(1,0); lastwarpy = getarg(2,0); warp getarg(0),getarg(1,0),getarg(2,0); end; case 2: if (countitem(7227) < 1) { mes ("Sorry you don't have enough TCG Card(s)"); close; } delitem 7227,1; lastwarp$ = getarg(0); lastwarpx = getarg(1,0); lastwarpy = getarg(2,0); warp getarg(0),getarg(1,0),getarg(2,0); end; case 3: close; } } function Disp { if (getargcount() < 3) @menu$ = getarg(0); else { @menu$ = ""; for (.@i = getarg(1); .@i <= getarg(2); .@i++) @menu$ = @menu$+getarg(0)+" "+.@i+":"; } return; } function Pick { .@warp_block = @warp_block; @warp_block = 0; .@select = select(@menu$); if (getarg(0) == "") { .@i = .@select; .@map$ = getarg(.@i); } else { .@i = .@select-getarg(1,0); .@map$ = getarg(0)+((.@i<10)?"0":"")+.@i; } if (.@warp_block & (1<<.@select)) { message strcharinfo(PC_NAME),"This map is not enabled in "+(RENEWAL?"":"Pre-")+"Renewal."; end; } .@x = @c[.@i*2]; .@y = @c[.@i*2+1]; deletearray @c[0],getarraysize(@c); Go(.@map$,.@x,.@y); } function Restrict { if ((getarg(0) == "RE" && !RENEWAL) || (getarg(0) == "Pre-RE" && RENEWAL)) { if (getarg(1,0)) { @warp_block = 0; for (.@i = 1; .@i < getargcount(); .@i++) @warp_block = @warp_block | (1<<getarg(.@i)); } else { message strcharinfo(PC_NAME),"This map is not enabled in "+(RENEWAL?"":"Pre-")+"Renewal."; end; } } return; } // -------------------------------------------------- Towns: // -------------------------------------------------- menu "Prontera",T1, "Alberta",T2, "Aldebaran",T3, "Amatsu",T4, "Ayothaya",T5, "Brasilis",T6, "Comodo",T7, "Dewata",T8, "Eclage",T9, "Einbech",T10, "Einbroch",T11, "El Dicastes",T12, "Geffen",T13, "Gonryun",T14, "Hugel",T15, "Izlude",T16, "Jawaii",T17, "Lighthalzen",T18, "Louyang",T19, "Lutie",T20, "Malangdo",T21, "Malaya",T22, "Manuk",T23, "Midgarts Expedition Camp",T24, "Mora",T25, "Morroc",T26, "Moscovia",T27, "Nameless Island",T28, "Niflheim",T29, "Payon",T30, "Rachel",T31, "Splendide",T32, "Thor Camp",T33, "Umbala",T34, "Veins",T35, "Yuno",T36; T1: Go("prontera",155,183); T2: Go("alberta",28,234); T3: Go("aldebaran",140,131); T4: Go("amatsu",198,84); T5: Go("ayothaya",208,166); T6: Restrict("RE"); Go("brasilis",196,217); T7: Go("comodo",209,143); T8: Restrict("RE"); Go("dewata",200,180); T9: Restrict("RE"); Go("ecl_in01",48,53); T10: Go("einbech",63,35); T11: Go("einbroch",64,200); T12: Restrict("RE"); Go("dicastes01",198,187); T13: Go("geffen",119,59); T14: Go("gonryun",160,120); T15: Go("hugel",96,145); T16: Go("izlude",128,(RENEWAL?146:114)); T17: Go("jawaii",251,132); T18: Go("lighthalzen",158,92); T19: Go("louyang",217,100); T20: Go("xmas",147,134); T21: Restrict("RE"); Go("malangdo",140,114); T22: Restrict("RE"); Go("malaya",231,200); T23: Go("manuk",282,138); T24: Go("mid_camp",210,288); T25: Restrict("RE"); Go("mora",55,146); T26: Go("morocc",156,93); T27: Go("moscovia",223,184); T28: Go("nameless_n",256,215); T29: Go("niflheim",202,174); T30: Go("payon",179,100); T31: Go("rachel",130,110); T32: Go("splendide",201,147); T33: Go("thor_camp",246,68); T34: Go("umbala",97,153); T35: Go("veins",216,123); T36: Go("yuno",157,51); // -------------------------------------------------- Fields: // -------------------------------------------------- menu "Amatsu Fields",F1, "Ayothaya Fields",F2, "Bifrost Fields", F3, "Brasilis Fields",F4, "Comodo Fields",F5, "Dewata Fields",F6, "Eclage Fields",F7, "Einbroch Fields",F8, "El Dicastes Fields",F9, "Geffen Fields",F10, "Gonryun Fields",F11, "Hugel Fields",F12, "Lighthalzen Fields",F13, "Louyang Field",F14, "Lutie Field",F15, "Malaya Fields",F16, "Manuk Fields",F17, "Mjolnir Fields",F18, "Moscovia Fields",F19, "Niflheim Fields",F20, "Payon Forests",F21, "Prontera Fields",F22, "Rachel Fields",F23, "Sograt Deserts",F24, "Splendide Fields",F25, "Umbala Fields",F26, "Veins Fields",F27, "Yuno Fields",F28; F1: setarray @c[2],190,197; Disp("Amatsu Field",1,1); Pick("ama_fild"); F2: setarray @c[2],173,134,212,150; Disp("Ayothaya Field",1,2); Pick("ayo_fild"); F3: Restrict("RE"); setarray @c[2],193,220,220,187; Disp("Bifrost Field",1,2); Pick("bif_fild"); F4: Restrict("RE"); setarray @c[2],74,32; Disp("Brasilis Field",1,1); Pick("bra_fild"); F5: Restrict("Pre-RE",5); setarray @c[2],180,178,231,160,191,172,228,194,224,203,190,223,234,177,194,175,172,172; Disp("Comodo Field",1,9); Pick("cmd_fild"); F6: Restrict("RE"); setarray @c[2],371,212; Disp("Dewata Field",1,1); Pick("dew_fild"); F7: Restrict("RE"); setarray @c[2],97,314; Disp("Eclage Field",1,1); Pick("ecl_fild"); F8: Restrict("Pre-RE",2,10); setarray @c[2],142,225,182,141,187,228,185,173,216,173,195,148,272,220,173,214,207,174,196,200; Disp("Einbroch Field",1,10); Pick("ein_fild"); F9: Restrict("RE"); setarray @c[2],143,132,143,217; Disp("El Dicastes Field",1,2); Pick("dic_fild"); F10: Restrict("Pre-RE",13,15); setarray @c[0],46,199,213,204,195,212,257,192,188,171,166,263,248,158,195,191,186,183,221,117,178,218,136,328,240,181,235,235,211,185; Disp("Geffen Field",0,14); Pick("gef_fild",1); F11: setarray @c[2],220,227; Disp("Gonryun Field",1,1); Pick("gon_fild"); F12: Restrict("Pre-RE",3,7); setarray @c[2],268,101,222,193,232,185,252,189,196,106,216,220,227,197; Disp("Hugel Field",1,7); Pick("hu_fild"); F13: setarray @c[2],240,179,185,235,240,226; Disp("Lighthalzen Field",1,3); Pick("lhz_fild"); F14: setarray @c[2],229,187; Disp("Louyang Field",1,1); Pick("lou_fild"); F15: setarray @c[2],115,145; Disp("Lutie Field",1,1); Pick("xmas_fild"); F16: Restrict("RE"); setarray @c[2],40,272,207,180; Disp("Malaya Field",1,2); Pick("ma_fild"); F17: setarray @c[2],35,236,35,262,84,365; Disp("Manuk Field",1,3); Pick("man_fild"); F18: setarray @c[2],204,120,175,193,208,213,179,180,181,240,195,270,235,202,188,215,205,144,245,223,180,206,196,208; Disp("Mjolnir Field",1,12); Pick("mjolnir_"); F19: setarray @c[2],82,104,131,147; Disp("Moscovia Field",1,2); Pick("mosk_fild"); F20: setarray @c[2],215,229,167,234; Disp("Niflheim Field",1,2); Pick("nif_fild"); F21: Restrict("Pre-RE",5,11); setarray @c[2],158,206,151,219,205,148,186,247,134,204,193,235,200,177,137,189,201,224,160,205,194,150; Disp("Payon Forest",1,11); Pick("pay_fild"); F22: setarray @c[0],208,227,190,206,240,206,190,143,307,252,239,213,185,188,193,194,187,218,210,183,195,149,198,164; Disp("Prontera Field",0,11); Pick("prt_fild",1); F23: Restrict("Pre-RE",2,7,9,10,11,13); setarray @c[2],192,162,235,166,202,206,202,208,225,202,202,214,263,196,217,201,87,121,277,181,221,185,175,200,174,197; Disp("Rachel Field",1,13); Pick("ra_fild"); F24: setarray @c[2],219,205,177,206,194,182,224,170,198,216,156,187,185,263,206,228,208,238,209,223,85,97,207,202,31,195,38,195; Disp("Sograt Desert 1:Sograt Desert 2:Sograt Desert 3:Sograt Desert 7:Sograt Desert 11:Sograt Desert 12:Sograt Desert 13:Sograt Desert 16:Sograt Desert 17:Sograt Desert 18:Sograt Desert 19:Sograt Desert 20:Sograt Desert 21:Sograt Desert 22"); Pick("","moc_fild01","moc_fild02","moc_fild03","moc_fild07","moc_fild11","moc_fild12","moc_fild13","moc_fild16","moc_fild17","moc_fild18","moc_fild19","moc_fild20","moc_fild21","moc_fild22"); F25: setarray @c[2],175,186,236,184,188,204; Disp("Splendide Field",1,3); Pick("spl_fild"); F26: setarray @c[2],217,206,223,221,237,215,202,197; Disp("Umbala Field",1,4); Pick("um_fild"); F27: Restrict("Pre-RE",5); setarray @c[2],186,175,196,370,222,45,51,250,202,324,150,223,149,307; Disp("Veins Field",1,7); Pick("ve_fild"); F28: Restrict("Pre-RE",5,10); setarray @c[2],189,224,192,207,221,157,226,199,223,177,187,232,231,174,196,203,183,214,200,124,195,226,210,304; Disp("Yuno Field",1,12); Pick("yuno_fild"); // -------------------------------------------------- Dungeons: // -------------------------------------------------- menu "Abyss Lakes",D1, "Amatsu Dungeon",D2, "Anthell",D3, "Ayothaya Dungeon",D4, "Beach Dungeon",D5, "Bifrost Tower",D41, "Bio Labs",D6, "Brasilis Dungeon",D7, "Byalan Dungeon",D8, "Clock Tower",D9, "Coal Mines",D10, "Culvert",D11, "Cursed Abbey",D12, "Dewata Dungeon",D13, "Einbroch Dungeon",D14, "Gefenia",D15, "Geffen Dungeon",D16, "Glast Heim",D17, "Gonryun Dungeon",D18, "Hidden Dungeon",D19, "Ice Dungeon",D20, "Juperos",D21, "Kiel Dungeon",D22, "Louyang Dungeon",D23, "Magma Dungeon",D24, "Malangdo Dungeon",D25, "Moscovia Dungeon",D26, "Nidhogg's Dungeon",D27, "Odin Temple",D28, "Orc Dungeon",D29, "Payon Dungeon",D30, "Pyramids",D31, "Rachel Sanctuary",D32, "Scaraba Hole",D33, "Sphinx",D34, "Sunken Ship",D35, "Thanatos Tower",D36, "Thor Volcano",D37, "Toy Factory",D38, "Turtle Dungeon",D39, "Umbala Dungeon",D40; D1: setarray @c[2],261,272,275,270,116,27; Disp("Abyss Lakes",1,3); Pick("abyss_"); D2: setarray @c[2],228,11,34,41,119,14; Disp("Amatsu Dungeon",1,3); Pick("ama_dun"); D3: setarray @c[2],35,262,168,170; Disp("Anthell",1,2); Pick("anthell"); D4: setarray @c[2],275,19,24,26; Disp("Ancient Shrine Maze:Inside Ancient Shrine"); Pick("ayo_dun"); D5: setarray @c[2],266,67,255,244,23,260; Disp("Beach Dungeon",1,3); Pick("","beach_dun","beach_dun2","beach_dun3"); D6: Restrict("RE",4); setarray @c[2],150,288,150,18,140,134,244,52; Disp("Bio Lab",1,4); Pick("lhz_dun"); D7: Restrict("RE"); setarray @c[2],87,47,262,262; Disp("Brasilis Dungeon",1,2); Pick("bra_dun"); D8: Restrict("RE",6); setarray @c[0],168,168,253,252,236,204,32,63,26,27,141,187; Disp("Byalan Dungeon",1,6); Pick("iz_dun",1); D9: setarray @c[2],199,159,148,283,65,147,56,155,297,25,127,169,277,178,268,74; Disp("Clock Tower 1:Clock Tower 2:Clock Tower 3:Clock Tower 4:Basement 1:Basement 2:Basement 3:Basement 4"); Pick("","c_tower1","c_tower2","c_tower3","c_tower4","alde_dun01","alde_dun02","alde_dun03","alde_dun04"); D10: setarray @c[2],52,17,381,343,302,262; Disp("Coal Mines",1,3); Pick("mjo_dun"); D11: setarray @c[2],131,247,19,19,180,169,100,92; Disp("Culvert",1,4); Pick("","prt_sewb1","prt_sewb2","prt_sewb3","prt_sewb4"); D12: setarray @c[2],51,14,150,11,120,10; Disp("Cursed Abbey",1,3); Pick("abbey"); D13: Restrict("RE"); setarray @c[2],285,160,299,29; Disp("Dewata Dungeon",1,2); Pick("dew_dun"); D14: setarray @c[2],22,14,292,290; Disp("Einbroch Dungeon",1,2); Pick("ein_dun"); D15: setarray @c[2],40,103,203,34,266,168,130,272; Disp("Gefenia",1,4); Pick("gefenia",0); D16: setarray @c[0],104,99,115,236,106,132,203,200; Disp("Geffen Dungeon",1,4); Pick("gef_dun",1); D17: setarray @c[2],370,304,199,29,104,25,150,15,157,287,147,15,258,255,108,291,171,283,68,277,156,7,12,7,133,271,224,274,14,70,150,14; Disp("Entrance:Castle 1:Castle 2:Chivalry 1:Chivalry 2:Churchyard:Culvert 1:Culvert 2:Culvert 3:Culvert 4:St. Abbey:Staircase Dungeon:Underground Cave 1:Underground Cave 2:Underground Prison 1:Underground Prison 2"); Pick("","glast_01","gl_cas01","gl_cas02","gl_knt01","gl_knt02","gl_chyard","gl_sew01","gl_sew02","gl_sew03","gl_sew04","gl_church","gl_step","gl_dun01","gl_dun02","gl_prison","gl_prison1"); D18: setarray @c[2],153,53,28,113,68,16; Disp("Gonryun Dungeon",1,3); Pick("gon_dun"); D19: setarray @c[2],176,7,93,20,23,8; Disp("Hidden Dungeon",1,3); Pick("prt_maze"); D20: setarray @c[2],157,14,151,155,149,22,33,158; Disp("Ice Dungeon",1,4); Pick("ice_dun"); D21: setarray @c[2],140,51,53,247,37,63,150,285; Disp("Entrance:Juperos 1:Juperos 2:Core"); Pick("","jupe_cave","juperos_01","juperos_02","jupe_core"); D22: setarray @c[2],28,226,41,198; Disp("Kiel Dungeon",1,2); Pick("kh_dun"); D23: setarray @c[2],218,196,282,20,165,38; Disp("The Royal Tomb:Inside the Royal Tomb:Suei Long Gon"); Pick("lou_dun"); D24: setarray @c[2],126,68,47,30; Disp("Magma Dungeon",1,2); Pick("mag_dun"); D25: Restrict("RE"); setarray @c[2],33,230; Disp("Malangdo Dungeon",1,1); Pick("mal_dun"); D26: setarray @c[2],189,48,165,30,32,135; Disp("Moscovia Dungeon",1,3); Pick("mosk_dun"); D27: setarray @c[2],61,239,60,271; Disp("Nidhogg's Dungeon",1,2); Pick("nyd_dun"); D28: setarray @c[2],298,167,224,149,266,280; Disp("Odin Temple",1,3); Pick("odin_tem"); D29: setarray @c[2],32,170,21,185; Disp("Orc Dungeon",1,2); Pick("orcsdun"); D30: setarray @c[0],21,183,19,33,19,63,155,159,201,204; Disp("Payon Dungeon",1,5); Pick("pay_dun",1); D31: Restrict("RE",7,8); setarray @c[2],192,9,10,192,100,92,181,11,94,96,192,8,94,96,192,8; Disp("Pyramids 1:Pyramids 2:Pyramids 3:Pyramids 4:Basement 1:Basement 2:Basement 1 - Nightmare Mode:Basement 2 - Nightmare Mode"); Pick("","moc_pryd01","moc_pryd02","moc_pryd03","moc_pryd04","moc_pryd05","moc_pryd06","moc_prydn1","moc_prydn2"); D32: setarray @c[2],140,11,32,21,8,149,204,218,150,9; Disp("Rachel Sanctuary",1,5); Pick("ra_san"); D33: Restrict("RE"); setarray @c[2],364,44,101,141; Disp("Scaraba Hole",1,2); Pick("dic_dun"); D34: setarray @c[2],288,9,149,81,210,54,10,222,100,99; Disp("Sphinx",1,5); Pick("","in_sphinx1","in_sphinx2","in_sphinx3","in_sphinx4","in_sphinx5"); D35: setarray @c[2],69,24,102,27; Disp("Sunken Ship",1,2); Pick("treasure"); D36: setarray @c[2],150,39,150,136,220,158,59,143,62,11,89,221,35,166,93,148,29,107,159,138,19,20,130,52; Disp("Thanatos Tower",1,12); Pick("tha_t"); D37: setarray @c[2],21,228,75,205,34,272; Disp("Thor Volcano",1,3); Pick("thor_v"); D38: setarray @c[2],205,15,129,133; Disp("Toy Factory",1,2); Pick("xmas_dun"); D39: setarray @c[2],154,49,148,261,132,189,100,192; Disp("Entrance:Turtle Dungeon 1:Turtle Dungeon 2:Turtle Dungeon 3"); Pick("tur_dun"); D40: Restrict("Pre-RE",1,2); setarray @c[2],42,31,48,30,204,78; Disp("Carpenter's Shop in the Tree:Passage to a Foreign World:Hvergermil's Fountain"); Pick("","um_dun01","um_dun02","yggdrasil01"); D41: Restrict("RE"); setarray @c[2],57,13,64,88,45,14,26,23; Disp("Bifrost Tower",1,4); Pick("ecl_tdun"); // -------------------------------------------------- Castles: // -------------------------------------------------- menu "Aldebaran Castles",C1, "Geffen Castles",C2, "Payon Castles",C3, "Prontera Castles",C4, "Arunafeltz Castles",C5, "Schwaltzvalt Castles",C6; C1: setarray @c[2],48,83,95,249,142,85,239,242,264,90; Disp("Neuschwanstein:Hohenschwangau:Nuenberg:Wuerzburg:Rothenburg"); Pick("","alde_gld","alde_gld","alde_gld","alde_gld","alde_gld"); C2: setarray @c[2],214,75,308,240,143,240,193,278,305,87; Disp("Repherion:Eeyolbriggar:Yesnelph:Bergel:Mersetzdeitz"); Pick("","gef_fild13","gef_fild13","gef_fild13","gef_fild13","gef_fild13"); C3: setarray @c[2],121,233,295,116,317,293,140,160,204,266; Disp("Bright Arbor:Scarlet Palace:Holy Shadow:Sacred Altar:Bamboo Grove Hill"); Pick("","pay_gld","pay_gld","pay_gld","pay_gld","pay_gld"); C4: setarray @c[2],134,65,240,128,153,137,111,240,208,240; Disp("Kriemhild:Swanhild:Fadhgridh:Skoegul:Gondul"); Pick("","prt_gld","prt_gld","prt_gld","prt_gld","prt_gld"); C5: setarray @c[2],158,272,83,47,68,155,299,345,292,107; Disp("Mardol:Cyr:Horn:Gefn:Banadis"); Pick("","aru_gld","aru_gld","aru_gld","aru_gld","aru_gld"); C6: setarray @c[2],293,100,288,252,97,196,137,90,71,315; Disp("Himinn:Andlangr:Viblainn:Hljod:Skidbladnir"); Pick("","sch_gld","sch_gld","sch_gld","sch_gld","sch_gld"); // -------------------------------------------------- Guild_Dungeons: // -------------------------------------------------- menu "Baldur",G1, "Luina",G2, "Valkyrie",G3, "Britoniah",G4, "Arunafeltz",G5, "Schwaltzvalt",G6; G1: Restrict("RE",2,3); setarray @c[2],119,93,119,93,120,130; Disp("Baldur F1:Baldur F2:Hall of Abyss"); Pick("","gld_dun01","gld_dun01_2","gld2_pay"); G2: Restrict("RE",2,3); setarray @c[2],39,161,39,161,147,155; Disp("Luina F1:Luina F2:Hall of Abyss"); Pick("","gld_dun02","gld_dun02_2","gld2_ald"); G3: Restrict("RE",2,3); setarray @c[2],50,44,50,44,140,132; Disp("Valkyrie F1:Valkyrie F2:Hall of Abyss"); Pick("","gld_dun03","gld_dun03_2","gld2_prt"); G4: Restrict("RE",2,3); setarray @c[2],116,45,116,45,152,118; Disp("Britoniah F1:Britoniah F2:Hall of Abyss"); Pick("","gld_dun04","gld_dun04_2","gld2_gef"); G5: Go("arug_dun01",199,195); G6: Go("schg_dun01",200,124); // -------------------------------------------------- Instances: // -------------------------------------------------- menu "Bakonawa Lake",I1, "Bangungot Hospital 2F",I2, "Buwaya Cave",I3, "Endless Tower",I4, "Hazy Forest",I5, "Malangdo Culvert",I6, "Nidhoggur's Nest",I7, "Octopus Cave",I8, "Old Glast Heim",I9, "Orc's Memory",I10, "Sealed Shrine",I11, "Wolfchev's Laboratory",I12; I1: Restrict("RE"); Go("ma_scene01",172,175); I2: Restrict("RE"); Go("ma_dun01",151,8); I3: Restrict("RE"); Go("ma_fild02",316,317); I4: Go("e_tower",72,112); I5: Restrict("RE"); Go("bif_fild01",161,334); I6: Restrict("RE"); Go("mal_in01",164,21); I7: Go("nyd_dun02",95,193); I8: Restrict("RE"); Go("mal_dun01",152,230); I9: Restrict("RE"); Go("glast_01",204,268); I10: Go("gef_fild10",240,198); I11: Go("monk_test",306,143); I12: Restrict("RE"); Go("lhz_dun04",148,269); // -------------------------------------------------- Special: // -------------------------------------------------- menu "Auction Hall",S1, "Battlegrounds",S2, "Casino",S3, "Eden Group Headquarters",S4, "Gonryun Arena",S5, "Izlude Arena",S6, "Monster Race Arena",S7, "Turbo Track",S8; S1: Go("auction_01",22,68); S2: Go("bat_room",154,150); S3: Go("cmd_in02",179,129); S4: Restrict("RE"); Go("moc_para01",31,14); S5: Go("gon_test",48,10); S6: Go("arena_room",100,88); S7: Go("p_track01",62,41); S8: Go("turbo_room",99,114); } // -------------------------------------------------- // Duplicates: // -------------------------------------------------- alb2trea,57,70,6 duplicate(Warper) Warper#tre 4_F_VALKYRIE alberta,28,240,4 duplicate(Warper) Warper#alb 4_F_VALKYRIE aldebaran,145,118,4 duplicate(Warper) Warper#alde 4_F_VALKYRIE amatsu,203,87,4 duplicate(Warper) Warper#ama 4_F_VALKYRIE ayothaya,209,169,6 duplicate(Warper) Warper#ayo 4_F_VALKYRIE comodo,194,158,4 duplicate(Warper) Warper#com 4_F_VALKYRIE einbech,59,38,6 duplicate(Warper) Warper#einbe 4_F_VALKYRIE einbroch,69,202,4 duplicate(Warper) Warper#einbr 4_F_VALKYRIE gef_fild10,71,339,4 duplicate(Warper) Warper#orc 4_F_VALKYRIE geffen,124,72,4 duplicate(Warper) Warper#gef 4_F_VALKYRIE glast_01,372,308,4 duplicate(Warper) Warper#glh 4_F_VALKYRIE gonryun,162,122,4 duplicate(Warper) Warper#gon 4_F_VALKYRIE hugel,101,151,4 duplicate(Warper) Warper#hug 4_F_VALKYRIE izlu2dun,110,92,4 duplicate(Warper) Warper#izd 4_F_VALKYRIE izlude,134,150,4 duplicate(Warper) Warper#izl 4_F_VALKYRIE //Pre-RE: (132,120) jawaii,253,138,4 duplicate(Warper) Warper#jaw 4_F_VALKYRIE lighthalzen,162,102,4 duplicate(Warper) Warper#lhz 4_F_VALKYRIE louyang,208,103,6 duplicate(Warper) Warper#lou 4_F_VALKYRIE manuk,274,146,6 duplicate(Warper) Warper#man 4_F_VALKYRIE mid_camp,216,288,4 duplicate(Warper) Warper#mid 4_F_VALKYRIE mjolnir_02,85,364,4 duplicate(Warper) Warper#mjo 4_F_VALKYRIE moc_ruins,64,164,4 duplicate(Warper) Warper#moc 4_F_VALKYRIE morocc,159,97,4 duplicate(Warper) Warper#mor 4_F_VALKYRIE moscovia,229,191,4 duplicate(Warper) Warper#mos 4_F_VALKYRIE nameless_n,259,213,4 duplicate(Warper) Warper#nam 4_F_VALKYRIE niflheim,205,179,4 duplicate(Warper) Warper#nif 4_F_VALKYRIE pay_arche,42,134,4 duplicate(Warper) Warper#arc 4_F_VALKYRIE payon,182,108,4 duplicate(Warper) Warper#pay 4_F_VALKYRIE prontera,159,192,4 duplicate(Warper) Warper#prt 4_F_VALKYRIE prt_fild05,279,223,6 duplicate(Warper) Warper#cul 4_F_VALKYRIE rachel,135,116,4 duplicate(Warper) Warper#rac 4_F_VALKYRIE splendide,205,153,4 duplicate(Warper) Warper#spl 4_F_VALKYRIE thor_camp,249,76,4 duplicate(Warper) Warper#thor 4_F_VALKYRIE umbala,106,150,3 duplicate(Warper) Warper#umb 4_F_VALKYRIE veins,214,123,4 duplicate(Warper) Warper#ve 4_F_VALKYRIE xmas,150,136,6 duplicate(Warper) Warper#xmas 4_F_VALKYRIE yuno,162,47,4 duplicate(Warper) Warper#yuno 4_F_VALKYRIE // -------------------------------------------------- // Duplicates (Renewal): // -------------------------------------------------- brasilis,201,222,4 duplicate(Warper) Warper#bra 4_F_VALKYRIE dewata,204,186,6 duplicate(Warper) Warper#dew 4_F_VALKYRIE dicastes01,194,194,6 duplicate(Warper) Warper#dic 4_F_VALKYRIE ecl_in01,51,60,4 duplicate(Warper) Warper#ecl 4_F_VALKYRIE malangdo,134,117,6 duplicate(Warper) Warper#mal 4_F_VALKYRIE malaya,231,204,4 duplicate(Warper) Warper#ma 4_F_VALKYRIE mora,57,152,4 duplicate(Warper) Warper#mora 4_F_VALKYRIE

    
    //===== Hercules Script ======================================
    //= Warper
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.4b
    //===== Description: =========================================
    //= A complete - but very condensed - warper script.
    //= Some coordinates written by Tekno-Kanix and ToastOfDoom.
    //===== Additional Comments: =================================
    //= 1.0 Initial script.
    //= 1.1 Added missing duplicates and fixed coordinates.
    //= 1.2 Added new episodes and simplified functions.
    //= 1.3 Added Renewal checks and Instances menu.
    //=     Aligned coordinates with @go.
    //= 1.4 Added new Guild Dungeons.
    //= 1.4a Slight edits.
    //= 1.4b Added Wolfchev's Laboratory warp.
    //============================================================
    
    -	script	Warper	FAKE_NPC,{
    function Go; function Disp; function Pick; function Restrict;
    
    // --------------------------------------------------
    //	Main Menu:
    // --------------------------------------------------
    
    menu	"Last Warp ^777777["+lastwarp$+"]^000000",-,
    		" ~ Towns",Towns,
    		" ~ Fields",Fields,
    		" ~ Dungeons",Dungeons,
    		" ~ Guild Castles",Castles,
    		" ~ Guild Dungeons",Guild_Dungeons,
    		" ~ Instances",Instances,
    		" ~ Special Areas",Special;
    
    	if (lastwarp$ == "")
    		message strcharinfo(PC_NAME),"You haven't warped anywhere yet.";
    	else
    	mes ("Select payment method");
    	next;
    	switch(select("Zeny","Ticket","Cancel")) {
    	case 1:
    		if (Zeny < 3000) {
    		mes ("Sorry you don't have enough Zeny");
    		close;
    	}
    		warp lastwarp$,lastwarpx,lastwarpy;
    	end;
    	case 2:
    		if (countitem(7227) < 1) {
    		mes ("Sorry you don't have enough TCG Card(s)");
    		close;
    	}
    		delitem 7227,1;
    		warp lastwarp$,lastwarpx,lastwarpy;
    	end;
    	case 3:
    	close;
    }
    
    // ------------------- Functions -------------------
    // * Go("<map>",<x>,<y>);
    //	~ Warps directly to a map.
    //
    // * Disp("<Menu Option>",<first option>,<last option>);
    // * Pick("<map_prefix>"{,<index offset>});
    //	~ Dynamic menu and map selection (auto-numbered).
    //
    // * Disp("<Option 1>:<Option 2>:<etc.>");
    // * Pick("","<map1>","<map2>","<etc.>");
    //	~ Manual menu and map selection (listed).
    //
    // * Restrict("<RE | Pre-RE>"{,<menu option numbers>});
    //	~ Only allows map for Renewal or Pre-Renewal modes.
    //     If menu option numbers are given, only those maps
    //     will be restricted (i.e. not for "Go").
    //
    // Other notes:
    //   ~ Array @c[] holds all (x,y) coordinates.
    //   ~ Use @c[2] EXCEPT when maps begin dynamically
    //	  at 0: use @c[0] and Pick() offset 1.
    // --------------------------------------------------
    
    function Go {
    	mes ("Select payment method");
    	next;
    	switch(select("Zeny","Ticket","Cancel")) {
    	case 1:
    		if (Zeny < 3000) {
    		mes ("Sorry you don't have enough Zeny");
    		close;
    	}
    		Zeny -= 3000;
    		lastwarp$ = getarg(0);
    		lastwarpx = getarg(1,0);
    		lastwarpy = getarg(2,0);
    		warp getarg(0),getarg(1,0),getarg(2,0);
    		end;
    	
    
    	case 2:
    		if (countitem(7227) < 1) {
    		mes ("Sorry you don't have enough TCG Card(s)");
    		close;
    	}
    		delitem 7227,1;
    		lastwarp$ = getarg(0);
    		lastwarpx = getarg(1,0);
    		lastwarpy = getarg(2,0);
    		warp getarg(0),getarg(1,0),getarg(2,0);
    		end;
    	
    
    	case 3:
    	close;
    }
    }
    function Disp {
    	if (getargcount() < 3)
    		@menu$ = getarg(0);
    	else {
    		@menu$ = "";
    		for (.@i = getarg(1); .@i <= getarg(2); .@i++)
    			@menu$ = @menu$+getarg(0)+" "+.@i+":";
    	}
    	return;
    }
    function Pick {
    	.@warp_block = @warp_block;
    	@warp_block = 0;
    	.@select = select(@menu$);
    	if (getarg(0) == "") {
    		.@i = .@select;
    		.@map$ = getarg(.@i);
    	} else {
    		.@i = .@select-getarg(1,0);
    		.@map$ = getarg(0)+((.@i<10)?"0":"")+.@i;
    	}
    	if (.@warp_block & (1<<.@select)) {
    		message strcharinfo(PC_NAME),"This map is not enabled in "+(RENEWAL?"":"Pre-")+"Renewal.";
    		end;
    	}
    	.@x = @c[.@i*2];
    	.@y = @c[.@i*2+1];
    	deletearray @c[0],getarraysize(@c);
    	Go(.@map$,.@x,.@y);
    }
    function Restrict {
    	if ((getarg(0) == "RE" && !RENEWAL) || (getarg(0) == "Pre-RE" && RENEWAL)) {
    		if (getarg(1,0)) {
    			@warp_block = 0;
    			for (.@i = 1; .@i < getargcount(); .@i++)
    				@warp_block = @warp_block | (1<<getarg(.@i));
    		} else {
    			message strcharinfo(PC_NAME),"This map is not enabled in "+(RENEWAL?"":"Pre-")+"Renewal.";
    			end;
    		}
    	}
    	return;
    }
    
    // --------------------------------------------------
    	Towns:
    // --------------------------------------------------
    menu	"Prontera",T1, "Alberta",T2, "Aldebaran",T3, "Amatsu",T4, "Ayothaya",T5,
    		"Brasilis",T6, "Comodo",T7, "Dewata",T8, "Eclage",T9, "Einbech",T10,
    		"Einbroch",T11, "El Dicastes",T12, "Geffen",T13, "Gonryun",T14, "Hugel",T15,
    		"Izlude",T16, "Jawaii",T17, "Lighthalzen",T18, "Louyang",T19, "Lutie",T20,
    		"Malangdo",T21, "Malaya",T22, "Manuk",T23, "Midgarts Expedition Camp",T24,
    		"Mora",T25, "Morroc",T26, "Moscovia",T27, "Nameless Island",T28,
    		"Niflheim",T29, "Payon",T30, "Rachel",T31, "Splendide",T32, "Thor Camp",T33,
    		"Umbala",T34, "Veins",T35, "Yuno",T36;
    
    T1: Go("prontera",155,183);
    T2: Go("alberta",28,234);
    T3: Go("aldebaran",140,131);
    T4: Go("amatsu",198,84);
    T5: Go("ayothaya",208,166);
    T6: Restrict("RE");
    	Go("brasilis",196,217);
    T7: Go("comodo",209,143);
    T8: Restrict("RE");
    	Go("dewata",200,180);
    T9: Restrict("RE");
    	Go("ecl_in01",48,53);
    T10: Go("einbech",63,35);
    T11: Go("einbroch",64,200);
    T12: Restrict("RE");
    	 Go("dicastes01",198,187);
    T13: Go("geffen",119,59);
    T14: Go("gonryun",160,120);
    T15: Go("hugel",96,145);
    T16: Go("izlude",128,(RENEWAL?146:114));
    T17: Go("jawaii",251,132);
    T18: Go("lighthalzen",158,92);
    T19: Go("louyang",217,100);
    T20: Go("xmas",147,134);
    T21: Restrict("RE");
    	 Go("malangdo",140,114);
    T22: Restrict("RE");
    	 Go("malaya",231,200);
    T23: Go("manuk",282,138);
    T24: Go("mid_camp",210,288);
    T25: Restrict("RE");
    	 Go("mora",55,146);
    T26: Go("morocc",156,93);
    T27: Go("moscovia",223,184);
    T28: Go("nameless_n",256,215);
    T29: Go("niflheim",202,174);
    T30: Go("payon",179,100);
    T31: Go("rachel",130,110);
    T32: Go("splendide",201,147);
    T33: Go("thor_camp",246,68);
    T34: Go("umbala",97,153);
    T35: Go("veins",216,123);
    T36: Go("yuno",157,51);
    
    // --------------------------------------------------
    	Fields:
    // --------------------------------------------------
    menu	"Amatsu Fields",F1, "Ayothaya Fields",F2, "Bifrost Fields", F3,
    		"Brasilis Fields",F4, "Comodo Fields",F5, "Dewata Fields",F6,
    		"Eclage Fields",F7, "Einbroch Fields",F8, "El Dicastes Fields",F9,
    		"Geffen Fields",F10, "Gonryun Fields",F11, "Hugel Fields",F12,
    		"Lighthalzen Fields",F13, "Louyang Field",F14, "Lutie Field",F15,
    		"Malaya Fields",F16, "Manuk Fields",F17, "Mjolnir Fields",F18,
    		"Moscovia Fields",F19, "Niflheim Fields",F20, "Payon Forests",F21,
    		"Prontera Fields",F22, "Rachel Fields",F23, "Sograt Deserts",F24,
    		"Splendide Fields",F25, "Umbala Fields",F26, "Veins Fields",F27,
    		"Yuno Fields",F28;
    
    F1: setarray @c[2],190,197;
    	Disp("Amatsu Field",1,1); Pick("ama_fild");
    F2: setarray @c[2],173,134,212,150;
    	Disp("Ayothaya Field",1,2); Pick("ayo_fild");
    F3: Restrict("RE");
    	setarray @c[2],193,220,220,187;
    	Disp("Bifrost Field",1,2); Pick("bif_fild");
    F4: Restrict("RE");
    	setarray @c[2],74,32;
    	Disp("Brasilis Field",1,1); Pick("bra_fild");
    F5: Restrict("Pre-RE",5);
    	setarray @c[2],180,178,231,160,191,172,228,194,224,203,190,223,234,177,194,175,172,172;
    	Disp("Comodo Field",1,9); Pick("cmd_fild");
    F6: Restrict("RE");
    	setarray @c[2],371,212;
    	Disp("Dewata Field",1,1); Pick("dew_fild");
    F7: Restrict("RE");
    	setarray @c[2],97,314;
    	Disp("Eclage Field",1,1); Pick("ecl_fild");
    F8: Restrict("Pre-RE",2,10);
    	setarray @c[2],142,225,182,141,187,228,185,173,216,173,195,148,272,220,173,214,207,174,196,200;
    	Disp("Einbroch Field",1,10); Pick("ein_fild");
    F9: Restrict("RE");
    	setarray @c[2],143,132,143,217;
    	Disp("El Dicastes Field",1,2); Pick("dic_fild");
    F10: Restrict("Pre-RE",13,15);
    	 setarray @c[0],46,199,213,204,195,212,257,192,188,171,166,263,248,158,195,191,186,183,221,117,178,218,136,328,240,181,235,235,211,185;
    	 Disp("Geffen Field",0,14); Pick("gef_fild",1);
    F11: setarray @c[2],220,227;
    	 Disp("Gonryun Field",1,1); Pick("gon_fild");
    F12: Restrict("Pre-RE",3,7);
    	 setarray @c[2],268,101,222,193,232,185,252,189,196,106,216,220,227,197;
    	 Disp("Hugel Field",1,7); Pick("hu_fild");
    F13: setarray @c[2],240,179,185,235,240,226;
    	 Disp("Lighthalzen Field",1,3); Pick("lhz_fild");
    F14: setarray @c[2],229,187;
    	 Disp("Louyang Field",1,1); Pick("lou_fild");
    F15: setarray @c[2],115,145;
    	 Disp("Lutie Field",1,1); Pick("xmas_fild");
    F16: Restrict("RE");
    	 setarray @c[2],40,272,207,180;
    	 Disp("Malaya Field",1,2); Pick("ma_fild");
    F17: setarray @c[2],35,236,35,262,84,365;
    	 Disp("Manuk Field",1,3); Pick("man_fild");
    F18: setarray @c[2],204,120,175,193,208,213,179,180,181,240,195,270,235,202,188,215,205,144,245,223,180,206,196,208;
    	 Disp("Mjolnir Field",1,12); Pick("mjolnir_");
    F19: setarray @c[2],82,104,131,147;
    	 Disp("Moscovia Field",1,2); Pick("mosk_fild");
    F20: setarray @c[2],215,229,167,234;
    	 Disp("Niflheim Field",1,2); Pick("nif_fild");
    F21: Restrict("Pre-RE",5,11);
    	 setarray @c[2],158,206,151,219,205,148,186,247,134,204,193,235,200,177,137,189,201,224,160,205,194,150;
    	 Disp("Payon Forest",1,11); Pick("pay_fild");
    F22: setarray @c[0],208,227,190,206,240,206,190,143,307,252,239,213,185,188,193,194,187,218,210,183,195,149,198,164;
    	 Disp("Prontera Field",0,11); Pick("prt_fild",1);
    F23: Restrict("Pre-RE",2,7,9,10,11,13);
    	 setarray @c[2],192,162,235,166,202,206,202,208,225,202,202,214,263,196,217,201,87,121,277,181,221,185,175,200,174,197;
    	 Disp("Rachel Field",1,13); Pick("ra_fild");
    F24: setarray @c[2],219,205,177,206,194,182,224,170,198,216,156,187,185,263,206,228,208,238,209,223,85,97,207,202,31,195,38,195;
    	 Disp("Sograt Desert 1:Sograt Desert 2:Sograt Desert 3:Sograt Desert 7:Sograt Desert 11:Sograt Desert 12:Sograt Desert 13:Sograt Desert 16:Sograt Desert 17:Sograt Desert 18:Sograt Desert 19:Sograt Desert 20:Sograt Desert 21:Sograt Desert 22");
    	 Pick("","moc_fild01","moc_fild02","moc_fild03","moc_fild07","moc_fild11","moc_fild12","moc_fild13","moc_fild16","moc_fild17","moc_fild18","moc_fild19","moc_fild20","moc_fild21","moc_fild22");
    F25: setarray @c[2],175,186,236,184,188,204;
    	 Disp("Splendide Field",1,3); Pick("spl_fild");
    F26: setarray @c[2],217,206,223,221,237,215,202,197;
    	 Disp("Umbala Field",1,4); Pick("um_fild");
    F27: Restrict("Pre-RE",5);
    	 setarray @c[2],186,175,196,370,222,45,51,250,202,324,150,223,149,307;
    	 Disp("Veins Field",1,7); Pick("ve_fild");
    F28: Restrict("Pre-RE",5,10);
    	 setarray @c[2],189,224,192,207,221,157,226,199,223,177,187,232,231,174,196,203,183,214,200,124,195,226,210,304;
    	 Disp("Yuno Field",1,12); Pick("yuno_fild");
    
    // --------------------------------------------------
    	Dungeons:
    // --------------------------------------------------
    menu	"Abyss Lakes",D1, "Amatsu Dungeon",D2, "Anthell",D3,
    		"Ayothaya Dungeon",D4, "Beach Dungeon",D5, "Bifrost Tower",D41,
    		"Bio Labs",D6, "Brasilis Dungeon",D7, "Byalan Dungeon",D8, "Clock Tower",D9,
    		"Coal Mines",D10, "Culvert",D11, "Cursed Abbey",D12, "Dewata Dungeon",D13,
    		"Einbroch Dungeon",D14, "Gefenia",D15, "Geffen Dungeon",D16,
    		"Glast Heim",D17, "Gonryun Dungeon",D18, "Hidden Dungeon",D19,
    		"Ice Dungeon",D20, "Juperos",D21, "Kiel Dungeon",D22, "Louyang Dungeon",D23,
    		"Magma Dungeon",D24, "Malangdo Dungeon",D25, "Moscovia Dungeon",D26,
    		"Nidhogg's Dungeon",D27, "Odin Temple",D28, "Orc Dungeon",D29,
    		"Payon Dungeon",D30, "Pyramids",D31, "Rachel Sanctuary",D32,
    		"Scaraba Hole",D33, "Sphinx",D34, "Sunken Ship",D35, "Thanatos Tower",D36,
    		"Thor Volcano",D37, "Toy Factory",D38, "Turtle Dungeon",D39, "Umbala Dungeon",D40;
    
    D1: setarray @c[2],261,272,275,270,116,27;
    	Disp("Abyss Lakes",1,3); Pick("abyss_");
    D2: setarray @c[2],228,11,34,41,119,14;
    	Disp("Amatsu Dungeon",1,3); Pick("ama_dun");
    D3: setarray @c[2],35,262,168,170;
    	Disp("Anthell",1,2); Pick("anthell");
    D4: setarray @c[2],275,19,24,26;
    	Disp("Ancient Shrine Maze:Inside Ancient Shrine"); Pick("ayo_dun");
    D5: setarray @c[2],266,67,255,244,23,260;
    	Disp("Beach Dungeon",1,3); Pick("","beach_dun","beach_dun2","beach_dun3");
    D6: Restrict("RE",4);
    	setarray @c[2],150,288,150,18,140,134,244,52;
    	Disp("Bio Lab",1,4); Pick("lhz_dun");
    D7: Restrict("RE");
    	setarray @c[2],87,47,262,262;
    	Disp("Brasilis Dungeon",1,2); Pick("bra_dun");
    D8: Restrict("RE",6);
    	setarray @c[0],168,168,253,252,236,204,32,63,26,27,141,187;
    	Disp("Byalan Dungeon",1,6); Pick("iz_dun",1);
    D9: setarray @c[2],199,159,148,283,65,147,56,155,297,25,127,169,277,178,268,74;
    	Disp("Clock Tower 1:Clock Tower 2:Clock Tower 3:Clock Tower 4:Basement 1:Basement 2:Basement 3:Basement 4");
    	Pick("","c_tower1","c_tower2","c_tower3","c_tower4","alde_dun01","alde_dun02","alde_dun03","alde_dun04");
    D10: setarray @c[2],52,17,381,343,302,262;
    	 Disp("Coal Mines",1,3); Pick("mjo_dun");
    D11: setarray @c[2],131,247,19,19,180,169,100,92;
    	 Disp("Culvert",1,4); Pick("","prt_sewb1","prt_sewb2","prt_sewb3","prt_sewb4");
    D12: setarray @c[2],51,14,150,11,120,10;
    	 Disp("Cursed Abbey",1,3); Pick("abbey");
    D13: Restrict("RE");
    	 setarray @c[2],285,160,299,29;
    	 Disp("Dewata Dungeon",1,2); Pick("dew_dun");
    D14: setarray @c[2],22,14,292,290;
    	 Disp("Einbroch Dungeon",1,2); Pick("ein_dun");
    D15: setarray @c[2],40,103,203,34,266,168,130,272;
    	 Disp("Gefenia",1,4); Pick("gefenia",0);
    D16: setarray @c[0],104,99,115,236,106,132,203,200;
    	 Disp("Geffen Dungeon",1,4); Pick("gef_dun",1);
    D17: setarray @c[2],370,304,199,29,104,25,150,15,157,287,147,15,258,255,108,291,171,283,68,277,156,7,12,7,133,271,224,274,14,70,150,14;
    	 Disp("Entrance:Castle 1:Castle 2:Chivalry 1:Chivalry 2:Churchyard:Culvert 1:Culvert 2:Culvert 3:Culvert 4:St. Abbey:Staircase Dungeon:Underground Cave 1:Underground Cave 2:Underground Prison 1:Underground Prison 2");
    	 Pick("","glast_01","gl_cas01","gl_cas02","gl_knt01","gl_knt02","gl_chyard","gl_sew01","gl_sew02","gl_sew03","gl_sew04","gl_church","gl_step","gl_dun01","gl_dun02","gl_prison","gl_prison1");
    D18: setarray @c[2],153,53,28,113,68,16;
    	 Disp("Gonryun Dungeon",1,3); Pick("gon_dun");
    D19: setarray @c[2],176,7,93,20,23,8;
    	 Disp("Hidden Dungeon",1,3); Pick("prt_maze");
    D20: setarray @c[2],157,14,151,155,149,22,33,158;
    	 Disp("Ice Dungeon",1,4); Pick("ice_dun");
    D21: setarray @c[2],140,51,53,247,37,63,150,285;
    	 Disp("Entrance:Juperos 1:Juperos 2:Core");
    	 Pick("","jupe_cave","juperos_01","juperos_02","jupe_core");
    D22: setarray @c[2],28,226,41,198;
    	 Disp("Kiel Dungeon",1,2); Pick("kh_dun");
    D23: setarray @c[2],218,196,282,20,165,38;
    	 Disp("The Royal Tomb:Inside the Royal Tomb:Suei Long Gon"); Pick("lou_dun");
    D24: setarray @c[2],126,68,47,30;
    	 Disp("Magma Dungeon",1,2); Pick("mag_dun");
    D25: Restrict("RE");
    	 setarray @c[2],33,230;
    	 Disp("Malangdo Dungeon",1,1); Pick("mal_dun");
    D26: setarray @c[2],189,48,165,30,32,135;
    	 Disp("Moscovia Dungeon",1,3); Pick("mosk_dun");
    D27: setarray @c[2],61,239,60,271;
    	 Disp("Nidhogg's Dungeon",1,2); Pick("nyd_dun");
    D28: setarray @c[2],298,167,224,149,266,280;
    	 Disp("Odin Temple",1,3); Pick("odin_tem");
    D29: setarray @c[2],32,170,21,185;
    	 Disp("Orc Dungeon",1,2); Pick("orcsdun");
    D30: setarray @c[0],21,183,19,33,19,63,155,159,201,204;
    	 Disp("Payon Dungeon",1,5); Pick("pay_dun",1);
    D31: Restrict("RE",7,8);
    	 setarray @c[2],192,9,10,192,100,92,181,11,94,96,192,8,94,96,192,8;
    	 Disp("Pyramids 1:Pyramids 2:Pyramids 3:Pyramids 4:Basement 1:Basement 2:Basement 1 - Nightmare Mode:Basement 2 - Nightmare Mode");
    	 Pick("","moc_pryd01","moc_pryd02","moc_pryd03","moc_pryd04","moc_pryd05","moc_pryd06","moc_prydn1","moc_prydn2");
    D32: setarray @c[2],140,11,32,21,8,149,204,218,150,9;
    	 Disp("Rachel Sanctuary",1,5); Pick("ra_san");
    D33: Restrict("RE");
    	 setarray @c[2],364,44,101,141;
    	 Disp("Scaraba Hole",1,2); Pick("dic_dun");
    D34: setarray @c[2],288,9,149,81,210,54,10,222,100,99;
    	 Disp("Sphinx",1,5); Pick("","in_sphinx1","in_sphinx2","in_sphinx3","in_sphinx4","in_sphinx5");
    D35: setarray @c[2],69,24,102,27;
    	 Disp("Sunken Ship",1,2); Pick("treasure");
    D36: setarray @c[2],150,39,150,136,220,158,59,143,62,11,89,221,35,166,93,148,29,107,159,138,19,20,130,52;
    	 Disp("Thanatos Tower",1,12); Pick("tha_t");
    D37: setarray @c[2],21,228,75,205,34,272;
    	 Disp("Thor Volcano",1,3); Pick("thor_v");
    D38: setarray @c[2],205,15,129,133;
    	 Disp("Toy Factory",1,2); Pick("xmas_dun");
    D39: setarray @c[2],154,49,148,261,132,189,100,192;
    	 Disp("Entrance:Turtle Dungeon 1:Turtle Dungeon 2:Turtle Dungeon 3"); Pick("tur_dun");
    D40: Restrict("Pre-RE",1,2);
    	 setarray @c[2],42,31,48,30,204,78;
    	 Disp("Carpenter's Shop in the Tree:Passage to a Foreign World:Hvergermil's Fountain");
    	 Pick("","um_dun01","um_dun02","yggdrasil01");
    D41: Restrict("RE");
    	 setarray @c[2],57,13,64,88,45,14,26,23;
    	 Disp("Bifrost Tower",1,4); Pick("ecl_tdun");
    
    // --------------------------------------------------
    	Castles:
    // --------------------------------------------------
    menu	"Aldebaran Castles",C1, "Geffen Castles",C2, "Payon Castles",C3,
    		"Prontera Castles",C4, "Arunafeltz Castles",C5, "Schwaltzvalt Castles",C6;
    
    C1: setarray @c[2],48,83,95,249,142,85,239,242,264,90;
    	Disp("Neuschwanstein:Hohenschwangau:Nuenberg:Wuerzburg:Rothenburg");
    	Pick("","alde_gld","alde_gld","alde_gld","alde_gld","alde_gld");
    C2: setarray @c[2],214,75,308,240,143,240,193,278,305,87;
    	Disp("Repherion:Eeyolbriggar:Yesnelph:Bergel:Mersetzdeitz");
    	Pick("","gef_fild13","gef_fild13","gef_fild13","gef_fild13","gef_fild13");
    C3: setarray @c[2],121,233,295,116,317,293,140,160,204,266;
    	Disp("Bright Arbor:Scarlet Palace:Holy Shadow:Sacred Altar:Bamboo Grove Hill");
    	Pick("","pay_gld","pay_gld","pay_gld","pay_gld","pay_gld");
    C4: setarray @c[2],134,65,240,128,153,137,111,240,208,240;
    	Disp("Kriemhild:Swanhild:Fadhgridh:Skoegul:Gondul");
    	Pick("","prt_gld","prt_gld","prt_gld","prt_gld","prt_gld");
    C5: setarray @c[2],158,272,83,47,68,155,299,345,292,107;
    	Disp("Mardol:Cyr:Horn:Gefn:Banadis");
    	Pick("","aru_gld","aru_gld","aru_gld","aru_gld","aru_gld");
    C6: setarray @c[2],293,100,288,252,97,196,137,90,71,315;
    	Disp("Himinn:Andlangr:Viblainn:Hljod:Skidbladnir");
    	Pick("","sch_gld","sch_gld","sch_gld","sch_gld","sch_gld");
    
    // --------------------------------------------------
    	Guild_Dungeons:
    // --------------------------------------------------
    menu	"Baldur",G1, "Luina",G2, "Valkyrie",G3, "Britoniah",G4,
    		"Arunafeltz",G5, "Schwaltzvalt",G6;
    
    G1: Restrict("RE",2,3);
    	setarray @c[2],119,93,119,93,120,130;
    	Disp("Baldur F1:Baldur F2:Hall of Abyss");
    	Pick("","gld_dun01","gld_dun01_2","gld2_pay");
    G2: Restrict("RE",2,3);
    	setarray @c[2],39,161,39,161,147,155;
    	Disp("Luina F1:Luina F2:Hall of Abyss");
    	Pick("","gld_dun02","gld_dun02_2","gld2_ald");
    G3: Restrict("RE",2,3);
    	setarray @c[2],50,44,50,44,140,132;
    	Disp("Valkyrie F1:Valkyrie F2:Hall of Abyss");
    	Pick("","gld_dun03","gld_dun03_2","gld2_prt");
    G4: Restrict("RE",2,3);
    	setarray @c[2],116,45,116,45,152,118;
    	Disp("Britoniah F1:Britoniah F2:Hall of Abyss");
    	Pick("","gld_dun04","gld_dun04_2","gld2_gef");
    G5: Go("arug_dun01",199,195);
    G6: Go("schg_dun01",200,124);
    
    // --------------------------------------------------
    	Instances:
    // --------------------------------------------------
    menu	"Bakonawa Lake",I1, "Bangungot Hospital 2F",I2, "Buwaya Cave",I3,
    		"Endless Tower",I4, "Hazy Forest",I5, "Malangdo Culvert",I6, "Nidhoggur's Nest",I7,
    		"Octopus Cave",I8, "Old Glast Heim",I9, "Orc's Memory",I10, "Sealed Shrine",I11,
    		"Wolfchev's Laboratory",I12;
    
    I1: Restrict("RE");
    	Go("ma_scene01",172,175);
    I2: Restrict("RE");
    	Go("ma_dun01",151,8);
    I3: Restrict("RE");
    	Go("ma_fild02",316,317);
    I4: Go("e_tower",72,112);
    I5: Restrict("RE");
    	Go("bif_fild01",161,334);
    I6: Restrict("RE");
    	Go("mal_in01",164,21);
    I7: Go("nyd_dun02",95,193);
    I8: Restrict("RE");
    	Go("mal_dun01",152,230);
    I9: Restrict("RE");
    	Go("glast_01",204,268);
    I10: Go("gef_fild10",240,198);
    I11: Go("monk_test",306,143);
    I12: Restrict("RE");
    	Go("lhz_dun04",148,269);
    
    // --------------------------------------------------
    	Special:
    // --------------------------------------------------
    menu	"Auction Hall",S1, "Battlegrounds",S2, "Casino",S3, "Eden Group Headquarters",S4,
    		"Gonryun Arena",S5, "Izlude Arena",S6, "Monster Race Arena",S7, "Turbo Track",S8;
    
    S1: Go("auction_01",22,68);
    S2: Go("bat_room",154,150);
    S3: Go("cmd_in02",179,129);
    S4: Restrict("RE");
    	Go("moc_para01",31,14);
    S5: Go("gon_test",48,10);
    S6: Go("arena_room",100,88);
    S7: Go("p_track01",62,41);
    S8: Go("turbo_room",99,114);
    }
    
    // --------------------------------------------------
    //	Duplicates:
    // --------------------------------------------------
    alb2trea,57,70,6	duplicate(Warper)	Warper#tre	4_F_VALKYRIE
    alberta,28,240,4	duplicate(Warper)	Warper#alb	4_F_VALKYRIE
    aldebaran,145,118,4	duplicate(Warper)	Warper#alde	4_F_VALKYRIE
    amatsu,203,87,4	duplicate(Warper)	Warper#ama	4_F_VALKYRIE
    ayothaya,209,169,6	duplicate(Warper)	Warper#ayo	4_F_VALKYRIE
    comodo,194,158,4	duplicate(Warper)	Warper#com	4_F_VALKYRIE
    einbech,59,38,6	duplicate(Warper)	Warper#einbe	4_F_VALKYRIE
    einbroch,69,202,4	duplicate(Warper)	Warper#einbr	4_F_VALKYRIE
    gef_fild10,71,339,4	duplicate(Warper)	Warper#orc	4_F_VALKYRIE
    geffen,124,72,4	duplicate(Warper)	Warper#gef	4_F_VALKYRIE
    glast_01,372,308,4	duplicate(Warper)	Warper#glh	4_F_VALKYRIE
    gonryun,162,122,4	duplicate(Warper)	Warper#gon	4_F_VALKYRIE
    hugel,101,151,4	duplicate(Warper)	Warper#hug	4_F_VALKYRIE
    izlu2dun,110,92,4	duplicate(Warper)	Warper#izd	4_F_VALKYRIE
    izlude,134,150,4	duplicate(Warper)	Warper#izl	4_F_VALKYRIE	//Pre-RE: (132,120)
    jawaii,253,138,4	duplicate(Warper)	Warper#jaw	4_F_VALKYRIE
    lighthalzen,162,102,4	duplicate(Warper)	Warper#lhz	4_F_VALKYRIE
    louyang,208,103,6	duplicate(Warper)	Warper#lou	4_F_VALKYRIE
    manuk,274,146,6	duplicate(Warper)	Warper#man	4_F_VALKYRIE
    mid_camp,216,288,4	duplicate(Warper)	Warper#mid	4_F_VALKYRIE
    mjolnir_02,85,364,4	duplicate(Warper)	Warper#mjo	4_F_VALKYRIE
    moc_ruins,64,164,4	duplicate(Warper)	Warper#moc	4_F_VALKYRIE
    morocc,159,97,4	duplicate(Warper)	Warper#mor	4_F_VALKYRIE
    moscovia,229,191,4	duplicate(Warper)	Warper#mos	4_F_VALKYRIE
    nameless_n,259,213,4	duplicate(Warper)	Warper#nam	4_F_VALKYRIE
    niflheim,205,179,4	duplicate(Warper)	Warper#nif	4_F_VALKYRIE
    pay_arche,42,134,4	duplicate(Warper)	Warper#arc	4_F_VALKYRIE
    payon,182,108,4	duplicate(Warper)	Warper#pay	4_F_VALKYRIE
    prontera,159,192,4	duplicate(Warper)	Warper#prt	4_F_VALKYRIE
    prt_fild05,279,223,6	duplicate(Warper)	Warper#cul	4_F_VALKYRIE
    rachel,135,116,4	duplicate(Warper)	Warper#rac	4_F_VALKYRIE
    splendide,205,153,4	duplicate(Warper)	Warper#spl	4_F_VALKYRIE
    thor_camp,249,76,4	duplicate(Warper)	Warper#thor	4_F_VALKYRIE
    umbala,106,150,3	duplicate(Warper)	Warper#umb	4_F_VALKYRIE
    veins,214,123,4	duplicate(Warper)	Warper#ve	4_F_VALKYRIE
    xmas,150,136,6	duplicate(Warper)	Warper#xmas	4_F_VALKYRIE
    yuno,162,47,4	duplicate(Warper)	Warper#yuno	4_F_VALKYRIE
    
    // --------------------------------------------------
    //	Duplicates (Renewal):
    // --------------------------------------------------
    brasilis,201,222,4	duplicate(Warper)	Warper#bra	4_F_VALKYRIE
    dewata,204,186,6	duplicate(Warper)	Warper#dew	4_F_VALKYRIE
    dicastes01,194,194,6	duplicate(Warper)	Warper#dic	4_F_VALKYRIE
    ecl_in01,51,60,4	duplicate(Warper)	Warper#ecl	4_F_VALKYRIE
    malangdo,134,117,6	duplicate(Warper)	Warper#mal	4_F_VALKYRIE
    malaya,231,204,4	duplicate(Warper)	Warper#ma	4_F_VALKYRIE
    mora,57,152,4	duplicate(Warper)	Warper#mora	4_F_VALKYRIE

    Not sure if this is what you wanted.

    Thanks miss


  4. Catch pet or @makeegg but no egg problem

    i already search but nothing find...no error show on putty...

    example i catch poring use unripe apple i success but no pet egg in my inventory 

    also same when i use the command @makeegg poring nothing message and no pet egg on my inventory...what the problem?how to know and how to fix?


  5. 15 hours ago, melv0 said:

    just add new function 

    to

     

    Can i make an option?if don’t have item can pay with zeny...if don’t have both mes “ you don’t have enough zeny or require item

    zeny rate :

    town - 1.5k zeny

    dun - 3k zeny

     


  6. Hai all...can someone share or guide me to make default custom warper npc that will charge zeny or 1xFree Ticket for Kafra Transportation per warp

    how to edit this npc will charge the zeny or 1x Free Ticket for Kafra Transportation (7060)

    //===== Hercules Script ======================================
    //= Warper
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.4b
    //===== Description: =========================================
    //= A complete - but very condensed - warper script.
    //= Some coordinates written by Tekno-Kanix and ToastOfDoom.
    //===== Additional Comments: =================================
    //= 1.0 Initial script.
    //= 1.1 Added missing duplicates and fixed coordinates.
    //= 1.2 Added new episodes and simplified functions.
    //= 1.3 Added Renewal checks and Instances menu.
    //=     Aligned coordinates with @go.
    //= 1.4 Added new Guild Dungeons.
    //= 1.4a Slight edits.
    //= 1.4b Added Wolfchev's Laboratory warp.
    //============================================================
    
    -	script	Warper	FAKE_NPC,{
    function Go; function Disp; function Pick; function Restrict;
    
    // --------------------------------------------------
    //	Main Menu:
    // --------------------------------------------------
    
    menu	"Last Warp ^777777["+lastwarp$+"]^000000",-,
    		" ~ Towns",Towns,
    		" ~ Fields",Fields,
    		" ~ Dungeons",Dungeons,
    		" ~ Guild Castles",Castles,
    		" ~ Guild Dungeons",Guild_Dungeons,
    		" ~ Instances",Instances,
    		" ~ Special Areas",Special;
    
    	if (lastwarp$ == "")
    		message strcharinfo(PC_NAME),"You haven't warped anywhere yet.";
    	else
    		warp lastwarp$,lastwarpx,lastwarpy;
    	end;
    
    // ------------------- Functions -------------------
    // * Go("<map>",<x>,<y>);
    //	~ Warps directly to a map.
    //
    // * Disp("<Menu Option>",<first option>,<last option>);
    // * Pick("<map_prefix>"{,<index offset>});
    //	~ Dynamic menu and map selection (auto-numbered).
    //
    // * Disp("<Option 1>:<Option 2>:<etc.>");
    // * Pick("","<map1>","<map2>","<etc.>");
    //	~ Manual menu and map selection (listed).
    //
    // * Restrict("<RE | Pre-RE>"{,<menu option numbers>});
    //	~ Only allows map for Renewal or Pre-Renewal modes.
    //     If menu option numbers are given, only those maps
    //     will be restricted (i.e. not for "Go").
    //
    // Other notes:
    //   ~ Array @c[] holds all (x,y) coordinates.
    //   ~ Use @c[2] EXCEPT when maps begin dynamically
    //	  at 0: use @c[0] and Pick() offset 1.
    // --------------------------------------------------
    
    function Go {
    	lastwarp$ = getarg(0);
    	lastwarpx = getarg(1,0);
    	lastwarpy = getarg(2,0);
    	warp getarg(0),getarg(1,0),getarg(2,0);
    	end;
    }
    function Disp {
    	if (getargcount() < 3)
    		@menu$ = getarg(0);
    	else {
    		@menu$ = "";
    		for (.@i = getarg(1); .@i <= getarg(2); .@i++)
    			@menu$ = @menu$+getarg(0)+" "+.@i+":";
    	}
    	return;
    }
    function Pick {
    	.@warp_block = @warp_block;
    	@warp_block = 0;
    	.@select = select(@menu$);
    	if (getarg(0) == "") {
    		.@i = .@select;
    		.@map$ = getarg(.@i);
    	} else {
    		.@i = .@select-getarg(1,0);
    		.@map$ = getarg(0)+((.@i<10)?"0":"")+.@i;
    	}
    	if (.@warp_block & (1<<.@select)) {
    		message strcharinfo(PC_NAME),"This map is not enabled in "+(RENEWAL?"":"Pre-")+"Renewal.";
    		end;
    	}
    	.@x = @c[.@i*2];
    	.@y = @c[.@i*2+1];
    	deletearray @c[0],getarraysize(@c);
    	Go(.@map$,.@x,.@y);
    }
    function Restrict {
    	if ((getarg(0) == "RE" && !RENEWAL) || (getarg(0) == "Pre-RE" && RENEWAL)) {
    		if (getarg(1,0)) {
    			@warp_block = 0;
    			for (.@i = 1; .@i < getargcount(); .@i++)
    				@warp_block = @warp_block | (1<<getarg(.@i));
    		} else {
    			message strcharinfo(PC_NAME),"This map is not enabled in "+(RENEWAL?"":"Pre-")+"Renewal.";
    			end;
    		}
    	}
    	return;
    }
    
    // --------------------------------------------------
    	Towns:
    // --------------------------------------------------
    menu	"Prontera",T1, "Alberta",T2, "Aldebaran",T3, "Amatsu",T4, "Ayothaya",T5,
    		"Brasilis",T6, "Comodo",T7, "Dewata",T8, "Eclage",T9, "Einbech",T10,
    		"Einbroch",T11, "El Dicastes",T12, "Geffen",T13, "Gonryun",T14, "Hugel",T15,
    		"Izlude",T16, "Jawaii",T17, "Lighthalzen",T18, "Louyang",T19, "Lutie",T20,
    		"Malangdo",T21, "Malaya",T22, "Manuk",T23, "Midgarts Expedition Camp",T24,
    		"Mora",T25, "Morroc",T26, "Moscovia",T27, "Nameless Island",T28,
    		"Niflheim",T29, "Payon",T30, "Rachel",T31, "Splendide",T32, "Thor Camp",T33,
    		"Umbala",T34, "Veins",T35, "Yuno",T36;
    
    T1: Go("prontera",155,183);
    T2: Go("alberta",28,234);
    T3: Go("aldebaran",140,131);
    T4: Go("amatsu",198,84);
    T5: Go("ayothaya",208,166);
    T6: Restrict("RE");
    	Go("brasilis",196,217);
    T7: Go("comodo",209,143);
    T8: Restrict("RE");
    	Go("dewata",200,180);
    T9: Restrict("RE");
    	Go("ecl_in01",48,53);
    T10: Go("einbech",63,35);
    T11: Go("einbroch",64,200);
    T12: Restrict("RE");
    	 Go("dicastes01",198,187);
    T13: Go("geffen",119,59);
    T14: Go("gonryun",160,120);
    T15: Go("hugel",96,145);
    T16: Go("izlude",128,(RENEWAL?146:114));
    T17: Go("jawaii",251,132);
    T18: Go("lighthalzen",158,92);
    T19: Go("louyang",217,100);
    T20: Go("xmas",147,134);
    T21: Restrict("RE");
    	 Go("malangdo",140,114);
    T22: Restrict("RE");
    	 Go("malaya",231,200);
    T23: Go("manuk",282,138);
    T24: Go("mid_camp",210,288);
    T25: Restrict("RE");
    	 Go("mora",55,146);
    T26: Go("morocc",156,93);
    T27: Go("moscovia",223,184);
    T28: Go("nameless_n",256,215);
    T29: Go("niflheim",202,174);
    T30: Go("payon",179,100);
    T31: Go("rachel",130,110);
    T32: Go("splendide",201,147);
    T33: Go("thor_camp",246,68);
    T34: Go("umbala",97,153);
    T35: Go("veins",216,123);
    T36: Go("yuno",157,51);
    
    // --------------------------------------------------
    	Fields:
    // --------------------------------------------------
    menu	"Amatsu Fields",F1, "Ayothaya Fields",F2, "Bifrost Fields", F3,
    		"Brasilis Fields",F4, "Comodo Fields",F5, "Dewata Fields",F6,
    		"Eclage Fields",F7, "Einbroch Fields",F8, "El Dicastes Fields",F9,
    		"Geffen Fields",F10, "Gonryun Fields",F11, "Hugel Fields",F12,
    		"Lighthalzen Fields",F13, "Louyang Field",F14, "Lutie Field",F15,
    		"Malaya Fields",F16, "Manuk Fields",F17, "Mjolnir Fields",F18,
    		"Moscovia Fields",F19, "Niflheim Fields",F20, "Payon Forests",F21,
    		"Prontera Fields",F22, "Rachel Fields",F23, "Sograt Deserts",F24,
    		"Splendide Fields",F25, "Umbala Fields",F26, "Veins Fields",F27,
    		"Yuno Fields",F28;
    
    F1: setarray @c[2],190,197;
    	Disp("Amatsu Field",1,1); Pick("ama_fild");
    F2: setarray @c[2],173,134,212,150;
    	Disp("Ayothaya Field",1,2); Pick("ayo_fild");
    F3: Restrict("RE");
    	setarray @c[2],193,220,220,187;
    	Disp("Bifrost Field",1,2); Pick("bif_fild");
    F4: Restrict("RE");
    	setarray @c[2],74,32;
    	Disp("Brasilis Field",1,1); Pick("bra_fild");
    F5: Restrict("Pre-RE",5);
    	setarray @c[2],180,178,231,160,191,172,228,194,224,203,190,223,234,177,194,175,172,172;
    	Disp("Comodo Field",1,9); Pick("cmd_fild");
    F6: Restrict("RE");
    	setarray @c[2],371,212;
    	Disp("Dewata Field",1,1); Pick("dew_fild");
    F7: Restrict("RE");
    	setarray @c[2],97,314;
    	Disp("Eclage Field",1,1); Pick("ecl_fild");
    F8: Restrict("Pre-RE",2,10);
    	setarray @c[2],142,225,182,141,187,228,185,173,216,173,195,148,272,220,173,214,207,174,196,200;
    	Disp("Einbroch Field",1,10); Pick("ein_fild");
    F9: Restrict("RE");
    	setarray @c[2],143,132,143,217;
    	Disp("El Dicastes Field",1,2); Pick("dic_fild");
    F10: Restrict("Pre-RE",13,15);
    	 setarray @c[0],46,199,213,204,195,212,257,192,188,171,166,263,248,158,195,191,186,183,221,117,178,218,136,328,240,181,235,235,211,185;
    	 Disp("Geffen Field",0,14); Pick("gef_fild",1);
    F11: setarray @c[2],220,227;
    	 Disp("Gonryun Field",1,1); Pick("gon_fild");
    F12: Restrict("Pre-RE",3,7);
    	 setarray @c[2],268,101,222,193,232,185,252,189,196,106,216,220,227,197;
    	 Disp("Hugel Field",1,7); Pick("hu_fild");
    F13: setarray @c[2],240,179,185,235,240,226;
    	 Disp("Lighthalzen Field",1,3); Pick("lhz_fild");
    F14: setarray @c[2],229,187;
    	 Disp("Louyang Field",1,1); Pick("lou_fild");
    F15: setarray @c[2],115,145;
    	 Disp("Lutie Field",1,1); Pick("xmas_fild");
    F16: Restrict("RE");
    	 setarray @c[2],40,272,207,180;
    	 Disp("Malaya Field",1,2); Pick("ma_fild");
    F17: setarray @c[2],35,236,35,262,84,365;
    	 Disp("Manuk Field",1,3); Pick("man_fild");
    F18: setarray @c[2],204,120,175,193,208,213,179,180,181,240,195,270,235,202,188,215,205,144,245,223,180,206,196,208;
    	 Disp("Mjolnir Field",1,12); Pick("mjolnir_");
    F19: setarray @c[2],82,104,131,147;
    	 Disp("Moscovia Field",1,2); Pick("mosk_fild");
    F20: setarray @c[2],215,229,167,234;
    	 Disp("Niflheim Field",1,2); Pick("nif_fild");
    F21: Restrict("Pre-RE",5,11);
    	 setarray @c[2],158,206,151,219,205,148,186,247,134,204,193,235,200,177,137,189,201,224,160,205,194,150;
    	 Disp("Payon Forest",1,11); Pick("pay_fild");
    F22: setarray @c[0],208,227,190,206,240,206,190,143,307,252,239,213,185,188,193,194,187,218,210,183,195,149,198,164;
    	 Disp("Prontera Field",0,11); Pick("prt_fild",1);
    F23: Restrict("Pre-RE",2,7,9,10,11,13);
    	 setarray @c[2],192,162,235,166,202,206,202,208,225,202,202,214,263,196,217,201,87,121,277,181,221,185,175,200,174,197;
    	 Disp("Rachel Field",1,13); Pick("ra_fild");
    F24: setarray @c[2],219,205,177,206,194,182,224,170,198,216,156,187,185,263,206,228,208,238,209,223,85,97,207,202,31,195,38,195;
    	 Disp("Sograt Desert 1:Sograt Desert 2:Sograt Desert 3:Sograt Desert 7:Sograt Desert 11:Sograt Desert 12:Sograt Desert 13:Sograt Desert 16:Sograt Desert 17:Sograt Desert 18:Sograt Desert 19:Sograt Desert 20:Sograt Desert 21:Sograt Desert 22");
    	 Pick("","moc_fild01","moc_fild02","moc_fild03","moc_fild07","moc_fild11","moc_fild12","moc_fild13","moc_fild16","moc_fild17","moc_fild18","moc_fild19","moc_fild20","moc_fild21","moc_fild22");
    F25: setarray @c[2],175,186,236,184,188,204;
    	 Disp("Splendide Field",1,3); Pick("spl_fild");
    F26: setarray @c[2],217,206,223,221,237,215,202,197;
    	 Disp("Umbala Field",1,4); Pick("um_fild");
    F27: Restrict("Pre-RE",5);
    	 setarray @c[2],186,175,196,370,222,45,51,250,202,324,150,223,149,307;
    	 Disp("Veins Field",1,7); Pick("ve_fild");
    F28: Restrict("Pre-RE",5,10);
    	 setarray @c[2],189,224,192,207,221,157,226,199,223,177,187,232,231,174,196,203,183,214,200,124,195,226,210,304;
    	 Disp("Yuno Field",1,12); Pick("yuno_fild");
    
    // --------------------------------------------------
    	Dungeons:
    // --------------------------------------------------
    menu	"Abyss Lakes",D1, "Amatsu Dungeon",D2, "Anthell",D3,
    		"Ayothaya Dungeon",D4, "Beach Dungeon",D5, "Bifrost Tower",D41,
    		"Bio Labs",D6, "Brasilis Dungeon",D7, "Byalan Dungeon",D8, "Clock Tower",D9,
    		"Coal Mines",D10, "Culvert",D11, "Cursed Abbey",D12, "Dewata Dungeon",D13,
    		"Einbroch Dungeon",D14, "Gefenia",D15, "Geffen Dungeon",D16,
    		"Glast Heim",D17, "Gonryun Dungeon",D18, "Hidden Dungeon",D19,
    		"Ice Dungeon",D20, "Juperos",D21, "Kiel Dungeon",D22, "Louyang Dungeon",D23,
    		"Magma Dungeon",D24, "Malangdo Dungeon",D25, "Moscovia Dungeon",D26,
    		"Nidhogg's Dungeon",D27, "Odin Temple",D28, "Orc Dungeon",D29,
    		"Payon Dungeon",D30, "Pyramids",D31, "Rachel Sanctuary",D32,
    		"Scaraba Hole",D33, "Sphinx",D34, "Sunken Ship",D35, "Thanatos Tower",D36,
    		"Thor Volcano",D37, "Toy Factory",D38, "Turtle Dungeon",D39, "Umbala Dungeon",D40;
    
    D1: setarray @c[2],261,272,275,270,116,27;
    	Disp("Abyss Lakes",1,3); Pick("abyss_");
    D2: setarray @c[2],228,11,34,41,119,14;
    	Disp("Amatsu Dungeon",1,3); Pick("ama_dun");
    D3: setarray @c[2],35,262,168,170;
    	Disp("Anthell",1,2); Pick("anthell");
    D4: setarray @c[2],275,19,24,26;
    	Disp("Ancient Shrine Maze:Inside Ancient Shrine"); Pick("ayo_dun");
    D5: setarray @c[2],266,67,255,244,23,260;
    	Disp("Beach Dungeon",1,3); Pick("","beach_dun","beach_dun2","beach_dun3");
    D6: Restrict("RE",4);
    	setarray @c[2],150,288,150,18,140,134,244,52;
    	Disp("Bio Lab",1,4); Pick("lhz_dun");
    D7: Restrict("RE");
    	setarray @c[2],87,47,262,262;
    	Disp("Brasilis Dungeon",1,2); Pick("bra_dun");
    D8: Restrict("RE",6);
    	setarray @c[0],168,168,253,252,236,204,32,63,26,27,141,187;
    	Disp("Byalan Dungeon",1,6); Pick("iz_dun",1);
    D9: setarray @c[2],199,159,148,283,65,147,56,155,297,25,127,169,277,178,268,74;
    	Disp("Clock Tower 1:Clock Tower 2:Clock Tower 3:Clock Tower 4:Basement 1:Basement 2:Basement 3:Basement 4");
    	Pick("","c_tower1","c_tower2","c_tower3","c_tower4","alde_dun01","alde_dun02","alde_dun03","alde_dun04");
    D10: setarray @c[2],52,17,381,343,302,262;
    	 Disp("Coal Mines",1,3); Pick("mjo_dun");
    D11: setarray @c[2],131,247,19,19,180,169,100,92;
    	 Disp("Culvert",1,4); Pick("","prt_sewb1","prt_sewb2","prt_sewb3","prt_sewb4");
    D12: setarray @c[2],51,14,150,11,120,10;
    	 Disp("Cursed Abbey",1,3); Pick("abbey");
    D13: Restrict("RE");
    	 setarray @c[2],285,160,299,29;
    	 Disp("Dewata Dungeon",1,2); Pick("dew_dun");
    D14: setarray @c[2],22,14,292,290;
    	 Disp("Einbroch Dungeon",1,2); Pick("ein_dun");
    D15: setarray @c[2],40,103,203,34,266,168,130,272;
    	 Disp("Gefenia",1,4); Pick("gefenia",0);
    D16: setarray @c[0],104,99,115,236,106,132,203,200;
    	 Disp("Geffen Dungeon",1,4); Pick("gef_dun",1);
    D17: setarray @c[2],370,304,199,29,104,25,150,15,157,287,147,15,258,255,108,291,171,283,68,277,156,7,12,7,133,271,224,274,14,70,150,14;
    	 Disp("Entrance:Castle 1:Castle 2:Chivalry 1:Chivalry 2:Churchyard:Culvert 1:Culvert 2:Culvert 3:Culvert 4:St. Abbey:Staircase Dungeon:Underground Cave 1:Underground Cave 2:Underground Prison 1:Underground Prison 2");
    	 Pick("","glast_01","gl_cas01","gl_cas02","gl_knt01","gl_knt02","gl_chyard","gl_sew01","gl_sew02","gl_sew03","gl_sew04","gl_church","gl_step","gl_dun01","gl_dun02","gl_prison","gl_prison1");
    D18: setarray @c[2],153,53,28,113,68,16;
    	 Disp("Gonryun Dungeon",1,3); Pick("gon_dun");
    D19: setarray @c[2],176,7,93,20,23,8;
    	 Disp("Hidden Dungeon",1,3); Pick("prt_maze");
    D20: setarray @c[2],157,14,151,155,149,22,33,158;
    	 Disp("Ice Dungeon",1,4); Pick("ice_dun");
    D21: setarray @c[2],140,51,53,247,37,63,150,285;
    	 Disp("Entrance:Juperos 1:Juperos 2:Core");
    	 Pick("","jupe_cave","juperos_01","juperos_02","jupe_core");
    D22: setarray @c[2],28,226,41,198;
    	 Disp("Kiel Dungeon",1,2); Pick("kh_dun");
    D23: setarray @c[2],218,196,282,20,165,38;
    	 Disp("The Royal Tomb:Inside the Royal Tomb:Suei Long Gon"); Pick("lou_dun");
    D24: setarray @c[2],126,68,47,30;
    	 Disp("Magma Dungeon",1,2); Pick("mag_dun");
    D25: Restrict("RE");
    	 setarray @c[2],33,230;
    	 Disp("Malangdo Dungeon",1,1); Pick("mal_dun");
    D26: setarray @c[2],189,48,165,30,32,135;
    	 Disp("Moscovia Dungeon",1,3); Pick("mosk_dun");
    D27: setarray @c[2],61,239,60,271;
    	 Disp("Nidhogg's Dungeon",1,2); Pick("nyd_dun");
    D28: setarray @c[2],298,167,224,149,266,280;
    	 Disp("Odin Temple",1,3); Pick("odin_tem");
    D29: setarray @c[2],32,170,21,185;
    	 Disp("Orc Dungeon",1,2); Pick("orcsdun");
    D30: setarray @c[0],21,183,19,33,19,63,155,159,201,204;
    	 Disp("Payon Dungeon",1,5); Pick("pay_dun",1);
    D31: Restrict("RE",7,8);
    	 setarray @c[2],192,9,10,192,100,92,181,11,94,96,192,8,94,96,192,8;
    	 Disp("Pyramids 1:Pyramids 2:Pyramids 3:Pyramids 4:Basement 1:Basement 2:Basement 1 - Nightmare Mode:Basement 2 - Nightmare Mode");
    	 Pick("","moc_pryd01","moc_pryd02","moc_pryd03","moc_pryd04","moc_pryd05","moc_pryd06","moc_prydn1","moc_prydn2");
    D32: setarray @c[2],140,11,32,21,8,149,204,218,150,9;
    	 Disp("Rachel Sanctuary",1,5); Pick("ra_san");
    D33: Restrict("RE");
    	 setarray @c[2],364,44,101,141;
    	 Disp("Scaraba Hole",1,2); Pick("dic_dun");
    D34: setarray @c[2],288,9,149,81,210,54,10,222,100,99;
    	 Disp("Sphinx",1,5); Pick("","in_sphinx1","in_sphinx2","in_sphinx3","in_sphinx4","in_sphinx5");
    D35: setarray @c[2],69,24,102,27;
    	 Disp("Sunken Ship",1,2); Pick("treasure");
    D36: setarray @c[2],150,39,150,136,220,158,59,143,62,11,89,221,35,166,93,148,29,107,159,138,19,20,130,52;
    	 Disp("Thanatos Tower",1,12); Pick("tha_t");
    D37: setarray @c[2],21,228,75,205,34,272;
    	 Disp("Thor Volcano",1,3); Pick("thor_v");
    D38: setarray @c[2],205,15,129,133;
    	 Disp("Toy Factory",1,2); Pick("xmas_dun");
    D39: setarray @c[2],154,49,148,261,132,189,100,192;
    	 Disp("Entrance:Turtle Dungeon 1:Turtle Dungeon 2:Turtle Dungeon 3"); Pick("tur_dun");
    D40: Restrict("Pre-RE",1,2);
    	 setarray @c[2],42,31,48,30,204,78;
    	 Disp("Carpenter's Shop in the Tree:Passage to a Foreign World:Hvergermil's Fountain");
    	 Pick("","um_dun01","um_dun02","yggdrasil01");
    D41: Restrict("RE");
    	 setarray @c[2],57,13,64,88,45,14,26,23;
    	 Disp("Bifrost Tower",1,4); Pick("ecl_tdun");
    
    // --------------------------------------------------
    	Castles:
    // --------------------------------------------------
    menu	"Aldebaran Castles",C1, "Geffen Castles",C2, "Payon Castles",C3,
    		"Prontera Castles",C4, "Arunafeltz Castles",C5, "Schwaltzvalt Castles",C6;
    
    C1: setarray @c[2],48,83,95,249,142,85,239,242,264,90;
    	Disp("Neuschwanstein:Hohenschwangau:Nuenberg:Wuerzburg:Rothenburg");
    	Pick("","alde_gld","alde_gld","alde_gld","alde_gld","alde_gld");
    C2: setarray @c[2],214,75,308,240,143,240,193,278,305,87;
    	Disp("Repherion:Eeyolbriggar:Yesnelph:Bergel:Mersetzdeitz");
    	Pick("","gef_fild13","gef_fild13","gef_fild13","gef_fild13","gef_fild13");
    C3: setarray @c[2],121,233,295,116,317,293,140,160,204,266;
    	Disp("Bright Arbor:Scarlet Palace:Holy Shadow:Sacred Altar:Bamboo Grove Hill");
    	Pick("","pay_gld","pay_gld","pay_gld","pay_gld","pay_gld");
    C4: setarray @c[2],134,65,240,128,153,137,111,240,208,240;
    	Disp("Kriemhild:Swanhild:Fadhgridh:Skoegul:Gondul");
    	Pick("","prt_gld","prt_gld","prt_gld","prt_gld","prt_gld");
    C5: setarray @c[2],158,272,83,47,68,155,299,345,292,107;
    	Disp("Mardol:Cyr:Horn:Gefn:Banadis");
    	Pick("","aru_gld","aru_gld","aru_gld","aru_gld","aru_gld");
    C6: setarray @c[2],293,100,288,252,97,196,137,90,71,315;
    	Disp("Himinn:Andlangr:Viblainn:Hljod:Skidbladnir");
    	Pick("","sch_gld","sch_gld","sch_gld","sch_gld","sch_gld");
    
    // --------------------------------------------------
    	Guild_Dungeons:
    // --------------------------------------------------
    menu	"Baldur",G1, "Luina",G2, "Valkyrie",G3, "Britoniah",G4,
    		"Arunafeltz",G5, "Schwaltzvalt",G6;
    
    G1: Restrict("RE",2,3);
    	setarray @c[2],119,93,119,93,120,130;
    	Disp("Baldur F1:Baldur F2:Hall of Abyss");
    	Pick("","gld_dun01","gld_dun01_2","gld2_pay");
    G2: Restrict("RE",2,3);
    	setarray @c[2],39,161,39,161,147,155;
    	Disp("Luina F1:Luina F2:Hall of Abyss");
    	Pick("","gld_dun02","gld_dun02_2","gld2_ald");
    G3: Restrict("RE",2,3);
    	setarray @c[2],50,44,50,44,140,132;
    	Disp("Valkyrie F1:Valkyrie F2:Hall of Abyss");
    	Pick("","gld_dun03","gld_dun03_2","gld2_prt");
    G4: Restrict("RE",2,3);
    	setarray @c[2],116,45,116,45,152,118;
    	Disp("Britoniah F1:Britoniah F2:Hall of Abyss");
    	Pick("","gld_dun04","gld_dun04_2","gld2_gef");
    G5: Go("arug_dun01",199,195);
    G6: Go("schg_dun01",200,124);
    
    // --------------------------------------------------
    	Instances:
    // --------------------------------------------------
    menu	"Bakonawa Lake",I1, "Bangungot Hospital 2F",I2, "Buwaya Cave",I3,
    		"Endless Tower",I4, "Hazy Forest",I5, "Malangdo Culvert",I6, "Nidhoggur's Nest",I7,
    		"Octopus Cave",I8, "Old Glast Heim",I9, "Orc's Memory",I10, "Sealed Shrine",I11,
    		"Wolfchev's Laboratory",I12;
    
    I1: Restrict("RE");
    	Go("ma_scene01",172,175);
    I2: Restrict("RE");
    	Go("ma_dun01",151,8);
    I3: Restrict("RE");
    	Go("ma_fild02",316,317);
    I4: Go("e_tower",72,112);
    I5: Restrict("RE");
    	Go("bif_fild01",161,334);
    I6: Restrict("RE");
    	Go("mal_in01",164,21);
    I7: Go("nyd_dun02",95,193);
    I8: Restrict("RE");
    	Go("mal_dun01",152,230);
    I9: Restrict("RE");
    	Go("glast_01",204,268);
    I10: Go("gef_fild10",240,198);
    I11: Go("monk_test",306,143);
    I12: Restrict("RE");
    	Go("lhz_dun04",148,269);
    
    // --------------------------------------------------
    	Special:
    // --------------------------------------------------
    menu	"Auction Hall",S1, "Battlegrounds",S2, "Casino",S3, "Eden Group Headquarters",S4,
    		"Gonryun Arena",S5, "Izlude Arena",S6, "Monster Race Arena",S7, "Turbo Track",S8;
    
    S1: Go("auction_01",22,68);
    S2: Go("bat_room",154,150);
    S3: Go("cmd_in02",179,129);
    S4: Restrict("RE");
    	Go("moc_para01",31,14);
    S5: Go("gon_test",48,10);
    S6: Go("arena_room",100,88);
    S7: Go("p_track01",62,41);
    S8: Go("turbo_room",99,114);
    }
    
    // --------------------------------------------------
    //	Duplicates:
    // --------------------------------------------------
    alb2trea,57,70,6	duplicate(Warper)	Warper#tre	4_F_VALKYRIE
    alberta,28,240,4	duplicate(Warper)	Warper#alb	4_F_VALKYRIE
    aldebaran,145,118,4	duplicate(Warper)	Warper#alde	4_F_VALKYRIE
    amatsu,203,87,4	duplicate(Warper)	Warper#ama	4_F_VALKYRIE
    ayothaya,209,169,6	duplicate(Warper)	Warper#ayo	4_F_VALKYRIE
    comodo,194,158,4	duplicate(Warper)	Warper#com	4_F_VALKYRIE
    einbech,59,38,6	duplicate(Warper)	Warper#einbe	4_F_VALKYRIE
    einbroch,69,202,4	duplicate(Warper)	Warper#einbr	4_F_VALKYRIE
    gef_fild10,71,339,4	duplicate(Warper)	Warper#orc	4_F_VALKYRIE
    geffen,124,72,4	duplicate(Warper)	Warper#gef	4_F_VALKYRIE
    glast_01,372,308,4	duplicate(Warper)	Warper#glh	4_F_VALKYRIE
    gonryun,162,122,4	duplicate(Warper)	Warper#gon	4_F_VALKYRIE
    hugel,101,151,4	duplicate(Warper)	Warper#hug	4_F_VALKYRIE
    izlu2dun,110,92,4	duplicate(Warper)	Warper#izd	4_F_VALKYRIE
    izlude,134,150,4	duplicate(Warper)	Warper#izl	4_F_VALKYRIE	//Pre-RE: (132,120)
    jawaii,253,138,4	duplicate(Warper)	Warper#jaw	4_F_VALKYRIE
    lighthalzen,162,102,4	duplicate(Warper)	Warper#lhz	4_F_VALKYRIE
    louyang,208,103,6	duplicate(Warper)	Warper#lou	4_F_VALKYRIE
    manuk,274,146,6	duplicate(Warper)	Warper#man	4_F_VALKYRIE
    mid_camp,216,288,4	duplicate(Warper)	Warper#mid	4_F_VALKYRIE
    mjolnir_02,85,364,4	duplicate(Warper)	Warper#mjo	4_F_VALKYRIE
    moc_ruins,64,164,4	duplicate(Warper)	Warper#moc	4_F_VALKYRIE
    morocc,159,97,4	duplicate(Warper)	Warper#mor	4_F_VALKYRIE
    moscovia,229,191,4	duplicate(Warper)	Warper#mos	4_F_VALKYRIE
    nameless_n,259,213,4	duplicate(Warper)	Warper#nam	4_F_VALKYRIE
    niflheim,205,179,4	duplicate(Warper)	Warper#nif	4_F_VALKYRIE
    pay_arche,42,134,4	duplicate(Warper)	Warper#arc	4_F_VALKYRIE
    payon,182,108,4	duplicate(Warper)	Warper#pay	4_F_VALKYRIE
    prontera,159,192,4	duplicate(Warper)	Warper#prt	4_F_VALKYRIE
    prt_fild05,279,223,6	duplicate(Warper)	Warper#cul	4_F_VALKYRIE
    rachel,135,116,4	duplicate(Warper)	Warper#rac	4_F_VALKYRIE
    splendide,205,153,4	duplicate(Warper)	Warper#spl	4_F_VALKYRIE
    thor_camp,249,76,4	duplicate(Warper)	Warper#thor	4_F_VALKYRIE
    umbala,106,150,3	duplicate(Warper)	Warper#umb	4_F_VALKYRIE
    veins,214,123,4	duplicate(Warper)	Warper#ve	4_F_VALKYRIE
    xmas,150,136,6	duplicate(Warper)	Warper#xmas	4_F_VALKYRIE
    yuno,162,47,4	duplicate(Warper)	Warper#yuno	4_F_VALKYRIE
    
    // --------------------------------------------------
    //	Duplicates (Renewal):
    // --------------------------------------------------
    brasilis,201,222,4	duplicate(Warper)	Warper#bra	4_F_VALKYRIE
    dewata,204,186,6	duplicate(Warper)	Warper#dew	4_F_VALKYRIE
    dicastes01,194,194,6	duplicate(Warper)	Warper#dic	4_F_VALKYRIE
    ecl_in01,51,60,4	duplicate(Warper)	Warper#ecl	4_F_VALKYRIE
    malangdo,134,117,6	duplicate(Warper)	Warper#mal	4_F_VALKYRIE
    malaya,231,204,4	duplicate(Warper)	Warper#ma	4_F_VALKYRIE
    mora,57,152,4	duplicate(Warper)	Warper#mora	4_F_VALKYRIE

     


  7. hai all i got problem with pet egg or pet...

    the problem is when i catch poring use unripe apple success but no egg in inventory...

    also i try @makeegg 1002 but also no egg in inventory...

    can someone make listing all files related with pet or pet egg i need to search 1 by 1

    src/script/conf/client..all related please tell me


  8. 14 hours ago, Kenpachi said:

    Hi.

    Alter your SQL table:

    ALTER TABLE `viptable` ADD COLUMN `insert_on` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `email`;

    
    ALTER TABLE `viptable` ADD COLUMN `insert_on` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `email`;

    Or recreate it:

    DROP TABLE IF EXISTS `viptable`; CREATE TABLE `viptable` ( `vipacc_id` int(11) unsigned NOT NULL default '0', `vip_id` varchar(255) NOT NULL default '', `days` int(11) NOT NULL default '0', `email` varchar(39) NOT NULL default '', `insert_on` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`vipacc_id`), KEY `name` (`vip_id`) ) ENGINE=MyISAM;

    
    DROP TABLE IF EXISTS `viptable`;
    CREATE TABLE `viptable` (
      `vipacc_id` int(11) unsigned NOT NULL default '0',
      `vip_id` varchar(255) NOT NULL default '',
      `days` int(11) NOT NULL default '0',
      `email` varchar(39) NOT NULL default '',
      `insert_on` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY  (`vipacc_id`),
      KEY `name` (`vip_id`)
    ) ENGINE=MyISAM;


    Change your function (note line 2):

    function script F_TicketAddVip { Query_SQL "DELETE FROM `viptable` WHERE `vipacc_id` = '"+GetCharID(3)+"' AND DATEDIFF(DATE_ADD(`insert_on`, INTERVAL `days` DAY), NOW()) < 0"; // remove expired VIP status before reapplying Query_SQL "SELECT `days` FROM `viptable` WHERE `vipacc_id` = '"+GetCharID(3)+"'", .@checkDays; if (.@checkDays > 0) { Set .@setDays, (.@checkDays + 30); Query_SQL "UPDATE `viptable` SET `days`='"+.@setDays+"' WHERE `vipacc_id`='"+GetCharID(3)+"'"; Query_SQL "SELECT `group_id` FROM `login` WHERE `account_id`='"+GetCharID(3)+"'", .@userLevel; If (.@userLevel < 1) Query_SQL "UPDATE `login` SET `group_id`='2' WHERE `account_id`='"+GetCharID(3)+"'"; } Else { Query_SQL "UPDATE `login` SET `group_id`='2' WHERE `account_id`='"+GetCharID(3)+"'"; Query_SQL "SELECT `userid` FROM `login` WHERE `account_id`='"+GetCharID(3)+"'", .@userID$; Query_SQL "SELECT `email` FROM `login` WHERE `account_id`='"+GetCharID(3)+"'", .@userEmail$; Query_SQL "INSERT INTO `viptable` (`vipacc_id`,`vip_id`,`days`,`email`) VALUES ('"+GetCharID(3)+"','"+.@userID$+"','30','"+.@accEmail$+"')"; } AtCommand "@reloadpcdb"; dispbottom "You received 30 days of VIP Account, congrats!"; specialeffect2 338; End; Return; }

    
    function	script	F_TicketAddVip	{
    	Query_SQL "DELETE FROM `viptable` WHERE `vipacc_id` = '"+GetCharID(3)+"' AND DATEDIFF(DATE_ADD(`insert_on`, INTERVAL `days` DAY), NOW()) < 0"; // remove expired VIP status before reapplying
    	Query_SQL "SELECT `days` FROM `viptable` WHERE `vipacc_id` = '"+GetCharID(3)+"'", .@checkDays;
    	if (.@checkDays > 0) {
    		Set .@setDays, (.@checkDays + 30);
    		Query_SQL "UPDATE `viptable` SET `days`='"+.@setDays+"' WHERE `vipacc_id`='"+GetCharID(3)+"'";
    		Query_SQL "SELECT `group_id` FROM `login` WHERE  `account_id`='"+GetCharID(3)+"'", .@userLevel;
    		If (.@userLevel < 1) 
    			Query_SQL "UPDATE `login` SET `group_id`='2' WHERE `account_id`='"+GetCharID(3)+"'";
    	}
    	Else {
    		Query_SQL "UPDATE `login` SET `group_id`='2' WHERE `account_id`='"+GetCharID(3)+"'";
    		Query_SQL "SELECT `userid` FROM `login` WHERE `account_id`='"+GetCharID(3)+"'", .@userID$;
    		Query_SQL "SELECT `email` FROM `login` WHERE `account_id`='"+GetCharID(3)+"'", .@userEmail$;
    		Query_SQL "INSERT INTO `viptable` (`vipacc_id`,`vip_id`,`days`,`email`) VALUES ('"+GetCharID(3)+"','"+.@userID$+"','30','"+.@accEmail$+"')";
    	}
    	AtCommand "@reloadpcdb";
    	dispbottom "You received 30 days of VIP Account, congrats!";
    	specialeffect2 338;
    	End;
    Return;
    }

     

    The info script could look like this:

    - script VIP_STATUS FAKE_NPC,{ OnPCLoginEvent: if (getgroupid() >= 2) { Query_SQL "SELECT DATE(DATE_ADD(`insert_on`, INTERVAL `days` DAY)), DATEDIFF(DATE_ADD(`insert_on`, INTERVAL `days` DAY), NOW()) FROM `viptable` WHERE `vipacc_id` = '"+GetCharID(3)+"'", .@expire_date$, .@days_left; dispbottom "========================"; dispbottom "Account Status : VIP"; dispbottom "Expire Date : " + .@expire_date$; dispbottom "Time left : " + .@days_left; dispbottom "========================"; end; } }

    
    -    script    VIP_STATUS    FAKE_NPC,{
    OnPCLoginEvent:
    	if (getgroupid() >= 2) {
    		Query_SQL "SELECT DATE(DATE_ADD(`insert_on`, INTERVAL `days` DAY)), DATEDIFF(DATE_ADD(`insert_on`, INTERVAL `days` DAY), NOW()) FROM `viptable` WHERE `vipacc_id` = '"+GetCharID(3)+"'", .@expire_date$, .@days_left;
    		dispbottom "========================";
    		dispbottom "Account Status : VIP";
    		dispbottom "Expire Date : " + .@expire_date$;
    		dispbottom "Time left : " + .@days_left;
    		dispbottom "========================";
    		end;
    	}
    }



    ~Kenpachi

    Thanks @Kenpachi


  9. hi all i use vip script base on group id...but how to put message expired time for that script?i need change the script?i need alter SQL table? can someone teach me?

    here vip script that i use..

    Quote
    
    function	script	F_TicketAddVip	{
    	Query_SQL "SELECT `days` FROM `viptable` WHERE `vipacc_id` = '"+GetCharID(3)+"'", .@checkDays;
    	if (.@checkDays > 0) {
    		Set .@setDays, (.@checkDays + 30);
    		Query_SQL "UPDATE `viptable` SET `days`='"+.@setDays+"' WHERE `vipacc_id`='"+GetCharID(3)+"'";
    		Query_SQL "SELECT `group_id` FROM `login` WHERE  `account_id`='"+GetCharID(3)+"'", .@userLevel;
    		If (.@userLevel < 1) 
    			Query_SQL "UPDATE `login` SET `group_id`='2' WHERE `account_id`='"+GetCharID(3)+"'";
    	}
    	Else {
    		Query_SQL "UPDATE `login` SET `group_id`='2' WHERE `account_id`='"+GetCharID(3)+"'";
    		Query_SQL "SELECT `userid` FROM `login` WHERE `account_id`='"+GetCharID(3)+"'", .@userID$;
    		Query_SQL "SELECT `email` FROM `login` WHERE `account_id`='"+GetCharID(3)+"'", .@userEmail$;
    		Query_SQL "INSERT INTO `viptable` (`vipacc_id`,`vip_id`,`days`,`email`) VALUES ('"+GetCharID(3)+"','"+.@userID$+"','30','"+.@accEmail$+"')";
    	}
    	AtCommand "@reloadpcdb";
    	dispbottom "You received 30 days of VIP Account, congrats!";
    	specialeffect2 338;
    	End;
    Return;
    }

    here SQL table

    Quote
    
    DROP TABLE IF EXISTS `viptable`;
    CREATE TABLE `viptable` (
      `vipacc_id` int(11) unsigned NOT NULL default '0',
      `vip_id` varchar(255) NOT NULL default '',
      `days` int(11) NOT NULL default '0',
      `email` varchar(39) NOT NULL default '',
      PRIMARY KEY  (`vipacc_id`),
      KEY `name` (`vip_id`)
    ) ENGINE=MyISAM; 
    
    INSERT INTO `viptable` (`vipacc_id`, `vip_id`, `days`, `email`) VALUES ('1', 'VIP', '1', '[email protected]');

    here the script can someone teach me how add?

    Quote

    -    script    VIP_STATUS    FAKE_NPC,{
    OnPCLoginEvent:
        if (getgroupid() >= 2) {
                dispbottom "========================";
                dispbottom "Account Status : VIP";
                dispbottom "Expire Date : "+???;
                dispbottom "Time left : "+???
                dispbottom "========================";
          end;
        }
    }

     


  10. On 11/2/2019 at 5:38 AM, trackxart said:

    Hi,

    First you will need to create 3 custom item into your item_db

    30044,VIP_Ticket_7,VIP Ticket 7D,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "F_TicketAddVip7"; },{},{} 30045,VIP_Ticket_15,VIP Ticket 15D,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "F_TicketAddVip15"; },{},{} 30046,VIP_Ticket_30,VIP Ticket 30D,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "F_TicketAddVip"; },{},{}

    
    30044,VIP_Ticket_7,VIP Ticket 7D,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "F_TicketAddVip7"; },{},{}
    30045,VIP_Ticket_15,VIP Ticket 15D,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "F_TicketAddVip15"; },{},{}
    30046,VIP_Ticket_30,VIP Ticket 30D,2,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc "F_TicketAddVip"; },{},{}

    Than you will need to make script with function to add their VIP, so you will need 3 functions here, F_TicketAddvip7, F_TicketAddVip15 and F_TicketAddVip.

     

    Function:

    Inside those function you can use something like these to add 30 days (you will need to duplicate this functions to make the 7 days and 15 days).
     

    function script F_TicketAddVip { Query_SQL "SELECT `days` FROM `viptable` WHERE `vipacc_id` = '"+GetCharID(3)+"'", .@checkDays; if (.@checkDays > 0) { Set .@setDays, (.@checkDays + 30); Query_SQL "UPDATE `viptable` SET `days`='"+.@setDays+"' WHERE `vipacc_id`='"+GetCharID(3)+"'"; Query_SQL "SELECT `group_id` FROM `login` WHERE `account_id`='"+GetCharID(3)+"'", .@userLevel; If (.@userLevel < 1) Query_SQL "UPDATE `login` SET `group_id`='2' WHERE `account_id`='"+GetCharID(3)+"'"; } Else { Query_SQL "UPDATE `login` SET `group_id`='2' WHERE `account_id`='"+GetCharID(3)+"'"; Query_SQL "SELECT `userid` FROM `login` WHERE `account_id`='"+GetCharID(3)+"'", .@userID$; Query_SQL "SELECT `email` FROM `login` WHERE `account_id`='"+GetCharID(3)+"'", .@userEmail$; Query_SQL "INSERT INTO `viptable` (`vipacc_id`,`vip_id`,`days`,`email`) VALUES ('"+GetCharID(3)+"','"+.@userID$+"','30','"+.@accEmail$+"')"; } AtCommand "@reloadpcdb"; dispbottom "You received 30 days of VIP Account, congrats!"; specialeffect2 338; End; Return; }

    
    function	script	F_TicketAddVip	{
    	Query_SQL "SELECT `days` FROM `viptable` WHERE `vipacc_id` = '"+GetCharID(3)+"'", .@checkDays;
    	if (.@checkDays > 0) {
    		Set .@setDays, (.@checkDays + 30);
    		Query_SQL "UPDATE `viptable` SET `days`='"+.@setDays+"' WHERE `vipacc_id`='"+GetCharID(3)+"'";
    		Query_SQL "SELECT `group_id` FROM `login` WHERE  `account_id`='"+GetCharID(3)+"'", .@userLevel;
    		If (.@userLevel < 1) 
    			Query_SQL "UPDATE `login` SET `group_id`='2' WHERE `account_id`='"+GetCharID(3)+"'";
    	}
    	Else {
    		Query_SQL "UPDATE `login` SET `group_id`='2' WHERE `account_id`='"+GetCharID(3)+"'";
    		Query_SQL "SELECT `userid` FROM `login` WHERE `account_id`='"+GetCharID(3)+"'", .@userID$;
    		Query_SQL "SELECT `email` FROM `login` WHERE `account_id`='"+GetCharID(3)+"'", .@userEmail$;
    		Query_SQL "INSERT INTO `viptable` (`vipacc_id`,`vip_id`,`days`,`email`) VALUES ('"+GetCharID(3)+"','"+.@userID$+"','30','"+.@accEmail$+"')";
    	}
    	AtCommand "@reloadpcdb";
    	dispbottom "You received 30 days of VIP Account, congrats!";
    	specialeffect2 338;
    	End;
    Return;
    }

     

    You will need this SQL CODE

    DROP TABLE IF EXISTS `viptable`; CREATE TABLE `viptable` ( `vipacc_id` int(11) unsigned NOT NULL default '0', `vip_id` varchar(255) NOT NULL default '', `days` int(11) NOT NULL default '0', `email` varchar(39) NOT NULL default '', PRIMARY KEY (`vipacc_id`), KEY `name` (`vip_id`) ) ENGINE=MyISAM; INSERT INTO `viptable` (`vipacc_id`, `vip_id`, `days`, `email`) VALUES ('1', 'VIP', '1', '[email protected]');

    
    DROP TABLE IF EXISTS `viptable`;
    CREATE TABLE `viptable` (
      `vipacc_id` int(11) unsigned NOT NULL default '0',
      `vip_id` varchar(255) NOT NULL default '',
      `days` int(11) NOT NULL default '0',
      `email` varchar(39) NOT NULL default '',
      PRIMARY KEY  (`vipacc_id`),
      KEY `name` (`vip_id`)
    ) ENGINE=MyISAM; 
    
    INSERT INTO `viptable` (`vipacc_id`, `vip_id`, `days`, `email`) VALUES ('1', 'VIP', '1', '[email protected]');

    Dont forget to add the items into your DATA Folder with some sprite too.


    With this you will have your VIP system with 7,15 and 30 days.

    To custom aura you could use @Functor system, it's paid custom aura.

     

    hi sir @trackxart i have problem with the function script how to fix this?

    here the error...

    viperror.png


  11. Hi all can teach me or guide me to make this script?

    script i need is like this...

    when server reach top peak step by step this NPC will give a reward 

    Example :

    *Top Peak Reach Reward*
    100 player - 3x Battle Manual 300%
    200 player - 3 Bubble Gums
    300 player -5 elite seige box
    400 player - 5 ticket of kafra transportation + 2x HE gums
    500 player - 2x Leap of Fantasy

    Thanks in advance 
     
     


  12. 35 minutes ago, Ridley said:

    It's all explained inside the script

     

    
    //AddCollection("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Item ID>,<Item Amount>,...);
    
    AddCollection("<Test Collect>",1,99,501,10,0,0,0,501,10);

    you just add more items at the end

    
    AddCollection("<Test Collect>",1,99,501,10,0,0,0,501,10,502,15,503,20);

     

    thank you very much sir


  13. I got error when i setup..can someone teach me how to exactly setup this script

    here link original https://raw.githubusercontent.com/HerculesWS/Hercules/stable/npc/custom/quests/questboard.txt

    here i try to setup 

    Quote

    //===== Hercules Script ======================================
    //= tr0n's Questboard
    //===== By: ==================================================
    //= tr0n
    //===== Current Version: =====================================
    //= 1.4.4
    //===== Description: =========================================
    //= Easily add collection and hunting quests.
    //===== Additional Comments: =================================
    // 1.0.0 Release
    // 1.1.0 Added zeny reward
    // 1.2.0 Rewrote checkmob and killcounter
    // 1.3.1 Added level restriction
    // 1.3.4 Added Reward Item Amount
    // 1.4.4 Added Quest delay
    //============================================================

    prontera,129,215,5    script    Questboard    4_BOARD3,{
        if(c_run==1){
            mes "[^FF7700Questboard^000000]";
            mes "^0000FF"+getd("." + currentquest$ + "_collectionname$")+"^000000";
            mes "--------------------------------";
            for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_collectionitem")); set .@j,.@j+2) {
                mes "^FF0000"+getitemname(getd("."+currentquest$+"_collectionitem["+.@j+"]"))+" - "+countitem(getd("."+currentquest$+"_collectionitem["+.@j+"]"))+"/"+getd("."+currentquest$+"_collectionitem["+(.@j+1)+"]")+" ea.^000000";
            }
            mes "--------------------------------";
            mes "[Reward]";
            mes "Item: ^0000FF"+((getd("." +currentquest$+"_collectionprize"))?getitemname(getd("." +currentquest$+"_collectionprize"))+" - "+getd("." +currentquest$+"_collectionamount")+" ea.^000000":"Nothing^000000");
            mes "Zeny: ^0000FF"+getd("." +currentquest$+"_collectionzeny")+"^000000";
            mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+0+"]")+"^000000";
            mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+1+"]")+"^000000";
            next;
            if(select("Finish", "Abort") == 2){
                mes "[^FF7700Questboard^000000]";
                mes "Quest aborted.";
                set currentquest$, "";
                set c_run, 0;
                close;
            }
            goto L_checkitems;
        }

        if(h_run==1){
            mes "[^FF7700Questboard^000000]";
            mes "^0000FF"+getd("." + currentquest$ + "_huntingname$")+"^000000";
            mes "--------------------------------";
            for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_huntingmob")); set .@j,.@j+2) {
                set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@j)+"]");
                mes "^FF0000"+strmobinfo(1,getd("."+currentquest$+"_huntingmob["+.@j+"]"))+" - "+getd(currentquest$+"_"+.@currentmob+"_"+(.@j+1)+"_killcount")+"/"+getd("."+currentquest$+"_huntingmob["+(.@j+1)+"]")+" ea.^000000";
            }
            mes "--------------------------------";
            mes "[Reward]";
            mes "Item: ^0000FF"+((getd("." +currentquest$+"_huntingprize"))?getitemname(getd("." +currentquest$+"_huntingprize"))+" - "+getd("." +currentquest$+"_huntingamount")+" ea.^000000":"Nothing^000000");
            mes "Zeny: ^0000FF"+getd("." +currentquest$+"_huntingzeny")+"^000000";
            mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+0+"]")+"^000000";
            mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+1+"]")+"^000000";
            next;
            if(select("Finish", "Abort") == 2){
                mes "[^FF7700Questboard^000000]";
                mes "Quest aborted.";
                for(set .@x, 1; .@x < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@x,.@x+2){
                    set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@x-1)+"]");
                    setd(currentquest$+"_"+.@currentmob+"_"+.@x+"_killcount", 0);
                }
                set currentquest$, "";
                set h_run, 0;
                close;
            }
            goto L_checkmobs;
        }

    L_questmenu:
        mes "[^FF7700Questboard^000000]";
        mes "Select category:";
        next;

        switch(select((.collection)?"Collection Quests":"",
                    (.hunting)?"Hunting Quests":"",
                    "Exit")) {
        case 1:
            set .@collectmenu$, "";
            for( set .@i,0; .@i < .collectionquestcount; set .@i,.@i+1) {
                if (.@i) set .@collectmenu$,.@collectmenu$+":";
                set .@collectmenu$, .@collectmenu$ + "[" + getd("." +(.@i+1)+"_collectionmin") + " - " + getd("." +(.@i+1)+"_collectionmax") + "] " + getd("." + (.@i+1) + "_collectionname$");
            }
            set .@selection,select(.@collectmenu$);
            if(gettimetick(2) < getd(.@selection + "_collection_delay")){
                set .@time_left, getd(.@selection + "_collection_delay")-gettimetick(2);
                mes "[^FF7700Questboard^000000]";
                if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again.";
                if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again.";
                mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again.";
                close;
            }
            mes "[^FF7700Questboard^000000]";
            mes "^0000FF"+getd("." + .@selection + "_collectionname$")+"^000000";
            mes "--------------------------------";
            for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_collectionitem")); set .@j,.@j+2) {
                mes "^FF0000"+getitemname(getd("."+.@selection+"_collectionitem["+.@j+"]"))+" - "+getd("."+.@selection+"_collectionitem["+(.@j+1)+"]")+" ea.^000000";
            }
            mes "--------------------------------";
            mes "[Reward]";
            mes "Item: ^0000FF"+((getd("." +.@selection+"_collectionprize"))?getitemname(getd("." +.@selection+"_collectionprize"))+" - "+getd("." +.@selection+"_collectionamount")+" ea.^000000":"Nothing^000000");
            mes "Zeny: ^0000FF"+getd("." +.@selection+"_collectionzeny")+"^000000";
            mes "Base EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+0+"]")+"^000000";
            mes "Job EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+1+"]")+"^000000";
            next;
            if(select("Accept", "Decline") == 2){
                close;
            }
            if(BaseLevel >= getd("." +.@selection+"_collectionmin") && BaseLevel <= getd("." +.@selection+"_collectionmax"))
            {
                mes "[^FF7700Questboard^000000]";
                mes "Quest accepted.";
                set c_run, 1;
                set currentquest$, .@selection;
                close;
            }
            else
            {
                mes "[^FF7700Questboard^000000]";
                mes "You don't have the required";
                mes "level to do this quest.";
                close;
            }

        case 2:
            set .@huntmenu$, "";
            for( set .@i,0; .@i < .huntingquestcount; set .@i,.@i+1) {
                if (.@i) set .@huntmenu$,.@huntmenu$+":";
                set .@huntmenu$, .@huntmenu$ + "[" + getd("." +(.@i+1)+"_huntingmin") + " - " + getd("." +(.@i+1)+"_huntingmax") + "] " + getd("." + (.@i+1) + "_huntingname$");
            }
            set .@selection,select(.@huntmenu$);
            if(gettimetick(2) < getd(.@selection + "_hunting_delay")){
                set .@time_left, getd(.@selection + "_hunting_delay")-gettimetick(2);
                mes "[^FF7700Questboard^000000]";
                if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again.";
                if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again.";
                mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again.";
                close;
            }
            mes "[^FF7700Questboard^000000]";
            mes "^0000FF"+getd("." + .@selection + "_huntingname$")+"^000000";
            mes "--------------------------------";
            for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_huntingmob")); set .@j,.@j+2) {
                mes "^FF0000"+strmobinfo(1,getd("."+.@selection+"_huntingmob["+.@j+"]"))+" - "+getd("."+.@selection+"_huntingmob["+(.@j+1)+"]")+" ea.^000000";
            }
            mes "--------------------------------";
            mes "[Reward]";
            mes "Item: ^0000FF"+((getd("." +.@selection+"_huntingprize"))?getitemname(getd("." +.@selection+"_huntingprize"))+" - "+getd("." +.@selection+"_huntingamount")+" ea.^000000":"Nothing^000000");
            mes "Zeny: ^0000FF"+getd("." +.@selection+"_huntingzeny")+"^000000";
            mes "Base EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+0+"]")+"^000000";
            mes "Job EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+1+"]")+"^000000";
            next;
            if(select("Accept", "Decline") == 2){
                close;
            }
            if(BaseLevel >= getd("." +.@selection+"_huntingmin") && BaseLevel <= getd("." +.@selection+"_huntingmax"))
            {
                mes "[^FF7700Questboard^000000]";
                mes "Quest accepted.";
                set h_run, 1;
                set currentquest$, .@selection;
                close;
            }
            else
            {
                mes "[^FF7700Questboard^000000]";
                mes "You don't have the required";
                mes "level to do this quest.";
                close;
            }
        case 3:
            close;
        }

    L_checkitems:
        for( set .@k,0; .@k < getarraysize(getd("."+currentquest$+"_collectionitem")); set .@k,.@k+2) {
            if(countitem(getd("."+currentquest$+"_collectionitem["+.@k+"]"))>=getd("."+currentquest$+"_collectionitem["+(.@k+1)+"]")){
                set .@checkitem,.@checkitem+2;
            }
        }
        if(.@checkitem<getarraysize(getd("."+currentquest$+"_collectionitem"))){
            mes "[^FF7700Questboard^000000]";
            mes "You don't have everything.";
            close;
        }
        for( set .@delcount,0; .@delcount < getarraysize(getd("."+currentquest$+"_collectionitem")); set .@delcount,.@delcount+2) {
            delitem getd("."+currentquest$+"_collectionitem["+.@delcount+"]"),getd("."+currentquest$+"_collectionitem["+(.@delcount+1)+"]");
        }
        mes "[^FF7700Questboard^000000]";
        mes "Congratulation! Here is your Reward.";
        if(getd("." +currentquest$+"_collectionprize")!=0) getitem(getd("." +currentquest$+"_collectionprize"),getd("." +currentquest$+"_collectionamount"));
        Zeny += getd("." +currentquest$+"_collectionzeny");
        getexp getd("." +currentquest$+"_collectionexp["+0+"]"),getd("." +currentquest$+"_collectionexp["+1+"]");
        setd(currentquest$ + "_collection_delay"),gettimetick(2)+.quest_delay;
        set currentquest$, "";
        set c_run, 0;
        close;

    L_checkmobs:
        set .@goal, (getarraysize(getd("."+currentquest$+"_huntingmob"))/2);
        for(set .@i, 1; .@i < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@i,.@i+2){
            set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]");
            if(getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")==getd("."+currentquest$+"_huntingmob["+.@i+"]")){
                set .@checkmonster, .@checkmonster+1;
                if(.@checkmonster==.@goal){
                    goto L_checkmobs2;
                }
                continue;
            }
            goto L_checkmobs2;
        }

    L_checkmobs2:
        if(.@checkmonster<.@goal){
            mes "[^FF7700Questboard^000000]";
            mes "You didn't kill everything.";
            close;
        }
        mes "[^FF7700Questboard^000000]";
        mes "Congratulation! Here is your Reward.";
        for(set .@x, 1; .@x < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@x,.@x+2){
            set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@x-1)+"]");
            setd(currentquest$+"_"+.@currentmob+"_"+.@x+"_killcount", 0);
        }
        if(getd("." +currentquest$+"_huntingprize")!=0) getitem(getd("." +currentquest$+"_huntingprize"),getd("." +currentquest$+"_huntingamount"));
        Zeny += getd("." +currentquest$+"_huntingzeny");
        getexp getd("." +currentquest$+"_huntingexp["+0+"]"),getd("." +currentquest$+"_huntingexp["+1+"]");
        setd(currentquest$ + "_hunting_delay"),gettimetick(2)+.quest_delay;
        set currentquest$, "";
        set h_run, 0;
        close;

    OnNPCKillEvent:
        if(h_run!=1) end;
        for(set .@i, 1; .@i < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@i,.@i+2){
            if(killedrid==getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]")){
                set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]");
                if(getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")>=getd("."+currentquest$+"_huntingmob["+.@i+"]")) end;
                setd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount", getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")+1);
                dispbottom getd("."+currentquest$+"_huntingname$")+": ["+strmobinfo(1,.@currentmob)+"] ("+ getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")+"/"+getd("."+currentquest$+"_huntingmob["+.@i+"]")+")";
                end;
            }
            continue;
        }
        end;

    OnInit:
        function AddCollection;
        function AddHunting;

        //Activate/Deactive quest categories here
        set .collection, 1;
        set .hunting, 1;

        //Quest Delay (seconds)
        //24 hours = 86400 seconds
        set .quest_delay, 0;

        //Checks if quests are loaded (prevents out of index)
        if(.questsloaded==1) end;
        set .questsloaded, 1;

        //Add Collection Quests here
        ("Test Collect",1,99,501,10,0,0,0,501,10,...);

        //Add Hunting Quests here
        ("Test Hunting",1,99,501,10,0,0,0,1002,10,...);

        end;

    function AddCollection {
        set .collectionquestcount,.collectionquestcount+1;
        setd ("." +.collectionquestcount+"_collectionname$", getarg(0));
        setd ("." +.collectionquestcount+"_collectionmin", getarg(1));
        setd ("." +.collectionquestcount+"_collectionmax", getarg(2));
        setd ("." +.collectionquestcount+"_collectionprize", getarg(3));
        setd ("." +.collectionquestcount+"_collectionamount", getarg(4));
        setd ("." +.collectionquestcount+"_collectionzeny", getarg(5));
        set .@argcount, 6;
        set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionexp"));
        setd ("." +.collectionquestcount+"_collectionexp["+.@size+"]",getarg(.@argcount));
        setd ("." +.collectionquestcount+"_collectionexp["+(.@size+1)+"]",getarg(.@argcount+1));
        set .@argcount, .@argcount+2;
        while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1) {
            set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionitem"));
            setd ("."+.collectionquestcount+"_collectionitem["+.@size+"]",getarg(.@argcount));
            setd ("."+.collectionquestcount+"_collectionitem["+(.@size+1)+"]",getarg(.@argcount+1));
            set .@argcount,.@argcount+2;
        }
        return;
    }

    function AddHunting {
        set .huntingquestcount,.huntingquestcount+1;
        setd ("." +.huntingquestcount+"_huntingname$", getarg(0));
        setd ("." +.huntingquestcount+"_huntingmin", getarg(1));
        setd ("." +.huntingquestcount+"_huntingmax", getarg(2));
        setd ("." +.huntingquestcount+"_huntingprize", getarg(3));
        setd ("." +.huntingquestcount+"_huntingamount", getarg(4));
        setd ("." +.huntingquestcount+"_huntingzeny", getarg(5));
        set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingexp"));
        set .@argcount, 6;
        setd ("." +.huntingquestcount+"_huntingexp["+.@size+"]",getarg(.@argcount));
        setd ("." +.huntingquestcount+"_huntingexp["+(.@size+1)+"]",getarg(.@argcount+1));
        set .@argcount, .@argcount+2;
        while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1) {
            set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingmob"));
            setd ("."+.huntingquestcount+"_huntingmob["+.@size+"]",getarg(.@argcount));
            setd ("."+.huntingquestcount+"_huntingmob["+(.@size+1)+"]",getarg(.@argcount+1));
            set .@argcount, .@argcount+2;
        }
        return;
    }
    }

    here my error

     

    error.png

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.