Popular Content

Showing content with the highest reputation since 03/22/18 in all areas

  1. 12 points

    Alayne's Scripts Collection

    < Alayne's Script Collection > After several asks, here's a link to my github Feel free to comment or add anything that might be usefull and that I won't think of I've decided to release my scripts here, it'll be easier to me so I can duplicate it on hercules and rathena rather than uploading twice. So sorry for multiple upload between there and download section Don't mind the name Nyliar in the git, that's me too ^^ < Instances > < Quests > < Event > < PvP Content > < Utilities > < Full Systems > < Dungeons > < Raid > < Battleground >
  2. 10 points

    Official VIP System

    Hi everybody.. sorry for being in hiatus mode..I just got busy in real life this past years for me having hard time to insert RO dev thingy on my schedule.. I'm sad since I became busy, Herc RE development(SRC) halted upon my leave...so I guess should come back? however if I come back I will only implement this in partial meaning only basic features (due to this reason "Its sole purpose is to monetize (which certainly isn't what players are looking for).")...
  3. 7 points


    anyone miss meh?
  4. 7 points

    Stellar - FluxCP (Herc FluxCP)

    Version 1.0.0


    Stellar by HTML5 UP | @ajlkn | html5up.net Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) Integrated to FluxCP (Hercules) by Hyvraine of Hyvraine Designs | facebook.com/HyvraineDesigns ================================ Ported this to FluxCP (Herc) as I was fiddling with responsive templates. It's semi-responsive, I think. FEATURES: WoE Countdown Top Guild Top Player (based on FluxCP's Character Ranking module) HOW TO INSTALL: This follows the default theme of FluxCP, it acts similar like Emphaino where it inherits the default FluxCP pages. Extract the RAR file in the themes folder. In application.php: make sure 'stellar' comes first and then 'default' next 'ThemeName' => array('stellar','default'), // Names of the themes you would like to use. Themes are in FLUX_ROOT/themes. First theme listed will be default theme. And you should be good to go. HOW TO EDIT: Site title is still dependent on the variable SiteTitle inside application.php. Edit index.php in stellar/main/ for the front page stuff. For the Favicon, Logo, Description, WoE Hours, Site Navigation, please visit settings.php for more instructions.
  5. 5 points

    Advance SQL commands

    3. Choose a table type, MyISAM or InnoDB ? https://stackoverflow.com/questions/20148/myisam-versus-innodb Before MySQL 5.5, MyISAM is mostly use for read-heavy + table locking storage engine = such as pvp ladder ( always select ... order by kill desc ) InnoDB is mostly use for write-heavy + row locking storage engine = such as quest script ( select ... from char_id ... only 1 row is retrieve ) After MySQL 5.6, (currently is 5.7) just stick to InnoDB there is only 1 reason MyISAM is better than InnoDB - MyISAM use smaller disk usage than InnoDB let's take a look at our MyISAM to InnoDB converter https://github.com/HerculesWS/Hercules/blob/stable/sql-files/tools/convert_engine_innodb.sql This converter is useful if you are using MySQL 5.6 or above There are 4 tables that are commented out the reason is simple, these 4 tables only read once and forgotten when server is live since MyISAM is good at reading (SELECT) + smaller disk usage, its no use to convert these 4 tables into InnoDB 3a How to index a table properly http://mysql.rjweb.org/doc.php/index_cookbook_mysql http://www.dbta.com/Columns/DBA-Corner/Top-10-Steps-to-Building-Useful-Database-Indexes-100498.aspx a simple thumb of rule, anything that is SELECT .... WHERE `field` = ..... that `field` has to be index let's take a look at this PVP Ladder script that use Kill/Death ratio CREATE TABLE `pvpladder` ( `char_id` INT(11), `name` VARCHAR(23), `kills` INT(11), `death` INT(11), PRIMARY KEY (`char_id`), KEY (`kills`, `death`) ) ENGINE = InnoDB; prontera,155,186,6 script PVP Ladder 1_F_MARIA,{ [email protected] = query_sql( "SELECT `name`, `kills`/(`death`+1) FROM `pvpladder` WHERE `kills` > 0 ORDER BY `kills`/(`death`+1) DESC LIMIT 10", [email protected]$, [email protected]$ ); if ( [email protected] ) { mes "no entry"; close; } mes "Current Ranking :"; for ( [email protected] = 0; [email protected] < [email protected]; [email protected] ) mes "No."+([email protected] +1)+" ["+ [email protected]$[[email protected]] +"] "+ [email protected]$[[email protected]] +" kill"; close; OnPCKillEvent: if ( killedrid == getcharid(3) ) { // killing self should only increase death count. EG: Grand-cross query_sql "INSERT INTO `pvpladder` VALUES ( "+ getcharid(0) +", '"+ escape_sql( strcharinfo(0) )+"', 0,1 ) ON DUPLICATE KEY UPDATE `death` = `death` +1"; end; } query_sql "INSERT INTO `pvpladder` VALUES ( "+ getcharid(0) +", '"+ escape_sql( strcharinfo(0) )+"', 1,0 ) ON DUPLICATE KEY UPDATE `kills` = `kills` +1"; attachrid killedrid; query_sql "INSERT INTO `pvpladder` VALUES ( "+ getcharid(0) +", '"+ escape_sql( strcharinfo(0) )+"', 0,1 ) ON DUPLICATE KEY UPDATE `death` = `death` +1"; end; } This kind of query -> ORDER BY kills/death, needs to index them together like this KEY (`kills`, `death`) 3b. Why you shouldn't use `char_reg_num_db` table blame Euphy for spreading this technique There are 2 reasons why you shouldn't even touch all these variable tables Reason no.1 This table is sorely meant for server usage Once these data is loaded, it is process internally, and only save character data according to this configuration Reason no.2 The `value` field is not index ! This line has ORDER BY `value`, try recheck our main.sql file CREATE TABLE IF NOT EXISTS `acc_reg_num_db` ( `account_id` INT(11) UNSIGNED NOT NULL DEFAULT '0', `key` VARCHAR(32) BINARY NOT NULL DEFAULT '', `index` INT(11) UNSIGNED NOT NULL DEFAULT '0', `value` INT(11) NOT NULL DEFAULT '0', PRIMARY KEY (`account_id`,`key`,`index`), KEY `account_id` (`account_id`) ) ENGINE=MyISAM; SQL will search through every single line in the `value` field if that column isn't index Of course you can ... do ALTER table to add KEY to the `value` field but this table has already optimized in that way for server usage the more field you index into the table, the more disk usage space it use Conclusion : If you want to make a custom script, then make a custom table. Leave these table alone !
  6. 5 points



    LuaDec for Lua 5.1.4 (A Super Powerful Lub->Lua Decompiler) step 1: Copy you lub file to the root directory. step 2: Using Notepad to edit “RUN ME.bat”, change the lub file name as you copyied example: luadec accessoryid.lub > accessoryid.lua step 3: Save “RUN ME.bat” and close Notepad, run “RUN ME.bat”, you can find a decompiled lua file appear in the root directory.
  7. 4 points

    Advance SQL commands

    I need to note down all these stuffs before I forget, will update when have time 1 when to use escape_sql script command 2.how to build case-sensitive table 3. how to index a table properly - why you shouldn't use `char_reg_num_db` table #. INSERT INTO ... ON DUPLICATE KEY UPDATE <- I think no need to add this ... with enough example script pple will follow my style 4. how to make the table AUTO-INCREMENT nicely - involve drop the column and rebuilt it ------- next level ------ 5. how to do IF-ELSE in SQL query 6. the SQL command to select current ranking not in the top 10 7. AS vs JOIN https://rathena.org/board/topic/91501-need-help-with-this-query_sql/ 8. INSERT INTO ... SELECT a. how to give players items through mail b. about its performance killingc. 9. UNION and UNION ALL - sending a long string .... brainstorming ...
  8. 4 points

    Advance SQL commands

    4. AUTO_INCREMENT CREATE TABLE `support_ticket` ( `id` INT(11) AUTO_INCREMENT, `title` VARCHAR(70), `message` VARCHAR(255), PRIMARY KEY (`id`) ) ENGINE = InnoDB; In this kind of query that has AUTO_INCREMENT, many people do .... $support_ticket_id++; query_sql "INSERT INTO `support_ticket` VALUES ( "+ $support_ticket_id +", '"+ escape_sql([email protected]$) ... can be optimize .... using NULL query_sql "INSERT INTO `support_ticket` VALUES ( NULL, '"+ escape_sql([email protected]$) ... Question : This question was asked on eathena forum board One of my friend touched my custom table and the AUTO_INCREMENT has jump off the value | 1 | <data set 1> | 2 | <data set 2> | 3 | <data set 3> | 25854 | <data set 4> | 25855 | <data set 5> | 25856 | <data set 6> I want to make the value return back to normal as shown | 1 | <data set 1> | 2 | <data set 2> | 3 | <data set 3> | 4 | <data set 4> | 5 | <data set 5> | 6 | <data set 6> How to do this WITHOUT losing any of the current data ? Answer: The trick is ... just drop that column and rebuild it ALTER TABLE `inventory` DROP COLUMN `id`; ALTER TABLE `inventory` ADD COLUMN `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; convert the table into MyISAM will process the query much faster
  9. 4 points

    Ragnarok Zero - Pre-Renewal (kRO)

    If some of you haven't been keeping up with the news, I post a lot of it on MC (for this news, you can see more info here: https://www.midgard-community.com/information/ragnarok-zero-new-adventures-begin-r25/). kRO has announced a new Ragnarok.... Ragnarok Zero. What is Ragnarok Zero? Basically put, Ragnarok Zero is going to be a new beginning... back to when it wasn't Renewal! With this in mind, they want you to remember the olden day memories we all have bundled in our heads. They are also doing a lot of new UI changes and adding tons of new content... of course keeping everything Trans-based and no Third Jobs. We all remember those days of playing RO before renewal... and well, kRO wants to make sure we keep them and relive them through Ragnarok Zero. Here are some infographics that I translated to give us more of a sense of what's in store for us. What are you thoughts? I really love that new navigation interface along with the character creation... and glad they are putting the random options enchantments in this mode. Here is their opening animation for Ragnarok Zero: PS: You'll see the Doram Race as well. Correction: The navigation UI isn't -new-. It may have just been slightly modified a tad (according to the translation). Topic Updated: November 29th 2017 kRO has released more information about Ragnarok Zero. Here is a low down: System: Ragnarok Online ZERO will be using a pre-renewal status system. They believe having a random item options for equipment will make it beneficial to farm equipment (as oppose to the way it use to be). There will be an increase in armor resistance by 3x compared to previously. Experience based on level difference and Drop Penalty have been adjusted. Global cooldown of the skills have been limited to a maximum of 0.3 seconds. Change to the Quest Structure: Levelling up and farming in the new system makes it easier to progress through various quests. 1) Quest rewards This system that has been added provides a certain amount of quest rewarded experience towards a certain overall experience gained. As a result, if you continue you complete various quests, you can obtain a ton of equipment easily and you can also find various items such as consumables. 2) Tips Box Reorganization: Normally, the Tipbox offers a variety of information. There are tons of quests throughout Midgard and this tipbox will provide you a vast amount of information pertaining to various quests you can do throughout Midgard. You will be able to search for information. 3) Change the UI Structure and the structure of Quests A lot of information and the UI of the Quest system has been changed. Everything has been adjusted so that it's easier to navigate through quests by selecting on options. Doing so will open up the navigation window. Billing System This part doesn't really pertain much to private servers... but overall: Ragnarok Online: ZERO offers partial subscription services like Ragnarok Online. This is to allow more Ragnarok users to enjoy the game. In addition, Ragnarok Online: ZERO will sell the monthly premium service and character premium service, which will change the billing system by introducing a new product called "gelstar". > Premium Service Products Ragnarok Online: ZERO offers a wide range of premium services. 1) Account Premium Service: Account Package The monthly premium service is a service that increases experience, drop rate, death penalty, and warehouse capacity. This service applies to all characters in your account at the time of purchase. 2) Character Premium Service: Essential Package The Essential Package is a character premium service that adds convenience to the progress of the game. This product has a 20% increase in experience and drop rate, and it also provides a limited number of 10 [Dew Water of the World] with some functions of Gelstar every day. (Please be aware that the dew of the world number will be redeemed every time you receive the remainder of the world.) Through the dew of the world number, you can conveniently use the world map transfer service or receive special buffs. 3) Character Premium Service: Hunting Package The hunting package is a character that can receive 50% experience and 100% increase in drop rate twice daily for 1 hour each day. Premium package. Ragnarok Online: At ZERO, you can sell or combine the effects of an existing combat manual or bubble gum as a separate item. This is a very attractive premium item for users who want to nurture quickly. 4) About PC room premium service We will inform you about PC room premium service. Ragnarok Online: ZERO no longer offers experience points and drop rates, death penalty effects, and proverbial buffs on PC room premium services . The main effect is transferred to "Essential Package", and only "PC room mileage" is served in PC room. "PC room mileage" through the special toolbox coupon and costume helmet replacement coupon can be used to exchange. Fiver Field: In Ragnarok Zero, they are introducing a new field titled "Fiver Field". This field will contain stronger monsters compared to normal monsters. Killing these strong monsters will provide you a chance to obtain powerful equipment / items (better random options). Item Farming Structure: 1) Random Option: Ragnarok Zero provides players with random option for dropped equipment. It is more vast which allows items to be more specialized towards short range, ranged, and magical weapons. There are also options such as HP/SP absorption, fixed casting reduction, and some options that are exempt from all in-game equipment. 2) Specialized Equipment Upgrade: Players will now be able to get occupational specialized gear when completing Memorial Dungeons. These gears can be upgraded based on your level. 3) Advanced Equipment Combination: You will be able to collection various items / materials throughout Midgard to help you upgrade certain equipment. These items collected must be given to an NPC to upgrade your gear. The material needed is Mithril. 4) The Flame: Torre, the ruler of Ore Beside every refiner NPC, Torre, the ruler of Ore, will also be there. He is able to exchange ores you find into other various ores. He will also be able to refine Mithril Ores you find into Mithril Gemstones. it's basically renewal with a level cap and 0.9% base exp rates and you lose 10% base/job exp on death instead of 1%. you reach job lv.50 at base lv.30. it's likely p2w with those random box buff potions (it may be removed on official release but i doubt it) these retards aren't even up to date with how much lootboxes are hated right now. drop table is different, it's infested with quests and half of them don't even work.. despite having a new client they haven't addressed the cell lag. the episodes will basically be the same. all of this can be done from a day of scripting, many koreans were enraged and disappointed. they claimed in the interview that they won't include cash items that directly effect the gameplay but they added a npc in izlude that sells random boxes that give upto 18 different buff potions. jelstar will be the token currency like silvervine in re:start to open these boxes / warp to a certain map (not released yet) players hoped it to be far from p2w but it seems to be clear at this point.. and i haven't even got to the part that the game has 3 different vip systems. the status formula will be the same as the renewal. shadow equipment will not be included in this version. they are considering not to implent rerolls on random options from dropped items, there can be upto 3 options and the drop effect colors are (white for 1 option, blue for 2 options, gold for 3 options) mp regen % is extremely common and i've seen stats like 164 defense on tights. their goal is to implent upto trans lv.99 their cash shop / random box idea is directly from lineage m. their plan is to reach top 1 in sales (LOL) the dynamic field which has a trigger that must be met to spawn a certain boss monster. (example: kill 200 poring 100 lunatic 50 pupa to spawn a eclipse. (example2: examine (click) a certain object(s) to spawn a boss) the exp penalty for fighting monsters +15 levels higher than you will be removed (-15 levels lower will still remain) - this may be wrong, it's confusing. overpowered cards like golden thief bug or trash boss cards will have their card stats changed or swap their equip slot they are using a new engine so we might get some bugs fixed. ie: cell bug it will also not be possible to run multiple clients. the after delay for skills will be limited to a maximum of 0.3 seconds so it will likely be easier to spam skills. there will be some craftable costumes like this one at lv.30 and wings (some are afraid it may require cash ingredients)
  10. 4 points

    New Payon Town!

    Good Day guys! It's been a long long time since i post my last map and now here is another piece of my work, I created the new payon town inspired on the new RO-Mobile payon, it's not that similar but I mixed the old and new payon also the newest payon. Just check it and enjoy! Thank you for viewing!
  11. 4 points

    Version 4.2.0


    Support All classes including new Mounts, Oboro, Kagerou, Rebellion and 3rd Costumes ! Yay ! =3 The palettes are ranged from 0 to 35. For this pack to look the best you must use my corrected classes sprites and Haziel's 3rd Costumes sprites These palettes are from my big 700 palette pack ! If you want more, you may contact me here : Paletting services (More than 700 Palettes, Races and Colors! :3). Thank you ! >o<
  12. 3 points

    Adel's Sprite Showcase

    Improved Sakura Effect
  13. 3 points

    Advance SQL commands

    5. How to do IF-ELSE in SQL query ? Question : I have a PVP ladder script that runs on Points system. Each kill plus 1 point and each death minus 1 point. The problem is, this query will make the points go into negative value if the player is being kill repeatedly query_sql "UPDATE `pvp_points` SET `points` = `points` - 1 WHERE `char_id` = "+ getcharid(0); How do I make the points stop at 0 if the player is already at 0 points ? Answer : query_sql "UPDATE `pvp_points` SET `points` = IF(`points` = 0, 0, `points` - 1) WHERE `char_id` = "+ getcharid(0); query_sql "UPDATE `pvp_points` SET `points` = (CASE WHEN `points` = 0 THEN 0 ELSE `points` - 1 END) WHERE `char_id` = "+ getcharid(0); Explanations: similar to hercules script language, if (<condition>) <execute true condition>; else <execute false condition>; in SQL language IF(<condition>, <execute true condition>, <execute false condition>) CASE WHEN <condition> THEN <execute true condition> ELSE <execute false condition> END Reference : https://www.w3schools.com/sql/func_mysql_if.asp https://stackoverflow.com/questions/63447/how-do-i-perform-an-if-then-in-an-sql-select
  14. 3 points

    Dress Pack

    Version v1.12


    What Is It?: The dress pack is a content pack that enables full use of the dressing room feature and also adds official alternate styles for 3rd jobs from jRO. How To Install: To use, simply have your DATA.INI file set to read the dressroom.grf before the data.grf/rdata.grf files. You can also use the tool GRF Editor to merge into your custom grf if desired. A 2015-10-29aRagexe or newer client is required for this to work properly. This file only adds support for the client side and will only let you view things in the dress room window. The server must fully support the system as well along with the "body" value in the character data. You will need to enable the "save_body_style" config in the conf/battle/client.conf to allow your server to save selected body styles. More info can be found in the read me file.
  15. 3 points

    How create new maps and filds (Files.mcache)

    build server build mapcache plugin make plugin.mapcache run command for help about command line parameters ./map-server --load-plugin mapcache --help See all commands about map cache and select what you want. For add map probably you want ./map-server --load-plugin mapcache --map youmapname
  16. 3 points

    New life for RO

    Hello all ! Thanks for your support, it means very much to me There's a new release with some important game features like dealing between players. Get it here http://aesir.perfontain.ru/forum/topic/26-builds/ Also i have to notice that info about new releases will no longer be published to this forum, so stay in touch at the project's forum. Thank you all.
  17. 2 points

    Advance SQL commands

    6. How to show the current rank of the player Question : This is the part of the script, output as below [email protected] = query_sql("SELECT `name`, `kills` FROM `pvpladder` ORDER BY `kills` DESC LIMIT 5", [email protected]$, [email protected]); for ( [email protected] = 0; [email protected] < [email protected]; [email protected]++ ) mes "No."+([email protected]+1)+" ["+ [email protected]$[[email protected]] +"] ~ "+ [email protected][[email protected]] +" kills"; No.1 [Alice] ~ 19 kills No.2 [Emily] ~ 11 kills No.3 [Irene] ~ 11 kills No.4 [Brittany] ~ 8 kills No.5 [Fiona] ~ 7 kills 2nd place and 3rd place has the same amount of kills, how do I make both of them display as 2nd place like this ? No.1 [Alice] ~ 19 kills No.2 [Emily] ~ 11 kills No.2 [Irene] ~ 11 kills No.4 [Brittany] ~ 8 kills No.5 [Fiona] ~ 7 kills Answer : Method no.1: Convert the table into InnoDB will return the result faster. Allow to use OFFSET [email protected] = query_sql("SELECT `name`, `kills`, FIND_IN_SET(`kills`, (SELECT GROUP_CONCAT(`kills` ORDER BY `kills` DESC) FROM `pvpladder`)) FROM `pvpladder` ORDER BY `kills` DESC LIMIT 5", [email protected]$, [email protected], [email protected]); for ( [email protected] = 0; [email protected] < [email protected]; [email protected] ) mes "No."+ [email protected][[email protected]] +" ["+ [email protected]$[[email protected]] +"] ~ "+ [email protected][[email protected]] +" kills"; Method no.2: This method return result faster than method 1 in huge table. Not allow to use OFFSET [email protected]$ = "SELECT `name`, IF(@d=t.`kills`, @r, @r:[email protected]), @d:=t.`kills`, @i:[email protected]+1 "; [email protected]$ += "FROM `pvpladder` t, (SELECT @d:=0, @r:=0, @i:=1)q "; [email protected]$ += "ORDER BY `kills` DESC LIMIT 5"; [email protected] = query_sql([email protected]$, [email protected]$, [email protected], [email protected], [email protected]); for ( [email protected] = 0; [email protected] < [email protected]; [email protected] ) mes "No."+ [email protected][[email protected]] +" ["+ [email protected]$[[email protected]] +"] ~ "+ [email protected][[email protected]] +" kills"; . . Question : How do I show the current ranking of the player ? mes "Your kills -> "+ [email protected]; mes "Your rank -> "+ [email protected]; Answer : query_sql "SELECT `kills`, 1+(SELECT COUNT(1) FROM `pvpladder` t1 WHERE t1.`kills` > t2.`kills`) FROM `pvpladder` t2 WHERE `char_id` = "+ getcharid(0), [email protected], [email protected]; Remember to index the `kills` field Reference : https://dba.stackexchange.com/questions/13703/get-the-rank-of-a-user-in-a-score-table .
  18. 2 points

    [RECRUITMENT] [PRE-RE] Fun & Spare-Time Project

    GERMAN [▼] ______________________________________________________________________________________________ ENGLISH Hello YOU! Since a long time, we're working on a private server project named SeasonRO for now. Due to frequent breaks we didn't reached a release yet. Server information: Currently we're a 4 people team and have invested a lot of time, so we aren't beginning form 0. Furthermore, we're a well-experienced team due to past projects of certain members. What do we offer YOU? relaxed work surrounded by a international team learning from us Modern Setup and facilitated work (Docker, GitHub etc.) decide with your voice and shape the server together with us well-organized team (taks are found comfortably in the Issue Pool) Flexibility Our current occupation (a hand full of people): 2 Developer 1 Client Builder & Manager, Administration 1 Sponsor & Organisator Therefore we're looking for more members. We're looking for: 1 Developer 1 Designer 2 Scripters 1 Mapper 2 Forum Moderation & Managing X Supporters (for simple tasks and later ingame Support) ALLROUNDERS are welcome as well ! What do we expect from you? Teamability Interest in building a own RO Server Bacis player knowledge (WTF is RO? etc.) Interactive, partially independently working And obviously time, but we always work without pressure DISCORD Account (our favourized communcation platform) Interested or questions? GET IN CONTACT WITH US ! ~_~ DISCORD - https://discord.gg/xfCMV5r OR PM us in the Forum =)
  19. 2 points

    King of Emperium Hill

    got a PM from rAthena member ask me to fix this yeah both rathena patch and hercules plugin ... all broken so .... update to 1.2 Script Plugin for Hercules Patch for rAthena
  20. 2 points

    Masao's Scripting Service

    Introduction: Hello everyone, I've recently got more time on my hands and returned to the RO scene a while back (Since around 1-2 months), and tought I'd offer the little talent I have in scripting to you guys, if there is any interest for it. So, what I offer is everything script related, in some special occasions if it is needed for the script to work, I'll also do database & source edits but those extras will of course cost quite a bit more since the complexity of the script requires a bigger approach / work time. Here's a little overview of what you get for which price, the prices vary of course for each script since it's heavily depending on the fact how big the script will be or how difficult it will be to make the script, so how much time I have to put in making it. Overview: - Modification of existing scripts cost depending on the extent of the modification between 5$ ~ 10$. - Relativly easy NPC's or Scripts like custom headgear quests, Trade-In NPC's (ex.: Give 100 jellopy get 10 honey) or other scripts of that nature cost 10$ ~ 20$. - Middle difficult NPC's or Scripts like custom / automated events, minigame NPC's or other special NPC's / scripts cost 20$ ~ 30$. - Difficult NPC's or Scripts like custom battlegrounds, custom ET or other custom instances for your server, larger server based quests (Like seal quests for ex.) or any other special request you have will cost 40$ ~ 50$. Waiting Time: - Script modifications and relativly easy NPC's will usually be done within 2 ~ 3 hours after figuring out with you all the details of what you excactly want. - Middle difficult NPC's will usually be done within 1 day after figuring out with you all the details of what you excactly want. - Difficult NPC's will usually be done within 2 ~ 3 days after figuring out with you all the details of what you excactly want. Note: There are of course exceptions depending on how much time I got a day and stuff like that, so scripts can be done quicker or may take a little longer. Payment: Payment is always done via PayPal and PayPal only, no other methods are accepted. As soon as your request is finished I will contact you to please send the money, as soon as I have received the money I will send you the file(s). I will keep helping, supporting or well adjusting your request for free if any problems should occur with the file(s) I've send you and if they don't work or do the things as you wanted them todo. Note: But if you suddenly come with some huge alternation of your original request for that NPC/Script, I will have to charge you 5$ for it. Contact: You can either contact me via PM here in this Forum or in the rAthena Forum. E-Mail: [email protected] Discord: Masao#6480 --------------------------------------------------------------------------------------------------------- Kind regards Masao
  21. 2 points

    Array manipulation functions

    View File Array manipulation functions This script provides various array manipulation functions, and more might be added in the future. All of those functions (except the arithmetic ones) work with both integer and string arrays. The start of the array is always implicitly index 0, unless an index is specified, ie @array[index] array_pad(<array>, <size>, <value>) pads the array left or right with <value> until it reaches <size> size. If <size> is negative it will pad left. > returns the number of added entries setarray([email protected], 1, 2, 3, 4, 5); // initialize the array array_pad([email protected], 8, 69); // => 3 // array is now: 1, 2, 3, 4, 5, 69, 69, 69 setarray([email protected], 1, 2, 3, 4, 5); // initialize the array array_pad([email protected], -8, 69); // => 3 // array is now: 69, 69, 69, 1, 2, 3, 4, 5 array_replace(<array>, <needle>, <replacement>{, <neq>}) finds every occurrence of <needle> within the array and replaces it with <replacement>. if <neq> is true, finds entries that do not match instead > returns the number of changed entries setarray([email protected], 1, 1, 3, 1, 5); // initialize the array array_replace([email protected], 1, 69); // => 3 // array is now: 69, 69, 3, 69, 5 array_find(<array>, <needle>{, <neq>}) finds the first occurrence of <needle> within the array. if <neq> is true, finds entries that do not match instead > returns the index, or if none is found returns -1 setarray([email protected], 1, 2, 3, 4, 5); // initialize the array array_find([email protected], 3); // => 2 array_find([email protected], 1); // => 0 array_find([email protected], 6); // => -1 array_rfind(<array>, <needle>{, <neq>}) like array_find, but finds the last occurrence. if <neq> is true, finds entries that do not match instead > returns the index, or if none is found returns -1 setarray([email protected], 1, 2, 3, 4, 3); // initialize the array array_rfind([email protected], 3); // => 4 array_rfind([email protected], 4); // => 3 array_rfind([email protected], 6); // => -1 array_exists(<array>, <needle>{, <neq>}) very similar to array_find() but it instead just checks if it exists or not. if <neq> is true, finds entries that do not match instead > returns true or false setarray([email protected], 1, 2, 3, 4, 5); // initialize the array array_exists([email protected], 3); // => true array_exists([email protected], 6); // => false array_count(<array>, <needle>{, <neq>}) similar to array_find() but iterates through the whole array. if <neq> is true, finds entries that do not match instead > returns the total number of occurrences of <needle> setarray([email protected], 1, 69, 3, 69, 5); // initialize the array array_count([email protected], 69); // => 2 array_entries(<array>) a wrapper around array_count(). behaves similarly to getaraysize() but does not count holes > returns the number of non-empty entries setarray([email protected], 1, 2, 0, 0, 5); // initialize the array getarraysize([email protected]); // => 5 array_entries([email protected]); // => 3 array_remove(<array>, <needle>{, <neq>}) finds and removes every occurrence of <needle> from the array, while shifting left. if <neq> is true, finds entries that do not match instead > returns the number of removed entries setarray([email protected], 1, 69, 3, 69, 5); // initialize the array array_remove([email protected], 69); // => 2 // array is now: 1, 3, 5 array_reverse(<array>) reverses the array > returns true setarray([email protected], 1, 2, 3, 4, 5); // initialize the array array_reverse([email protected]); // => true // array is now: 5, 4, 3, 2, 1 array_sum(<array>) iterates through the whole array to perform an arithmetic addition > returns the sum of every entries of the array setarray([email protected], 1, 2, 3, 4, 5); // initialize the array array_sum([email protected]); // ((((1 + 2) + 3) + 4) + 5) => 15 array_difference(<array>) iterates through the whole array to perform an arithmetic subtraction > returns the difference of every entries of the array setarray([email protected], 1, 2, 3, 4, 5); // initialize the array array_difference([email protected]); // ((((1 - 2) - 3) - 4) - 5) => -13 array_product(<array>) iterates through the whole array to perform an arithmetic multiplication > returns the product of every entries of the array setarray([email protected], 1, 2, 3, 4, 5); // initialize the array array_product([email protected]); // ((((1 * 2) * 3) * 4) * 5) => 120 array_quotient(<array>) iterates through the whole array to perform an arithmetic division > returns the quotient of every entries of the array setarray([email protected], 1, 2, 3, 4, 5); // initialize the array array_quotient([email protected]); // ((((1 / 2) / 3) / 4) / 5) => 0 array_shift(<array>) removes the first entry of the array, while shifting left > returns the value of the removed entry setarray([email protected], 1, 2, 3, 4, 5); // initialize the array array_shift([email protected]); // => 1 // array is now: 2, 3, 4, 5 array_unshift(<array>, <value>) adds <value> to the start of the array, while shifting right > returns the new size of the array setarray([email protected], 1, 2, 3, 4, 5); // initialize the array array_unshift([email protected], 69); // => 6 // array is now: 69, 1, 2, 3, 4, 5 array_pop(<array>) removes the last entry of the array > returns the value of the removed entry setarray([email protected], 1, 2, 3, 4, 5); // initialize the array array_pop([email protected]); // => 5 // array is now: 1, 2, 3, 4 array_push(<array>, <value>) adds <value> to the end of the array > returns the new size of the array setarray([email protected], 1, 2, 3, 4, 5); // initialize the array array_push([email protected], 69); // => 6 // array is now: 1, 2, 3, 4, 5, 69 array_shuffle(<array>) shuffles the array > returns true setarray([email protected], 1, 2, 3, 4, 5); // initialize the array array_shuffle([email protected]); // => true // array is now: 1, 4, 2, 3, 5 (example, unpredictable) array_unique(<array>{, <threshold>}) allows array entries to appear up to <threshold> times (1 by default) and removes the extraneous ones. useful to remove duplicate entries > returns the number of removed entries setarray([email protected], 1, 3, 3, 4, 5); // initialize the array array_unique([email protected]); // => 1 // array is now: 1, 3, 4, 5 array_diff(<base array>, <array>{, <array>...}, <result array>) compares the base array against one or more other arrays and fills the result array with the entries in base array that are not present in any of the other arrays > returns the number of entries not found in other arrays setarray([email protected], 1, 2, 3, 4, 5, 6, 7, 8); // initialize the base array // fill the arrays to compare with the base array: setarray([email protected], 2, 3, 4, 5, 6, 7, 8); // missing "1" setarray([email protected], 1, 2, 3, 4, 6, 7, 8); // missing "5" setarray([email protected], 1, 2, 3, 4, 5, 6, 7); // missing "8" // compare foo, bar and baz against base, and fill result: array_diff([email protected], [email protected], [email protected], [email protected], [email protected]); // => 3 // [email protected] is now: 1, 5, 8 array_filter(<array>, "<function>") filters the array using a function that is tested against every entries. if the function returns false, the relevant entry is removed and the array is shifted left > returns the number of removed entries function script is_prime { if (getarg(0) <= 1) return false; for ([email protected] = 2; [email protected] <= getarg(0) / 2; [email protected]) if ((getarg(0) % [email protected]) == 0) return false; return true; } setarray([email protected], 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); array_filter([email protected], "is_prime"); // => 9 // array is now: 2, 3, 5, 7, 11, 13 array_sort(<array>) sorts the array in ascending order > returns true setarray([email protected], 2, 1, 8, 4, 5, 7, 6, 3); // initialize the array array_sort([email protected]); // => true // array is now: 1, 2, 3, 4, 5, 6, 7, 8 array_rsort(<array>) sorts the array in descending order > returns true setarray([email protected], 2, 1, 8, 4, 5, 7, 6, 3); // initialize the array array_rsort([email protected]); // => true // array is now: 8, 7, 6, 5, 4, 3, 2, 1 Requires Hercules of June 24 2017 or newer version -------------------------------------------------------------------------------------- This script was made by me, for The Mana World + Evol. License: public domain (CC0) Submitter meko Submitted 05/29/17 Category Quest, Shops, Functions & Algorithms  
  22. 2 points
    =General *Added the "load_custom_exp_tables" config setting in the exp battle file. +This sets if the server should load the official exp tables (exp.txt) or custom -exp tables (exp2.txt). No more do you have to rename the exp2 file to exp to use it. *The "use_renewal_statpoints" config is renamed to "renewal_stats_handling". +The function of the config is still the same. Just want to name to better reflect -what it does. It is also now on by default for balance reasons. Read the -description for the config for more info on what all it does. *The following battle config settings defaults are changed.... +max_homunculus_parameter: Changed from 150 to 175. +max_aspd_renewal_jobs: Changed from 190 to 193. +max_parameter_renewal_jobs: Changed from 120 to 130. +max_baby_parameter_renewal_jobs: Changed from 108 to 117. +base_lv_skill_effect_limit: Changed from 150 to 175. +job_lv_skill_effect_limit: Changed from 50 to 60. -These are the latest official limits for players (RE Era Jobs) and homunculus. =Database *Updated the exp_homun file with official exp tables for up to level 175. *Updated the statpoint_renewal file with official stat point values for levels -up to 175. =Jobs *Renewal Era Jobs (Jobs introduced during RE era) +The following caps have been increased.... -Base Level: 175 -Job Level: 60 (Except for Summoners) -Max Base Stats: 130 (117 for Babys) -Max ASPD: 193 +Stat bonuses for job levels 51 to 60 have been added. =Homunculus *Mutated Homunculus +The following caps have been increased.... -Base Level: 175 -Max Stats: 175 *Fixed a issue where mutated homunculus were getting a extra skill point.
  23. 2 points

    Adel's Sprite Showcase

    Easter Sprites
  24. 2 points


    View File @ip usage: @ip <Player Name> Unlike @sameip, this is meant to check a single player config: use on players (gms) with same User Group as yourself yes/no Do not redistribute or sell this file. Output: Failed attempt Player not found/online Submitter Ridley Submitted 02/04/17 Category Utility  
  25. 2 points

    Req: Link setup RO Zero

    HI ! Click me =)
  26. 2 points

    Another Nemo patcher fork

    Zero clients are the clients used in the new korean server RO:ZERO they have some new updates such as a new cashshop ui, char creation ui, quest ui and other stuff, however its still experimental for Hercules, feel free to test it and give us feedback on issues that could be related to the emulator :).
  27. 2 points

    [Showcase + DL] Hairstyles

    UPDATED, NOW HAVE 72 HEADS UPDATED, NOW HAVE 84 HEADS !!!!! Here a Compiliation of basic customs Hairs from Ragnarok Online, This include the 29 oficial heads. All of these heads aren't made be me, with exception of #68, #69, #70 and #71 male heads and female #70 and #71 heads, this pack cames from internet and a bit of search, the authors put the credit on Spr files... But who diferent on that pack? - Repeated Heads Removed; - Missaligned Heads Fixed; (like #48 and #61) - 6 Unique Heads. - Now this pack is mixed with smokim pack (from cronus) - No Female Heads in Male pack, with exception of classic #43 I'm Still Working On this Pack to change female heads into male heads (like #43, #55, #56 etc - Male Hairstyles), to make all heads in Oficial Collors (1~7 to work with them), To Increase this into 100 Hairstyles Pack. Preview: DOWNLOAD: 84 Heads.zip Mirror 4Shared Mirror MediaFire
  28. 1 point

    How to convert pet_db2.txt

    Locate to tools folder where it's located and run ./petdbconverter.py pre-re ../ ../db/pet_db2.txt > pet_db2.conf should generate conf file in the tools folder change pre-re to re if renewal
  29. 1 point

    Linux refuses to start the emulator

    Also you can try this chown -R USERNAME hercules/ chmod -R 777 hercules/
  30. 1 point

    Linux refuses to start the emulator

    chmod u+x ./{login,char,map}-server If you want to keep the file ownership and permissions intact when copying from linux to windows you should first make a tarball on the source machine and then download this instead of downloading every file one by one (ie via FTP)
  31. 1 point

    [SOLVED]No item description available in-game

    hmmmm do you need a system and data folders of the client date... Here and lua files. Files client 2012-04-10
  32. 1 point

    [Warning] pc_bonus2: unknown type 2061 16 15!

    bonus2(bAddRace, RC_DemiPlayer, 20); works fine for me
  33. 1 point

    ExtendedVend problem

    @OmarAcero, @Myriad guys i found the solution. in my previous post
  34. 1 point


    welcome back I can help you with anything you need on client xD thats the only thing I do well with
  35. 1 point

    [Zero] Can't set langtype = 1

    If I remember correct, for each lang type need files with correct suffix. 0 - filename_kr.ext 1 - filename_OTHER.ext not sure what OTHER should be for lang type 1
  36. 1 point

    getcharid ???

    Acredito que não tenha um comando para o nome de usuário da conta, mas você pode fazer com uma query sql a partir do ID da conta. Algo como (não testei): query_sql("SELECT userid FROM login WHERE account_id = " + getcharid(CHAR_ID_ACCOUNT) + " LIMIT 0,1", [email protected]$); [email protected]$ = [email protected]$[0]; mes "Seu usuário é: " + [email protected]$;
  37. 1 point
    Depending on how much you want DIY on the client, the learning curve can be steep. Imho the primary skills are knowing how the client works from the player perspective (i.e. the whole functionality available, without modifying it) and knowing the subject you want to include/exclude. Thus, if you want to deal with bots, you should also know how bots work and be able to setup and use one. Further down, you have to deal with C++, machine code generated from C++ (assembler), disassembling, debugging and Win32 API. If you stumble upon graphics stuff, GDI and DirectX 7 are also topics of interest. If you deal with network code and packets, some background knowledge of TCP is also helpful. Note, that some things are better to be done server-side rather than client-side for two reasons: Players can undo your client-side changes, but not server-side. Server-side is easier to edit, since you have all the source, whereas in the client you have only the gory machine code.
  38. 1 point

    requesting hexed client compatible with 20170705

    RagExes until 2018-03-28: Updated NEMO (support 2017-2018 clients): Translated files from data and system folders: https://github.com/Asheraf/Translation https://github.com/zackdreaver/ROenglishRE Note: Change langtype to 1 if you want huge fonts. Note 2: If the selected ragexe use ExternalSettings.lua check this topic:
  39. 1 point

    Alayne's Scripts Collection

    those variables means "start an event at 5, start an event at 6. If 0, then doesn't start, if 1 then start"
  40. 1 point

    Infinite Space

    Version 1.1.0


    Hello peoples, I've been asked recently to create instances that aren't release on rathena yet, so I decided to merge them to Hercules too. So here's my version of Infinite Space instance, based over infos took here and there, videos and divine-pride database. In the rar, you'll find all you need, including Instance file, mob, item and quest db. You'll still need up to date client (I personnaly use 20160201) to ensure the mobs are created client side. Have fun. Please, leave the credits and do not claim my work as yours.
  41. 1 point

    Credit to Zeny changer

    +10 @luizragna thank you for your kind help
  42. 1 point

    Credit to Zeny changer

    I maked with variable. Trader NPC: prontera,136,217,4 script Coin Trader 4_M_MANAGER,{ [email protected]$ = "[Coin Trader]"; //NPC Name mes [email protected]$; mes "Hello. I'm the Coin Trader"; mes "I can trade Zeny for Coin and vice versa"; mes "(1 Coin = 10.000.000z)"; mes "What you want trade?"; next; menu "Zeny for Coins",zc,"Coins for Zeny",cz,"Close",cl; cl: close; zc: mes [email protected]$; mes "How many Coins do you want purchase"; mes "(1 Coin = 10.000.000z)"; input @zc; @qnt = @zc*10000000; if (Zeny - @qnt < 0){ mes "Do you not have zeny"; close; } set SCoin,SCoin + @zc; set Zeny,Zeny - @qnt; mes " "; mes "Thank You!"; mes "(Now do you have "+SCoin+" Coin(s) )"; close; cz: mes [email protected]$; mes "How many Coins you want sell?"; mes "Do you have "+SCoin+" Coin(s)"; mes "(1 Coin = 10.000.000z)"; input @cz; @qnt = @cz*10000000; if (SCoin - @cz < 0) { mes "Do you not have sufficient Coins"; close; } if (Zeny + @qnt > 2000000000){ mes "Do you can't stay more than 2b Zeny"; close; } set SCoin,SCoin - @cz; set Zeny,Zeny + @qnt; mes " "; mes "Thank You!"; mes "(Now do you have "+SCoin+" Coin(s) )"; close; } Coin Shop: prontera,141,217,4 script Coin Shop 4_F_TELEPORTER,{ mes "[Coin Shop]"; mes "Hello. Why do you want buy with yours Coins?"; mes "(Do you have "+SCoin+" Coin(s) )"; menu "Red Potion (3 Coins)",rp,"Knife[4] (7 Coins)",kn,"Cancell",cl; cl: close; rp: if (SCoin - 3 < 0) { mes "Do you not have sufficient Coins"; close; } SCoin = SCoin - 3; getitem 501,1; mes " "; mes "Thank You!"; mes "(Now do you have "+SCoin+" Coin(s) )"; close; kn: if (SCoin - 7 < 0) { mes "Do you not have sufficient Coins"; close; } SCoin = SCoin - 7; getitem 1202,1; mes " "; mes "Thank You!"; mes "(Now do you have "+SCoin+" Coin(s) )"; close; }
  43. 1 point

    Credit to Zeny changer

    OK, I'll try to do it for you. You want the currency is for a player or account?
  44. 1 point

    Another Nemo patcher fork

    Latest zero client using 0 keys for packet encryption. Now it using cheat defender and it encrypt all packets and not only id. For private servers need disable cheat defender. But if set non zero keys, they will works again. This mean it already disabled.
  45. 1 point
    Hello Boys and Gals I decided to do a experiment project, on with how minimal $ input, I could make a decent (by decent, I mean, players wouldn't want to delete the game client after 15 minutes playing) Ragnarok Online server and Comunity I will write it all in the Dev's Diary Format (Every entyr will follow standart : Day X : doing stuff [What I've done]) Day 1: First steps First of all, I needed a server software. After reading few reviews, I considered Hercules as my server software, mainly for it's hardware resources management. Then, I needed hardware. Since this is minimal $ input, I have compiled it and configured it to run on my RaspberryPi 3, which runs already a webserver, OwnCloud. It has an UPS made out of a PowerBank (for those who are curious http://raspi-ups.appspot.com/en/index.jsp) Not and option for you ? - You can spend 150-200$ for a year of VPS - Or, you could dustoff that Intel Core 2 duo that sits in your closet (im sure, for many of you, it does), it will run a server just fine... Need to configure a home network (its actually really easy) all I needed to do is give my server machine - a static ip (good business practice) - To that static IP, I needed to forward ports 3 ragnarok ports, 80/443 (80 if Im planning to host a webserver aswell, 443 if Im planning to use SSL, you know that https:// link... will be explained later in the DevsDiary...) I decided not to host a webserver for my Ragnarok Server Comunity. If the game server is down, I want the web site still be available... no problem go to Google and search for free web hosting, there are many of them just suit myself.... then I went to domain registrar (I used Godaddy) and look for a .com domain for my server .com domain grants some credibility When I have added my .com domain to the cart I went to google and search "cupons domain [site where I buy my domain] (in my case its godaddy)" I got a cupon code for first year registration of .com domain for 99cents Now I needed a website... there is plenty of website designs on these forums I liked : https://rathena.org/board/files/file/3012-erods-unfinished-web-template/ Mainly because it was already HTML, I didn't have to slice PSDs... since, I just want a website with basic info a little design and there you go I've configured the DNS of my .com domain to the free webhosting Now everyone can access my server Website from .com domain So far I've spent 99cents on .com domain... Day 2: Free Hosting Limitations The Idea behind using a freehosting, is to keep site and comunity online during Game server downtime. Sure free hostings limit possibilities. But Im designing a strategy to bypass those limitations in one way or another... 1) Free hostings do not allow open socket (used to check server status Online/Offline) Its actually pretty easy to bypass Free hostings offer Cron (Planified tasks) So I will start writing API-like software to run on the webserver on same machine as RagnarokServer Ragnariok server Machine Free Web Hosting Web-API (like) <--------------------- Cron job every 5 minutes with CURL call to Server machine does open socket on returns Plain Text Or JSON (undecided yet) 111 (1 - map is on 1- login is on 1 - char is on) -------------------------> Builds static HTML file with styling and all that good stuff (if no reply from GameServer, Server considered offline) WebSite just includes that static HTML file using AJAX True, the status is not very accurate, it has 5 minutes update lag. but its fully functionnal, no matter what crazy Limitation my free web hosting impose.... Im also thinking to add a API key concept Much like KeyChain VPN token some company give you to work from home... My strategy is never reveal what my database connection string is.... In case a Hacker gets a webshell on that free site the only thing he will see is the WEB-API adress and API token generation algorithm and SALT. Im also thinking to add logging to API so if API spam or bruting attemps detected, I would just change API token Algorithm...
  46. 1 point

    [Showcase] DBZ Sprites

  47. 1 point

    IPB Forum registration to Ragnarok

    Isn't this risky? Exposing your userid to other players is sort of.. weird.
  48. 1 point

    Obtaining Hercules

    Well m new at hercules So dunno
  49. 1 point

    Making Pull Requests on Hercules

    Frequently Asked Questions (FAQs): I thought splitting this section from the main post would be beneficial because it's easier to write it and to look in it in case you need an answer and I have it down there. I hope there are almost no questions because I think my guide is clear enough, though it's normal there will be some questions out here since my explanations aren't perfect. That's why this dedicated section exists. Questions will be marked with a big Q and answers will be marked with a A. Both will be big enough to easily tell them apart. Question list: Questions & Answers: Q: I get a warning message while trying to make a Pull Request on GitHub. What happens? A: You can't make a pull request if you get a warning message from GitHub. Those messages usually provide enough information to tell you what to do. Here are all warnings I've received from GitHub to date and its possible solutions – just remember to change HerculesUser to your GitHub username–: Oops! HerculesWS:master is already up-to-date with HerculesUser:master Try a different branch?You haven't pushed any changes to your remote repository or the changes you've pushed make it identical to the original Hercules repository. You can only make a pull request if your repository is not exactly the same as the original Hercules'. Oops! There's already a pull request for HerculesUser:master Try a different branch or view the pull request?You already have an active pull request on Hercules and you have to wait until it's approved or rejected. If you want to add changes to your pull request, you can push more changes to your repository if you want: they'll automatically be added to your active pull request. Q: How do I update my fork to Hercules' last version? A: This is quite simple but not as easy as updating an official Hercules repository as you can't just pull as you did when updating the original Hercules repository – if you try to pull on your fork you're pulling from your fork's repository, not Hercules' –. Doing this task also depends on your OS: On Windows: (I don't deem necessary to add a how-to picture for this)Right-click your Hercules fork folder and select Fetch... option from the TortoiseGit submenu. A new window will pop up. Select Arbitrary URL option and place original Hercules repository URL there (I mean this one: https://github.com/HerculesWS/Hercules.git). Then click OK (unless you want to change any of the available options, which is unfrequent) for making the fetch update to start. Another window will be opened and your fork will be updated to Hercules last revision. Close it once you're done. On Unix: You just have to run this command (it's actually two commands joint on a single shell statement): git fetch upstream && git merge upstream/master Just remember that if you want these changes to also be on your GitHub repository, you'll have to push them. Otherwise they'll just be available on your local repository, as always. Q: I always get an error message whenever I try to push my changes even though I make sure I put correct access credentials. What happens? A: I've just experienced this error when I tried to push to the wrong repository (i.e. the original Hercules repository, to which I don't have access and you surely don't). Make sure you're trying to push to a repository on which you have permission for this. Ah! Also make sure you have an active Internet connection since you'll be using it! Q: I can't commit anything to my local repository. What happens? A: Chances are you're trying to make a commit without changing any file, and that's not possible for Git. Maybe you actually changed some files but forgot to save them?
  50. 1 point

    Client Translation Project

    awesome =D