Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 09/12/12 in Posts

  1. 14 September 2012 Before 14 September 2012 Hello, Welcome to the Tyranitaurus Restaurant. I will serve you the best dishes ever. All our meats are 100% Tyranitar. Let me present you the dish of the day: "Leg of Tyranitar coated with green scales" Cost : 1 Reply. Just reply and I will serve you the most fresh meat ever. I hope you enjoy the Tyranitaurus Restaurant. If you like the restaurant, here is our loyalty card! -- Restaurant Front door ornaments --
    2 points
  2. SourceForge is retiring their Hosted Apps services. Please update your links to our rAthena Trac: http://trac.rathena.org/ The link in the forum header and the [ rev= ] BBCode have already been updated.
    2 points
  3. I think that is not currently viable do this, sincerely, our source is the biggest mess I already saw, by design it wont work for a plugin system. For simple custom atcommands/script commands this can be made by exporting a vtable with all needed functions to the plugin and create a private store on the session_data so each plugin can have a piece of data for each player.
    2 points
  4. I do not use it because there's no one else to chat with on my localhost test server.
    2 points
  5. Introduction : Allows you to refine every of a single item type in your inventory at the same time. You can also trigger a quick refining function, making it a thousand times easier for over-refining things. Explanation : I Readjusted the normal refiner npc (the infamous Hollengrhen) to be able to refine many equipments at the "same time". Actually it does not refine them at the same time, but it allows you to refine everything in a lightning speed, compared to what it was before (selecting the menu each time you wanted to refine once). I also made a secondary script to work for past +10 equipments, these use Bradiums and Kaluniums instead. I could've put them all in the same NPC, but that would be sort of messy and confusing to edit, so i chose to make them two separated NPCs (Just like gravity did, when they first implemented the past +10 refine). When you refine, you now get a last option, this last option allows you to increase the speed you will refine your equipments. Once you select the equipment you want to refine, you may now choose to refine every item of the same item ID in your inventory to that desired refine rate. Obviously the NPC will charge you for all the eluniums and zeny cost summed up together, but it takes out the items for each refine done, therefore the chances of actually losing an item (or money) using this script have been minimized. Pictures : Video : Warning : - The refine.txt script is already a official normal script inside rAthena. Make sure you disable the other one, I believe it is located in scripts_athena.conf, under Merchants. But that may differ depending on your server. - The quick refining function uses a "sleep2" command to delay between refines. If your server lags insanely, you may have to increase that sleep2 value. By default it is 300, but perhaps if your server is big, you may want to increase it past that. - Eluniums and armors weight a lot, depending on your server rates, some players might not be able to carry all the armors and eluniums together to over refine them at once. (That's not really a bug, its supposed to be like that, but if you wish, you can remove eluniums weight or something.) (Fixed) - The script does not check for overweight characters, this means they could drop their items by refining at past 90%... (To be fixed) Information : To change the safe refine rates, materials consumed, or prices, look for the following piece of script : Just change the values in the variables. .@price = Price for that refine .@material = Material ID consumed for that refine .@safe = Safe refine rate of that type of refine // ----------- Refine Prices, Materials and Safe Refines ---------- // case 0: //Refine Armor set .@price,2000; set .@material,985; set .@safe,4; break; case 1: //Refine Level 1 Weapon set .@price,50; set .@material,1010; set .@safe,7; break; case 2: //Refine Level 2 Weapon set .@price,200; set .@material,1011; set .@safe,6; break; case 3: //Refine Level 3 Weapon set .@price,5000; set .@material,984; set .@safe,5; break; case 4: //Refine Level 4 Weapon set .@price,20000; set .@material,984; set .@safe,4; break; case 5: //Refine other stuff? set .@price,2000; set .@material,985; set .@safe,4; break; // ----------------------------------------------------------------- // Download : Version 1.1 (High Refine), Version 4.1 (Refine) - Direct Link : Refine.rar (OUTDATED) Version 1.0 (High Refine), Version 4.0 (Refine) - Direct Link : Refine.rar MediaFire : http://www.mediafire...eudlm1m42ymid2l 4Shared : http://www.4shared.c...lqH/Refine.html
    1 point
  6. As I was doing r16651 I've noticed the quest system has these in (struct) map_session_data int quest_index[MAX_QUEST_DB];// 8.000 byte struct quest quest_log[MAX_QUEST_DB];// 72.000 byte (MAX_QUEST_DB is defined in mmo.h by default as 2k) struct s_quest_db { int id; // 4 unsigned int time; // 4 int mob[MAX_QUEST_OBJECTIVES]; // 4 * 3 int count[MAX_QUEST_OBJECTIVES];// 4 * 3 int num_objectives;// 4 }; // 4 + 4 + (4*3) + (4*3) + 4 = 36 (reference) which is hum...72.000 byte...about to 70kb per player. imo this is...absurd O_O (i didn't really measure compared to the whole map_session_data but by taking a glance at it i'd bet it is the source of at least 25% of each map_session_data instance). and its most wasted data since like no players will have the 2k quests' data. I propose the system be reviewed. for example, as the first thing that comes to my mind, use pointers so that if a player has 20 quests it spends 20*36=720 bytes instead of wasting 72.000 bytes. post your thoughts opinions call me a performance megalomaniac, whatever you like. but post.
    1 point
  7. I'd like to discuss the implementation of a plugin/mod system; it would make updating rAthena much much easier for anyone who has a few+ source edits and has to do everything manually. It would be nice to have a list of pros/cons of the system. All I have heard about implementing plugins is that it would slow down all of src and that we don't have a viable way of adding it (unless via ASM).
    1 point
  8. File Name: Fix to auto-close on wrong password/id for new clients File Submitter: EvilPuncker File Submitted: 11 Sep 2012 File Category: Source Modifications Content Author: *Athena team Well, the code is kinda simple and since most people don't know about it yet, I'm releasing a diff for those who want it, it is just a piece of code copied from char.c and pasted into login.c to make the client send "rejected from the server" on wrong password, so it will not close anymore, and you can edit your msgstringtable.txt to show "wrong password/rejected from the server", hope you enjoy. Click here to download this file
    1 point
  9. It's come to my attention (mainly because I forgot all about this) that alliance chat is not by default added into rAthena/eAthena; even though every server I've seen or heard of uses this system. I think we should add it to rAthena.
    1 point
  10. open skill.h , search SM_BASH , click those and see what their done http://i.imgur.com/3iCI9.png http://i.imgur.com/Cdlf6.png --- 1. define new skill name in skill.h 2. define its type in skill.c by add case in ''skill_castend_damage_id'' , ''skill_castend_nodamage_id'' , ''skill_castend_pos2'' those mean : will create 'point' skill, no, and area. 3. define its power 4. build 5. add new db into skill_db.txt and skill_require_db.txt 6. add new date into your client.
    1 point
  11. stop the login, char, and map servers run this first SQL query: DELETE FROM `guild_member` WHERE `char_id` NOT IN (SELECT `char_id` FROM `guild`); run this second SQL query: UPDATE `char` SET `guild_id`=0 WHERE `char_id` NOT IN (SELECT `char_id` FROM `guild_member`);
    1 point
  12. File Name: Poring Maps (poring_c01 and poring_c02) File Submitter: Eurydice File Submitted: 17 May 2012 File Category: Maps & Textures Content Author: Gravity -- Ragnarok Online I was testing something on my server and I wondered if these Poring Maps still exist. Yes, they still exist but they error you. I found these maps sitting in my hard drive, so might as well share it to whoever needs them. I made the mini-maps and included them in the files. @_@ Enjoy~! (Also included a .zip file for those who don't have WinRAR. ) Click here to download this file
    1 point
  13. nope we don't have..but you can add it by your own.. @script.c BUILDIN_FUNC(issitting) { TBL_PC* sd; sd = script_rid2sd(st); if( sd == NULL ) return 0;// no player attached, report source if( pc_issit(sd) ) script_pushint(st, 1); else script_pushint(st, 0); return 0; } BUILDIN_DEF(issitting,""),
    1 point
  14. try this. hun_vil,237,80,4 script Village Teleportal 100,{ mes "get ready.."; close2; warp "velika_town",190,116; end; OnInit: waitingroom "Warper-Mana Train Station",0; end; }
    1 point
  15. void atcommand_killmonster_sub(const int fd, struct map_session_data* sd, const char* message, const int drop) { int map_id; char map_name[MAP_NAME_LENGTH_EXT]; if (!sd) return; memset(map_name, '\0', sizeof(map_name)); if(drop) { if (!message || !*message || sscanf(message, "%15s", map_name) < 1) map_id = sd->bl.m; else { if ((map_id = map_mapname2mapid(map_name)) < 0) map_id = sd->bl.m; } map_foreachinmap(atkillmonster_sub, map_id, BL_MOB, drop); } else { struct mob_data* md; struct s_mapiterator* iter; iter = mapit_geteachmob(); for( md = (TBL_MOB*)mapit_first(iter); mapit_exists(iter); md = (TBL_MOB*)mapit_next(iter) ){ if (!md->guardian_data && strlen(md->npc_event) < 4) status_kill(&md->bl); } mapit_free(iter); } clif_displaymessage(fd, msg_txt(165)); // All monsters killed! return; }
    1 point
  16. Index: atcommand.c =================================================================== --- atcommand.c (revision 16608) +++ atcommand.c (working copy) @@ -2276,15 +2276,27 @@ memset(map_name, '\0', sizeof(map_name)); - if (!message || !*message || sscanf(message, "%15s", map_name) < 1) - map_id = sd->bl.m; - else { - if ((map_id = map_mapname2mapid(map_name)) < 0) + if(drop) { + if (!message || !*message || sscanf(message, "%15s", map_name) < 1) map_id = sd->bl.m; + else { + if ((map_id = map_mapname2mapid(map_name)) < 0) + map_id = sd->bl.m; + } + + map_foreachinmap(atkillmonster_sub, map_id, BL_MOB, drop); } + else { + struct mob_data* md; + struct s_mapiterator* iter; + iter = mapit_geteachmob(); + for( md = (TBL_MOB*)mapit_first(iter); mapit_exists(iter); md = (TBL_MOB*)mapit_next(iter) ){ + if (!md->guardian_data && md->spawn) + status_kill(&md->bl); + } + mapit_free(iter); + } - map_foreachinmap(atkillmonster_sub, map_id, BL_MOB, drop); - clif_displaymessage(fd, msg_txt(165)); // All monsters killed! return;
    1 point
  17. Got access to my other laptop now, and I attempted it XD. It's my "first logo" ever made, so hopefully, you didn't expect too much haha. I will send the PSD link to you via PM. I attached two previews - one with a transparent background and one with a coloured background, just for comparison. You can smudge some parts with the PSD if some parts seem fuzzy (though once you size down the logo, it should be fine). Logos aren't normally that big anyways. Let me know how it is for you! I tried red and black at first, but in the end, kind of used orange/orange-red in the end if that is alright. Your server name reminded me of a fire symbol, that's why xD. Hopefully, other people can do better!
    1 point
  18. usually i use an online Korean keyboard http://www.branah.com/korean but it seems most of your computers do not have Korean encoding support (this is why it shows like ¹Ù·Î°¡±â instead of 바로가기)
    1 point
  19. 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
  20. We can use our in memory databases. Hopefully we won't implement any leak. I vote for yes.
    1 point
×
×
  • Create New...