* Clarified char_maintenance config option.
* Changed packet 0x2712. (added request_id)
* Changed packet 0x2713. (added sex, request_id, version, clienttype; removed email, expiration time, gmlevel)
* Delayed user count check and mmo_char_send006b to when the account data arrives.
* Created auxiliary function MD5_Salt.
(split from a future commit that was getting to big for my taste)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13652 54d463be-8e91-2dee-dedb-b68131a5f0ec
Added sql upgrade script to adjust the appropriate char table columns.
This is an enhancement to r5762.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13541 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Number 2 didn't exist in old clients so it used the default message, now it exists so the wrong message is displayed.
- Changed 2 to 0xFF to get the default message.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13356 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Cleaned around the char set offline function to properly avoid setting offline a character that had relogged faster than the map server's packet arrival to the char-server (I presume this was the bugfix that Kevin attempted a long time ago, but the current code for that causes a dangling pointer problem).
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13293 54d463be-8e91-2dee-dedb-b68131a5f0ec
- caused by incorrect idb_ensure -> idb_get change (see r12950)
- removed redundant account_id variable from storage data
- cleaned up the very messy txt storage handling code
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13093 54d463be-8e91-2dee-dedb-b68131a5f0ec
* the login server storage, ipban and logging systems have been abstracted and now provide a common interface; the rest has been merged into a single login server core (no more login/login_sql duplicity)
* storage systems are now added via compiler options (WITH_SQL / WITH_TXT)
* multiple storage engines can be compiled in at the same time, and the config option account.engine defines which one will be used.
* due to MySQL autoincrement limitations, accounts with id '0' will not be supported; account IDs from this point on should start from '1'.
* login_log() functions now again record IP addresses in dotted format, not as 4-byte integers (undo from r6868).
* removed config options that defined column names in the login table
* removed `memo` and `error message` columns from login db/savefile
* moved `loginlog` table to the logs database
* added sql files upgrade_svn12975.sql and upgrade_svn12975_log.sql
* due to changes to the login table layout, I added an !optional! sql file (upgrade_svn12975_view.sql) that will provide a certain degree of backwards compatibility with existing software; read the instructions inside carefully!
* moved third-party includes/libs to a separate directory
* updated project files / makefiles
Changed the way GM levels are handled
* removed conf/gm_account.txt
* added the gm level column to the txt savefile (after 'email' column)
* gm level information is now transferred along with account data
For open problems see bugreport:1889.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13000 54d463be-8e91-2dee-dedb-b68131a5f0ec
* storage is now loaded/saved along with character status
* as a consequence, a lot of storage handling code was removed
* there is no more locking done within storage data
* mapservers no longer cache the data (solves muiltimapserver exploit)
* loading storage on char select may decrease charserver performance
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12950 54d463be-8e91-2dee-dedb-b68131a5f0ec
Corrected party invite failure not informing the inviting player.
Cleaned up some foreach() code int_party.c.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12711 54d463be-8e91-2dee-dedb-b68131a5f0ec
Merged some recent changes from SQL to TXT, as someone didn't bother to do it.
Ifdefed the quest data request code as SQL-only (this was causing server disconnects whenver someone logged in).
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12606 54d463be-8e91-2dee-dedb-b68131a5f0ec
- the behaviour enabled a desynch between the char-server and the map-server
- now the map-server asks the char-server to authenticate the auth info (the char-server doesn't send the auth info immediatelly)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12579 54d463be-8e91-2dee-dedb-b68131a5f0ec
Renamed 'ban_until_time' to 'unban_time'.
this also applies to login table columns (see upgrade_svn12464.sql).
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12464 54d463be-8e91-2dee-dedb-b68131a5f0ec
- removed the option to specify multiple IPs/subnets for 'ladminallowip'
- removed the @gm command and all associated management code
- removed the 'save unknown packets' code
- removed the lengthy TXT ipban code (which was essentially a copy of what's already handled by the socket layer/packet_athena.conf)
- implemented 'start_limited_time' in SQL (expiration for new accounts)
- applied some missing TXT changes from the last update
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12446 54d463be-8e91-2dee-dedb-b68131a5f0ec
* replaced the cyclic, size-limited auth_fifo data structure with the more appropriate DBMap-based alternative (stops some erratic behavior)
* added code to simulate the pseudo-status "online on login server"
* auth data will now expire after 30 seconds instead of persisting
* better-than-aegis handling of login cancellation (the server will wipe all previous auth data instead of making you wait for it to expire)
* proper status message - no more generic "rejected from server", now you'll get "the server still recognizes your last connection"
* fixed a typo in r10110 which caused disconnect timer removal to fail
* split off some parsing code to login_auth_ok() and login_auth_failed()
* extended the auth confirmation packet so that the login_id1/2 values are sent along with the associated account id (stops charserver from making wrong choices if two incoming sessions have the same account id)
* fixed a bug in the disconnect part of the main charserver parsing loop, where a non-authed client would erase the online db entry for a client that's already online, thus bypassing any dual-login checks
* added code to stop the waiting_disconnect timer when the associated online entry is removed right away, instead of doing checks later
* removed code that would periodically wipe the online status of clients that are in the auth process (producing yet more erratic behavior)
* commented out some TXT-only reconnect prevention code (bugreport:1281)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12441 54d463be-8e91-2dee-dedb-b68131a5f0ec
There is still the unresolved issue where newly added party members will not display their party correctly.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12328 54d463be-8e91-2dee-dedb-b68131a5f0ec
- Fixed acc_reg2 parsing screwing up the char_id and subtracting 2 from it rather than passing it as it is.
- Extended the auth_node/auth_db system in chrif.c to handle log in/out and mapserver-change procedures. This way players are not in the main dbs when they are not "active", which blocks potential invalid accesses to them.
- Replaced states auth, waiting_disconnect and finalsave with active.
- Cleaned some the party/guild login and creation procedures, removed the party_sent/guild_sent states.
- Removed a redundant guild_check_member call which is beyond not-needed and into the realm of wasting resources.
- clif_parse will no longer process packets from !sd->state.active players, this also makes checking for finalsave uneccessary (since players re already removed from the maps and dbs by this point, so you can't access them in any other way)
- Separated the roles of unit_free and map_quit, the former will handle cleaning structures from the player so it can be free'd safely, while the latter performs additional routines which are unique to characters logging out normally (map-server changes will invoke unit_free and bypass map_quit).
- Removed pc_isplaying, quit_db, map_knowsaccount, MAPIT_PCISPLAYING among other functions/defines which are no longer needed due to the new login scheme.
- Cleand up a bit some code in the clif_send(_sub) functions.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12223 54d463be-8e91-2dee-dedb-b68131a5f0ec
- corrected login_fd/char_fd being uninitialized in the char servers.
- Changed a bit around how status_base_atk works to avoid overflows.
- Added a check to prevent using consume-delay items when you cannot use skills, since that opens an exploit if the item also has non-skill-casting components to its script.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12214 54d463be-8e91-2dee-dedb-b68131a5f0ec
* fixed passwordencrypt on SQL not behaving correctly (since r10753)
* corrected some column lengths in the login db (username, password,...)
* fixed some places which used wfifo without first reallocating it
* removed interserver packet 0x7532 (Request to end connection), as there was no code that actually sent this packet
* moved RFIFOSKIP actions to execute as soon as possible
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12043 54d463be-8e91-2dee-dedb-b68131a5f0ec
Removed/replaced all printf calls in the code.
Added a new flag to setting 'console_silent', for filtering debug messages.
Silenced the "Broken pipe found" and "Server running in debug mode" messages.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12020 54d463be-8e91-2dee-dedb-b68131a5f0ec
- removed guardian hp from the castle data structure, database, savefiles and various script functions (use upgrade_svn11914.sql)
- removed guardian hp calculation and manipulation from the castle manager npc, now the hp values are updated by the server itself (glitch: when castle defense changes, all guardians are healed to full)
- tweaked script function 'guardianinfo' to provide some data needed by the manager npc (currently available are hp, maxhp and visibility); also, it doesn't need a player attached to execute anymore
The whole thing is experimental, use at your own risk (seems to work though...)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11915 54d463be-8e91-2dee-dedb-b68131a5f0ec
- unrolling of foreach()/_sub() pairs using db iterators
- usage of ARR_FIND instead of for()/break;
- old function header adjustment
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11896 54d463be-8e91-2dee-dedb-b68131a5f0ec
- cleaned up npc event execution code
- cleaned up guild data loading/saving code; to be improved later
- removed dummy 'account name' expulsion list management code
- removed columns 'rsv1' and 'rsv2' from guild member data
- removed columns 'rsv1' 'rsv2' 'rsv3' and 'acc' from guild expulsion data
- added upgrade_svn11895.sql for SQL
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11895 54d463be-8e91-2dee-dedb-b68131a5f0ec