Leaderboard
Popular Content
Showing content with the highest reputation on 03/09/12 in Posts
-
Download these files first: MySQL Gui Tools MySQL Essentials Download Compiled SVN here(I suggest to use trunk) or use TorquiseSVN to download rAthena SVN in its Repository and use Visual Studio for recompiling. When you're done downloading those files, follow these steps: ==========// SVN Files Setup //========== 1) Goto your downloaded svn and extract it. 2) Goto conf folder and look for char_athena.txt, inter_athena.txt, map_athena.txt and subnet_athena.txt 3) Open char_athena.txt, and map_athena.txt and look for this: // Server Communication username and password. userid: s1 passwd: p1 and change that into // Server Communication username and password. userid: ragnarok passwd: ragnarok 2) Open your char_athena.txt again and look for this: // Login Server IP // The character server connects to the login server using this IP address. // NOTE: This is useful when you are running behind a firewall or are on // a machine with multiple interfaces. //login_ip: 127.0.0.1 // The character server listens on the interface with this IP address. // NOTE: This allows you to run multiple servers on multiple interfaces // while using the same ports for each server. //bind_ip: 127.0.0.1 // Login Server Port login_port: 6900 // Character Server IP // The IP address which clients will use to connect. // Set this to what your server's public IP address is. //char_ip: 127.0.0.1 remove the "//" in login_ip and char_ip. It will look like this: // Login Server IP // The character server connects to the login server using this IP address. // NOTE: This is useful when you are running behind a firewall or are on // a machine with multiple interfaces. login_ip: 127.0.0.1 // The character server listens on the interface with this IP address. // NOTE: This allows you to run multiple servers on multiple interfaces // while using the same ports for each server. //bind_ip: 127.0.0.1 // Login Server Port login_port: 6900 // Character Server IP // The IP address which clients will use to connect. // Set this to what your server's public IP address is. char_ip: 127.0.0.1 3) Open your inter_athena.txt and look for this: // Global SQL settings // overriden by local settings when the hostname is defined there // (currently only the login-server reads/obeys these settings) sql.db_hostname: 127.0.0.1 sql.db_port: 3306 sql.db_username: ragnarok sql.db_password: ragnarok sql.db_database: ragnarok sql.codepage: // MySQL Character SQL server char_server_ip: 127.0.0.1 char_server_port: 3306 char_server_id: ragnarok char_server_pw:ragnarok char_server_db: ragnarok // MySQL Map SQL Server map_server_ip: 127.0.0.1 map_server_port: 3306 map_server_id: ragnarok map_server_pw: ragnarok map_server_db: ragnarok // MySQL Log SQL Database log_db_ip: 127.0.0.1 log_db_port: 3306 log_db_id: ragnarok log_db_pw: ragnarok log_db_db: log log_codepage: if you're using my guide that is a given and you don't need to edit them. But if you're planning to change any of here like the user password or what, you need to change this too. 4) Open your map_athena.txt and look for this: // Character Server IP // The map server connects to the character server using this IP address. // NOTE: This is useful when you are running behind a firewall or are on // a machine with multiple interfaces. //char_ip: 127.0.0.1 // The map server listens on the interface with this IP address. // NOTE: This allows you to run multiple servers on multiple interfaces // while using the same ports for each server. //bind_ip: 127.0.0.1 // Character Server Port char_port: 6121 // Map Server IP // The IP address which clients will use to connect. // Set this to what your server's public IP address is. //map_ip: 127.0.0.1 // Map Server Port map_port: 5121 remove "//" in char_ip, and map_ip, it will look like this: // Character Server IP // The map server connects to the character server using this IP address. // NOTE: This is useful when you are running behind a firewall or are on // a machine with multiple interfaces. char_ip: 127.0.0.1 // The map server listens on the interface with this IP address. // NOTE: This allows you to run multiple servers on multiple interfaces // while using the same ports for each server. //bind_ip: 127.0.0.1 // Character Server Port char_port: 6121 // Map Server IP // The IP address which clients will use to connect. // Set this to what your server's public IP address is. map_ip: 127.0.0.1 // Map Server Port map_port: 5121 5) Open you subnet_athena.txt and you'll see this: subnet: 255.0.0.0:127.0.0.1:127.0.0.1 If you changed the ips in char_athena.txt, inter_athena.txt and map_athena.txt, you should consider to put them here too. for example, the ip is 125.60.252.169 subnet: 255.0.0.0:125.60.252.169:125.60.252.169 ==========// MySQL Setup //========== 1) Install MySQL Gui Tools 2) Install MySQL Essentials. Choose MySQL 501. Enter "ragnarok" for the password for "root"(remember you can change this later on, this is just a basic one). Just click the Execute and when done, just click Finish. Go to Task Manager and check if mysqld-nt.exe is running in processes although it's not necessary if no error occured during installation. 3) Start MySQL Query nd it will prompt up a window. Fill in Stored Connection: (leave it blank) Server Host: localhost Port: 3306 Username: root Password: (remember the password you made when you're installing MySQL Essentials?put it here) Default Schema: ragnarok(you can change this afterwards, this is just a basic name) and leave other field as it is but to make sure everything is correct. Then press enter. 4) *When you are in MySQL Query Browser, click once on ragnarok database that is below Schemata. *Go to menu, click File and choose Open Script... *We need to execute main.sql, mail.sql and log.sql (execute upgrade_svn* .sql files, too, if require) so, look for the main.sql, which should be in sql-files folder in eAthena Server and other .sql files. *Pick main.sql and click Open. *Click the Green Execute Icon to the upper right to execute. Do the same with mail.sql now and execute it. *When you are done, we need to create log database by right-click somewhere within the table where the databases are and choose Create New Schema and type in log and click OK. *Double-click on log database, go to menu, click File, choose Open Script..., open logs.sql and Execute. *Double click ragnarok database to expand to see all tables. *Look for login table and double click and double click again. *Click once on Edit so, we can edit the cells. This icon should be in bottom. *For userid: and user_pass:, type in the name that you used in char_athena.conf and map_athena.conf. *When you are done editing, just click the Apply Changes that is next to the Edit icon. 5) Goto MySQL Administrator. Login there. Stored Connection: (leave it blank) Server Host: localhost Port: 3306 Username: root Password: (remember the password you made when you're installing MySQL Essentials?put it here) Then Enter. 6) And you're inside the MySQL Administrator now. Go to User Administration and Click New User and enter this: MySQL User: ragnarok Password: ragnarok Confirm Password: ragnarok then click "Apply Changes". After that, Click the ragnarok user and goto schema priviledges(right-side of user information). Click ragnarok and log database and click "<<", then click "Apply Changes" And we're done1 point
-
Preamble I have written an achievement system I want to share with you. It is not the best way to solve achievement systems nor is it very efficient(though it might be more efficient than NPC scripting) and if you already have an achievement system(src or npc) and it's working for you, please don't change to mine. Mine is rather old(about half a year or more) and back then it was the first time I wrote something completly new for eAthena. What I did today was applying the system to rA and create a working diff. If you are willing to use this system then I beg you to report any bug found. Also, if there is enough demand, I might consider re-writing it from scratch, because I am overall unhappy with the system, but not really motivated to further work on it in greater detail. Also the code-style I used back then is totally going against the one I am using nowadays... Don't judge me! Functions There are pre-defined types of achievements in this system Monsterkill Achievements Itemfind Achievements (Only use this for Items NOT trade/drop/storage-able, or else it will result in abuse) Itemuse Achievements Explore Achievements Quest Achievements Special Achievements Let me explain them one after another: Monsterkill Achievements(0): Well, name says it mostly, but there is a bit more to it. You can define different types per achievement. The types are counting by ID(0), by size(1), by race(2), by element(3) or for all MvPs(4). And if player A has killed X monsters that meet the requirement, then he gets the achievement. Itemfind Achievements(1): Again, name says what it does. If you find certain items, you get the achievement. Make sure you only use it on non tradeable etc. items or it will be abused. It can also be filtered into types. They are the following: ID(0), Equip(1)[see item_db->equip), Type(2)[see item_db->type]. It will count if you drop it and pick it up again, so really, only use it on items not storageable, tradeable and dropable! Itemuse Achievements(2): Its porpuse is to count every item used. This achievement might be bugged, report anything you find fishy! It uses the same filtering as Itemfind, so please refer to that. Explore Achievements(3): When entering a map, the system checks whether the map is inside the database for explore achievements and if so, it sets the count. If the player visited all maps for one achievement, then he receives the achievement. Quest Achievements(4): When finishing certain quests, you are able to gain quest achievements. Simple as that! Special Achievements(5): This are achievements in the achievement database. But they are only applicable over @achieve from a GM or with the achieve script_command. This achievement has Event porpuses and is only added for a complete database for your website etc. Now comes the technical stuff... How to install the achievement system 1. Download the *.diff and the *.sql file(they are in the *.rar provided). 2. Import the *.sql into your rAthena database. 3. Apply the *.diff onto your rAthena server. 4. Check your ./conf/battle/exp.conf and ./conf/battle/misc.conf: Two new configs have been added: achievement_cutin_duration and achievement_exp_rate. Read the conf files for more information and change it to whatever you wish it to be. 5. Add the two new files ./src/map/achievement.c and ./src/map/achievement.h to your MAKEFILE or to your project solution and recompile! (^ Up to this point, I won't provide ANY support ^) How to add achievements Well, that is mainly why I would like to find another way of solving the achievement system. But currently it is like this: 1. Add your achievement to achievement_db. Here is a brief summary of the columns: If you chose 5 as type, you are nearly done, skip step 2. If you chose another type, please read on. 2. Go to the respective table of your chosen type: 0->mob_achievement 1->item_achievement 2->itemuse_achievement 3->explore_achievement 4->quest_achievement Now add an entry for your newly added achievement. The columns are rather similiar, but I'll explain in greater detail: mob_achievement: achievement_id: Set to ID assigned by achievement_db for your new achievement type: See description of Mobkill Achievements. There are numbers in brackets for each filtering type valueX: The value for what to filter. I.e. if you chose ID, then place an ID here. If you chose elements, place a number from the element enum here (see script_commands or src for reference) amountX: How many to kill itemfind_achievement: itemuse_achievement: achievement_id: Set to ID assigned by achievement_db for your new achievement type: See description of Itemfind Achievements. There are numbers in brackets for each filtering type valueX: The value for what to filter. I.e. if you chose ID, then place an ID here. amountX: How many to find/use explore_achievement: achievement_id: Set to ID assigned by achievement_db for your new achievement mapX: Name of the map. I.e. prontera quest_achievement: achievement_id: Set to ID assigned by achievement_db for your new achievement questX: ID of the quest 3. Last step is to reload the AchievementDB ingame via @reloadachievement or restart your server. Atcommands So, I added two atcommands working together with this System: @achieve <Achievement_ID> <Player_Name>. Give <Player_Name> Achievement with <Achievement_ID> as ID. IT DOES NOT CHECK WHETHER HE MEETS THE REQUIREMENTS! Built in for debugging and special achievements @reloadachievements. Reload the Achievement DBs. Helpfully if you added new achievements and don't want to restart the server. Scriptcommands *Achieve( <AchievementID>{, <Account_ID>}); Same as the Atcommand. If no account_id is given, use attached player. Does also not check if player meets requirements. Intended for special achievements *GetAchievementInfo(<AchievementID>, <flag>); Flag determines what to return: 0 = type, 1 = bexp, 2 = jexp, 3 = nameid, 4 = points, 5 = status 5 Only works with attached players and returns 1 if the player finished the achievement and 0 otherwise. *GetAchievementName(<AchievementID>); Returns the name of the achievement *GetAchievementCutin(<AchievementID>); Returns the name of the cutin of the achievement I think this is about all you need to know. Please report any bugs and post any suggestions. If you overwhelm me enough, I might rework it to be more user-friendly! Only post bugs and suggestions after you've read through the whole article. I will notive if you haven't. At last Download achievement.patch achievement.sql €dit: I really want to stress the following facts again: Read the whole article! Only use if you are unable to script/code a system that is suficient to suit your needs or this system matches your needs perfectly(well, w/e)! Report any found bug! €dit²: Forgot to mention. The last achievement is stored within the permanent playervariable "LastAchievement" and it stores the ID of the achievement. So you can check it via NPC script etc. Changelog: 1.0 FIrst version 1.1 Fixxed bug of not deleting the cutins properly [Thanks Dexter] 1.2 Fixxed cutin bug fully, fixxed typos in config1 point
-
Hello everyone. Im here today to release a batch of decompiled Lua files made from the latest Lub's in the client's official grf's. The files you see here were decompiled and adjusted to work with the latest RO clients while in a decompiled form. This allow's private server dev's to add many different types of custom content to their clients without the need of hexing a client. These files are completely brand new and dont use any data from any past decompiled files (Except emotionlist.lub). Reason is because as old as the last release is (March 2011) it was hard to find a starting point. Not only that, past releases are missing some needed data like job checks for skill requirements, types, missing other data....etc. It was best to start from scratch so I could make some fully up-to-date and reliable files. The files here were made with the latest lub's from around December of 2011. However, due to issues with December clients I made and tested them while using a 2011-11-22aRagexeRE client. No function changes were made during the month of December. With the release of these files I hope to help the community move a big step forward to getting full support for the latest clients possiable. Rytech's Decompiled Lua's Release For 2011-11-22 client. = How To Use = Place the "lua files" folder in your RO/data/ directory. They will work in data folders and GRF's. Be sure to have the "Load Lua Before Lub" diff diffed into your client. = Notes = Skill names in the skillinfolist.lua are still in Korean as I didnt bother taking the time to replace the names with english ones....yet. All 3rd job skill descripts in the skilldescript.lua are copied from the sakray iRO client and are mostly up-to-date with the info for the 2011 balances from kRO. The stateiconinfo.lua is from iRO's sakray client and is up-to-date with skill info. However, iRO skill names are used in here and will need to be replaced with kRO skill names in the future. Finally, I will not bother decompileing any function files since its pointless. Their's no possiable ways in customize with editing them and is best to keep true to the original coding in them for the client date. If for some reason one does need to be decompiled then I will do it. Other then that, have fun and enjoy the release. =Final Notes The development and release of these files is a big step in my plan for getting full support completed for newer clients. So many users out there are still using clients from around Feb....March....around there due to lack of newer lua support. Its time to start moving up to the newer stuff. So much has changed since then and now their's many new custom things that can be added. Im really looking forward to the future. =D ----------------------------------------------------------------------------- Below are 2 downloads. The 1st one is the original release and is mainly for development purposes. The 2nd one (V2) is a re-release that includes a few updated files and makes installing a lot easier, as well as allowing the use of the "Load Lua Before Lub" diff. Rytech's Decompiled Lua Release 2011-11-22.rar Rytech's Decompiled Lua Release 2011-11-22 V2.rar1 point
-
Here is the breakguild command: @guildbreak - only the game master can break the guild find: ACMD_FUNC(guild) add the code below the function ACMD_FUNC(guildbreak) { struct guild *g; nullpo_retr(-1,sd); g=guild_search(sd->status.guild_id); if(g==NULL) { clif_displaymessage(fd, "You dont have a guild."); return -1; } if (strcmp(g->master, sd->status.name) != 0) { clif_displaymessage(fd, "Only the guild master can break this guild."); return -1; } //Verified that the player is the guild master. guild_broken(g->guild_id,0); return 0; } The result looks like this: then now find: ACMD_DEF(guild), add below: ACMD_DEF(guildbreak),//JayPee The result looks like this: Now recompile your server.1 point
-
Hi altious, In my current experience, 3TB/3000GB worth of bandwidth would be able to serve a constant 500 active players at all times with a website running as well on the server. Here are my very raw and somewhat accurate calculations... 50 players = .05 mb/s [180mb used in 1hr] | [4.32gb used in 24hrs] | [129.6gb used in 31 days] 100 players = .1 mb/s [360mb used in 1hr] | [8.64gb used in 24hrs] | [267.84gb used in 31 days] 500 players = .5 mb/s [1.8gb used in 1hr] | [43.2gb used in 24hrs] | [1339.2gb used in 31 days] Remember, you must have 500 active players on at all times to even achieve using 1.3~1.4GB of bandwidth in a month of 31 days.1 point
-
You can bind it with ToastOfDoom's Atcommand Events and make the script check for Emperium.1 point
-
why he is speaking in 3rd person ? You need compatible lua/lub files for your client.1 point
-
@Yommy Nice to see you decided to release your lua decompiler tool to the public. Even tho its not complete, it far more better then any other decompiler ive ever seen. @everyone To use this you need php support. You can download from this link and install.... http://windows.php.net/downloads/releases/php-5.3.8-nts-Win32-VC9-x86.msi When installing itl ask if you want to install a server. Choose not to install any server and just click next the entire way. When it shows which components to install be sure not to touch any of that and just hit next. Once complete youll also want to download and install Notepad++ as it greatly helps with fixing the small errors in the outputed files from the decompiler. To install and use the decompiler just make a folder anywhere and name it what you want. Then place the following files in the folder.... LuaTool.bat LuaTool ToFile.bat lua.inc.php LuaTool.php You will also need to make a folder in the same folder you placed those files in and name it lubs. Once done, you can use the decompiler. To use it youll need to place 1 lub file (Thats right. It can only do 1 at a time. Attempting to do more then 1 can mess up the output) in the lubs folder. Then you click the LuaTool ToFile.bat to run it. It will generate a output.txt file which will contain the decompiled code. Be sure to do something with the output file before you continue, like open it and save as with a different name, or just rename the file. If you want to decompile another file youll need to remove the lub file from the lubs folder before you place another in there or else the decompiler will try to read multiple files and mess up. No matter what file you decompile the output will always be saved to output.txt which is why you should do something with the data before decompiling another. Next is cleaning the data. Right click any of the decompiled files and click Edit With Notepad++. Once opened youll need to remove the first 4 lines as their not part of the script. After that comes the tricky part. On the menu bar above click Search -> Find. A window will open. Click the Replace tab. Here's where you will do commands to cleanup the script. How you clean each file depends on the output. For example youll notice in files like skillinfolist something like this....1 = "SN_WINDWALK". Every skill info entry will have one like that, but that 1 = part shouldnt be there and will cause errors. To remove them use the replace window you opened. First type in the Find What : 1 = . Thats 1(space)=(space). In the Replace With : keep it empty. Then click the Replace All button and itl remove all those 1 = things. This is a example of how to clean the files. Other things that may need to be done is removing unneeded [ ] or { } or adding needed { }, or other things. Its a bit tricky but it can be done and it can greatly help and reduce the amount of time needed to cleanup a file. You can make changes and test the files with a RO client while having the file in your data/lua files/whatever folder. Some of the error's the client will spit out may be confusing and hard to figure out and fix. If you run into any issues, feel free to use my lua files release as a reference to compare and see if you missed anything. I hope this help everyone on the decompiler. I type this kinda quick.1 point