integrating anti freeze system to server status update, should cure dropping server connections [Shinomori]

git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@1389 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
shinomori 2005-04-03 15:53:04 +00:00
parent f7dad84e7e
commit 1a6dea5fe5
5 changed files with 27 additions and 9 deletions

View File

@ -2,6 +2,7 @@
Date Added
04/03
* integrating anti freeze system to status update [Shinomori]
* Fixed impossible drops at 0.01% chance [Lupus]
* Fixed some variable declarations in SQL login.c causing compilation errors [veider]
* Added NetBSD support into Makefile (Still lots of warrnings during compilation [veider]

View File

@ -1394,6 +1394,11 @@ int parse_fromchar(int fd) {
server[id].users = RFIFOL(fd,2);
if(anti_freeze_enable)
server_freezeflag[id] = 5; // Char anti-freeze system. Counter. 5 ok, 4...0 freezed
// send some answer
WFIFOW(fd,0) = 0x2718;
WFIFOSET(fd,2);
RFIFOSKIP(fd,6);
break;

View File

@ -789,16 +789,24 @@ int parse_fromchar(int fd){
return 0;
// how many users on world? (update)
if (server[id].users != RFIFOL(fd,2))
{
printf("set users %s : %d\n", server[id].name, RFIFOL(fd,2));
server[id].users = RFIFOL(fd,2);
server[id].users = RFIFOL(fd,2);
sprintf(tmpsql,"UPDATE `sstatus` SET `user` = '%d' WHERE `index` = '%d'", server[id].users, id);
// query
if (mysql_query(&mysql_handle, tmpsql)) {
printf("DB server Error - %s\n", mysql_error(&mysql_handle));
}
}
if(anti_freeze_enable)
server_freezeflag[id] = 5; // Char anti-freeze system. Counter. 5 ok, 4...0 freezed
sprintf(tmpsql,"UPDATE `sstatus` SET `user` = '%d' WHERE `index` = '%d'", server[id].users, id);
// query
if (mysql_query(&mysql_handle, tmpsql)) {
printf("DB server Error - %s\n", mysql_error(&mysql_handle));
}
// send some answer
WFIFOW(fd,0) = 0x2718;
WFIFOSET(fd,2);
RFIFOSKIP(fd,6);
break;

View File

@ -1071,7 +1071,7 @@ int chrif_parse(int fd)
case 0x2afb: chrif_sendmapack(fd); break;
case 0x2afd: pc_authok(RFIFOL(fd,4), RFIFOL(fd,8), (time_t)RFIFOL(fd,12), (struct mmo_charstatus*)RFIFOP(fd,16)); break;
case 0x2afe: pc_authfail(RFIFOL(fd,2)); break;
case 0x2b00: map_setusers(RFIFOL(fd,2)); break;
case 0x2b00: map_setusers(fd); break;
case 0x2b03: clif_charselectok(RFIFOL(fd,2)); break;
case 0x2b04: chrif_recvmap(fd); break;
case 0x2b06: chrif_changemapserverack(fd); break;

View File

@ -180,8 +180,12 @@ int console = 0;
* (char鯖から送られてくる)
*------------------------------------------
*/
void map_setusers(int n) {
users = n;
void map_setusers(int fd)
{
users = RFIFOL(fd,2);
// send some anser
WFIFOW(fd,0) = 0x2718;
WFIFOSET(fd,2);
}
/*==========================================