-
Posts
459 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by rakuzas
-
Utility: Dynamic WoE Reward Distributor
rakuzas replied to Secrets's topic in Utility Script Releases
for(.@i = 0; .@i < .casvarsize .@i++) { .@o = getcastledata(.cas$[.@i],1); .@menu$ = .@menu$ + (($casActive[.@i] && $casCanReceive[.@i] && .@o == getcharid(2)) ? .casName$[.@i] : "") + ":"; } Hello @Secrets, I got this error in my console.. Not sure how to fix it.. So I posted here.. Hope you can take a look.. Thanks in advance.. -
How to make Battleground PVP to avoid char relogin abuse?
rakuzas posted a question in Scripting Support
Hello, Im using Annieruru Battleground pvp scripts.. (npc\custom\battleground\bg_pvp.txt) The script working fine.. But I got report said player can abuse to auto-win with relog their char.. So.. I tried and it did happen.. How to Abuse Relog and Instant-Win : Player and his friends making agreement.. When they inside, opponent player relog and give autowin and spamable.. They repeat this process until both side gain enough reward to exchange their BG equipments.. Below is the original script : //===== rAthena Script ======================================= //= Battleground: PVP //===== By: ================================================== //= AnnieRuru //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= A simple battleground script: //= Kill players from the other team. //===== Additional Comments: ================================= //= 1.0 First version, edited. [Euphy] //============================================================ - script bg_pvp#control -1,{ OnInit: .minplayer2start = 2; // minimum players to start (ex. if 3vs3, set to 3) .eventlasting = 20*60; // event duration before auto-reset (20 minutes * seconds) setarray .rewarditem[0], // rewards for the winning team: <item>,<amount>,... 501, 10; end; OnStart: if ( getwaitingroomstate( 0, .rednpcname$ ) < .minplayer2start || getwaitingroomstate( 0, .bluenpcname$ ) < .minplayer2start ) end; // create Battleground and teams .red = waitingroom2bg( "guild_vs3", 13,50, strnpcinfo(0)+"::OnRedQuit", strnpcinfo(0)+"::OnRedDead", .rednpcname$ ); copyarray .team1aid, $@arenamembers, $@arenamembersnum; .team1count = .minplayer2start; .blue = waitingroom2bg( "guild_vs3", 86,50, strnpcinfo(0)+"::OnBlueQuit", strnpcinfo(0)+"::OnBlueDead", .bluenpcname$ ); copyarray .team2aid, $@arenamembers, $@arenamembersnum; .team2count = .minplayer2start; delwaitingroom .rednpcname$; delwaitingroom .bluenpcname$; bg_warp .red, "guild_vs3", 13,50; bg_warp .blue, "guild_vs3", 86,50; .score[1] = .score[2] = .minplayer2start; bg_updatescore "guild_vs3", .score[1], .score[2]; // match duration sleep .eventlasting * 1000; // end match, destroy Battleground, reset NPCs if ( .score[1] > .score[2] ) { mapannounce "guild_vs3", "- Red Team is victorious! -", bc_map; callsub L_Reward, 1; } else if ( .score[1] < .score[2] ) { mapannounce "guild_vs3", "- Blue Team is victorious! -", bc_map; callsub L_Reward, 2; } else mapannounce "guild_vs3", "- The match has ended in a draw! -", bc_map; bg_warp .red, "prontera",152,178; bg_warp .blue, "prontera",154,178; bg_destroy .red; bg_destroy .blue; donpcevent .rednpcname$ +"::OnStart"; donpcevent .bluenpcname$ +"::OnStart"; end; L_Reward: for ( .@i = 0; .@i < getd(".team"+ getarg(0) +"count"); .@i++ ) getitem .rewarditem[0], .rewarditem[1], getd(".team"+ getarg(0) +"aid["+ .@i +"]" ); return; // "OnDeath" event OnRedDead: callsub L_Dead, 1; OnBlueDead: callsub L_Dead, 2; L_Dead: .score[ getarg(0) ]--; bg_updatescore "guild_vs3", .score[1], .score[2]; while ( getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ) != getcharid(3) && .@i < getd(".team"+ getarg(0) +"count") ) .@i++; deletearray getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ), 1; setd ".team"+ getarg(0) +"count", getd(".team"+ getarg(0) +"count") -1; bg_leave; if ( !.score[ getarg(0) ] ) awake strnpcinfo(0); sleep2 1250; percentheal 100,100; end; // "OnQuit" event OnRedQuit: callsub L_Quit, 1; OnBlueQuit: callsub L_Quit, 2; L_Quit: .score[ getarg(0) ]--; bg_updatescore "guild_vs3", .score[1], .score[2]; percentheal 100, 100; while ( getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ) != getcharid(3) && .@i < getd(".team"+ getarg(0) +"count") ) .@i++; deletearray getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ), 1; setd ".team"+ getarg(0) +"count", getd(".team"+ getarg(0) +"count") -1; if ( !.score[ getarg(0) ] ) awake strnpcinfo(0); end; } prontera,152,178,5 script Red Team#bg_pvp 733,{ end; OnInit: sleep 1; set getvariableofnpc( .rednpcname$, "bg_pvp#control" ), strnpcinfo(0); OnStart: waitingroom "Red Team", getvariableofnpc( .minplayer2start, "bg_pvp#control" ) +1, "bg_pvp#control::OnStart", getvariableofnpc( .minplayer2start, "bg_pvp#control" ); end; } prontera,154,178,5 script Blue Team#bg_pvp 734,{ end; OnInit: sleep 1; set getvariableofnpc( .bluenpcname$, "bg_pvp#control" ), strnpcinfo(0); OnStart: waitingroom "Blue Team", getvariableofnpc( .minplayer2start, "bg_pvp#control" ) +1, "bg_pvp#control::OnStart", getvariableofnpc( .minplayer2start, "bg_pvp#control" ); end; } guild_vs3 mapflag battleground 2 guild_vs3 mapflag nosave SavePoint guild_vs3 mapflag nowarp guild_vs3 mapflag nowarpto guild_vs3 mapflag noteleport guild_vs3 mapflag nomemo guild_vs3 mapflag nopenalty guild_vs3 mapflag nobranch guild_vs3 mapflag noicewall guild_vs3 mapflag hidemobhpbar I tried to edit the "OnQuit" Event and below is the original scripts : // "OnQuit" event OnRedQuit: callsub L_Quit, 1; OnBlueQuit: callsub L_Quit, 2; L_Quit: .score[ getarg(0) ]--; bg_updatescore "guild_vs3", .score[1], .score[2]; percentheal 100, 100; while ( getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ) != getcharid(3) && .@i < getd(".team"+ getarg(0) +"count") ) .@i++; deletearray getd( ".team"+ getarg(0) +"aid["+ .@i +"]" ), 1; setd ".team"+ getarg(0) +"count", getd(".team"+ getarg(0) +"count") -1; if ( !.score[ getarg(0) ] ) awake strnpcinfo(0); end; } My edited scripts that works when any player relogin and auto kick both teams without giving any rewards.. BUT when player killed, there are nothing happen and the killed player just spawn at save point : // "OnQuit" event OnRedQuit: callsub L_Quit, 1; OnBlueQuit: callsub L_Quit, 2; L_Quit: mapannounce "endless_war", "- The match has ended in a draw because someone quit! -", bc_map; bg_warp .red, "prt_cas",101,277; bg_warp .blue, "prt_cas",87,277; bg_destroy .red; bg_destroy .blue; donpcevent .rednpcname$ +"::OnStart"; donpcevent .bluenpcname$ +"::OnStart"; end; After tried few hours and no luck.. I'm posting here to get some advise or guide.. Thank you in advance.. -
SQL DB Error - Field 'ID' not exist in mapserver.exe (SOLVED)
rakuzas replied to rakuzas's question in General Support
I tried solve this problem for weeks.. Tried drop table and re-upload logs.sql.. Already tried upload upgrade log sql.. But I did as you said.. Drop the table.. Then manually add it.. And it fixed already.. Thank you!! CREATE TABLE IF NOT EXISTS `picklog` ( `id` int(11) NOT NULL auto_increment, `time` datetime NOT NULL, `char_id` int(11) NOT NULL default '0', `type` enum('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X','D','U','$','F','Z','Q') NOT NULL default 'P', `nameid` smallint(5) unsigned NOT NULL default '0', `amount` int(11) NOT NULL default '1', `refine` tinyint(3) unsigned NOT NULL default '0', `card0` smallint(5) unsigned NOT NULL default '0', `card1` smallint(5) unsigned NOT NULL default '0', `card2` smallint(5) unsigned NOT NULL default '0', `card3` smallint(5) unsigned NOT NULL default '0', `option_id0` smallint(5) NOT NULL default '0', `option_val0` smallint(5) NOT NULL default '0', `option_parm0` tinyint(3) NOT NULL default '0', `option_id1` smallint(5) NOT NULL default '0', `option_val1` smallint(5) NOT NULL default '0', `option_parm1` tinyint(3) NOT NULL default '0', `option_id2` smallint(5) NOT NULL default '0', `option_val2` smallint(5) NOT NULL default '0', `option_parm2` tinyint(3) NOT NULL default '0', `option_id3` smallint(5) NOT NULL default '0', `option_val3` smallint(5) NOT NULL default '0', `option_parm3` tinyint(3) NOT NULL default '0', `option_id4` smallint(5) NOT NULL default '0', `option_val4` smallint(5) NOT NULL default '0', `option_parm4` tinyint(3) NOT NULL default '0', `unique_id` bigint(20) unsigned NOT NULL default '0', `map` varchar(11) NOT NULL default '', `bound` tinyint(1) unsigned NOT NULL default '0', PRIMARY KEY (`id`), INDEX (`type`) ) ENGINE=MyISAM AUTO_INCREMENT=1; -
SQL DB Error - Field 'ID' not exist in mapserver.exe (SOLVED)
rakuzas posted a question in General Support
Hello, I'm not sure why this keep appear in my map-server.exe console.. It appears everytime someone pickup any item or drop any item.. I already recheck my settings, empty database and also already import log_upgrade sql file.. But still shows this.. I just drop all the database inside logs database.. And import again log.sql.. But I notice that.. the picklog table is empty and and still got this error.. Can someone please help pinpoint me where exactly this problem occur? Already using latest rathena btw.. Also disabled debug beta things in sourcecode which I think already default by now.. My current log_athena.conf: //-------------------------------------------------------------- // rAthena Log Configuration File //-------------------------------------------------------------- // Note 1: Value is a config switch (on/off, yes/no or 1/0) // Note 2: Value is in percents (100 means 100%) // Note 3: Value is a bit field. If no description is given, // assume unit types (1: Pc, 2: Mob, 4: Pet, 8: Homun) //-------------------------------------------------------------- // Enable Logs? (Note 3) // 0x000000 - Don't log at all // 0x000001 - (T) Log trades // 0x000002 - (V) Log vending transactions // 0x000004 - (P) Log items drop/picked by players // 0x000008 - (L) Log items drop/looted by monsters // 0x000010 - (S) Log NPC transactions (buy/sell) // 0x000020 - (N) Log Script transactions (items deleted/acquired through quests) // 0x000040 - (D) Log items stolen from mobs (Steal/Gank) // 0x000080 - (C) Log player-used items (consumables/pet&hom&merc food/items used for skills&attacks) // 0x000100 - (O) Log produced/ingredient items // 0x000200 - (U) Log MVP prize items // 0x000400 - (A) Log player created/deleted items (through @/# commands) // 0x000800 - (R) Log items placed/retrieved from storage. // 0x001000 - (G) Log items placed/retrieved from guild storage. // 0x002000 - (E) Log mail system transactions. // 0x004000 - (I) Log auction system transactions. // 0x008000 - (B) Log buying store transactions // 0x010000 - (X) Log all other transactions (rentals expiring/inserting cards/items removed by item_check/ // rings deleted by divorce/pet egg (un)hatching/pet armor (un)equipping/Weapon Refine skill/Remove Trap skill) // 0x020000 - ($) Log cash transactions // 0x040000 - (K) Log account bank transactions // 0x080000 - (F) Removed bound items when guild/party is broken // 0x100000 - (Y) Roulette Lottery // 0x200000 - (Z) Merged items from item mergers process. // 0x400000 - (Q) Log items given from quest-granted drops. // Example: Log trades+vending+script items+created items: 1+2+32+1024 = 1059 // Please note that moving items from inventory to cart and back is not logged by design. enable_logs: 0xFFFFFF // Use MySQL Logs? [SQL Version Only] (Note 1) sql_logs: yes // LOGGING FILTERS // ============================================================= // if any condition is true then the item will be logged // 0 = Don't log at all // 1 = Log any item // Advanced Filter Bits by item type: || // 0002 - Healing items (0) // 0004 - Etc Items(3) + Arrows (10) // 0008 - Usable Items(2) + Lures,Scrolls(11) + Usable Cash Items(18) // 0016 - Weapon(4) // 0032 - Shields,Armor,Headgears,Accessories,etc(5) // 0064 - Cards(6) // 0128 - Pet Accessories(8) + Eggs(7) (well, monsters don't drop 'em but we'll use the same system for ALL logs) // 0256 - Log expensive items ( >= price_items_log) // 0512 - Log big amount of items ( >= amount_items_log) // 1024 - Log refined items (if their refine >= refine_items_log ) // 2048 - Log rare items (if their drop chance <= rare_items_log ) // Examples: (log filters) // log_filter: 1 = logs ANY items // log_filter: 2 = logs only HEALING items // log_filter: 4 = logs only Etc Items and Arrows // log_filter: 64 = logs only Cards // log_filter: 322 = logs only Healing items, Cards and those items which price is >= price_items_log // log_filter: 4080 = logs all items (including all rare, big amount) exept healing, etc, arrows and useble ones log_filter: 1 // Log Items which Refine >= refine_items_log refine_items_log: 5 // Log Items whith min drop rate <= rare_items_log // 1 = 0.01%, 100 = 1% drop chance, etc rare_items_log: 100 // don't log it if the current item buy price < price_items_log price_items_log: 1000 // don't log it if the current item amount < amount_items_log amount_items_log: 100 //============================================================= // Log Dead Branch Usage (Note 1) log_branch: no // Track Zeny Changes // Filter settings // 0 - don't log; 1 - log any zeny changes; 2.....1000000 - minimal absolute logging zeny value log_zeny: 1 // Track Cash Changes // 0 - don't log // 1 - log any changes log_cash: 1 // Log MVP Monster Drops (Note 1) // Outdated. Use Pick_Log instead. But this log could be useful to keep track slayed MVPs log_mvpdrop: no // Log AtCommands & Charcommands (Note 1) // Only commands issued by player groups ('conf/groups.conf') with // 'log_commands' setting set to 'true' will be logged. log_commands: yes // Log NPC 'logmes' commands (Note 1) log_npc: yes // Log CHAT (Global, Whisper, Party, Guild, Main chat, Clan) (Note 3) // LOGGING FILTERS // ============================================================= // 0 = Don't log at all // 1 - Log Global messages // 2 - Log Whisper messages // 4 - Log Party messages // 8 - Log Guild messages // 16 - Log Main chat messages // 32 - Log Clan messages // Example: // log_chat: 5 = logs both Whisper & Party messages // log_chat: 8 = logs only Guild messages // log_chat: 63 = logs everything log_chat: 0 // Disable chat logging when WoE is running? (Note 1) log_chat_woe_disable: no // Log feeding // Should pet or homunculus feeding be logged? (Note 3) // 0: Disabled // 1: Pet // 2: Homunculus log_feeding: 3 //Time-stamp format which will be printed for log file. //Can at most be 20 characters long. //Common formats: // %I:%M:%S %p (hour:minute:second 12 hour, AM/PM format) // %H:%M:%S (hour:minute:second, 24 hour format) // %d/%b/%Y (day/Month/year) //For full format information, consult the strftime() manual. log_timestamp_format: %m/%d/%Y %H:%M:%S // Logging files/tables // Following settings specify where to log to. If 'sql_logs' is // enabled, SQL tables are assumed, otherwise flat files. // log_gm_db: log/atcommandlog.log // log_branch_db: log/branchlog.log // log_chat_db: log/chatlog.log // log_mvpdrop_db: log/mvplog.log // log_npc_db: log/npclog.log // log_pick_db: log/picklog.log // log_zeny_db: log/zenylog.log // log_cash_db: log/cashlog.log // log_feeding_db: log/feedinglog.log log_gm_db: atcommandlog log_branch_db: branchlog log_chat_db: chatlog log_mvpdrop_db: mvplog log_npc_db: npclog log_pick_db: picklog log_zeny_db: zenylog log_cash_db: cashlog log_feeding_db: feedinglog import: conf/import/log_conf.txt my current inter_athena.conf // Athena InterServer configuration. // Contains settings shared/used by more than 1 server. // Options for both versions // Log Inter Connections, etc.? log_inter: 1 // Inter Log Filename inter_log_filename: log/inter.log // Level range for sharing within a party party_share_level: 50 // You can specify the codepage to use in your MySQL tables here. // (Note that this feature requires MySQL 4.1+) //default_codepage: // For IPs, ideally under linux, you want to use localhost instead of 45.77.40.127 // Under windows, you want to use 45.77.40.127. If you see a message like // "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)" // and you have localhost, switch it to XXXXX // Global SQL settings // overridden by local settings when the hostname is defined there // (currently only the login-server reads/obeys these settings) // MySQL Login server login_server_ip: XXXXX login_server_port: 3306 login_server_id: XXXXX login_server_pw: XXXXX login_server_db: ragnarok login_codepage: login_case_sensitive: no ipban_db_ip: XXXXX ipban_db_port: 3306 ipban_db_id: XXXXX ipban_db_pw: XXXXX ipban_db_db: ragnarok ipban_codepage: // MySQL Character server char_server_ip: XXXXX char_server_port: 3306 char_server_id: XXXXX char_server_pw: XXXXX char_server_db: ragnarok // MySQL Map Server map_server_ip: XXXXX map_server_port: 3306 map_server_id: XXXXX map_server_pw: XXXXX map_server_db: ragnarok // MySQL Log Database log_db_ip: XXXXX log_db_port: 3306 log_db_id: XXXXX log_db_pw: XXXXX log_db_db: logs log_codepage: log_login_db: loginlog // MySQL Reconnect Settings // - mysql_reconnect_type: // 1: When MySQL disconnects during runtime, the server tries to reconnect // mysql_reconnect_count times and shuts down if unsuccessful. // 2: When mysql disconnects during runtime, it tries to reconnect indefinitely. mysql_reconnect_type: 2 mysql_reconnect_count: 1 // DO NOT CHANGE ANYTHING BEYOND THIS LINE UNLESS YOU KNOW YOUR DATABASE DAMN WELL // this is meant for people who KNOW their stuff, and for some reason want to change their // database layout. [CLOWNISIUS] // ALL MySQL Database Table names // Login Database Tables login_server_account_db: login ipban_table: ipbanlist // Shared global_acc_reg_num_table: global_acc_reg_num global_acc_reg_str_table: global_acc_reg_str // Char Database Tables char_db: char hotkey_db: hotkey scdata_db: sc_data cart_db: cart_inventory inventory_db: inventory charlog_db: charlog skill_db: skill interlog_db: interlog memo_db: memo guild_db: guild guild_alliance_db: guild_alliance guild_castle_db: guild_castle guild_expulsion_db: guild_expulsion guild_member_db: guild_member guild_skill_db: guild_skill guild_position_db: guild_position guild_storage_db: guild_storage party_db: party pet_db: pet friend_db: friends mail_db: mail mail_attachment_db: mail_attachments auction_db: auction quest_db: quest homunculus_db: homunculus skill_homunculus_db: skill_homunculus mercenary_db: mercenary mercenary_owner_db: mercenary_owner elemental_db: elemental ragsrvinfo_db: ragsrvinfo skillcooldown_db: skillcooldown bonus_script_db: bonus_script acc_reg_num_table: acc_reg_num acc_reg_str_table: acc_reg_str char_reg_str_table: char_reg_str char_reg_num_table: char_reg_num clan_table: clan clan_alliance_table: clan_alliance // Map Database Tables buyingstore_table: buyingstores buyingstore_items_table: buyingstore_items item_table: item_db renewal-item_table: item_db_re item2_table: item_db2 renewal-item2_table: item_db2_re item_cash_table: item_cash_db item_cash2_table: item_cash_db2 mob_table: mob_db renewal-mob_table: mob_db_re mob2_table: mob_db2 renewal-mob2_table: mob_db2_re mob_skill_table: mob_skill_db renewal-mob_skill_table: mob_skill_db_re mob_skill2_table: mob_skill_db2 renewal-mob_skill2_table: mob_skill_db2_re mapreg_table: mapreg sales_table: sales vending_table: vendings vending_items_table: vending_items market_table: market roulette_table: db_roulette // Use SQL item_db, mob_db and mob_skill_db for the map server? (yes/no) use_sql_db: no inter_server_conf: inter_server.yml import: conf/import/inter_conf.txt my current login_athena.conf // Athena Login Server configuration file. // Translated by Peter Kieser <[email protected]> // Note: "Comments" are all text on the right side of a double slash "//" // Whatever text is commented will not be parsed by the servers, and serves // only as information/reference. // The login server listens on the interface with this IP address. // NOTE: This allows you to run multiple servers on multiple interfaces // while using the same ports for each server. bind_ip: XXXXX // Login Server Port login_port: 6900 //Time-stamp format which will be printed before all messages. //Can at most be 20 characters long. //Common formats: // %I:%M:%S %p (hour:minute:second 12 hour, AM/PM format) // %H:%M:%S (hour:minute:second, 24 hour format) // %d/%b/%Y (day/Month/year) //For full format information, consult the strftime() manual. //timestamp_format: [%d/%b %H:%M] //If redirected output contains escape sequences (color codes) stdout_with_ansisequence: no //Makes server log selected message types to a file in the /log/ folder //1: Log Warning Messages //2: Log Error and SQL Error messages. //4: Log Debug Messages //Example: "console_msg_log: 7" logs all 3 kinds //Messages logged by this overrides console_silent setting console_msg_log: 7 // File path to store the console messages above console_log_filepath: ./log/login-msg_log.log //Makes server output more silent by omitting certain types of messages: //1: Hide Information messages //2: Hide Status messages //4: Hide Notice Messages //8: Hide Warning Messages //16: Hide Error and SQL Error messages. //32: Hide Debug Messages //Example: "console_silent: 7" Hides information, status and notice messages (1+2+4) console_silent: 0 // Console Commands // Allow for console commands to be used on/off // This prevents usage of >& log.file console: off // Can you use _M/_F to make new accounts on the server? new_account: no //If new_account is enabled, minimum length to userid and passwords should be 4? //Must be 'Yes' unless your client uses both 'Disable 4 LetterUserID/Password' Diffs new_acc_length_limit: yes // Account registration flood protection system // allowed_regs is the number of registrations allowed in time_allowed (in seconds) allowed_regs: 1 time_allowed: 10 // Log Filename. All operations received by the server are logged in this file. login_log_filename: log/login.log // To log the login server? // NOTE: The login server needs the login logs to enable dynamic pass failure bans. log_login: yes // Indicate how to display date in logs, to players, etc. date_format: %Y-%m-%d %H:%M:%S // Required account group id to connect to server. // -1: disabled // 0 or more: group id group_id_to_connect: -1 // Minimum account group id required to connect to server. // Will not function if group_id_to_connect config is enabled. // -1: disabled // 0 or more: group id min_group_id_to_connect: -1 // Which group (ID) will be denoted as the VIP group? // Default: 5 vip_group: 5 // How many characters are allowed per account? // You cannot exceed the limit of MAX_CHARS slots, defined in mmo.h, or chars_per_account // will default to MAX_CHARS. // 0 will default to the value of MIN_CHARS. (default) chars_per_account: 0 // Max character limit increase for VIP accounts (0 to disable) // Increase the value of MAX_CHARS if you want to increase vip_char_increase. // Note: The amount of VIP characters = MAX_CHARS - chars_per_account. // Note 2: This setting must be set after chars_per_account. // -1 will default to MAX_CHAR_VIP (src/config/core.h) vip_char_increase: -1 // Create accounts with limited time? // -1: new accounts are created with unlimited time (default) // 0 or more: new accounts automatically expire after the given value, in seconds start_limited_time: -1 // Store passwords as MD5 hashes instead of plain text? // NOTE: Will not work with clients that use <passwordencrypt> use_MD5_passwords: no // Ipban features ipban_enable: yes // Dynamic password failure ipban system // Ban user after a number of failed attempts? ipban_dynamic_pass_failure_ban: yes // Interval (in minutes) to calculate how many failed attempts. ipban_dynamic_pass_failure_ban_interval: 5 // Maximum amount of failed attempts before banning. ipban_dynamic_pass_failure_ban_limit: 7 // Time (in minutes) for ban duration. ipban_dynamic_pass_failure_ban_duration: 5 // Interval (in seconds) to clean up expired IP bans. 0 = disabled. default = 60. // NOTE: Even if this is disabled, expired IP bans will be cleaned up on login server start/stop. // Players will still be able to login if an ipban entry exists but the expiration time has already passed. ipban_cleanup_interval: 60 // Interval (in minutes) to execute a DNS/IP update. Disabled by default. // Enable it if your server uses a dynamic IP which changes with time. //ip_sync_interval: 10 // DNS Blacklist Blocking // If enabled, each incoming connection will be tested against the blacklists // on the specified dnsbl_servers (comma-separated list) use_dnsbl: no dnsbl_servers: bl.blocklist.de, socks.dnsbl.sorbs.net // Here are some free DNS Blacklist Services: http://en.wikipedia.org/wiki/Comparison_of_DNS_blacklists //============================================================================== // dnsbl_servers Description // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // bl.blocklist.de IP-Addresses who attack other servers/honeypots over SSH, FTP, IMAP, etc. // ircbl.ahbl.org AHBL (open proxies, compromised machines, comment spammers) // safe.dnsbl.sorbs.net All zones in dnsbl.sorbs.net except "recent" and "escalations" // sbl-xbl.spamhaus.org Spamhaus blacklist (spammers, open proxies) // socks.dnsbl.sorbs.net Open SOCKS proxy servers // tor.ahbl.org Current tor relay and exit nodes // Client MD5 hash check // If turned on, the login server will check if the client's hash matches // the value below, and will not connect tampered clients. // Note: see 'doc/md5_hashcheck.txt' for more details. client_hash_check: off // Client MD5 hashes // The client with the specified hash can be used to log in by players with // a group_id equal to or greater than the given value. // If you specify 'disabled' as hash, players with a group_id greater than or // equal to the given value will be able to log in regardless of hash (and even // if their client does not send a hash at all.) // Format: group_id, hash // Note: see 'doc/md5_hashcheck.txt' for more details. //client_hash: 0, 113e195e6c051bb1cfb12a644bb084c5 //client_hash: 10, cb1ea78023d337c38e8ba5124e2338ae //client_hash: 99, disabled import: conf/inter_athena.conf import: conf/import/login_conf.txt -
Source of error : npc\re\jobs\novice\academy.txt line : 5826 // - Manufacturing Maniac // ----------------------------------------------------------------------------- izlude,93,143,3 script Manufacturing Maniac#0 -1,{ mes "[Manufacturing Maniac]"; mes "Hi~! I am an Alchemist."; mes "It's one of the second jobs after Merchant."; next; mes "[Manufacturing Maniac]"; mes "I am making a potion."; mes "I came to izlude to make potions at a quiet place."; mes "I feel that quiet places help to increase the rate of success."; mes "I am feeling good!"; close; OnTimer30000: if (rand(1,2) == 1) { emotion ET_BEST; specialeffect EF_PHARMACY_OK; } else { emotion ET_HUK; specialeffect EF_PHARMACY_FAIL; } end; OnTimer35000: OnInit: initnpctimer; end; } izlude_a,93,143,3 duplicate(Manufacturing Maniac#0) Manufacturing Maniac#a 2_M_ALCHE izlude_b,93,143,3 duplicate(Manufacturing Maniac#0) Manufacturing Maniac#b 2_M_ALCHE izlude_c,93,143,3 duplicate(Manufacturing Maniac#0) Manufacturing Maniac#c 2_M_ALCHE izlude_d,93,143,3 duplicate(Manufacturing Maniac#0) Manufacturing Maniac#d 2_M_ALCHE This error keep appear as long as the server run.. Maybe because of timer and make it looping.. Just for now, I just temporary disable the emotion that cause the error.. Another Error Source : \npc\re\quests\homun_s.txt Line : 1310 // Notifiers //============================================================ que_house_s,11,52,3 script #03homun_s 111,{ end; OnInit: initnpctimer; end; OnTimer6000: emotion ET_SURPRISE; end; OnTimer7000: emotion ET_SURPRISE, getnpcid(0, "#04homun_s"); stopnpctimer; initnpctimer; end; } Another error source : npc\re\quests\quests_brasilis.txt line : 79 OnInit: initnpctimer; end; OnTimer10000: stopnpctimer; donpcevent "Angelo#br::OnGo"; end; OnGo: emotion ET_SURPRISE; initnpctimer; end; } line : 306 OnInit: initnpctimer; end; OnTimer7000: emotion ET_SURPRISE; stopnpctimer; initnpctimer; end; } Last Error Source : \npc\other\monster_race.txt line : 208 - script Runner_main -1,{ OnEnable: emotion ET_SURPRISE; enablenpc strnpcinfo(0); getmapxy(.@m$,.@x,.@y,UNITTYPE_NPC); setarray .@mob[1], 1725,1726,1727,1728,1730,1729; .@n = atoi( strnpcinfo(2) ); monster "p_track01",58,.@y,"The "+ callfunc("F_GetNumSuffix",.@n) +" Racer",.@mob[.@n],1,strnpcinfo(0)+"::OnMyMobDead"; end;
-
Hmmm.. So it not just me then? Or.. It does something config related in conf folder? Like cash food item.. Have setting which delayed the consume between the cash food.. Last time I tried making 2048.. Only effect stack.. Not time.. My player HP keep adding with Tao Guna Scroll.. Luckily I'm online after updating my server.. And immediately reset the item_db..
-
Thank you! EDIT : I re-open this question because when clicked the remaining time does not stack.. Then it consume the scroll.. Below is my script : specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus bMaxHPrate,100; bonus bDefRate,-50; bonus bMdefRate,-50; }",180,1024,0,SI_MVPCARD_TAOGUNKA; Which part I do wrong? Already restart the server btw..
-
Thanks.. So far it does not crashing my map-server.exe with your script.. But when check stock, it still shows up old stock data value.. When I buy BTC 100x it calculate with older stock data.. But I guess this is not a big deal since it solved when player relog.. Thank you Emistry for helping me out..
-
Hello, I want to make Stock Scripts Reset all player stock on 00:00 hour.. Below is my current example script : OnClock0951: query_sql "delete from `acc_reg_num` where `key` = '#S1'"; query_sql "delete from `acc_reg_num` where `key` = '#S2'"; query_sql "delete from `acc_reg_num` where `key` = '#S3'"; query_sql "delete from `acc_reg_num` where `key` = '#S4'"; query_sql "delete from `acc_reg_num` where `key` = '#S5'"; query_sql "delete from `acc_reg_num` where `key` = '#S6'"; query_sql "delete from `acc_reg_num` where `key` = '#S7'"; query_sql "delete from `acc_reg_num` where `key` = '#S8'"; query_sql "delete from `acc_reg_num` where `key` = '#S9'"; query_sql "delete from `acc_reg_num` where `key` = '#S10'"; announce "[Stock Market] Our stock has been reset!",bc_all,0xFF0000; set $S_LastUpd$,"12:00"; goto S_Fluc; end; My current scripts sometimes make the map-server.exe broken/crash.. Not sure why.. Also, player who not relog.. Still can sell their current Stock.. And when ONLY IF they relog, the stock will be reset.. Already tried many ways.. But still somehow stuck.. Hope can get any guides.. Thank you..
-
Did you use payment for donation other than default paypal in your flux panel?
rakuzas replied to rakuzas's question in General Support
Nice.. Thank you.. You did mention in skype btw.. xD I also found when googling around at here : https://github.com/kenik/FluxCP-Addons But It does same.. Ok will tried it out.. Thanks a lot.. -
Hello, I want to ask.. Did we have any other options rather than using default paypal in flux panel? Since I'm concern that many of player having trouble using paypal for many reasons.. And Cyro did mention about paymentwall but I googling around not found any addon for flux at all.. Or did the flux panel does support other payment options by the way? Im curious.. Thanks for answering..
-
Possible to sent reward item using RODEX within script?
rakuzas posted a question in Scripting Support
Hello, I want to ask does it possible to sent reward via RODEX instead of GM Rewarder like script? Like example : - Player donated via website and purchase item. Normally they need to find the Donation Reedemer NPC. But, if they purchased, they will get auto items directly to RODEX? Just asking BTW.. Thanks.. -
Nice job.. BTW I like the dark theme much better.. White theme too bright to my eyes..
-
Hello, as the title.. How can I make both this scroll can increase the remaining time? Like AGI scroll and Blessing Scroll did? Right now, after we consume 1st time.. We must wait until the times up to consume again.. If we consume within the remaining time.. The scroll will be consumed and nothing happen.. Below is the itemscript of both scrolls : specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus bMaxHPrate,100; bonus bDefRate,-50; bonus bMdefRate,-50; }",180,0,0,SI_MVPCARD_TAOGUNKA; specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus bShortWeaponDamageReturn,30; }",180,0,0,SI_MVPCARD_ORCLORD; Edited Script as Scanty told: specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus bMaxHPrate,100; bonus bDefRate,-50; bonus bMdefRate,-50; }",180,1024,0,SI_MVPCARD_TAOGUNKA; specialeffect2 EF_LIGHTSPHERE; bonus_script "{ bonus bShortWeaponDamageReturn,30; }",180,1024,0,SI_MVPCARD_ORCLORD; Thank you in advance..
-
Hello, I already edited the agit_main_te.txt to only enable Wigner (te_prtcas03) and Gaeblog (te_prtcas01).. Also disabled Godly item NPC.. My scripts load fine and no error or debug warning in console.. But my problem is.. Agit wont start or there is no WOE:TE Session at my setting time and day.. I don't know which part I messed up.. Trial and Error for 1 hour ++ but still no luck.. So I posted here for help.. Thank you in advance.. Agitstart3 : //===== rAthena Script ======================================= //= War of Emperium - Auto-Start //===== Description: ========================================= //= Basic auto-start for War of Emperium TE. //===== Changelogs: ========================================== //= 1.0 First version. [Capuche] //============================================================ - script woe_TE_contoller -1,{ function WoeTimer; OnFri2200:// date woe start if (agitcheck3() == 0) agitstart3; end; OnFri2300:// date woe end if (agitcheck3() == 1) agitend3; end; OnThu1100:// date woe start if (agitcheck3() == 0) agitstart3; end; OnThu1200:// date woe end if (agitcheck3() == 1) agitend3; end; OnAgitInit3: WoeTimer( THURSDAY,11,12 );// <day>, <hour start>, <hour end> WoeTimer( FRIDAY,22,23 );// <day>, <hour start>, <hour end> end; function WoeTimer { .@day = getarg(0); .@hour_start = getarg(1); .@hour_end = getarg(2); .@woe_status = agitcheck3(); .@hour_today = gettime(DT_HOUR); .@day_today = gettime(DT_DAYOFWEEK); setd ".day_"+ .@day, 1; setd ".hour_start_"+ .@hour_start, 1; if (.@day_today == .@day) { if (.@hour_today >= .@hour_start && .@hour_today < .@hour_end && .@woe_status == 0) agitstart3; else if (.@hour_today == .@hour_end && .@woe_status) agitend3; } return; } } Agit_Main_TE (edited) : //===== rAthena Script ======================================= //= War of Emperium TE - Template File //===== Description: ========================================= //= [Official Conversion] //= Like agit_main, this file is required //= for TE castles to function. //= - Enables AGIT Manager. //= - Enables Stewards to invest. //= - Enables Kafra Services inside Guild. //= - Treasure Chest spawning. //= - Flag Template. //= - GM NPC. //===== Changelogs: ========================================== //= 1.0 First Version. [Capuche] //============================================================ - script Manager_TE -1,{ OnAgitInit3: .@map$ = strnpcinfo(4); if (.@map$ == "") end; .@npc_name$ = strnpcinfo(0); .@guild_id = getcastledata(.@map$,1); if (.@guild_id == 0) { killmonster .@map$, .@npc_name$ +"::OnMyMobDead"; donpcevent strnpcinfo(0)+"::OnEmpSpawn"; /* if (compare(.@map$,"te_aldecas")) { monster .@map$,0,0,"Evil Druid",1117,10,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Khalitzburg",1132,4,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Abysmal Knight",1219,2,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Executioner",1205,1,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Penomena",1216,10,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Alarm",1193,18,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Clock",1269,9,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Raydric Archer",1276,7,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Wanderer",1208,3,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Alice",1275,1,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Bloody Knight",1268,1,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Dark Lord",1272,1,.@npc_name$ +"::OnMyMobDead"; if (.@map$ == "te_aldecas1") { setarray .@emproom[0],216,23; } else if (.@map$ == "te_aldecas2") { setarray .@emproom[0],213,23; } else if (.@map$ == "te_aldecas3") { setarray .@emproom[0],205,31; } else if (.@map$ == "te_aldecas4") { setarray .@emproom[0],36,217; } else if (.@map$ == "te_aldecas5") { setarray .@emproom[0],27,101; } monster .@map$,.@emproom[0],.@emproom[1],"Dark Lord",1272,1,.@npc_name$ +"::OnMyMobDead"; monster .@map$,.@emproom[0],.@emproom[1],"Tower Keeper",1270,4,.@npc_name$ +"::OnMyMobDead"; monster .@map$,.@emproom[0],.@emproom[1],"Bloody Knight",1268,1,.@npc_name$ +"::OnMyMobDead"; monster .@map$,.@emproom[0],.@emproom[1],"Abysmal Knight",1219,1,.@npc_name$ +"::OnMyMobDead"; monster .@map$,.@emproom[0],.@emproom[1],"Raydric Archer",1276,5,.@npc_name$ +"::OnMyMobDead"; } */ //else if (compare(.@map$,"te_prtcas")) { if (compare(.@map$,"te_prtcas")) { monster .@map$,0,0,"Raydric",1163,10,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Khalitzburg",1132,10,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Abysmal Knight",1219,5,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Bloody Knight",1268,5,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Stormy Knight",1251,1,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Hatii",1252,1,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Raydric Archer",1276,5,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Gryphon",1259,2,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Chimera",1283,2,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Alice",1275,1,.@npc_name$ +"::OnMyMobDead"; monster .@map$,0,0,"Zealotus",1200,1,.@npc_name$ +"::OnMyMobDead"; if (.@map$ == "te_prtcas01") { setarray .@emproom[0],197,197; } //else if (.@map$ == "te_prtcas02") { setarray .@emproom[0],157,174; } else if (.@map$ == "te_prtcas03") { setarray .@emproom[0],16,220; } //else if (.@map$ == "te_prtcas04") { setarray .@emproom[0],291,14; } //else if (.@map$ == "te_prtcas05") { setarray .@emproom[0],266,266; } monster .@map$,.@emproom[0],.@emproom[1],"Guardian Knight of Emperium",1268,1,.@npc_name$ +"::OnMyMobDead"; monster .@map$,.@emproom[0],.@emproom[1],"Chief Guardian Knight of Emperium",1251,1,.@npc_name$ +"::OnMyMobDead"; monster .@map$,.@emproom[0],.@emproom[1],"Hatii",1252,1,.@npc_name$ +"::OnMyMobDead"; monster .@map$,.@emproom[0],.@emproom[1],"Guardian Knight of Emperium",1219,2,.@npc_name$ +"::OnMyMobDead"; monster .@map$,.@emproom[0],.@emproom[1],"Raydric Archer",1276,5,.@npc_name$ +"::OnMyMobDead"; } disablenpc "Kafra Employee#"+ replacestr(.@map$, "cas", ""); } /* else { requestguildinfo .@guild_id; donpcevent "::OnFlagTE" + strnpcinfo(2);// Guild emblem on flags. if (getcastledata(.@map$,9) == 0) disablenpc "Kafra Employee#"+ replacestr(.@map$, "cas", ""); // Load purchased Guardian in castles. if (.@map$ == "te_aldecas1") donpcevent "Clode::OnSpawnGuardians"; else if (.@map$ == "te_aldecas2") donpcevent "Lares::OnSpawnGuardians"; else if (.@map$ == "te_aldecas3") donpcevent "Valerian::OnSpawnGuardians"; else if (.@map$ == "te_aldecas4") donpcevent "Alpores::OnSpawnGuardians"; else if (.@map$ == "te_aldecas5") donpcevent "Anpere::OnSpawnGuardians"; else if (.@map$ == "te_prtcas01") donpcevent "Kurbe::OnSpawnGuardians"; else if (.@map$ == "te_prtcas02") donpcevent "Kamiyu::OnSpawnGuardians"; else if (.@map$ == "te_prtcas03") donpcevent "Eduare::OnSpawnGuardians"; else if (.@map$ == "te_prtcas04") donpcevent "Casate::OnSpawnGuardians"; else if (.@map$ == "te_prtcas05") donpcevent "Pisaro::OnSpawnGuardians"; } */ end; OnEmpSpawn: .@map$ = strnpcinfo(4); if (!mobcount( .@map$, strnpcinfo(0) +"::OnAgitBreak" )) { //if (.@map$ == "te_aldecas1") { setarray .@emproom[0],216,23; } //else if (.@map$ == "te_aldecas2") { setarray .@emproom[0],213,23; } //else if (.@map$ == "te_aldecas3") { setarray .@emproom[0],205,31; } //else if (.@map$ == "te_aldecas4") { setarray .@emproom[0],36,217; } //else if (.@map$ == "te_aldecas5") { setarray .@emproom[0],27,101; } //else if (.@map$ == "te_prtcas01") { setarray .@emproom[0],197,197; } if (.@map$ == "te_prtcas01") { setarray .@emproom[0],197,197; } //else if (.@map$ == "te_prtcas02") { setarray .@emproom[0],157,174; } else if (.@map$ == "te_prtcas03") { setarray .@emproom[0],16,220; } //else if (.@map$ == "te_prtcas04") { setarray .@emproom[0],291,14; } //else if (.@map$ == "te_prtcas05") { setarray .@emproom[0],266,266; } monster .@map$,.@emproom[0],.@emproom[1],"Emperium",1288,1, strnpcinfo(0) +"::OnAgitBreak"; } end; OnAgitStart3: .@map$ = strnpcinfo(4); if (.@map$ == "") end; if (agitcheck3()) { maprespawnguildid .@map$, getcastledata(.@map$,1),2;// warp all non-guild members gvgon3 .@map$; donpcevent strnpcinfo(0)+"::OnEmpSpawn"; callsub S_Message,"OnCommandOn"; } end; OnAgitEnd3: .@map$ = strnpcinfo(4); if (.@map$ == "") end; gvgoff3 .@map$; if (getcastledata(.@map$,1)) killmonster .@map$, strnpcinfo(0) +"::OnAgitBreak"; callsub S_Message,"OnReset"; end; OnAgitBreak: .@guild_id = getcharid(2); .@map$ = strnpcinfo(4); .@economy = getcastledata(.@map$,2) - 5;// Adjust economy Invest Level for Castle if (.@economy < 1) setcastledata .@map$, 2,1; else setcastledata .@map$, 2,.@economy; .@defense = getcastledata(.@map$,3) - 5;// Adjust Defense Invest Level for Castle if (.@defense < 1) setcastledata .@map$, 3,1; else setcastledata .@map$, 3,.@defense; setcastledata .@map$,1,.@guild_id; // Reset Invest information and refresh castle data for ( .@i = 4; .@i <= 9; .@i++ ) setcastledata .@map$,.@i,0; donpcevent strnpcinfo(0) +"::OnAgitInit3";// spawn guardians / monsters // Erase Guardian Database information if the new owners do not have Guardian Research. if (getgdskilllv(.@guild_id,10002) == 0) { for ( .@i = 10; .@i <= 17; .@i++ ) setcastledata .@map$,.@i,0; } mapannounce .@map$,"Emperium has been destroyed.",bc_map,"0x00FF00",FW_BOLD,20,0,40; maprespawnguildid .@map$,.@guild_id,2;// Respawn all but new castle-occupants, don't remove monsters. sleep 500; if (agitcheck3()) donpcevent strnpcinfo(0) +"::OnEmpSpawn"; sleep 7000; announce "The [" + getcastlename(.@map$) + "] castle has been conquered by the [" + getguildName(.@guild_id) + "] guild.",bc_all|bc_woe; end; OnGuildBreak: .@map$ = strnpcinfo(4); if (.@map$ == "") end; .@tmp$ = replacestr(.@map$, "cas", ""); killmonster .@map$, "Kafra Employee#"+ .@tmp$ +"::OnGuardianDied"; disablenpc "Kafra Employee#"+ .@tmp$; setcastledata .@map$,1,0; sleep 7000; announce "Guild Base [" + getcastlename(.@map$) + "] has been abandoned.",bc_all; donpcevent strnpcinfo(0) +"::OnAgitInit3"; end; S_Message: .@map$ = strnpcinfo(4); .@guild_id = getcastledata(.@map$,1); if (.@guild_id) announce "The [" + getcastlename(.@map$) + "] castle is occupied by the [" + getguildname(.@guild_id) + "] guild.",bc_all,"0xFF0000",FW_NORMAL,10; else announce "The [" + getcastlename(.@map$) + "] castle is currently unoccupied.", bc_all,"0xFF0000",FW_NORMAL,10; if (compare( .@map$,"te_alde" )) .@string$ = "alde0"+ charat( .@map$,getstrlen(.@map$)-1 ); else .@string$ = "prt0"+ charat( .@map$,getstrlen(.@map$)-1 ); donpcevent "#popswitch_"+ .@string$ +"::"+ getarg(0);// monsters for mission TE /* if (.@map$ == "te_aldecas1") { donpcevent "Blacksmith Cano#tegod01::OnInit";// god item TE $2012_tegod_kafra = 0; $@2012_tegirls_alde01 = 0; } else if (.@map$ == "te_prtcas01") { $2012_tegod_gloria = 0; $@2012_tegirls_prt01 = 0; donpcevent "Blacksmith Kai#tegod01::OnInit"; } return; */ OnMyMobDead: end; } // Guild Kafras //============================================================ - script Kafra_Staff_TE -1,{ .@guild_id = getcastledata( strnpcinfo(4),1 ); .@guildname$ = getguildname(.@guild_id); cutin "kafra_01",2; mes "[Kafra Employee]"; if (.@guild_id == getcharid(2)) { mes "Welcome. ^ff0000" + .@guildname$ + "^000000 Member."; mes "The Kafra Corporation will stay with you wherever you go."; next; switch( select( "Use Storage", "Use Teleport Service", "Rent a Pushcart", "Cancel" ) ) { case 1: if (getskilllv("NV_BASIC") > 5) { mes "[Kafra Employee]"; mes "Here, let me open"; mes "your Storage for you."; mes "Thank you for using"; mes "the Kafra Service."; close2; openstorage; } else { mes "[Kafra Employee]"; mes "I'm sorry, but you"; mes "need the Novice's"; mes "Basic Skill Level 6 to"; mes "use the Storage Service."; close2; } break; case 2: if (compare( strnpcinfo(4),"alde" ) == 1) callsub( S_Warp, "Aldebaran", "aldebaran",132,103 ); else callsub( S_Warp, "Prontera", "prontera",278,211 ); case 3: mes "[Kafra Employee]"; if (BaseClass != Job_Merchant) { mes "I'm sorry, but the"; mes "Pushcart rental service"; mes "is only available to Merchants,"; mes "Blacksmiths and Alchemists."; close2; } else if (checkcart()) { mes "You already have"; mes "a Pushcart equipped."; mes "Unfortunately, we can't"; mes "rent more than one to"; mes "each customer at a time."; close2; } else { mes "The Pushcart rental"; mes "fee is 800 zeny. Would"; mes "you like to rent a Pushcart?"; next; if (select( "Rent a Pushcart","Cancel" ) == 1) { if (Zeny < 800) { mes "[Kafra Employee]"; mes "I'm sorry, but you"; mes "don't have enough"; mes "zeny to pay the Pushcart"; mes "rental fee of 800 zeny."; close2; } else { RESRVPTS = RESRVPTS + 80; Zeny = Zeny - 800; setcart(); } } } break; case 4: mes "[Kafra Employee]"; mes "We, here at Kafra Corporation,"; mes "are always endeavoring to provide you with the best services. We hope that we meet your adventuring needs and standards of excellence."; close2; break; } } else { mes "I am instructed to only offer my services to the ^ff0000"+ .@guildname$ +"^000000 Guild. Please try another Kafra Employee around here. Sorry for the inconvenience."; close2; } cutin "",255; end; S_Warp: mes "[Kafra Employee]"; mes "Please choose"; mes "your destination."; next; switch( select( getarg(0) + " -> 200 z", "Cancel it" ) ) { case 1: if (Zeny < 200) { mes "[Kafra Employee]"; mes "I'm sorry, but you don't have"; mes "enough zeny for the Teleport"; mes "Service. The fee to teleport"; mes "to "+getarg(0)+" is 200 zeny."; close2; cutin "",255; end; } Zeny = Zeny - 200; RESRVPTS = RESRVPTS + 20; warp getarg(1), getarg(2),getarg(3); end; case 2: cutin "",255; end; } OnGuardianDied: end; } // Castle Managers (Invest) //============================================================ - script invest_TE -1,{ function GuardianData; .@map$ = strnpcinfo(4); .@npc_name$ = "[ Butler "+ strnpcinfo(1) +"]"; .@guild_id = getcastledata(.@map$,1); .@guildmaster$ = getguildmaster(.@guild_id); mes .@npc_name$; if (.@guild_id == 0) { mes "I have been waiting for a master to fulfill my destiny."; mes "Brave soul... fate will guide you towards your future..."; close; } if (strcharinfo(0) != .@guildmaster$) { mes "No matter how much you pester me, I'll still follow my master ^ff0000"+.@guildmaster$+"^000000. Where are the Guardians?! Send these ruffians away right now!"; close; } mes "Welcome. My honorable master, ^ff0000"+strcharinfo(0)+"^000000..."; mes "Your humble servent, "+strnpcinfo(1)+", is here to serve you."; next; switch( select( "Castle briefing", "Invest in commercial growth", "Invest in Castle Defenses", "Summon Guardian", "Hire / Fire a Kafra Employee", "Go into Master's room" ) ) { case 1: .@economy_today = getcastledata(.@map$,4); .@defense_today = getcastledata(.@map$,5); mes .@npc_name$; mes "I will report the Castle briefing, Master."; mes " "; mes "^0000ffNow, the commercial growth level is "+GetCastleData(.@map$,2)+"."; if (.@economy_today > 0) mes " You invested "+.@economy_today+" times in past 1 day."; mes " Now, the Castle Defense level is "+GetCastleData(.@map$,3)+".^000000"; if (.@defense_today > 0) mes " ^0000ff- You invested "+.@defense_today+" times in past 1 day.^000000"; mes " "; mes "That's all I have to report, Master."; close; case 2: .@economy = getcastledata(.@map$,2); setarray .@eco_invest[0], 5,5000, 10,10000, 15,20000, 20,35000, 25,55000, 30,80000, 35,110000, 40,145000, 45,185000, 50,230000, 55,280000, 60,335000, 65,395000, 70,460000, 75,530000, 80,605000, 85,685000, 90,770000, 95,860000, 100,955000; for ( .@i = 0; .@i < getarraysize(.@eco_invest); .@i += 2 ) if (.@economy <= .@eco_invest[.@i]) break; callsub( S_Invest, 4, .@eco_invest[.@i+1], getcastledata(.@map$,4), "commercial growth", "quantity of goods made by the guild will increase", "future", "economist", "riches" ); case 3: .@defense = getcastledata(.@map$,3); setarray .@def_invest[0], 5,10000, 10,20000, 15,40000, 20,70000, 25,110000, 30,160000, 35,220000, 40,290000, 45,370000, 50,460000, 55,560000, 60,670000, 65,790000, 70,920000, 75,1060000, 80,1210000, 85,1370000, 90,1540000, 95,1720000, 100,1910000; for ( .@i = 0; .@i < getarraysize(.@def_invest); .@i += 2 ) if (.@defense <= .@def_invest[.@i]) break; callsub( S_Invest, 5, .@def_invest[.@i+1], getcastledata(.@map$,5), "Castle Defenses", "durability of Guardians and the Emperium will increase", "coming battles", "strategist", "Defenses" ); case 4: mes .@npc_name$; mes "Will you summon a Guardian? It'll be a protector to defend us loyally."; mes "Please select a guardian to defend us."; next; GuardianData( .@mob_id, .@x, .@y, .@name$ ); for ( .@i = 0; .@i < MAX_GUARDIANS ; .@i++ ) { if (guardianinfo(.@map$,.@i,0)) .@menu$ = .@menu$ + getmonsterinfo(.@mob_id[.@i],MOB_NAME) + " - Implemented (" + guardianinfo(.@map$,.@i,2) + "/" + guardianinfo(.@map$,.@i,1) + "):";// hp/hpmax else .@menu$ = .@menu$ + getmonsterinfo(.@mob_id[.@i],MOB_NAME) + " - Not Implemented:"; } .@s = select(.@menu$) -1; mes .@npc_name$; mes "Will you summon the chosen guardian? 10,000 zeny are required to summon a Guardian."; next; if (select( "Summon","Cancel" ) == 2) { mes .@npc_name$; mes "I did as you ordered. But please remember if you the have money to spare, it'll be better to set it up."; close; } mes .@npc_name$; if (getgdskilllv(.@guild_id,10002) == 0) { mes "Master, we have not the resources to Summon the Guardian. If you want to accumulate them, you have to learn the Guild skill. We failed to summon the Guardian."; } else if (getcastledata( .@map$,(.@s+10) ) == 1) mes "Master, you already have summoned that Guardian. We cannot summon another."; else if (Zeny < 10000) mes "Well... I'm sorry but we don't have funds to summon the Guardian. We failed to summon the Guardian."; else { Zeny = Zeny - 10000; setcastledata .@map$,(.@s+10),1; guardian .@map$, .@x[.@s], .@y[.@s], .@name$[.@s], .@mob_id[.@s], "Kafra Employee#"+ replacestr(.@map$, "cas", "") +"::OnGuardianDied", .@s; mes "We completed the summoning of the Guardian. Our defenses are now increased with it in place."; } close; case 5: mes .@npc_name$; if (getcastledata(.@map$,9) == 1) { mes "We are currently hiring a Kafra Employee... Do you want to fire the Kafra Employee?"; next; if (select( "Fire","Cancel" ) == 2) { mes .@npc_name$; mes "She worked hard in my opinion. It was a good decision to keep her."; close; } cutin "kafra_01",2; mes "[ Hired Kafra Employee ]"; mes "I worked so hard... How can you do that, Master?... Please... Please reconsider... Check it again, Master... Please..."; next; if (select( "Fire","Cancel" ) == 2) { mes "[ Hired Kafra Employee ]"; mes "I'll work hard for you... Thank you!"; close; } mes "[ Hired Kafra Employee ]"; mes "Oh, my goodness! This is nonsense!"; next; cutin "",255; disablenpc "Kafra Employee#" + replacestr(.@map$, "cas", ""); setcastledata .@map$,9,0; mes .@npc_name$; mes "...."; mes "I have discharged the Kafra Employee... But... are you unsatisfied with something?"; close; } mes "Will you contact the kafra Main Office and Hire a Employee for our Castle?"; mes "^ff0000 10,000 zeny is required for their services. "; next; if (select( "Hire.","Cancel" ) == 2) { mes .@npc_name$; mes "I did as you ordered, but some of our members will be unhappy. It will be better to hire a Kafra Employee quickly."; close; } mes .@npc_name$; if (getgdskilllv(.@guild_id,10001) == 0) { mes "Master, we can't hire a Kafra Employee because we don't have a contract with the Kafra Main Office. If you want to obtain a contract with the Kafra Main Office, you will need to learn the Guild skill first."; close; } if (Zeny < 10000) { mes "Well... I'm sorry but we don't have enough funds to hire a Kafra Employee."; close; } Zeny = Zeny - 10000; enablenpc "Kafra Employee#" + replacestr(.@map$, "cas", ""); setcastledata .@map$,9,1; mes "We obtained a contract with the kafra Main Office, and hired a Kafra Employee."; next; cutin "kafra_01",2; mes "[ Hired Kafra Employee ]"; mes "How do you do? I was dispatched from the Main Office."; mes "I'll do my best to not tarnish the reputation of the Guild."; next; cutin "",255; mes .@npc_name$; mes "The Contract terms of the hired Kafra Employee are for 1 month and after this term, you will need to to pay an additional fee."; mes "It will be useful for our members."; close; case 6: mes .@npc_name$; mes "Do you want to visit the room where our valuables are stored?"; mes "That room is restricted to you... you are the only one with access to it."; next; mes .@npc_name$; mes "If you don't open the treasure box within time limits, there is a possibility of losing it when unexpected situation occurs."; mes "Please make sure to remember that always, Master."; mes "So, for our guild's improvement, you must find time to collect it."; next; switch( select( "Go into Master's room.","Cancel" ) ) { case 1: mes .@npc_name$; mes "I'll show you the secret path. Follow me...please."; mes "When you want to return here, please press the secret switch."; close2; //if (.@map$ == "te_aldecas1") warp "te_aldecas1",113,223; //else if (.@map$ == "te_aldecas2") warp "te_aldecas2",134,225; //else if (.@map$ == "te_aldecas3") warp "te_aldecas3",229,267; //else if (.@map$ == "te_aldecas4") warp "te_aldecas4",83,17; //else if (.@map$ == "te_aldecas5") warp "te_aldecas5",64,8; //else if (.@map$ == "te_prtcas01") warp "te_prtcas01",15,209; if (.@map$ == "te_prtcas01") warp "te_prtcas01",15,209; //else if (.@map$ == "te_prtcas02") warp "te_prtcas02",207,229; else if (.@map$ == "te_prtcas03") warp "te_prtcas03",190,130; //else if (.@map$ == "te_prtcas04") warp "te_prtcas04",275,160; //else if (.@map$ == "te_prtcas05") warp "te_prtcas05",281,176; end; case 2: mes .@npc_name$; mes "Goods are produced once a day... if you don't remove them in time, they will not be produced anymore."; mes "Therefore, it will be better if you check up on them from time to time."; close; } } S_Invest: .@cost_invest = getarg(1); .@num_invest_today = getarg(2); .@npc_name$ = "[ Butler "+ strnpcinfo(1) +"]"; if (.@num_invest_today)// Quadruple the cost of investing if you've already invested once. .@cost_invest = .@cost_invest * 4; mes .@npc_name$; mes "If you invest in "+ getarg(3) +", the "+ getarg(4) +". Therfore, if you consider our "+ getarg(5) +", investments will be a necessity."; mes " "; mes "Initially, you are able to invest just once but if you pay more money, you will be able to invest twice."; mes " "; if (getcastledata(strnpcinfo(4),2) >= 100) { mes "^ff0000The "+ getarg(3) +" level of our Castle is at it's highest, 100%. No more investments are needed. Just as I have expected from a great "+ getarg(6) +" like you, Master.^000000"; close; } if (.@num_invest_today >= 2) { mes "^ff0000You have already invested twice today. You cannot invest any more.^000000 I expect the "+ getarg(7) +" of the guild to grow at a high rate."; close; } if (.@num_invest_today == 0) mes "The current investment amount required is ^ff0000"+.@cost_invest+"^000000 zeny. Will you invest?"; else mes "You've invested once today... if you wish to invest once more, ^ff0000"+.@cost_invest+"^000000 more zeny will be needed."; next; switch( select( "Invest in "+ getarg(3) +".","Cancel" ) ) { case 1: mes .@npc_name$; if (Zeny < .@cost_invest) { mes "I'm sorry but there is not enough zeny to invest. You will have to try again when you have the funds, Master."; close; } Zeny = Zeny - .@cost_invest; setcastledata strnpcinfo(4), getarg(0), (.@num_invest_today +1); mes "We finished the investment safely. I expect that our "+ getarg(3) +" level will be increased by tomorrow."; close; case 2: mes .@npc_name$; mes "I'll do as you bid, my master... There is no hurry. We will do our best."; close; } function GuardianData { .@map$ = strnpcinfo(4); /*if (.@map$ == "te_aldecas1") { setarray .@data$[0], 1287, 17, 218, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1285, 39, 205, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1285, 38, 196, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1286, 21, 194, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 218, 24, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 213, 24, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 73, 70, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1285, 45, 228, "Outer Castle Archer Guardian";// ARCHER_GUARDIAN } else if (.@map$ == "te_aldecas2") { setarray .@data$[0], 1287, 51, 183, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1286, 27, 184, "Outer Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 88, 43, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1285, 210, 7, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1287, 60, 203, "Outer Castle Soldier Guardian",// SOLDIER_GUARDIAN 1285, 21, 177, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1286, 117, 46, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1285, 36, 183, "Outer Castle Archer Guardian";// ARCHER_GUARDIAN } else if (.@map$ == "te_aldecas3") { setarray .@data$[0], 1285, 110, 217, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1286, 90, 112, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1287, 86, 120, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1285, 195, 151, "Inner Castle Archer Guardian",// ARCHER_GUARDIAN 1286, 116, 112, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1287, 116, 76, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1287, 64, 103, "Outer Castle Soldier Guardian",// SOLDIER_GUARDIAN 1285, 212, 160, "Inner Castle Archer Guardian";// ARCHER_GUARDIAN } else if (.@map$ == "te_aldecas4") { setarray .@data$[0], 1285, 187, 100, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1285, 192, 42, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1286, 55, 88, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1287, 145, 209, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1287, 169, 53, "Outer Castle Soldier Guardian",// SOLDIER_GUARDIAN 1287, 198, 77, "Outer Castle Soldier Guardian",// SOLDIER_GUARDIAN 1285, 148, 88, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1286, 48, 72, "Inner Castle Knight Guardian";// KNIGHT_GUARDIAN } else if (.@map$ == "te_aldecas5") { setarray .@data$[0], 1285, 51, 202, "Inner Castle Archer Guardian",// ARCHER_GUARDIAN 1286, 27, 221, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 145, 78, "Outer Castle Knight Guardian",// KNIGHT_GUARDIAN 1287, 157, 192, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1287, 157, 74, "Outer Castle Soldier Guardian",// SOLDIER_GUARDIAN 1285, 188, 79, "Inner Castle Archer Guardian",// ARCHER_GUARDIAN 1286, 156, 73, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 41, 112, "Inner Castle Knight Guardian";// KNIGHT_GUARDIAN } */ //else if (.@map$ == "te_prtcas01") { if (.@map$ == "te_prtcas01") { setarray .@data$[0], 1287, 182, 68, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1287, 182, 116, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1287, 153, 86, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1285, 59, 28, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1285, 50, 36, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1286, 184, 183, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 196, 189, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 107, 179, "Inner Castle Knight Guardian";// KNIGHT_GUARDIAN } /* else if (.@map$ == "te_prtcas02") { setarray .@data$[0], 1286, 162, 161, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 153, 161, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 178, 44, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1287, 71, 75, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1287, 49, 28, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1285, 64, 186, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1285, 76, 196, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1285, 75, 175, "Outer Castle Archer Guardian";// ARCHER_GUARDIAN } */ else if (.@map$ == "te_prtcas03") { setarray .@data$[0], 1286, 191, 190, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 137, 190, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 45, 99, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1287, 50, 87, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1287, 41, 87, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1285, 191, 42, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1285, 179, 43, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1285, 191, 72, "Outer Castle Archer Guardian";// ARCHER_GUARDIAN } /* else if (.@map$ == "te_prtcas04") { setarray .@data$[0], 1286, 276, 14, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 274, 35, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 246, 246, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1287, 38, 240, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1287, 29, 240, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1287, 33, 258, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1285, 78, 48, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1285, 36, 61, "Outer Castle Archer Guardian";// ARCHER_GUARDIAN } else if (.@map$ == "te_prtcas05") { setarray .@data$[0], 1286, 266, 262, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 287, 280, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1286, 245, 250, "Inner Castle Knight Guardian",// KNIGHT_GUARDIAN 1287, 236, 63, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1287, 251, 63, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1287, 278, 71, "Inner Castle Soldier Guardian",// SOLDIER_GUARDIAN 1285, 32, 253, "Outer Castle Archer Guardian",// ARCHER_GUARDIAN 1285, 44, 248, "Outer Castle Archer Guardian";// ARCHER_GUARDIAN } */ for ( .@i = 0; .@i < getarraysize(.@data$); .@i += 4 ) { set getelementofarray( getarg(0),.@index ), .@data$[.@i]; set getelementofarray( getarg(1),.@index ), .@data$[.@i+1]; set getelementofarray( getarg(2),.@index ), .@data$[.@i+2]; set getelementofarray( getarg(3),.@index ), .@data$[.@i+3]; .@index++; } } OnSpawnGuardians: GuardianData( .@mob_id, .@x, .@y, .@name$ ); .@map$ = strnpcinfo(4); .@tmp$ = replacestr(.@map$, "cas", ""); killmonster .@map$, "Kafra Employee#"+ .@tmp$ +"::OnGuardianDied"; for ( .@i = 0; .@i < MAX_GUARDIANS; .@i++ ) { if (getcastledata( .@map$,(.@i+10) )) guardian .@map$, .@x[.@i], .@y[.@i], .@name$[.@i], .@mob_id[.@i], "Kafra Employee#"+ .@tmp$ +"::OnGuardianDied",.@i; } } // Guild Dungeon Entrances //============================================================ - script lever2_TE -1,{ .@guild_id = getcastledata( strnpcinfo(4),1 ); if (.@guild_id == 0) { mes "[Ringing Voice]"; mes "'Those who overcome an ordeal shows a great deal of bravery... and will find their way to another ordeal.'"; close; } mes "[Ringing Voice]"; mes "'Only the truly brave can take the test.'"; next; mes " "; mes "There's a small lever. Will you pull it?"; next; if (select( "Pull.","Don't pull." ) == 1) { if (.@guild_id == getcharid(2)) { .@npc_map$ = strnpcinfo(4); /*if (compare( .@npc_map$,"te_alde" )) { .@map$ = "teg_dun02"; if (.@npc_map$ == "te_aldecas1") setarray .@coord[0],32,122; else if (.@npc_map$ == "te_aldecas2") setarray .@coord[0],79,30; else if (.@npc_map$ == "te_aldecas3") setarray .@coord[0],165,38; else if (.@npc_map$ == "te_aldecas4") setarray .@coord[0],160,148; else if (.@npc_map$ == "te_aldecas5") setarray .@coord[0],103,169; } */ //else { if (compare( .@npc_map$,"te_alde" )) { .@map$ = "teg_dun01"; if (.@npc_map$ == "te_prtcas01") setarray .@coord[0],28,251; //else if (.@npc_map$ == "te_prtcas02") setarray .@coord[0],164,268; else if (.@npc_map$ == "te_prtcas03") setarray .@coord[0],164,179; //else if (.@npc_map$ == "te_prtcas04") setarray .@coord[0],268,203; //else if (.@npc_map$ == "te_prtcas05") setarray .@coord[0],199,28; } warp .@map$,.@coord[0],.@coord[1]; } else { mes " "; mes "Nothing happened."; close; } } end; } // Treasure Room Exit //============================================================ - script lever1_TE -1,{ mes " "; mes "There's a small lever. Will you pull it?"; next; if ( select( "Pull.","Do not." ) == 1 ) { .@map$ = strnpcinfo(4); //if (.@map$ == "te_aldecas1") setarray .@coord[0],218,176; //else if (.@map$ == "te_aldecas2") setarray .@coord[0],51,179; //else if (.@map$ == "te_aldecas3") setarray .@coord[0],110,119; //else if (.@map$ == "te_aldecas4") setarray .@coord[0],67,117; //else if (.@map$ == "te_aldecas5") setarray .@coord[0],51,179; //else if (.@map$ == "te_prtcas01") setarray .@coord[0],112,183; if (.@map$ == "te_prtcas01") setarray .@coord[0],112,183; //else if (.@map$ == "te_prtcas02") setarray .@coord[0],94,62; else if (.@map$ == "te_prtcas03") setarray .@coord[0],51,101; //else if (.@map$ == "te_prtcas04") setarray .@coord[0],259,265; //else if (.@map$ == "te_prtcas05") setarray .@coord[0],36,38; warp .@map$,.@coord[0],.@coord[1]; } end; } // Treasure Room Spawn Template //============================================================ - script treasure_TE -1,{ OnClock0001:// Spawn Treasure Chests based on castle economy. .@map$ = strnpcinfo(4); if (.@map$ == "") end; .@guild_id = getcastledata(.@map$,1); if (.@guild_id == 0) end; .@economy = getcastledata(.@map$,2); .@defense = getcastledata(.@map$,3); .@economy_today = getcastledata(.@map$,4); .@defense_today = getcastledata(.@map$,5); killmonster .@map$, strnpcinfo(0)+"::OnTreasureDied"; if (.@economy_today) { .@economy = .@economy + .@economy_today + (rand(2) && getgdskilllv(.@guild_id,10014)); .@economy = ( .@economy > 100 ) ? 100 : .@economy; setcastledata .@map$,2,.@economy; setcastledata .@map$,4,0; } if (.@defense_today) { .@defense = .@defense + .@defense_today; .@defense = ( .@defense > 100 ) ? 100 : .@defense; setcastledata .@map$,3,.@defense; setcastledata .@map$,5,0; } /* if (.@map$ == "te_aldecas1") { setarray .@data[0],// <mob_id>, <x>,<y> 2452, 115,226,// TREASURE_BOX_TE 2458, 122,226,// TREASURE_BOX_TE_6 2452, 115,219, 2458, 122,219, 2452, 116,225, 2458, 117,225, 2452, 118,225, 2458, 119,225, 2452, 120,225, 2458, 121,225, 2452, 121,224, 2458, 121,223, 2452, 121,222, 2458, 121,221, 2452, 121,220, 2458, 120,220, 2452, 119,220, 2458, 118,220, 2452, 117,220, 2458, 116,220, 2452, 116,221, 2458, 116,222, 2452, 116,223, 2458, 116,224; } else if (.@map$ == "te_aldecas2") { setarray .@data[0], 2452, 134,231,// TREASURE_BOX_TE 2459, 135,231,// TREASURE_BOX_TE_7 2452, 135,230, 2459, 134,230, 2452, 132,233, 2459, 133,233, 2452, 134,233, 2459, 135,233, 2452, 136,233, 2459, 137,233, 2452, 137,232, 2459, 137,231, 2452, 137,230, 2459, 137,229, 2452, 137,228, 2459, 136,228, 2452, 135,228, 2459, 134,228, 2452, 133,228, 2459, 132,228, 2452, 132,229, 2459, 132,230, 2452, 132,231, 2459, 132,232; } else if (.@map$ == "te_aldecas3") { setarray .@data[0], 2452, 224,269,// TREASURE_BOX_TE 2460, 225,269,// TREASURE_BOX_TE_8 2452, 225,268, 2460, 224,268, 2452, 222,271, 2460, 223,271, 2452, 224,271, 2460, 225,271, 2452, 226,271, 2460, 227,271, 2452, 227,270, 2460, 227,269, 2452, 227,268, 2460, 227,267, 2452, 227,266, 2460, 226,266, 2452, 225,266, 2460, 224,266, 2452, 223,266, 2460, 222,266, 2452, 222,267, 2460, 222,268, 2452, 222,269, 2460, 222,270; } else if (.@map$ == "te_aldecas4") { setarray .@data[0], 2452, 84,13,// TREASURE_BOX_TE 2461, 85,13,// TREASURE_BOX_TE_9 2452, 85,12, 2461, 84,12, 2452, 82,15, 2461, 83,15, 2452, 84,15, 2461, 85,15, 2452, 86,15, 2461, 87,15, 2452, 87,14, 2461, 87,13, 2452, 87,12, 2461, 87,11, 2452, 87,10, 2461, 86,10, 2452, 85,10, 2461, 84,10, 2452, 83,10, 2461, 82,10, 2452, 82,11, 2461, 82,12, 2452, 82,13, 2461, 82,14; } else if (.@map$ == "te_aldecas5") { setarray .@data[0], 2452, 62,12,// TREASURE_BOX_TE 2462, 62,11,// TREASURE_BOX_TE_10 2452, 61,11, 2462, 59,14, 2452, 60,14, 2462, 61,14, 2452, 62,14, 2462, 63,14, 2452, 64,14, 2462, 64,13, 2452, 64,12, 2462, 64,11, 2452, 64,10, 2462, 64,9, 2452, 63,9, 2462, 62,9, 2452, 61,9, 2462, 60,9, 2452, 59,9, 2462, 59,10, 2452, 59,11, 2462, 59,12, 2452, 59,13; } */ //else if (.@map$ == "te_prtcas01") { if (.@map$ == "te_prtcas01") { setarray .@data[0], 2452, 8,211,// TREASURE_BOX_TE 2453, 9,211,// TREASURE_BOX_TE_1 2452, 10,211, 2453, 11,211, 2452, 12,211, 2453, 13,211, 2452, 13,209, 2453, 12,209, 2452, 11,209, 2453, 10,209, 2452, 9,209, 2453, 8,209, 2452, 8,207, 2453, 9,207, 2452, 10,207, 2453, 11,207, 2452, 12,207, 2453, 13,207, 2452, 13,206, 2453, 12,206, 2452, 11,206, 2453, 10,206, 2452, 9,206, 2453, 8,206; } /* else if (.@map$ == "te_prtcas02") { setarray .@data[0], 2452, 201,228,// TREASURE_BOX_TE 2454, 202,228,// TREASURE_BOX_TE_2 2452, 202,227, 2454, 201,227, 2452, 199,230, 2454, 200,230, 2452, 201,230, 2454, 202,230, 2452, 203,230, 2454, 204,230, 2452, 204,229, 2454, 204,228, 2452, 204,227, 2454, 204,226, 2452, 204,225, 2454, 203,225, 2452, 202,225, 2454, 201,225, 2452, 200,225, 2454, 199,225, 2452, 199,226, 2454, 199,227, 2452, 199,228, 2454, 199,229; } */ else if (.@map$ == "te_prtcas03") { setarray .@data[0], 2452, 187,132,// TREASURE_BOX_TE 2455, 188,132,// TREASURE_BOX_TE_3 2452, 188,131, 2455, 187,131, 2452, 185,134, 2455, 186,134, 2452, 187,134, 2455, 188,134, 2452, 189,134, 2455, 190,134, 2452, 190,133, 2455, 190,132, 2452, 190,131, 2455, 190,130, 2452, 190,129, 2455, 189,129, 2452, 188,129, 2455, 187,129, 2452, 186,129, 2455, 185,129, 2452, 185,130, 2455, 185,131, 2452, 185,132, 2455, 185,133; } /* else if (.@map$ == "te_prtcas04") { setarray .@data[0], 2452, 269,162,// TREASURE_BOX_TE 2456, 270,162,// TREASURE_BOX_TE_4 2452, 270,161, 2456, 269,161, 2452, 267,164, 2456, 268,164, 2452, 269,164, 2456, 270,164, 2452, 271,164, 2456, 272,164, 2452, 272,163, 2456, 272,162, 2452, 272,161, 2456, 272,160, 2452, 272,159, 2456, 271,159, 2452, 270,159, 2456, 269,159, 2452, 268,159, 2456, 267,159, 2452, 267,160, 2456, 267,161, 2452, 267,162, 2456, 267,163; } else if (.@map$ == "te_prtcas05") { setarray .@data[0], 2452, 275,178,// TREASURE_BOX_TE 2457, 276,178,// TREASURE_BOX_TE_5 2452, 276,177, 2457, 275,177, 2452, 273,180, 2457, 274,180, 2452, 275,180, 2457, 276,180, 2452, 277,180, 2457, 278,180, 2452, 278,179, 2457, 278,178, 2452, 278,177, 2457, 278,176, 2452, 278,175, 2457, 277,175, 2452, 276,175, 2457, 275,175, 2452, 274,175, 2457, 273,175, 2452, 273,176, 2457, 273,177, 2452, 273,178, 2457, 273,179; } */ .@treasure_num = ( 4 + ( .@economy /5 ) ) *3;// x3 <-> data[] size for ( .@i = 0; .@i < getarraysize(.@data) && .@treasure_num > .@i; .@i += 3 )// nb. [4;24] chests monster .@map$, .@data[.@i+1], .@data[.@i+2],"Treasure Chest", .@data[.@i],1, strnpcinfo(0)+"::OnTreasureDied"; OnTreasureDied: end; } // Flag warp Template //============================================================ function script F_flag_woe_TE { .@castle$ = getarg(1); .@guild_id = getcastledata( .@castle$,1 ); if (.@guild_id == 0) { mes "[ Edict of the Divine Rune-Midgarts Kingdom ]"; mes " "; mes "1. Follow the ordinance of The Divine Rune-Midgarts Kingdom, "; mes "We declare that"; mes "there is no formal master of this castle."; mes " "; mes "2. To the one who can "; mes "overcome all trials"; mes "and destroy the Emperium,"; mes "the king will endow the one with"; mes "ownership of this castle."; close; } if (.@guild_id == getcharid(2) && getarg(0)) { mes "[ Echoing Voice ]"; mes "Brave ones..."; mes "Do you wish to return to your honorable place?"; next; if (select( "Return to the guild castle.","Quit." ) == 1) { if (jobcanentermap(.@castle$) == 0) { mes "Tertiary job class and users with expanded levels are not allowed to participate in Training Siege Battles."; close; } if (getcastledata( getarg(1),1 ) == getcharid(2)) warp getarg(1),getarg(2),getarg(3); end; } } .@guildname$ = getguildname(.@guild_id); .@guildmaster$ = getguildmaster(.@guild_id); mes "[ Edict of the Divine Rune-Midgarts Kingdom ]"; mes " "; mes "1. Follow the ordinance of The Divine Rune-Midgarts Kingdom, "; mes "we approve that this place is in"; mes "the private prossession of ^ff0000"+.@guildname$+"^000000 Guild."; mes " "; mes "2. The guild Master of ^ff0000"+.@guildname$+"^000000 Guild is"; mes "^ff0000"+.@guildmaster$+"^000000"; mes "If there is anyone who objects to this,"; mes "prove your strength and honor with a steel blade in your hand."; close; } - script simple_info_TE -1,{ callfunc( "F_flag_woe_TE",0,strnpcinfo(4) ); OnInit: if (strnpcinfo(4) != "") flagemblem getcastledata( strnpcinfo(4),1 ); end; } - script flag_te GUILD_FLAG,{ end; OnInit: if (strnpcinfo(2) != "") flagemblem getcastledata( strnpcinfo(2),1 ); end; } // GM NPC //============================================================ prt_gld,1,4,0 script #Enterance Button prt CLEAR_NPC,{ mes "password"; next; if ( callfunc( "F_GM_NPC", 1854,0, 0,9000 ) < 1 ) { mes "That's not right"; close; } mes "What do you want to do with the Gloria-bound warp?"; next; switch( select( "Open it","Close it","Cancel","Rental item provided" ) ) { case 1: mes "Opening the warp."; enablenpc "to_gloria"; close; case 2: mes "Closing the warp."; disablenpc "to_gloria"; close; case 3: end; case 4: mes "You have 300 seconds."; rentitem 13083,300;// TE_Woe_Knife close; } } alde_gld,1,4,0 script #Enterance Button ald CLEAR_NPC,{ mes "password"; next; if ( callfunc( "F_GM_NPC", 1854,0, 0,9000 ) < 1 ) { mes "That's not right"; close; } mes "What do you want to do with the Kafragarten-bound warp?"; next; switch( select( "Open it","Close it","Cancel" ) ) { case 1: mes "Opening the warp."; enablenpc "to_kafragarten"; close; case 2: mes "Closing the warp."; disablenpc "to_kafragarten"; close; case 3: end; } } /* // God Item Hervor & Jormungand sec_in02,20,20,0 script Test Guide CLEAR_NPC,{ mes "Password?"; next; if (callfunc( "F_GM_NPC", 18543792,0, 0,99999999 ) < 1) { mes "Aww..."; close; } mes "We provide material items needed for testing TE."; next; switch( select( "Materials for Hervor","Materials for Jormungand" ) ) { case 1: getitem 6595,2;// Hammer_Of_Velund getitem 6596,1;// Anvil_Of_Velund getitem 6594,4;// Magic_Bronze_Bullion getitem 6597,3;// Bracelet_Of_Velund getitem 6602,1;// Secret_Of_Rune getitem 6605,1;// Muspellium getitem 6604,1;// Essence_Of_Rune getitem 2115,1;// Valkyrja's_Shield end; case 2: getitem 6603,4;// Skin_Of_Hraesvelg getitem 6599,1;// Spirit_Of_Hugin getitem 6598,1;// Rib_Of_Jormungand getitem 6601,4;// Chisel_Of_Giant getitem 6600,1;// Spirit_Of_Munin getitem 6605,1;// Muspellium getitem 6604,1;// Essence_Of_Rune getitem 1473,1;// Wizardy_Staff end; } } */
-
How to edit taekwon job increase max level and job level?
rakuzas posted a question in General Support
Hello, Last few days, rAthena team updated their job_exp_db and now my custom increase capped max level for taekwon job not properly working.. Level stuck at 0 or the char HP less than SP.. And how can I properly change the capped limit for taekwon max level? Since his new job not release yet, but my player insist to edit this to enable use of temporal boots and etc.. Please guide me.. Thank you in advance.. This is the last my job_exp_db which working before the update : // Experience Tables [Renewal] // Only official levels included, check db/import-tmpl/job_exp.txt for an expanded list // // Structure of Database: // Max Level,Class list,Type,Exp for Lv 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175 // // Type: // 0 = Base Exp, 1 = Job Exp //Base - Normal and Baby Jobs 99,0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:23:24:25:4023:4024:4025:4026:4027:4028:4029:4030:4031:4032:4033:4034:4035:4036:4037:4038:4039:4040:4041:4042:4043:4044:4045:4050:4051:4052,0,550,900,1500,2200,3200,3800,4200,4550,5000,5500,6000,6100,6350,6700,7350,8000,8400,8800,9200,9700,10300,11000,11800,13000,14000,15000,16000,17000,18000,19000,20000,21000,22000,23200,24000,26000,27500,29000,30000,31500,33000,34000,36000,37500,38000,40000,42000,44500,47000,49000,51000,53000,55000,57000,59000,61500,63000,65000,67000,69000,70000,73000,77000,80000,84000,88000,91000,95000,110000,128000,140000,155000,163000,170000,180000,188000,195000,200000,230000,260000,300000,350000,400000,480000,550000,600000,680000,750000,900000,1000000,1200000,1500000,1800000,2100000,2400000,2800000,3300000,4000000,99999999 //Base - Adv Jobs 99,4001:4002:4003:4004:4005:4006:4007:4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,0,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,99999999 //Base - 3rd Jobs, Baby 3rds, Oboro/Kagerou, Rebellion, & Summoner //Note: (First 98 values [Level 1 - 98] are only used by Summoner Class, because 3rd classes start at level 99.) 175,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4218:4220:4223:4224:4229,0,55,90,150,220,320,380,420,455,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1800,2100,2400,2700,3000,3300,3600,3900,4200,4500,5400,6300,7200,8100,9000,9900,10800,11700,12600,13500,16200,18900,21600,24300,27000,29700,32400,35100,37800,40500,43200,45900,48600,51300,54000,56700,59400,62100,64800,67500,75600,83700,91800,99900,108000,116100,124200,132300,140400,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999 //Base - Expanded Super Novice & Expanded Super Baby 160,4190:4191,0,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999 //Job - Novice & Baby Novice 10,0:4023,1,10,18,28,40,91,151,205,268,340,999999999 //Job - 1st Classes & Baby 1st Classes, Taekwon 50,1:2:3:4:5:6:4024:4025:4026:4027:4028:4029:4046:4050,1,60,130,260,460,780,1060,1300,1560,1910,2290,2680,2990,3340,3740,4360,4970,5530,6120,6700,8090,8920,9970,11080,12690,14440,15850,17400,19220,21060,22870,24910,26840,29080,31320,33300,37110,40500,43570,46180,53510,57200,60310,65690,70090,72130,77540,83320,90120,97180,999999999 //Job - 2nd Classes & Baby 2nd Classes, Soul Linker 50,7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:4030:4031:4032:4033:4034:4035:4036:4037:4038:4039:4040:4041:4042:4043:4044:4049:4051:4052,1,2500,4200,7000,10300,15900,18900,20900,22600,24900,28800,31500,32000,33300,35100,40500,44100,46300,48500,50700,56000,59400,63500,68100,75000,85700,90500,96600,102600,108600,119700,126000,132300,138600,146100,157500,170600,180400,190300,196800,214900,225200,232000,245700,255900,279300,294000,308700,327000,345400,999999999 //Job - Novice High 10,4001,1,11,20,31,44,100,166,226,295,374,999999999 //Job - Adv First Classes 50,4002:4003:4004:4005:4006:4007,1,100,200,350,550,800,1100,1450,1850,2300,2800,3350,3950,4600,5300,6050,6850,7700,8600,9550,10550,11600,12700,13850,15050,16300,17600,18950,20350,21800,23300,24850,26450,28100,29800,31550,33350,35200,37100,39050,41050,43100,45200,47350,49550,51800,54100,56450,58850,61300,999999999 //Job - Adv Second Classes 70,4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,1,3800,6200,10400,15200,22900,27100,30000,32500,35700,41300,45000,45800,47600,50300,58700,63900,67100,70300,73500,90600,96200,102700,110200,121400,144700,152900,163100,173300,183500,213500,224700,236000,247200,260700,299800,324800,343600,362300,374800,474400,497000,512100,542200,564800,644300,678200,712100,754500,796900,873100,911900,950600,989400,1028100,1143300,1199900,1233800,1279100,1324300,1486900,1515900,1603000,1719200,1806300,2040300,2244300,2415900,2746000,3326000,999999999 //Job - 3rd Jobs & Baby 3rds, Oboro/Kagerou, & Rebellion 60,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4223:4224:4229,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,131668000,145518000,160753000,177511000,195944000,216220000,238523000,263056000,290042000,319726000,999999999 //Job - Expanded Super Novice & Expanded Super Baby 50,4190:4191,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,999999999 //Job - Ninja/Gunslinger 70,24:25,1,200,300,400,600,700,1000,1200,1400,1700,1900,2400,2700,3200,3600,4200,4900,5500,6100,6900,7700,8400,9300,10100,11100,12100,13000,14600,16100,17500,18600,21500,23300,24700,27000,29000,30000,32400,35000,38100,41100,44000,46700,49600,52500,55600,58900,62700,65500,69200,72300,81200,84100,89300,95500,100900,107800,114900,120700,128600,150500,176900,196100,219600,234200,247900,266400,281300,296600,308000,999999999 //Job - Star Gladiator 50,4047:4048,1,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,101400,112000,118800,127000,136200,150000,171400,181000,193200,205200,217200,239400,252000,264600,277200,292200,315000,341200,360800,380600,393600,429800,450400,464000,491400,511800,558600,588000,617400,654000,690800,999999999 //Job - Super Novice & Baby Super Novice 99,23:4045,1,60,130,260,460,780,1060,1300,1560,1910,2290,2680,2990,3340,3740,4360,4970,5530,6120,6700,8090,8920,9970,11080,12690,14440,15850,17400,19220,21060,22870,24910,26840,29080,31320,33300,37110,40500,43570,46180,53510,57200,60310,65690,70090,72130,77540,83320,90120,97180,590120,600120,610120,620120,630120,640120,650120,660120,670120,680120,690120,700120,710120,720120,730120,740120,750120,760120,770120,780120,790120,800120,810120,820120,830120,840120,850120,860120,870120,880120,890120,900120,910120,920120,930120,940120,950120,960120,970120,980120,990120,1000120,1010120,1020120,1030120,1040120,1050120,1060120,1070120,999999999 //Job - Summoner 50,4218,1,60,130,260,460,780,1060,1300,1560,1910,2500,4200,7000,10300,15900,18900,20900,22600,24900,28800,31500,34900,38300,41700,45100,48500,51900,55000,72000,89000,106000,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,999999999 Latest updated job_exp_db by rAthena team : // Experience Tables [Renewal] // Only official levels included, check db/import-tmpl/job_exp.txt for an expanded list // // Structure of Database: // Max Level,Class list,Type,Exp for Lv 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175 // // Type: // 0 = Base Exp, 1 = Job Exp //Base - Normal and Baby Jobs 99,0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:23:24:25:4023:4024:4025:4026:4027:4028:4029:4030:4031:4032:4033:4034:4035:4036:4037:4038:4039:4040:4041:4042:4043:4044:4045:4046:4047:4048:4049:4050:4051:4052:4222:4225:4226:4227:4228:4238,0,550,900,1500,2200,3200,3800,4200,4550,5000,5500,6000,6100,6350,6700,7350,8000,8400,8800,9200,9700,10300,11000,11800,13000,14000,15000,16000,17000,18000,19000,20000,21000,22000,23200,24000,26000,27500,29000,30000,31500,33000,34000,36000,37500,38000,40000,42000,44500,47000,49000,51000,53000,55000,57000,59000,61500,63000,65000,67000,69000,70000,73000,77000,80000,84000,88000,91000,95000,110000,128000,140000,155000,163000,170000,180000,188000,195000,200000,230000,260000,300000,350000,400000,480000,550000,600000,680000,750000,900000,1000000,1200000,1500000,1800000,2100000,2400000,2800000,3300000,4000000,99999999 //Base - Adv Jobs 99,4001:4002:4003:4004:4005:4006:4007:4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,0,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,99999999 //Base - 3rd Jobs, Baby 3rds, Oboro/Kagerou, Rebellion, & Summoner //Note: (First 98 values [Level 1 - 98] are only used by Summoner Class, because 3rd classes start at level 99.) 175,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4218:4220:4223:4224:4229,0,55,90,150,220,320,380,420,455,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1800,2100,2400,2700,3000,3300,3600,3900,4200,4500,5400,6300,7200,8100,9000,9900,10800,11700,12600,13500,16200,18900,21600,24300,27000,29700,32400,35100,37800,40500,43200,45900,48600,51300,54000,56700,59400,62100,64800,67500,75600,83700,91800,99900,108000,116100,124200,132300,140400,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999 //Base - Expanded Super Novice & Expanded Super Baby 160,4190:4191,0,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999 //Job - Novice & Baby Novice 10,0:4023,1,10,18,28,40,91,151,205,268,340,999999999 //Job - 1st Classes & Baby 1st Classes, Taekwon 50,1:2:3:4:5:6:4024:4025:4026:4027:4028:4029:4046:4050:4225,1,60,130,260,460,780,1060,1300,1560,1910,2290,2680,2990,3340,3740,4360,4970,5530,6120,6700,8090,8920,9970,11080,12690,14440,15850,17400,19220,21060,22870,24910,26840,29080,31320,33300,37110,40500,43570,46180,53510,57200,60310,65690,70090,72130,77540,83320,90120,97180,999999999 //Job - 2nd Classes & Baby 2nd Classes, Soul Linker 50,7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:4030:4031:4032:4033:4034:4035:4036:4037:4038:4039:4040:4041:4042:4043:4044:4049:4051:4052:4227,1,2500,4200,7000,10300,15900,18900,20900,22600,24900,28800,31500,32000,33300,35100,40500,44100,46300,48500,50700,56000,59400,63500,68100,75000,85700,90500,96600,102600,108600,119700,126000,132300,138600,146100,157500,170600,180400,190300,196800,214900,225200,232000,245700,255900,279300,294000,308700,327000,345400,999999999 //Job - Novice High 10,4001,1,11,20,31,44,100,166,226,295,374,999999999 //Job - Adv First Classes 50,4002:4003:4004:4005:4006:4007,1,100,200,350,550,800,1100,1450,1850,2300,2800,3350,3950,4600,5300,6050,6850,7700,8600,9550,10550,11600,12700,13850,15050,16300,17600,18950,20350,21800,23300,24850,26450,28100,29800,31550,33350,35200,37100,39050,41050,43100,45200,47350,49550,51800,54100,56450,58850,61300,999999999 //Job - Adv Second Classes 70,4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,1,3800,6200,10400,15200,22900,27100,30000,32500,35700,41300,45000,45800,47600,50300,58700,63900,67100,70300,73500,90600,96200,102700,110200,121400,144700,152900,163100,173300,183500,213500,224700,236000,247200,260700,299800,324800,343600,362300,374800,474400,497000,512100,542200,564800,644300,678200,712100,754500,796900,873100,911900,950600,989400,1028100,1143300,1199900,1233800,1279100,1324300,1486900,1515900,1603000,1719200,1806300,2040300,2244300,2415900,2746000,3326000,999999999 //Job - 3rd Jobs & Baby 3rds, Oboro/Kagerou, & Rebellion 60,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4223:4224:4229,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,131668000,145518000,160753000,177511000,195944000,216220000,238523000,263056000,290042000,319726000,999999999 //Job - Expanded Super Novice & Expanded Super Baby 50,4190:4191,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,999999999 //Job - Ninja/Gunslinger 70,24:25:4222:4228,1,200,300,400,600,700,1000,1200,1400,1700,1900,2400,2700,3200,3600,4200,4900,5500,6100,6900,7700,8400,9300,10100,11100,12100,13000,14600,16100,17500,18600,21500,23300,24700,27000,29000,30000,32400,35000,38100,41100,44000,46700,49600,52500,55600,58900,62700,65500,69200,72300,81200,84100,89300,95500,100900,107800,114900,120700,128600,150500,176900,196100,219600,234200,247900,266400,281300,296600,308000,999999999 //Job - Star Gladiator 50,4047:4048:4226:4238,1,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,50700,101400,112000,118800,127000,136200,150000,171400,181000,193200,205200,217200,239400,252000,264600,277200,292200,315000,341200,360800,380600,393600,429800,450400,464000,491400,511800,558600,588000,617400,654000,690800,999999999 //Job - Super Novice & Baby Super Novice 99,23:4045,1,60,130,260,460,780,1060,1300,1560,1910,2290,2680,2990,3340,3740,4360,4970,5530,6120,6700,8090,8920,9970,11080,12690,14440,15850,17400,19220,21060,22870,24910,26840,29080,31320,33300,37110,40500,43570,46180,53510,57200,60310,65690,70090,72130,77540,83320,90120,97180,590120,600120,610120,620120,630120,640120,650120,660120,670120,680120,690120,700120,710120,720120,730120,740120,750120,760120,770120,780120,790120,800120,810120,820120,830120,840120,850120,860120,870120,880120,890120,900120,910120,920120,930120,940120,950120,960120,970120,980120,990120,1000120,1010120,1020120,1030120,1040120,1050120,1060120,1070120,999999999 //Job - Summoner 50,4218:4220,1,60,130,260,460,780,1060,1300,1560,1910,2500,4200,7000,10300,15900,18900,20900,22600,24900,28800,31500,34900,38300,41700,45100,48500,51900,55000,72000,89000,106000,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,999999999 -
Job Sprite: Third Job Costumes & New Classes: Corrected
rakuzas replied to Haziel's topic in Sprites & Pallette Downloads
https://rathena.org/board/files/category/142-utilities/ -
Job Sprite: Third Job Costumes & New Classes: Corrected
rakuzas replied to Haziel's topic in Sprites & Pallette Downloads
For 2015 client you may disabled using NEMO.. And FYI, you can set cloth color to 0.. And its working for me.. Or you can edit or make script with using changelook.. As in my case before, my dress room give cloth color #1 and it shown black as your image.. So I edit it to make it 0.. And it work.. Also.. Alternate outfit dont have color variety.. So I set my server limit using default color only.. Hope this help you.. -
nice.. Thank you..
-
Hello, I want to confirmed.. Did this scripts included : 1. If player autotrade/vending, his reward will be pause or stop 2. Limit once per PC? To avoid player who multiple client abuse this script? 3. Giving points instead of rewards? Like every 1 hour got 1 points.. Then points can exchange with points reward shop? Thank you for your script..