Leaderboard
Popular Content
Showing content with the highest reputation on 07/09/13 in all areas
-
Unknown info only watch the trailer:... no date, no test open,... company (dream2) This better that RO2... xD2 points
-
So I have been out of the RO scene since around 2010 and I'm new to rA I just updated my server and got everything working flawlessly item,npcs,mobs, all that so I decided to get back into spriting and after watching alot of SAO I decided to try spriting weapons which is new territory for me. I have seen the Elucidator a few times on here but I tend to prefer to make my owns sprites basically I just want opinions and constructive criticism on the quick mock up I made. So yea here it is Zoomed Here is what I was attempting to make for those who don't know2 points
-
Naja zudem großteil bereits releaste welche nur eingedeutscht wurden. Also schon irgendwie fragwürdig dafür die Credits einheimsen zu wollen.2 points
-
The first error "#1062 - Duplicate entry '1' for key 'PRIMARY'" is probably because you are importing main.sql again. When you imported main.sql the first time, it already created the server account with account_id = 1. If you want to re-import main.sql, you should delete all the tables from your Ragnarok database first. The second error -- you can fix this by using the 'mysql' command-line client instead of phpMyAdmin. To import a file: mysql -h 127.0.0.1 -u USER -p DATABASE < /path/to/rathena/sql-files/mob_skill_db.sql- replace 127.0.0.1 with your MySQL server's IP - replace USER with your MySQL username - replace DATABASE with your Ragnarok database name - when prompted, enter your MySQL password.2 points
-
Hi.. the first topic was started by Judas.. Refer to this thread : http://rathena.org/board/topic/70962-recommended-client-setup/ So, i have diffed 2012-04-10 client with recommended patch and build the grf using latest data folder and LUB files provided in Judas post. It was setting up for localhost/127.0.0.1 only.. If you want replace the IP, you need to edit clientinfo.xml and rebuild the grf. You can download here : Tested 28 April 2013 Full Version : http://goo.gl/lEWQ2 Lite Version (kRO not included) : http://goo.gl/vGTFS Things need to do on server-side/rAthena SVN folder : 1. open mmo.h ( located at src/common/mmo.h ) #ifndef PACKETVER #define PACKETVER 20120410 //put 20120410 since i'm using 2012-04-10 client 2. open packet_db.txt ( located at db/packet_db.txt ) packet_db_ver: default packet_ver: 30 // put 30 for packet_ver and Done... run your server and open 2012-04-10.exe.. Any problem's regarding this client pack pls post here.. *thnx to Judas and rAthena development team..1 point
-
rAthena Renewal battle support and major battle/skill system overhaul! ATTENTION! There have been several bugfixes since Renewal battle support was initially introduced with r17402. Please make sure to stay up to date with the latest SVN build for any potential fixes or changes. r17406 - Corrected Renewal EDP to exclude Grimtooth and Venom Knife r17413 - Corrected Renewal Final Strike to remove Ninja Soul and Hiding status on use r17417 - EDP incorrectly doubling weapon ATK bonus r17418 - Status ATK not being forced to an element r17420 - Reductions weren't being applied properly to damage dealt from players I tried to be as thorough as possible, there was just some bugs I had not ran into because I hadn't ran into them myself, and when we released the patch out to testing it wasn't reported. We are trying to fix them ASAP. Please make sure to stay up to date on the latest SVN for any potential bugfixes and report any issues you may run into! Overview: r17402 brings exactly what you've been waiting for all this time, a comprehensive and painstakingly accurate Renewal skill and battle system. After many sleepless nights and sacrifices to various foul gods, and lots and lots of moral support, we are proud to say this was worth the wait. Battle.c, the heart of the rAthena combat calculation engine, has been massively refactored and brought into line with official calculation methods and "quirks". And all skills, we're proud to say, are in place and functional and above all, accurate for both pre-renewal and renewal modes. No more placeholders! I'll keep this overview brief. If you're interested in a complete technical breakdown of all the renewal formulas and the methods how damage is calculated on official servers, keep on reading for exact formulas and gameplay behavior changes. Changes: Renewal EDP is fully implemented and functioning according to official behaviors All skills updated to their official Renewal formulas and behaviors, notable examples including Soul Breaker, Acid Demonstration, and Spiral Pierce Countless skill fixes and undocumented official behaviors "documented" and implemented for both Renewal and Pre-Renewal modes Battle.c rewritten for easier maintenance and modification Renewal skill database updated and verified If you have any source modifications, you may experience some issues updating. We highly highly recommend starting from a clean SVN copy before applying any source modifications. Those of you with stock installations should be fine with an SVN pull and a recompile. This update isn't just for renewal support either, many skills and behaviors have been corrected for pre-renewal as well. We definitely recommend upgrading to this even if you're running a purely pre-renewal server for a more accurate gameplay experience. Many many thanks go to Baalberith who did most of the initial refactoring work, and to Akinari who beat me over the head to make sure I finished this xP! Gory technical details General * Forced neutral behavior documented and implemented. Weapon element does affect the following skills, but final damage is treated neutral for resistances. End result is endows do boost skill damage as expected given elemental weaknesses or resistances, but forced neutral skills will always miss on Ghost 3/4 mobs as the damage is "forced" back to neutral type after bonuses are applied but before resistances. * The following skills are considered "forced neutral" Merchant "Cart Revolution" Creator "Acid Demonstration" Genetic "Cart Cannon" (damage is forced to element of cannon ball, either neutral or holy or ghost) * Weapon calculation engine has been rewritten to better emulate official behaviors and "quirks", the following changes have been documented and implemented: Double attack takes priority over criticals when determining which effect activates VITDEF (status or sDEF) is applied on every hit on multi-hit skills, rather than a flat reduction on the final damage total Skills such as Spiral Pierce that differ when used by monsters modified to match official calculation methods * Weapon element behavior adjusted to match official behavior, endows override any innate weapon element, including elemental arrows * Renewal - weapon element only applies bonus damage to "weapon" ATK, ATK from status and equipment is considered neutral and ATK from mastery skills are considered non-elemental * Renewal - MATK on offhand equipped items does stack and apply towards total MATK calculated for skills and spells. This means classes that can dual wield will be able to get +MATK from both weapons, unlike physical where offhand ATK is ignored for skills. Archer * Renewal - Owl's Eye still gives +1 HIT per skill level but the HIT bonus does not show up in the status window anymore Hunter * Renewal - Claymore, freeze trap and landmine adjusted to apply full damage to "plant" type mobs (monsters that only take 1 damage on every hit) Thief * Double attack gives a hidden +1 HIT per skill level on attacks that activate the double attack effect * Envenom gives a flat +15 ATK per skill level when used, it is considered a mastery type damage and has no element Rogue * Renewal - Owl's Eye still gives +1 HIT per skill level but the HIT bonus does not show up in the status window anymore Merchant * Cart Revolution adjusted to match "forced neutral" behavior Assassin Cross * Advanced Katar Mastery modified. is treaded similar to a +%ATK card rather than a weapon mastery * Renewal - Soul Breaker formula for Renewal implemented ((ATK + MATK) * (3 + (.5 * skill level)) - (eDEF + sDEF + eMDEF + sMDEF) * Renewal - Soul Breaker no longer misses, it will always do full damage regardless of target's FLEE * Renewal - Soul Breaker no longer gains DEF piercing or ignore DEF effect from weapons such as Combat Knife and Ice Pick * Renewal - Enchant Deadly Poison for Renewal implemented Weapon ATK multiplied by (1 + (EDP level * .8)) Equipment ATK multiplied by (1 + (EDP level * .6)) * Renewal - EDP adds half modifiers (base damage/2) but otherwise functions as above with the following skills: Sonic Blow Soul Breaker Counter Slash Cross Impact * Renewal - EDP no longer affects the following skills: Grimtooth Venom Knife * Renewal - EDP now affects the following skills: Meteor Assault Soul Breaker * EDP still does not affect Venom Splasher in both Renewal and Pre-Renewal modes Creator * Renewal - Acid Demonstration formula for Renewal implemented 7 * ((ATK + MATK) / skill level) * VIT / 100 ) * Acid Demonstration adjusted to match "forced neutral" behavior on official For example, Acid Demonstration used on a water-type mob with a wind endowed weapon will do bonus damage, but will miss on a Ghost 3/4 monster regardless of endow. Swordsman * Magnum break bonus damage gives +20% ATK fire damage on physical attack (so 100% ATK normal + 20% ATK fire) Lord Knight * Renewal - Spiral Pierce formula for Renewal implemented (ATK + (weapon weight / 2)) * (100 + (50 * skill level))% * Renewal - Mastery skills such as spear mastery no longer add any bonus damage to Spiral Pierce * Renewal - Spiral Pierce no longer ignores DEF Ninja * Renewal - Final Strike formula for Renewal implemented base damage = current hp + ((ATK * current hp * skill lvl) / max hp) final damage = base damage + ((mirror image count + 1) / 5 * base damage) - (eDEF + sDEF) * Final Strike will MISS on plant-type mobs (mobs that only take 1 damage per hit from all sources) * Mirror Image cast over itself will override and reset current Mirror Image count Genetic * Cart Cannon "forced element" behavior implemented, damage is "forced" to the element of the cannon ball. Ex. Cart Cannon fitted with a standard cannon ball and a fire elemental weapon will do bonus damage against earth targets, and a Cart Cannon fitted with a holy cannon ball will do bonus damage against shadow, but total damage is forced back to element of cannon ball and resistances applied against it. Neutral cannon balls will miss on Ghost 3/4 but holy/ghost/shadow will not. Gunslinger * Gunslinger Mine skill formula and behavior matched to official Fixed 50 * skill level damage, ignores DEF and is affected by +% ATK weapon cards only Warlock * Tetra Vortex behavior modified to match official First 4 spirit spheres are used for calculating element of each hit, but if 5 are present all 5 are consumed Taekwon Kid * Renewal - Mild wind applies element bonus to status ATK as well as weapon ATK, unlike endows1 point
-
1 point
-
Yes, because those files only modify the existing tables mob_skill_db and item_db2. trunk/sql-files/mob_skill_db_re.sql # # Table structure for table `mob_skill_db` # DROP TABLE IF EXISTS `mob_skill_db`; CREATE TABLE IF NOT EXISTS `mob_skill_db` ( trunk/sql-files/item_db2_re.sql# # Table structure for table `item_db2` # DROP TABLE IF EXISTS `item_db2`; CREATE TABLE `item_db2` (1 point
-
45º Pixel illuminated lines should have some antialias. Add a glow effect if required, otherwise the edges must be black. Even though it's rarely seen in RO, I do believe glows in edges can be awesome using TGA spriting and even not using it. A quick example: (used SB palette, this is not a TGA sprite, but an 8 bit one. However, a TGA sprite would allow you to add a 50% opacity line around the illuminated edges at the border).1 point
-
- .@guild_id = getcharid(2); - : means 'delete the line' + set .@guild_id, getcharid(2); + : means 'add the line' prontera,150,150,5 script ihjbnik 56,{ .@guild_id = getcharid(2);// <---- REPLACE HERE if ( !.@guild_id ) { Like that prontera,150,150,5 script ihjbnik 56,{ set .@guild_id, getcharid(2); if ( !.@guild_id ) { mes "you are not in a guild"; close; } else if ( getguildmasterid(.@guild_id) != getcharid(0) ) { mes "I only talk to the guild master"; close; } mes "warp?"; next; if ( select( "yes", "no" ) -1 ) end; warpguild "prontera",161,181,.@guild_id; end; } it's hard to help you1 point
-
try it btw with this script you can gain 2 cards at once (normal drop+by script) I suggest to implement theses commands on your server (rathena only, search the trac) *addmonsterdrop <monster id>,<item id>,<rate>; *addmonsterdrop "<monster name>",<item id>,<rate>; *delmonsterdrop <monster id>,<item id>; *delmonsterdrop "<monster name>",<item id>; These commands will temporarily add or delete a monster drop, which will be reset when the mob database reloads or the server shuts down. They return 1 upon success. If the monster already drops the specified item, its drop rate will be updated with the given rate (100 = 1%). Examples: // Makes Owl Baron drop Honey at an 80% rate. addmonsterdrop 1295,518,8000; // Deletes Executioner's Mitten from Rybio. delmonsterdrop 1201,7017;1 point
-
ATK is halved because bows flip STR and DEX for ATK calculations and you have significantly lower DEX vs STR.1 point
-
i think this issue is out of topic. you should make your own topic regarding on that issue. this is a common issue for rAthena emulator. http://rathena.org/board/tracker/issue-7585-cash-shop-list-problem/?gopid=19516#entry19516 have you tried to check this if this issue if its related to your problem? http://rathena.org/board/tracker/issue-7806-cash-shop-problem-2012-04-10-ragexere/1 point
-
To import a SQL file using the < operator, you don't run "mysql.exe" directly. 1. open a command prompt 2. 'cd' to C:\Program Files\MySQL\MySQL Server 5.0\bin\ 3. then type: mysql.exe -h myip -u myuser -p ragnarok < C:\Desktop\trunk\sql-files\mob_skill_db.sql1 point
-
Yes, your "Ragnarok" database is named ragnarok Do you have the MySQL command-line client installed on your computer? It might be in a folder like C:\Program Files\MySQL\bin\mysql.exe You'd have to 'cd' into that folder, then type mysql -h myip -u myuser -p ragnarok < C:\Desktop\trunk\sql-files\mob_skill_db.sql1 point
-
You'd have to add a condition in the source to check every message for the word "questitem", and trigger a label if found. It's a pretty terrible idea.1 point
-
? the link is alive http://pastebin.com/u7QKZPk7 CREATE TABLE IF NOT EXISTS `callfrnd` ( `id` int(11) NOT NULL auto_increment, `account_id` int(11) NOT NULL default '0', `name` varchar(23) NOT NULL default '', `last_ip` varchar(100) NOT NULL default '', `last_ip2` varchar(100) NOT NULL default '', `ref_name` varchar(23) NOT NULL default '', `ref_id` int(11) NOT NULL default '0', `mins` tinyint(3) unsigned NOT NULL default '0', `days` tinyint(3) unsigned NOT NULL default '0', `task_end` tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (`account_id`), KEY (`id`) ) ENGINE=MyISAM;1 point
-
In Renewal cards were changed to raise equipment and weapon ATK only, not total ATK, so there's a less pronounced gain from them. Status ATK, the ATK coming from STR/DEX/LUK is completely unaffected by cards or any sort of ATK increasing. Conversely it's also considered purely neutral, so it also doesn't gain any benefits from element EXCEPT in the case of Mild Wind (to allow Taekwons to actually do damage ) Renewal was a very large nerf against overupgraded quad compounded level 1 weapons, and a dramatic shift to make level 3/4 weapons far more valuable. If you want to partially restore the old behavior without completely committing to Pre-Renewal formulas, apply the following diff: Index: src/map/battle.c =================================================================== --- src/map/battle.c (revision 17407) +++ src/map/battle.c (working copy) @@ -4316,6 +4316,7 @@ //Card Fix for attacker (sd), 2 is added to the "left" flag meaning "attacker cards only" wd.weaponAtk += battle_calc_cardfix(BF_WEAPON, src, target, battle_skill_get_damage_properties(skill_id, wd.miscflag), right_element, left_element, wd.weaponAtk, 2, wd.flag); wd.equipAtk += battle_calc_cardfix(BF_WEAPON, src, target, battle_skill_get_damage_properties(skill_id, wd.miscflag), right_element, left_element, wd.equipAtk, 2, wd.flag); + wd.statusAtk += battle_calc_cardfix(BF_WEAPON, src, target, battle_skill_get_damage_properties(skill_id, wd.miscflag), right_element, left_element, wd.statusAtk, 2, wd.flag); if( is_attack_left_handed(src, skill_id )) { wd.weaponAtk2 += battle_calc_cardfix(BF_WEAPON, src, target, battle_skill_get_damage_properties(skill_id, wd.miscflag), right_element, left_element, wd.weaponAtk2, 3, wd.flag); wd.equipAtk2 += battle_calc_cardfix(BF_WEAPON, src, target, battle_skill_get_damage_properties(skill_id, wd.miscflag), right_element, left_element, wd.equipAtk2, 3, wd.flag); This will apply card bonuses to status ATK. Be forewarned a lot of the skills were adjusted and rebalanced to take into the lower effect status ATK has and this will likely throw a lot of damage numbers out of proportion. Status ATK still will not receive any bonuses from weapon element/endows, but if you wish to revert that as well it's only a few more lines of code.1 point
-
This post has been transferred to the Bug Tracker: bugreport:7808 A script developer will look into this as soon as possible, and a response will be posted in the bug report. Thank you!1 point
-
try this ... BUILDIN_FUNC(getdirection) { int udir; struct block_list* bl; bl = map_id2bl(script_getnum(st,2)); if( bl == NULL ){ script_pushint(st,-1); return 0; } udir = (bl->type == BL_NPC ? ((TBL_NPC*)bl)->ud.dir :unit_bl2ud(bl)->dir); script_pushint(st,udir); return 0; } BUILDIN_DEF(getdirection,"i"),1 point
-
if im not mistaken the last diffgen working is for 2012-07-16. the rest is 2013 client. and regarding on the iteminfo. check your system/iteminfo.lua or iteminfo.lub1 point
-
1 point
-
maybe you have an existing file ,try to backup your db, erase the current, then insert again the new ones.1 point
-
Renewal magic attack was implemented for players last November. See: http://rathena.org/board/tracker/issue-5689-renewal-matk-and-mdef-formula-issue/ And: r16981 As malufett had stated the remaining portion that is incorrect is mob calculations. See: bugreport:5103 This post serves as a reminder that monster magic attack still needs to be completed as I had totally forgotten about that important detail. Thanks Rage.1 point
-
ExtremeBossnia I had an idea on how to make bossnia more interesting and team based for players. Since im no pro in scripting, i requested this script. I personally think it's cool because of its features and mechanics to win. For anyone who wants a new thrill in bossnia, this script is perfect. The script is easy to modify. Just wanted to share this to people who are looking for cool and customized existing scripts Hope you guys like this. (Credits to Emistry and AnnieRuru for making this idea possible) Features/Mechanics: Item reward at the end of event. NPC appears and disappears in time. Opens only 3 times a day. You need to last 30min inside to get reward. PvP is turned on. When 1 member of the party dies, entire party is warped out. Minimum of 4 players to join, max is 10. add in mapflag if needed. Configuration: Appearance of NPC/Time of Event. OnClock0100: OnClock0500: OnClock0900: OnClock1300: OnClock1700: sleep ( 30 * 60000 ); If you don't want the NPC to disappear after the event, look for this and remove it: disablenpc "bsw"; To Change the Required level for a party member to get in: if( BaseLevel < 150 ){ To change the Amount of zeny to get in: set Zeny, Zeny - 50000000; To change the Rewards: getitem 7227,3, $@partymemberaid[.@i]; getitem 675,1, $@partymemberaid[.@i]; getitem 607,50, $@partymemberaid[.@i]; getitem 7959,5, $@partymemberaid[.@i]; NOTE: There is an NPC for my reward at this event (silver coins) wich sells godly items. if you guys want it, you can PM me. To change the warp point when Player dies: OnPCLogoutEvent: OnPCDieEvent: if( !compare( strcharinfo(3),"bossnia_0" ) ) end; if ( getcharid(1) == 0 ) warp "lighthalzen",137,86; To changed the minimum and maximum number of players to go in: }else if( $@partymembercount < 4 || $@partymembercount > 10 ){ mes "You need total of 4 - 10 Party Members."; Download links: http://www.4shared.c...B/bossnia.html? http://www.mediafire...g3vjvtf2oam7ivj For any questions, ask me or the two godly Scripters mentioned above bossnia.txt1 point
-
¡Buenas! Siento tardar en la respuesta, pero ayer la tenía redactada al completo y se me borró justo cuando la iba a enviar, me enfadé porque la hice bastante completita. Soy consciente de que es una respuesta larga, pero además pretendo ser didáctico. (Antes de que lo que redacté durante alrededor de una hora se desvaneciera) Te propuse una segunda solución, mucho más sencilla y rápida de hacer pero menos elegante, la cual usé en mi último servidor sin ningún problema y me simplificaba muchísimo la creación de rankings. Además facilitaba también el visionado de los mismos rankings desde la propia web del servidor. Esta segunda solución pasa por crear un nuevo campo en la tabla `char`, de valor entero, el cual para este ejemplo llamaré `puntosranking`. Esto deberías hacerlo desde PhpMyAdmin con un usuario que tenga privilegios para alterar tablas de la base de datos que uses en el emulador (supongo que ya sabes que es la que por defecto se llama `ragnarok`). Entonces, deberías ejecutar esto en la base de datos `ragnarok`: ALTER TABLE `char` ADD `puntosranking` INT NOT NULL DEFAULT '0'; Tranquilo, a menos que actualicen las bases de datos no tendrás nunca ningún problema con esto. Este es el primer motivo por el que no se trata de una solución elegante. Entonces ya con esto tienes las dos variables que necesitas (nombre y puntos) en la misma tabla, de tal manera que ya puedes olvidarte por completo de usar JOINs (que no es tan complicado pero a veces se las trae). Ahora necesitamos una consulta SQL que recoja la información que buscamos de la forma que queremos. Entonces podemos usar un SELECT básico para recoger los datos que queremos. En este caso la consulta sería: SELECT `name`, `puntosranking` FROM `char` ORDER BY `puntosranking` DESC, `name` ASC LIMIT 10 La cual devuelve el nombre y los puntos del ranking almacenados en nuestra tabla, ordenada primero por puntos del ranking y en caso de empate se ordena alfabéticamente (podrías ordenarlo por account_id ascendente si quieres dar esa ventaja a los usuarios más viejos o incluso pasar de esta segunda ordenación, pero siempre conviene mantener un orden estricto en los resultados de las consultas). Ahora necesitamos implementarlo en una consulta SQL que pueda usar un NPC y recoger sus resultados. ¿Como? Suponiendo que sabes usar la estructura del script command query_sql, la cual es: query_sql "your MySQL query", <array variable> {,<array variable>, ...}; Y teniendo cuidado de que la consulta se mantenga en una sola línea, nos queda: query_sql "SELECT `name`, `puntosranking` FROM `char` ORDER BY `puntosranking` DESC, `name` ASC LIMIT 10", .@nombres$, .@puntos; Donde .@nombres$ es un array que contiene los nombres de los 10 usuarios con más puntos y .@puntos es otro array que contiene sus respectivos puntos. Ya puedes usar esos arrays para lo que necesites a través de scripting. Pero... ¿cómo añades o restas puntos a un jugador si las variables permanentes de PJ normales no funcionan así? Pues estamos ante el otro motivo por el que tampoco esta solución es elegante. Hay que usar otra consulta SQL para esto (a menos que sepas modificar el source y usarlo directamente como variable de PJ, en cuyo caso te pediría que compartieras el resultado si puedes porque también lo necesitaría). Afortunadamente, las consultas SQL para añadir o restar puntos son sencillas y directas, aunque estas pueden ejecutarse solo a través de scripting desde el juego, si quieres hacerla directamente en la base de datos es más rápido hacerlas a través de PhpMyAdmin. query_sql "UPDATE `char` SET `puntosranking` = `puntosranking` + 1 WHERE `char_id` = " + getcharid(0) + " LIMIT 1"; Esta consulta SQL añade un punto para el ranking al PJ desde el que se ejecute el script. Para variar la cantidad de puntos o añadir puntos a otros jugadores que no sea el que ejecuta el script el procedimiento es análogo. Supongo que sabiendo esto ya podrás integrarlo sin problemas en tus scripts. Si aún así prefieres la solución elegante, intentaré echarle un vistazo. ¡Un saludo!1 point
-
remove the variable assign and checking..... and add another makeitem to allow tcg to drop in the map. like this Master Emistry? remove the variable assign and checking..... and add another makeitem to allow tcg to drop in the map. if( getmapusers("poring_c01") ){ makeitem 969,1,"poring_c01",rand(87,119),rand(86,115); makeitem 7227,1,"poring_c01",rand(87,119),rand(86,115); } @stydianx LOL....your method is wrong....Addtimer 1 second ? LOL..... the player wont even have chances to peek on the gold room after they get warped... they will straight trigger the even and warped outside the gold room. and....the second part.....you need to use braces when your statement have more than 1 lines. hey said he wanted it everysecond, buy not daily..1 point
-
1. Execute the sql below in your fluxcp database ALTER TABLE `ragsrvinfo` ADD `agit_status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' AFTER `drop`; 2. Download agit_status.txt. Place the file in rAthena/npc/custom/ and install it or copy below and create a new file named agit_status.txt and install //===== eAthena Script ======================================= //= Agit Status Checker //===== By: ================================================== //= Entwined //===== Current Version: ===================================== //= 1.1 //===== Compatible With: ===================================== //= eAthena SVN (SQL only) //===== Description: ========================================= //= Updates WoE status, so CeresCP can display //= if WoE is on or off in real time. //===== Additional Comments: ================================= //= Run this SQL query: //= ALTER TABLE `ragsrvinfo` ADD `agit_status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' AFTER `drop`; //============================================================ - script AGIT_STATUS -1,{ OnInit: // check if `agit_status` column exists if (query_sql("SHOW COLUMNS FROM ragsrvinfo LIKE 'agit_status'", .@dummy$,.@dummy$,.@dummy$,.@dummy$,.@dummy$,.@dummy$) == 0) { // Or... if we have the ALTER privilege, try to add the column query_sql "SELECT DATABASE()", .@rag_db$; query_sql "SHOW GRANTS", .@grants$; for (set .@i,0; .@i<getarraysize(.@grants$); set .@i,.@i+1) if (compare(.@grants$[.@i], "`"+.@rag_db$+"`")) { if (compare(.@grants$[.@i], "ALTER,") || compare(.@grants$[.@i], "ALTER ON")) query_sql "ALTER TABLE `ragsrvinfo` ADD `agit_status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' AFTER `drop`;"; break; } // verify if (query_sql("SHOW COLUMNS FROM ragsrvinfo LIKE 'agit_status'", .@dummy$,.@dummy$,.@dummy$,.@dummy$,.@dummy$,.@dummy$) == 0) { debugmes strnpcinfo(3)+" : unable to modify SQL table (needs ALTER privilege)"; atcommand "@unloadnpc " + strnpcinfo(3); end; } } OnAgitStart: OnAgitStart2: OnAgitEnd: OnAgitEnd2: query_sql "UPDATE ragsrvinfo SET agit_status = " + (agitcheck() || agitcheck2()); end; } 3. Open fluxcp/modules/server/status.php Copy below code and paste before ?> // Name : WoE Status // Email : [email protected] // Author : Jupeto // NOTE : Uncomment all commented lines below if you want to cache the checking of status // and add a line in your fluxcp/config/application.php /* find : ServerStatusTimeout add after : 'WoEStatusCache' => 2, // Store a cached woe status and refresh every X minutes. Default: 2 minutes (value is measured in minutes). 'WoEStatusTimeout' => 2, // For each server, spend X amount of seconds to determine whether it's up or not. */ // if (file_exists($cache_woe_status) && (time() - filemtime($cache_woe_status)) < (Flux::config('WoEStatusCache') * 60)) { // $woeStatus = unserialize(file_get_contents($cache_woe_status)); // } // else { $woeStatus = array(); foreach (Flux::$loginAthenaGroupRegistry as $groupsName => $loginAthenaGroup) { if (!array_key_exists($groupsName, $woeStatus)) { $woeStatus[$groupsName] = array(); } foreach ($loginAthenaGroup->athenaServers as $athenaServer) { $serverName = $athenaServer->serverName; $sql = "SELECT agit_status AS woe_status FROM {$athenaServer->charMapDatabase}.ragsrvinfo WHERE `name` = '" . $serverName . "'"; $sth = $loginAthenaGroup->connection->getStatement($sql); $sth->execute(); $woe_status = $sth->fetch(); $woeStatus[$groupsName][$serverName] = array( 'woe_status' => $woe_status->woe_status ); } } // $fp = fopen($cache_woe_status, 'w'); // if (is_resource($fp)) { // fwrite($fp, serialize($woeStatus)); // fclose($fp); // } // } Save and exit. 4. Open fluxcp/themes/your_theme/server/status.php Copy below code and paste it after the end of file <?php foreach ($woeStatus as $privServerName => $gameServers): ?> <h3>War Of Emperium Status for <?php echo htmlspecialchars($privServerName) ?></h3> <table id="server_status"> <tr> <td class="status"><?php echo htmlspecialchars(Flux::message('ServerStatusServerLabel')) ?></td> <td class="status">Status</td> </tr> <?php foreach ($gameServers as $serverName => $gameServer): ?> <tr> <th class="server"><?php echo htmlspecialchars($serverName) ?></th> <td class="status"><?php echo $this->serverUpDown($gameServer['woe_status']) ?></td> </tr> <?php endforeach ?> </table> <?php endforeach ?> Save and exit.1 point