-
Content Count
156 -
Joined
-
Last visited
-
Days Won
1
Posts posted by hadiesyafiq
-
-
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
-
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?!
// 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
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 IDsc_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
-
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
-
-
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?
-
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
-
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
-
-
-
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
-
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; } }
~KenpachiThanks @Kenpachi
-
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..
Quotefunction 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
QuoteDROP 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;
}
} -
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...
-
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 FantasyThanks in advance
-
I test it already sir...i catch it success but no egg on my inventory
46 minutes ago, Ridley said:you need to use @makeegg, not @item
Also I recommend to spawn some porings, get some unripe apple, and test this for sure.
@makeegg also nothing happen..
-
-
hi all...actually i don't know this is client side problem or server side problem..
the problem is when player capture mob and success but no egg in inventory ..
i also try @item 9001(Poring Egg) on chat display 'Item created' but nothing in inventory...how to fix this?
-
not work at all sir /sob
-
-
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
-
8 hours ago, Ridley said:you're using the function wrong. Here 2 examples
AddCollection("<Test Collect>",1,99,501,10,0,0,0,501,10);
AddHunting("<Test Hunting>",1,99,501,10,0,0,0,1002,10);
sir but how if i want add more required item like
red potion 10ea
yellow potion 10ea
blue potion 10ea
-
7 hours ago, Ridley said:you're using the function wrong. Here 2 examples
AddCollection("<Test Collect>",1,99,501,10,0,0,0,501,10);
AddHunting("<Test Hunting>",1,99,501,10,0,0,0,1002,10);
Its work thank you sir
-
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
-
2 hours ago, Ridley said:If you had read this script, you would have seen the instructions and examples for times
yes i follow your guide and use your script i set 2
onClock0900:
onClock2100:
but sometimes it will start on random times and not the script setting..
ask about getitem2 but with time...
in Script Requests
Posted
hai all it possible i give rentitem +10weapon like getitem2 function but have expire time?