summaryrefslogtreecommitdiff
path: root/src/char_sql/int_party.c
diff options
context:
space:
mode:
authorChuck Miller <shadowmil@gmail.com>2009-12-25 05:00:31 -0500
committerJared Adams <jaxad0127@gmail.com>2009-12-26 00:40:11 -0700
commit634aeeb9d58b01f9de6632a014a063ef0c4cf31e (patch)
tree70023dd2bcc12a3f96ec6f118d80e27411920531 /src/char_sql/int_party.c
parent113fcc4f0a7a0921e94bc415515dd4b393a29d60 (diff)
downloadtmwa-634aeeb9d58b01f9de6632a014a063ef0c4cf31e.tar.gz
tmwa-634aeeb9d58b01f9de6632a014a063ef0c4cf31e.tar.bz2
tmwa-634aeeb9d58b01f9de6632a014a063ef0c4cf31e.tar.xz
tmwa-634aeeb9d58b01f9de6632a014a063ef0c4cf31e.zip
Used the "indent" C formatting program from GNU to do some clean ups
The command options used was: -nbad -bap -sc -bl -blf -bli0 -cli4 -cbi0 -di5 -nbc -bls -ip2 -nut -ts4 -bap -i4 -sob -npsl
Diffstat (limited to 'src/char_sql/int_party.c')
-rw-r--r--src/char_sql/int_party.c1462
1 files changed, 821 insertions, 641 deletions
diff --git a/src/char_sql/int_party.c b/src/char_sql/int_party.c
index 84de078..0eccb83 100644
--- a/src/char_sql/int_party.c
+++ b/src/char_sql/int_party.c
@@ -5,721 +5,876 @@
#include "char.h"
#include "strlib.h"
-#include "socket.h"
+#include "socket.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static struct party *party_pt;
-static int party_newid=100;
+static int party_newid = 100;
-int mapif_party_broken(int party_id,int flag);
-int party_check_empty(struct party *p);
-int mapif_parse_PartyLeave(int fd,int party_id,int account_id);
+int mapif_party_broken (int party_id, int flag);
+int party_check_empty (struct party *p);
+int mapif_parse_PartyLeave (int fd, int party_id, int account_id);
// Save party to mysql
-int inter_party_tosql(int party_id,struct party *p)
+int inter_party_tosql (int party_id, struct party *p)
{
- // 'party' ('party_id','name','exp','item','leader')
-
- char t_name[100];
- char t_member[24];
- int party_member = 0, party_online_member = 0;
- int party_exist = 0;
- int leader_id = 0;
- int i = 0;
-
- printf("(\033[1;64m%d\033[0m) Request save party - ",party_id);
-
- jstrescapecpy(t_name, p->name);
-
- if (p==NULL || party_id==0 || p->party_id ==0 || party_id!=p->party_id) {
- printf("- Party pointer or party_id error \n");
- return 0;
- }
-
- // Check if party exists
- sprintf(tmp_sql,"SELECT count(*) FROM `%s` WHERE `party_id`='%d'",party_db, party_id);
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error - %s\n", mysql_error(&mysql_handle) );
- return 0;
- }
- sql_res = mysql_store_result(&mysql_handle) ;
- if (sql_res!=NULL && mysql_num_rows(sql_res)>0) {
- sql_row = mysql_fetch_row(sql_res);
- party_exist = atoi (sql_row[0]);
- //printf("- Check if party %d exists : %s\n",party_id,party_exist==0?"No":"Yes");
- }
- mysql_free_result(sql_res) ; //resource free
-
- if (party_exist >0){
- // Check members in party
- sprintf(tmp_sql,"SELECT count(*) FROM `%s` WHERE `party_id`='%d'",char_db, party_id);
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error - %s\n", mysql_error(&mysql_handle) );
- return 0;
- }
- sql_res = mysql_store_result(&mysql_handle) ;
- if (sql_res!=NULL && mysql_num_rows(sql_res)>0) {
- sql_row = mysql_fetch_row(sql_res);
-
- party_member = atoi (sql_row[0]);
- // printf("- Check members in party %d : %d \n",party_id,party_member);
-
- }
- mysql_free_result(sql_res) ; //resource free
-
- party_online_member = 0;
- i=0;
- while (i<MAX_PARTY){
- if (p->member[i].account_id>0) party_online_member++;
- i++;
- }
-
- //if (party_online_member==0) printf("- No member online \n"); else printf("- Some member %d online \n", party_online_member);
-
- if (party_member <= 0 && party_online_member == 0) {
-
- // Delete the party, if has no member.
- sprintf(tmp_sql,"DELETE FROM `%s` WHERE `party_id`='%d'",party_db, party_id);
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error - %s\n", mysql_error(&mysql_handle) );
- }
- // printf("No member in party %d, break it \n",party_id);
- memset(p, 0, sizeof(struct party));
- return 0;
- } else {
- // Update party information, if exists
-
- int i=0;
-
- for (i=0;i<MAX_PARTY;i++){
-
- if (p->member[i].account_id>0){
- sprintf(tmp_sql,"UPDATE `%s` SET `party_id`='%d', `online`='%d' WHERE `account_id`='%d' AND `name`='%s'",
- char_db, party_id, p->member[i].online, p->member[i].account_id,jstrescapecpy(t_member,p->member[i].name));
- //printf("%s",tmp_sql);
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error (update `char`)- %s\n", mysql_error(&mysql_handle) );
- }
- }
- }
-
-
- sprintf(tmp_sql,"UPDATE `%s` SET `name`='%s', `exp`='%d', `item`='%d', `leader_id`=`leader_id` WHERE `party_id`='%d'",
- party_db, t_name,p->exp,p->item,party_id);
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error (inset/update `party`)- %s\n", mysql_error(&mysql_handle) );
- }
-
-
- // printf("- Update party %d information \n",party_id);
- }
- } else {
- // Add new party, if not exist
- int i = 0;
- while (i<MAX_PARTY&&((p->member[i].account_id>0&&p->member[i].leader==0)||(p->member[i].account_id<0))) i++;
- if (i<MAX_PARTY) leader_id = p->member[i].account_id;
- sprintf(tmp_sql,"INSERT INTO `%s` (`party_id`, `name`, `exp`, `item`, `leader_id`) VALUES ('%d', '%s', '%d', '%d', '%d')",
- party_db, party_id, t_name, p->exp, p->item,leader_id);
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error (inset/update `party`)- %s\n", mysql_error(&mysql_handle) );
- return 0;
- }
-
- sprintf(tmp_sql,"UPDATE `%s` SET `party_id`='%d', `online`='1' WHERE `account_id`='%d' AND `name`='%s'",
- char_db, party_id,leader_id, jstrescapecpy(t_member,p->member[i].name));
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error (inset/update `party`)- %s\n", mysql_error(&mysql_handle) );
- }
-
- //printf("- Insert new party %d \n",party_id);
- }
-
- printf("Party save success\n");
- return 0;
+ // 'party' ('party_id','name','exp','item','leader')
+
+ char t_name[100];
+ char t_member[24];
+ int party_member = 0, party_online_member = 0;
+ int party_exist = 0;
+ int leader_id = 0;
+ int i = 0;
+
+ printf ("(\033[1;64m%d\033[0m) Request save party - ", party_id);
+
+ jstrescapecpy (t_name, p->name);
+
+ if (p == NULL || party_id == 0 || p->party_id == 0
+ || party_id != p->party_id)
+ {
+ printf ("- Party pointer or party_id error \n");
+ return 0;
+ }
+
+ // Check if party exists
+ sprintf (tmp_sql, "SELECT count(*) FROM `%s` WHERE `party_id`='%d'",
+ party_db, party_id);
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error - %s\n", mysql_error (&mysql_handle));
+ return 0;
+ }
+ sql_res = mysql_store_result (&mysql_handle);
+ if (sql_res != NULL && mysql_num_rows (sql_res) > 0)
+ {
+ sql_row = mysql_fetch_row (sql_res);
+ party_exist = atoi (sql_row[0]);
+ //printf("- Check if party %d exists : %s\n",party_id,party_exist==0?"No":"Yes");
+ }
+ mysql_free_result (sql_res); //resource free
+
+ if (party_exist > 0)
+ {
+ // Check members in party
+ sprintf (tmp_sql, "SELECT count(*) FROM `%s` WHERE `party_id`='%d'",
+ char_db, party_id);
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error - %s\n", mysql_error (&mysql_handle));
+ return 0;
+ }
+ sql_res = mysql_store_result (&mysql_handle);
+ if (sql_res != NULL && mysql_num_rows (sql_res) > 0)
+ {
+ sql_row = mysql_fetch_row (sql_res);
+
+ party_member = atoi (sql_row[0]);
+ // printf("- Check members in party %d : %d \n",party_id,party_member);
+
+ }
+ mysql_free_result (sql_res); //resource free
+
+ party_online_member = 0;
+ i = 0;
+ while (i < MAX_PARTY)
+ {
+ if (p->member[i].account_id > 0)
+ party_online_member++;
+ i++;
+ }
+
+ //if (party_online_member==0) printf("- No member online \n"); else printf("- Some member %d online \n", party_online_member);
+
+ if (party_member <= 0 && party_online_member == 0)
+ {
+
+ // Delete the party, if has no member.
+ sprintf (tmp_sql, "DELETE FROM `%s` WHERE `party_id`='%d'",
+ party_db, party_id);
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error - %s\n",
+ mysql_error (&mysql_handle));
+ }
+ // printf("No member in party %d, break it \n",party_id);
+ memset (p, 0, sizeof (struct party));
+ return 0;
+ }
+ else
+ {
+ // Update party information, if exists
+
+ int i = 0;
+
+ for (i = 0; i < MAX_PARTY; i++)
+ {
+
+ if (p->member[i].account_id > 0)
+ {
+ sprintf (tmp_sql,
+ "UPDATE `%s` SET `party_id`='%d', `online`='%d' WHERE `account_id`='%d' AND `name`='%s'",
+ char_db, party_id, p->member[i].online,
+ p->member[i].account_id, jstrescapecpy (t_member,
+ p->member
+ [i].name));
+ //printf("%s",tmp_sql);
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error (update `char`)- %s\n",
+ mysql_error (&mysql_handle));
+ }
+ }
+ }
+
+ sprintf (tmp_sql,
+ "UPDATE `%s` SET `name`='%s', `exp`='%d', `item`='%d', `leader_id`=`leader_id` WHERE `party_id`='%d'",
+ party_db, t_name, p->exp, p->item, party_id);
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error (inset/update `party`)- %s\n",
+ mysql_error (&mysql_handle));
+ }
+
+ // printf("- Update party %d information \n",party_id);
+ }
+ }
+ else
+ {
+ // Add new party, if not exist
+ int i = 0;
+ while (i < MAX_PARTY
+ && ((p->member[i].account_id > 0 && p->member[i].leader == 0)
+ || (p->member[i].account_id < 0)))
+ i++;
+ if (i < MAX_PARTY)
+ leader_id = p->member[i].account_id;
+ sprintf (tmp_sql,
+ "INSERT INTO `%s` (`party_id`, `name`, `exp`, `item`, `leader_id`) VALUES ('%d', '%s', '%d', '%d', '%d')",
+ party_db, party_id, t_name, p->exp, p->item, leader_id);
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error (inset/update `party`)- %s\n",
+ mysql_error (&mysql_handle));
+ return 0;
+ }
+
+ sprintf (tmp_sql,
+ "UPDATE `%s` SET `party_id`='%d', `online`='1' WHERE `account_id`='%d' AND `name`='%s'",
+ char_db, party_id, leader_id, jstrescapecpy (t_member,
+ p->
+ member
+ [i].name));
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error (inset/update `party`)- %s\n",
+ mysql_error (&mysql_handle));
+ }
+
+ //printf("- Insert new party %d \n",party_id);
+ }
+
+ printf ("Party save success\n");
+ return 0;
}
// Read party from mysql
-int inter_party_fromsql(int party_id,struct party *p)
+int inter_party_fromsql (int party_id, struct party *p)
{
- int leader_id=0;
- printf("(\033[1;64m%d\033[0m) Request load party - ",party_id);
-
- memset(p, 0, sizeof(struct party));
-
- sprintf(tmp_sql,"SELECT `party_id`, `name`,`exp`,`item`, `leader_id` FROM `%s` WHERE `party_id`='%d'",party_db, party_id);
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error (select `party`)- %s\n", mysql_error(&mysql_handle) );
- return 0;
- }
-
- sql_res = mysql_store_result(&mysql_handle) ;
- if (sql_res!=NULL && mysql_num_rows(sql_res)>0) {
- sql_row = mysql_fetch_row(sql_res);
- // printf("- Read party %d from MySQL\n",party_id);
- p->party_id = party_id;
- strcpy(p->name, sql_row[1]);
- p->exp = atoi(sql_row[2]);
- p->item = atoi(sql_row[3]);
- leader_id = atoi(sql_row[4]);
- } else {
- mysql_free_result(sql_res);
- // printf("- Cannot find party %d \n",party_id);
- return 0;
- }
-
- mysql_free_result(sql_res);
-
- // Load members
- sprintf(tmp_sql,"SELECT `account_id`, `name`,`base_level`,`last_map`,`online` FROM `%s` WHERE `party_id`='%d'",char_db, party_id);
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error (select `party`)- %s\n", mysql_error(&mysql_handle) );
- return 0;
- }
- sql_res = mysql_store_result(&mysql_handle) ;
- if (sql_res!=NULL && mysql_num_rows(sql_res)>0) {
- int i;
- for(i=0;(sql_row = mysql_fetch_row(sql_res));i++){
- struct party_member *m = &p->member[i];
- m->account_id = atoi(sql_row[0]);
- if (m->account_id == leader_id) m->leader = 1; else m->leader = 0;
- strncpy(m->name,sql_row[1],sizeof(m->name));
- m->lv = atoi(sql_row[2]);
- strncpy(m->map,sql_row[3],sizeof(m->map));
- m->online = atoi(sql_row[4]);
- }
- // printf("- %d members found in party %d \n",i,party_id);
- }
- mysql_free_result(sql_res);
-
-
- printf("Party load success\n");
- return 0;
-
-}
+ int leader_id = 0;
+ printf ("(\033[1;64m%d\033[0m) Request load party - ", party_id);
+
+ memset (p, 0, sizeof (struct party));
+
+ sprintf (tmp_sql,
+ "SELECT `party_id`, `name`,`exp`,`item`, `leader_id` FROM `%s` WHERE `party_id`='%d'",
+ party_db, party_id);
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error (select `party`)- %s\n",
+ mysql_error (&mysql_handle));
+ return 0;
+ }
+
+ sql_res = mysql_store_result (&mysql_handle);
+ if (sql_res != NULL && mysql_num_rows (sql_res) > 0)
+ {
+ sql_row = mysql_fetch_row (sql_res);
+ // printf("- Read party %d from MySQL\n",party_id);
+ p->party_id = party_id;
+ strcpy (p->name, sql_row[1]);
+ p->exp = atoi (sql_row[2]);
+ p->item = atoi (sql_row[3]);
+ leader_id = atoi (sql_row[4]);
+ }
+ else
+ {
+ mysql_free_result (sql_res);
+ // printf("- Cannot find party %d \n",party_id);
+ return 0;
+ }
+
+ mysql_free_result (sql_res);
+
+ // Load members
+ sprintf (tmp_sql,
+ "SELECT `account_id`, `name`,`base_level`,`last_map`,`online` FROM `%s` WHERE `party_id`='%d'",
+ char_db, party_id);
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error (select `party`)- %s\n",
+ mysql_error (&mysql_handle));
+ return 0;
+ }
+ sql_res = mysql_store_result (&mysql_handle);
+ if (sql_res != NULL && mysql_num_rows (sql_res) > 0)
+ {
+ int i;
+ for (i = 0; (sql_row = mysql_fetch_row (sql_res)); i++)
+ {
+ struct party_member *m = &p->member[i];
+ m->account_id = atoi (sql_row[0]);
+ if (m->account_id == leader_id)
+ m->leader = 1;
+ else
+ m->leader = 0;
+ strncpy (m->name, sql_row[1], sizeof (m->name));
+ m->lv = atoi (sql_row[2]);
+ strncpy (m->map, sql_row[3], sizeof (m->map));
+ m->online = atoi (sql_row[4]);
+ }
+ // printf("- %d members found in party %d \n",i,party_id);
+ }
+ mysql_free_result (sql_res);
+
+ printf ("Party load success\n");
+ return 0;
-int inter_party_sql_init(){
- int i;
-
- //memory alloc
- printf("interserver party memory initialize.... (%d byte)\n",sizeof(struct party));
- party_pt = calloc(sizeof(struct party), 1);
-
- sprintf(tmp_sql,"UPDATE `%s` SET `online`='0'", char_db);
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error (update `char`)- %s\n", mysql_error(&mysql_handle) );
- }
-
- sprintf (tmp_sql , "SELECT count(*) FROM `%s`",party_db);
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error - %s\n", mysql_error(&mysql_handle) );
- }
- sql_res = mysql_store_result(&mysql_handle) ;
- sql_row = mysql_fetch_row(sql_res);
- printf("total party data -> '%s'.......\n",sql_row[0]);
- i = atoi (sql_row[0]);
- mysql_free_result(sql_res);
-
- if (i > 0) {
- //set party_newid
- sprintf (tmp_sql , "SELECT max(`party_id`) FROM `%s`", party_db);
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error - %s\n", mysql_error(&mysql_handle) );
- }
-
- sql_res = mysql_store_result(&mysql_handle) ;
-
- sql_row = mysql_fetch_row(sql_res);
- party_newid = atoi (sql_row[0])+1;
- mysql_free_result(sql_res);
- }
-
- printf("set party_newid: %d.......\n",party_newid);
-
- return 0;
}
+int inter_party_sql_init ()
+{
+ int i;
+
+ //memory alloc
+ printf ("interserver party memory initialize.... (%d byte)\n",
+ sizeof (struct party));
+ party_pt = calloc (sizeof (struct party), 1);
+
+ sprintf (tmp_sql, "UPDATE `%s` SET `online`='0'", char_db);
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error (update `char`)- %s\n",
+ mysql_error (&mysql_handle));
+ }
+
+ sprintf (tmp_sql, "SELECT count(*) FROM `%s`", party_db);
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error - %s\n", mysql_error (&mysql_handle));
+ }
+ sql_res = mysql_store_result (&mysql_handle);
+ sql_row = mysql_fetch_row (sql_res);
+ printf ("total party data -> '%s'.......\n", sql_row[0]);
+ i = atoi (sql_row[0]);
+ mysql_free_result (sql_res);
+
+ if (i > 0)
+ {
+ //set party_newid
+ sprintf (tmp_sql, "SELECT max(`party_id`) FROM `%s`", party_db);
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error - %s\n", mysql_error (&mysql_handle));
+ }
+
+ sql_res = mysql_store_result (&mysql_handle);
+
+ sql_row = mysql_fetch_row (sql_res);
+ party_newid = atoi (sql_row[0]) + 1;
+ mysql_free_result (sql_res);
+ }
+
+ printf ("set party_newid: %d.......\n", party_newid);
+
+ return 0;
+}
// Search for the party according to its name
-struct party* search_partyname(char *str)
+struct party *search_partyname (char *str)
{
- struct party *p=NULL;
- int leader_id = 0;
- char t_name[24];
-
- sprintf(tmp_sql,"SELECT `party_id`, `name`,`exp`,`item`,`leader_id` FROM `%s` WHERE `name`='%s'",party_db, jstrescapecpy(t_name,str));
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error (select `party`)- %s\n", mysql_error(&mysql_handle) );
- }
- sql_res = mysql_store_result(&mysql_handle) ;
- if (sql_res==NULL || mysql_num_rows(sql_res)<=0) { mysql_free_result(sql_res); return p; }
- sql_row = mysql_fetch_row(sql_res);
- p = party_pt;
- p->party_id = atoi(sql_row[0]);
- strcpy(p->name, sql_row[1]);
- p->exp = atoi(sql_row[2]);
- p->item = atoi(sql_row[3]);
- leader_id = atoi(sql_row[4]);
- mysql_free_result(sql_res);
-
- // Load members
- sprintf(tmp_sql,"SELECT `account_id`, `name`,`base_level`,`last_map`,`online` FROM `%s` WHERE `party_id`='%d'",char_db, p->party_id);
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error (select `party`)- %s\n", mysql_error(&mysql_handle) );
- return 0;
- }
- sql_res = mysql_store_result(&mysql_handle) ;
- if (sql_res!=NULL && mysql_num_rows(sql_res)>0) {
- int i;
- for(i=0;(sql_row = mysql_fetch_row(sql_res));i++){
- struct party_member *m = &p->member[i];
- m->account_id = atoi(sql_row[0]);
- if (m->account_id == leader_id) m->leader = 1; else m->leader = 0;
- strncpy(m->name,sql_row[1],sizeof(m->name));
- m->lv = atoi(sql_row[2]);
- strncpy(m->map,sql_row[3],sizeof(m->map));
- m->online = atoi(sql_row[4]);
- }
- printf("- %d members found in party %d \n",i,p->party_id);
- }
- mysql_free_result(sql_res);
-
- return p;
+ struct party *p = NULL;
+ int leader_id = 0;
+ char t_name[24];
+
+ sprintf (tmp_sql,
+ "SELECT `party_id`, `name`,`exp`,`item`,`leader_id` FROM `%s` WHERE `name`='%s'",
+ party_db, jstrescapecpy (t_name, str));
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error (select `party`)- %s\n",
+ mysql_error (&mysql_handle));
+ }
+ sql_res = mysql_store_result (&mysql_handle);
+ if (sql_res == NULL || mysql_num_rows (sql_res) <= 0)
+ {
+ mysql_free_result (sql_res);
+ return p;
+ }
+ sql_row = mysql_fetch_row (sql_res);
+ p = party_pt;
+ p->party_id = atoi (sql_row[0]);
+ strcpy (p->name, sql_row[1]);
+ p->exp = atoi (sql_row[2]);
+ p->item = atoi (sql_row[3]);
+ leader_id = atoi (sql_row[4]);
+ mysql_free_result (sql_res);
+
+ // Load members
+ sprintf (tmp_sql,
+ "SELECT `account_id`, `name`,`base_level`,`last_map`,`online` FROM `%s` WHERE `party_id`='%d'",
+ char_db, p->party_id);
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error (select `party`)- %s\n",
+ mysql_error (&mysql_handle));
+ return 0;
+ }
+ sql_res = mysql_store_result (&mysql_handle);
+ if (sql_res != NULL && mysql_num_rows (sql_res) > 0)
+ {
+ int i;
+ for (i = 0; (sql_row = mysql_fetch_row (sql_res)); i++)
+ {
+ struct party_member *m = &p->member[i];
+ m->account_id = atoi (sql_row[0]);
+ if (m->account_id == leader_id)
+ m->leader = 1;
+ else
+ m->leader = 0;
+ strncpy (m->name, sql_row[1], sizeof (m->name));
+ m->lv = atoi (sql_row[2]);
+ strncpy (m->map, sql_row[3], sizeof (m->map));
+ m->online = atoi (sql_row[4]);
+ }
+ printf ("- %d members found in party %d \n", i, p->party_id);
+ }
+ mysql_free_result (sql_res);
+
+ return p;
}
// EXP公平分配できるかチェック
-int party_check_exp_share(struct party *p)
+int party_check_exp_share (struct party *p)
{
- int i;
- int maxlv=0,minlv=0x7fffffff;
- for(i=0;i<MAX_PARTY;i++){
- int lv=p->member[i].lv;
- if( p->member[i].online ){
- if( lv < minlv ) minlv=lv;
- if( maxlv < lv ) maxlv=lv;
- }
- }
- return (maxlv==0 || maxlv-minlv<=party_share_level);
+ int i;
+ int maxlv = 0, minlv = 0x7fffffff;
+ for (i = 0; i < MAX_PARTY; i++)
+ {
+ int lv = p->member[i].lv;
+ if (p->member[i].online)
+ {
+ if (lv < minlv)
+ minlv = lv;
+ if (maxlv < lv)
+ maxlv = lv;
+ }
+ }
+ return (maxlv == 0 || maxlv - minlv <= party_share_level);
}
+
// Is there any member in the party?
-int party_check_empty(struct party *p)
+int party_check_empty (struct party *p)
{
- int i;
- if (p==NULL||p->party_id==0) return 1;
-// printf("party check empty %08X\n",(int)p);
- for(i=0;i<MAX_PARTY;i++){
-// printf("%d acc=%d\n",i,p->member[i].account_id);
- if(p->member[i].account_id>0){
- return 0;
- }
- }
- // If there is no member, then break the party
- mapif_party_broken(p->party_id,0);
- inter_party_tosql(p->party_id,p);
- return 1;
+ int i;
+ if (p == NULL || p->party_id == 0)
+ return 1;
+// printf("party check empty %08X\n",(int)p);
+ for (i = 0; i < MAX_PARTY; i++)
+ {
+// printf("%d acc=%d\n",i,p->member[i].account_id);
+ if (p->member[i].account_id > 0)
+ {
+ return 0;
+ }
+ }
+ // If there is no member, then break the party
+ mapif_party_broken (p->party_id, 0);
+ inter_party_tosql (p->party_id, p);
+ return 1;
}
-
// Check if a member is in two party, not necessary :)
-int party_check_conflict(int party_id,int account_id,char *nick)
+int party_check_conflict (int party_id, int account_id, char *nick)
{
- return 0;
+ return 0;
}
//-------------------------------------------------------------------
// map serverへの通信
// パーティ作成可否
-int mapif_party_created(int fd,int account_id,struct party *p)
+int mapif_party_created (int fd, int account_id, struct party *p)
{
- WFIFOW(fd,0)=0x3820;
- WFIFOL(fd,2)=account_id;
- if(p!=NULL){
- WFIFOB(fd,6)=0;
- WFIFOL(fd,7)=p->party_id;
- memcpy(WFIFOP(fd,11),p->name,24);
- printf("int_party: created! %d %s\n",p->party_id,p->name);
- }else{
- WFIFOB(fd,6)=1;
- WFIFOL(fd,7)=0;
- memcpy(WFIFOP(fd,11),"error",24);
- }
- WFIFOSET(fd,35);
- return 0;
+ WFIFOW (fd, 0) = 0x3820;
+ WFIFOL (fd, 2) = account_id;
+ if (p != NULL)
+ {
+ WFIFOB (fd, 6) = 0;
+ WFIFOL (fd, 7) = p->party_id;
+ memcpy (WFIFOP (fd, 11), p->name, 24);
+ printf ("int_party: created! %d %s\n", p->party_id, p->name);
+ }
+ else
+ {
+ WFIFOB (fd, 6) = 1;
+ WFIFOL (fd, 7) = 0;
+ memcpy (WFIFOP (fd, 11), "error", 24);
+ }
+ WFIFOSET (fd, 35);
+ return 0;
}
// パーティ情報見つからず
-int mapif_party_noinfo(int fd,int party_id)
+int mapif_party_noinfo (int fd, int party_id)
{
- WFIFOW(fd,0)=0x3821;
- WFIFOW(fd,2)=8;
- WFIFOL(fd,4)=party_id;
- WFIFOSET(fd,8);
- printf("int_party: info not found %d\n",party_id);
- return 0;
+ WFIFOW (fd, 0) = 0x3821;
+ WFIFOW (fd, 2) = 8;
+ WFIFOL (fd, 4) = party_id;
+ WFIFOSET (fd, 8);
+ printf ("int_party: info not found %d\n", party_id);
+ return 0;
}
+
// パーティ情報まとめ送り
-int mapif_party_info(int fd,struct party *p)
+int mapif_party_info (int fd, struct party *p)
{
- unsigned char buf[1024];
- WBUFW(buf,0)=0x3821;
- memcpy(buf+4,p,sizeof(struct party));
- WBUFW(buf,2)=4+sizeof(struct party);
- if(fd<0)
- mapif_sendall(buf,WBUFW(buf,2));
- else
- mapif_send(fd,buf,WBUFW(buf,2));
-// printf("int_party: info %d %s\n",p->party_id,p->name);
- return 0;
+ unsigned char buf[1024];
+ WBUFW (buf, 0) = 0x3821;
+ memcpy (buf + 4, p, sizeof (struct party));
+ WBUFW (buf, 2) = 4 + sizeof (struct party);
+ if (fd < 0)
+ mapif_sendall (buf, WBUFW (buf, 2));
+ else
+ mapif_send (fd, buf, WBUFW (buf, 2));
+// printf("int_party: info %d %s\n",p->party_id,p->name);
+ return 0;
}
+
// パーティメンバ追加可否
-int mapif_party_memberadded(int fd,int party_id,int account_id,int flag)
+int mapif_party_memberadded (int fd, int party_id, int account_id, int flag)
{
- WFIFOW(fd,0)=0x3822;
- WFIFOL(fd,2)=party_id;
- WFIFOL(fd,6)=account_id;
- WFIFOB(fd,10)=flag;
- WFIFOSET(fd,11);
- return 0;
+ WFIFOW (fd, 0) = 0x3822;
+ WFIFOL (fd, 2) = party_id;
+ WFIFOL (fd, 6) = account_id;
+ WFIFOB (fd, 10) = flag;
+ WFIFOSET (fd, 11);
+ return 0;
}
+
// パーティ設定変更通知
-int mapif_party_optionchanged(int fd,struct party *p,int account_id,int flag)
+int mapif_party_optionchanged (int fd, struct party *p, int account_id,
+ int flag)
{
- unsigned char buf[16];
- WBUFW(buf,0)=0x3823;
- WBUFL(buf,2)=p->party_id;
- WBUFL(buf,6)=account_id;
- WBUFW(buf,10)=p->exp;
- WBUFW(buf,12)=p->item;
- WBUFB(buf,14)=flag;
- if(flag==0)
- mapif_sendall(buf,15);
- else
- mapif_send(fd,buf,15);
- //printf("int_party: option changed %d %d %d %d %d\n",p->party_id,account_id,p->exp,p->item,flag);
- return 0;
+ unsigned char buf[16];
+ WBUFW (buf, 0) = 0x3823;
+ WBUFL (buf, 2) = p->party_id;
+ WBUFL (buf, 6) = account_id;
+ WBUFW (buf, 10) = p->exp;
+ WBUFW (buf, 12) = p->item;
+ WBUFB (buf, 14) = flag;
+ if (flag == 0)
+ mapif_sendall (buf, 15);
+ else
+ mapif_send (fd, buf, 15);
+ //printf("int_party: option changed %d %d %d %d %d\n",p->party_id,account_id,p->exp,p->item,flag);
+ return 0;
}
+
// パーティ脱退通知
-int mapif_party_leaved(int party_id,int account_id,char *name)
+int mapif_party_leaved (int party_id, int account_id, char *name)
{
- unsigned char buf[64];
- WBUFW(buf,0)=0x3824;
- WBUFL(buf,2)=party_id;
- WBUFL(buf,6)=account_id;
- memcpy(WBUFP(buf,10),name,24);
- mapif_sendall(buf,34);
- //printf("int_party: party leaved %d %d %s\n",party_id,account_id,name);
- return 0;
+ unsigned char buf[64];
+ WBUFW (buf, 0) = 0x3824;
+ WBUFL (buf, 2) = party_id;
+ WBUFL (buf, 6) = account_id;
+ memcpy (WBUFP (buf, 10), name, 24);
+ mapif_sendall (buf, 34);
+ //printf("int_party: party leaved %d %d %s\n",party_id,account_id,name);
+ return 0;
}
+
// パーティマップ更新通知
-int mapif_party_membermoved(struct party *p,int idx)
+int mapif_party_membermoved (struct party *p, int idx)
{
- unsigned char buf[32];
- WBUFW(buf,0)=0x3825;
- WBUFL(buf,2)=p->party_id;
- WBUFL(buf,6)=p->member[idx].account_id;
- memcpy(WBUFP(buf,10),p->member[idx].map,16);
- WBUFB(buf,26)=p->member[idx].online;
- WBUFW(buf,27)=p->member[idx].lv;
- mapif_sendall(buf,29);
- return 0;
+ unsigned char buf[32];
+ WBUFW (buf, 0) = 0x3825;
+ WBUFL (buf, 2) = p->party_id;
+ WBUFL (buf, 6) = p->member[idx].account_id;
+ memcpy (WBUFP (buf, 10), p->member[idx].map, 16);
+ WBUFB (buf, 26) = p->member[idx].online;
+ WBUFW (buf, 27) = p->member[idx].lv;
+ mapif_sendall (buf, 29);
+ return 0;
}
+
// パーティ解散通知
-int mapif_party_broken(int party_id,int flag)
+int mapif_party_broken (int party_id, int flag)
{
- unsigned char buf[16];
- WBUFW(buf,0)=0x3826;
- WBUFL(buf,2)=party_id;
- WBUFB(buf,6)=flag;
- mapif_sendall(buf,7);
- //printf("int_party: broken %d\n",party_id);
- return 0;
+ unsigned char buf[16];
+ WBUFW (buf, 0) = 0x3826;
+ WBUFL (buf, 2) = party_id;
+ WBUFB (buf, 6) = flag;
+ mapif_sendall (buf, 7);
+ //printf("int_party: broken %d\n",party_id);
+ return 0;
}
+
// パーティ内発言
-int mapif_party_message(int party_id,int account_id,char *mes,int len)
+int mapif_party_message (int party_id, int account_id, char *mes, int len)
{
- unsigned char buf[512];
- WBUFW(buf,0)=0x3827;
- WBUFW(buf,2)=len+12;
- WBUFL(buf,4)=party_id;
- WBUFL(buf,8)=account_id;
- memcpy(WBUFP(buf,12),mes,len);
- mapif_sendall(buf,len+12);
- return 0;
+ unsigned char buf[512];
+ WBUFW (buf, 0) = 0x3827;
+ WBUFW (buf, 2) = len + 12;
+ WBUFL (buf, 4) = party_id;
+ WBUFL (buf, 8) = account_id;
+ memcpy (WBUFP (buf, 12), mes, len);
+ mapif_sendall (buf, len + 12);
+ return 0;
}
//-------------------------------------------------------------------
// map serverからの通信
-
// Create Party
-int mapif_parse_CreateParty(int fd,int account_id,char *name,char *nick,char *map,int lv)
+int mapif_parse_CreateParty (int fd, int account_id, char *name, char *nick,
+ char *map, int lv)
{
- struct party *p;
- if( (p=search_partyname(name))!=NULL){
-// printf("int_party: same name party exists [%s]\n",name);
- mapif_party_created(fd,account_id,NULL);
- return 0;
- }
- p=party_pt;
- if(p==NULL){
- printf("int_party: out of memory !\n");
- mapif_party_created(fd,account_id,NULL);
- return 0;
- }
- memset(p,0,sizeof(struct party));
- p->party_id=party_newid++;
- memcpy(p->name,name,24);
- p->exp=0;
- p->item=0;
- p->member[0].account_id=account_id;
- memcpy(p->member[0].name,nick,24);
- memcpy(p->member[0].map,map,16);
- p->member[0].leader=1;
- p->member[0].online=1;
- p->member[0].lv=lv;
-
- inter_party_tosql(p->party_id,p);
-
- mapif_party_created(fd,account_id,p);
- mapif_party_info(fd,p);
-
- return 0;
+ struct party *p;
+ if ((p = search_partyname (name)) != NULL)
+ {
+// printf("int_party: same name party exists [%s]\n",name);
+ mapif_party_created (fd, account_id, NULL);
+ return 0;
+ }
+ p = party_pt;
+ if (p == NULL)
+ {
+ printf ("int_party: out of memory !\n");
+ mapif_party_created (fd, account_id, NULL);
+ return 0;
+ }
+ memset (p, 0, sizeof (struct party));
+ p->party_id = party_newid++;
+ memcpy (p->name, name, 24);
+ p->exp = 0;
+ p->item = 0;
+ p->member[0].account_id = account_id;
+ memcpy (p->member[0].name, nick, 24);
+ memcpy (p->member[0].map, map, 16);
+ p->member[0].leader = 1;
+ p->member[0].online = 1;
+ p->member[0].lv = lv;
+
+ inter_party_tosql (p->party_id, p);
+
+ mapif_party_created (fd, account_id, p);
+ mapif_party_info (fd, p);
+
+ return 0;
}
+
// パーティ情報要求
-int mapif_parse_PartyInfo(int fd,int party_id)
+int mapif_parse_PartyInfo (int fd, int party_id)
{
- struct party *p = party_pt;
- if(p==NULL){
- printf("int_party: out of memory !\n");
- return 0;
- }
- inter_party_fromsql(party_id, p);
-
- if(p->party_id >= 0)
- mapif_party_info(fd,p);
- else
- mapif_party_noinfo(fd,party_id);
- return 0;
+ struct party *p = party_pt;
+ if (p == NULL)
+ {
+ printf ("int_party: out of memory !\n");
+ return 0;
+ }
+ inter_party_fromsql (party_id, p);
+
+ if (p->party_id >= 0)
+ mapif_party_info (fd, p);
+ else
+ mapif_party_noinfo (fd, party_id);
+ return 0;
}
+
// パーティ追加要求
-int mapif_parse_PartyAddMember(int fd,int party_id,int account_id,char *nick,char *map,int lv)
+int mapif_parse_PartyAddMember (int fd, int party_id, int account_id,
+ char *nick, char *map, int lv)
{
- struct party *p;
- int i;
-
- p = party_pt;
- if(p==NULL){
- printf("int_party: out of memory !\n");
- return 0;
- }
- inter_party_fromsql(party_id, p);
-
- if(p->party_id <= 0){
- mapif_party_memberadded(fd,party_id,account_id,1);
- return 0;
- }
-
- for(i=0;i<MAX_PARTY;i++){
- if(p->member[i].account_id==0){
- int flag=0;
-
- p->member[i].account_id=account_id;
- memcpy(p->member[i].name,nick,24);
- memcpy(p->member[i].map,map,16);
- p->member[i].leader=0;
- p->member[i].online=1;
- p->member[i].lv=lv;
- mapif_party_memberadded(fd,party_id,account_id,0);
- mapif_party_info(-1,p);
-
- if( p->exp>0 && !party_check_exp_share(p) ){
- p->exp=0;
- flag=0x01;
- }
- if(flag)
- mapif_party_optionchanged(fd,p,0,0);
-
- inter_party_tosql(party_id, p);
- return 0;
- }
- }
- mapif_party_memberadded(fd,party_id,account_id,1);
- //inter_party_tosql(party_id, p);
- return 0;
+ struct party *p;
+ int i;
+
+ p = party_pt;
+ if (p == NULL)
+ {
+ printf ("int_party: out of memory !\n");
+ return 0;
+ }
+ inter_party_fromsql (party_id, p);
+
+ if (p->party_id <= 0)
+ {
+ mapif_party_memberadded (fd, party_id, account_id, 1);
+ return 0;
+ }
+
+ for (i = 0; i < MAX_PARTY; i++)
+ {
+ if (p->member[i].account_id == 0)
+ {
+ int flag = 0;
+
+ p->member[i].account_id = account_id;
+ memcpy (p->member[i].name, nick, 24);
+ memcpy (p->member[i].map, map, 16);
+ p->member[i].leader = 0;
+ p->member[i].online = 1;
+ p->member[i].lv = lv;
+ mapif_party_memberadded (fd, party_id, account_id, 0);
+ mapif_party_info (-1, p);
+
+ if (p->exp > 0 && !party_check_exp_share (p))
+ {
+ p->exp = 0;
+ flag = 0x01;
+ }
+ if (flag)
+ mapif_party_optionchanged (fd, p, 0, 0);
+
+ inter_party_tosql (party_id, p);
+ return 0;
+ }
+ }
+ mapif_party_memberadded (fd, party_id, account_id, 1);
+ //inter_party_tosql(party_id, p);
+ return 0;
}
+
// パーティー設定変更要求
-int mapif_parse_PartyChangeOption(int fd,int party_id,int account_id,int exp,int item)
+int mapif_parse_PartyChangeOption (int fd, int party_id, int account_id,
+ int exp, int item)
{
- struct party *p;
- int flag=0;
-
- p = party_pt;
- if(p==NULL){
- printf("int_party: out of memory !\n");
- return 0;
- }
-
- inter_party_fromsql(party_id, p);
-
- if(p->party_id <= 0){
- return 0;
- }
-
- p->exp=exp;
- if( exp>0 && !party_check_exp_share(p) ){
- flag|=0x01;
- p->exp=0;
- }
-
- p->item=item;
-
- mapif_party_optionchanged(fd,p,account_id,flag);
- inter_party_tosql(party_id, p);
- return 0;
+ struct party *p;
+ int flag = 0;
+
+ p = party_pt;
+ if (p == NULL)
+ {
+ printf ("int_party: out of memory !\n");
+ return 0;
+ }
+
+ inter_party_fromsql (party_id, p);
+
+ if (p->party_id <= 0)
+ {
+ return 0;
+ }
+
+ p->exp = exp;
+ if (exp > 0 && !party_check_exp_share (p))
+ {
+ flag |= 0x01;
+ p->exp = 0;
+ }
+
+ p->item = item;
+
+ mapif_party_optionchanged (fd, p, account_id, flag);
+ inter_party_tosql (party_id, p);
+ return 0;
}
+
// パーティ脱退要求
-int mapif_parse_PartyLeave(int fd,int party_id,int account_id)
+int mapif_parse_PartyLeave (int fd, int party_id, int account_id)
{
- char t_member[24];
- struct party *p = party_pt;
- if(p==NULL){
- printf("int_party: out of memory !\n");
- return 0;
- }
-
- inter_party_fromsql(party_id, p);
-
- if(p->party_id >= 0){
- int i,j;
- for(i=0;i<MAX_PARTY;i++){
-
- if(p->member[i].account_id==account_id){
- //printf("p->member[i].account_id = %d , account_id = %d \n",p->member[i].account_id,account_id);
- mapif_party_leaved(party_id,account_id,p->member[i].name);
-
-
-
- // Update char information, does the name need encoding?
- sprintf(tmp_sql,"UPDATE `%s` SET `party_id`='0', `online`='1' WHERE `party_id`='%d' AND `name`='%s'",
- char_db, party_id, jstrescapecpy(t_member,p->member[i].name));
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error (update `char`)- %s\n", mysql_error(&mysql_handle) );
- }
-// printf("Delete member %s from MySQL \n", p->member[i].name);
-
- if (p->member[i].leader==1){
- for(j=0;j<MAX_PARTY;j++)
- {
- //printf("j = %d , p->member[j].account_id = %d , p->member[j].account_id = %d \n",j,p->member[j].account_id,p->member[j].account_id);
- if(p->member[j].account_id>0&&j!=i){
- mapif_party_leaved(party_id,p->member[j].account_id,p->member[j].name);
- // Update char information, does the name need encoding?
- sprintf(tmp_sql,"UPDATE `%s` SET `party_id`='0', `online`='1' WHERE `party_id`='%d' AND `name`='%s'",
- char_db, party_id, jstrescapecpy(t_member,p->member[i].name));
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error (update `char`)- %s\n", mysql_error(&mysql_handle) );
- }
-// printf("Delete member %s from MySQL \n", p->member[j].name);
- }
- }
- // Delete the party, if has no member.
- sprintf(tmp_sql,"DELETE FROM `%s` WHERE `party_id`='%d'",party_db, party_id);
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error - %s\n", mysql_error(&mysql_handle) );
- }
-// printf("Leader breaks party %d \n",party_id);
- memset(p, 0, sizeof(struct party));
- }else memset(&p->member[i],0,sizeof(struct party_member));
-
- break;
-
- }
- }
- if( party_check_empty(p)==0 )
- mapif_party_info(-1,p);// まだ人がいるのでデータ送信
- /*
- else
- inter_party_tosql(party_id,p); // Break the party if no member
- */
- }else{
- sprintf(tmp_sql,"UPDATE `%s` SET `party_id`='0' WHERE `party_id`='%d' AND `account_id`='%d' AND `online`='1'",
- char_db, party_id, account_id);
- if(mysql_query(&mysql_handle, tmp_sql) ) {
- printf("DB server Error (update `char`)- %s\n", mysql_error(&mysql_handle) );
- }
- }
- return 0;
+ char t_member[24];
+ struct party *p = party_pt;
+ if (p == NULL)
+ {
+ printf ("int_party: out of memory !\n");
+ return 0;
+ }
+
+ inter_party_fromsql (party_id, p);
+
+ if (p->party_id >= 0)
+ {
+ int i, j;
+ for (i = 0; i < MAX_PARTY; i++)
+ {
+
+ if (p->member[i].account_id == account_id)
+ {
+ //printf("p->member[i].account_id = %d , account_id = %d \n",p->member[i].account_id,account_id);
+ mapif_party_leaved (party_id, account_id, p->member[i].name);
+
+ // Update char information, does the name need encoding?
+ sprintf (tmp_sql,
+ "UPDATE `%s` SET `party_id`='0', `online`='1' WHERE `party_id`='%d' AND `name`='%s'",
+ char_db, party_id, jstrescapecpy (t_member,
+ p->
+ member[i].name));
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error (update `char`)- %s\n",
+ mysql_error (&mysql_handle));
+ }
+// printf("Delete member %s from MySQL \n", p->member[i].name);
+
+ if (p->member[i].leader == 1)
+ {
+ for (j = 0; j < MAX_PARTY; j++)
+ {
+ //printf("j = %d , p->member[j].account_id = %d , p->member[j].account_id = %d \n",j,p->member[j].account_id,p->member[j].account_id);
+ if (p->member[j].account_id > 0 && j != i)
+ {
+ mapif_party_leaved (party_id,
+ p->member[j].account_id,
+ p->member[j].name);
+ // Update char information, does the name need encoding?
+ sprintf (tmp_sql,
+ "UPDATE `%s` SET `party_id`='0', `online`='1' WHERE `party_id`='%d' AND `name`='%s'",
+ char_db, party_id,
+ jstrescapecpy (t_member,
+ p->member[i].name));
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf
+ ("DB server Error (update `char`)- %s\n",
+ mysql_error (&mysql_handle));
+ }
+// printf("Delete member %s from MySQL \n", p->member[j].name);
+ }
+ }
+ // Delete the party, if has no member.
+ sprintf (tmp_sql,
+ "DELETE FROM `%s` WHERE `party_id`='%d'",
+ party_db, party_id);
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error - %s\n",
+ mysql_error (&mysql_handle));
+ }
+// printf("Leader breaks party %d \n",party_id);
+ memset (p, 0, sizeof (struct party));
+ }
+ else
+ memset (&p->member[i], 0, sizeof (struct party_member));
+
+ break;
+
+ }
+ }
+ if (party_check_empty (p) == 0)
+ mapif_party_info (-1, p); // まだ人がいるのでデータ送信
+ /*
+ * else
+ * inter_party_tosql(party_id,p); // Break the party if no member
+ */
+ }
+ else
+ {
+ sprintf (tmp_sql,
+ "UPDATE `%s` SET `party_id`='0' WHERE `party_id`='%d' AND `account_id`='%d' AND `online`='1'",
+ char_db, party_id, account_id);
+ if (mysql_query (&mysql_handle, tmp_sql))
+ {
+ printf ("DB server Error (update `char`)- %s\n",
+ mysql_error (&mysql_handle));
+ }
+ }
+ return 0;
}
+
// When member goes to other map
-int mapif_parse_PartyChangeMap(int fd,int party_id,int account_id,char *map,int online,int lv)
+int mapif_parse_PartyChangeMap (int fd, int party_id, int account_id,
+ char *map, int online, int lv)
{
- struct party *p;
- int i;
-
- p = party_pt;
- if(p==NULL){
- printf("int_party: out of memory !\n");
- return 0;
- }
- inter_party_fromsql(party_id, p);
-
- if(p->party_id <= 0){
- return 0;
- }
- for(i=0;i<MAX_PARTY;i++){
- if(p->member[i].account_id==account_id){
- int flag=0;
-
- memcpy(p->member[i].map,map,16);
- p->member[i].online=online;
- p->member[i].lv=lv;
- mapif_party_membermoved(p,i);
-
- if( p->exp>0 && !party_check_exp_share(p) ){
- p->exp=0;
- flag=1;
- }
- if(flag)
- mapif_party_optionchanged(fd,p,0,0);
- break;
- }
- }
- inter_party_tosql(party_id, p);
- return 0;
+ struct party *p;
+ int i;
+
+ p = party_pt;
+ if (p == NULL)
+ {
+ printf ("int_party: out of memory !\n");
+ return 0;
+ }
+ inter_party_fromsql (party_id, p);
+
+ if (p->party_id <= 0)
+ {
+ return 0;
+ }
+ for (i = 0; i < MAX_PARTY; i++)
+ {
+ if (p->member[i].account_id == account_id)
+ {
+ int flag = 0;
+
+ memcpy (p->member[i].map, map, 16);
+ p->member[i].online = online;
+ p->member[i].lv = lv;
+ mapif_party_membermoved (p, i);
+
+ if (p->exp > 0 && !party_check_exp_share (p))
+ {
+ p->exp = 0;
+ flag = 1;
+ }
+ if (flag)
+ mapif_party_optionchanged (fd, p, 0, 0);
+ break;
+ }
+ }
+ inter_party_tosql (party_id, p);
+ return 0;
}
+
// パーティ解散要求
-int mapif_parse_BreakParty(int fd,int party_id)
+int mapif_parse_BreakParty (int fd, int party_id)
{
- struct party *p;
-
- p = party_pt;
- if(p==NULL){
- printf("int_party: out of memory !\n");
- return 0;
- }
-
- inter_party_fromsql(party_id, p);
-
- if(p->party_id <= 0){
- return 0;
- }
- inter_party_tosql(party_id,p);
-
- mapif_party_broken(fd,party_id);
- return 0;
+ struct party *p;
+
+ p = party_pt;
+ if (p == NULL)
+ {
+ printf ("int_party: out of memory !\n");
+ return 0;
+ }
+
+ inter_party_fromsql (party_id, p);
+
+ if (p->party_id <= 0)
+ {
+ return 0;
+ }
+ inter_party_tosql (party_id, p);
+
+ mapif_party_broken (fd, party_id);
+ return 0;
}
+
// パーティメッセージ送信
-int mapif_parse_PartyMessage(int fd,int party_id,int account_id,char *mes,int len)
+int mapif_parse_PartyMessage (int fd, int party_id, int account_id, char *mes,
+ int len)
{
- return mapif_party_message(party_id,account_id,mes,len);
+ return mapif_party_message (party_id, account_id, mes, len);
}
+
// パーティチェック要求
-int mapif_parse_PartyCheck(int fd,int party_id,int account_id,char *nick)
+int mapif_parse_PartyCheck (int fd, int party_id, int account_id, char *nick)
{
- return party_check_conflict(party_id,account_id,nick);
+ return party_check_conflict (party_id, account_id, nick);
}
// map server からの通信
@@ -727,29 +882,54 @@ int mapif_parse_PartyCheck(int fd,int party_id,int account_id,char *nick)
// ・パケット長データはinter.cにセットしておくこと
// ・パケット長チェックや、RFIFOSKIPは呼び出し元で行われるので行ってはならない
// ・エラーなら0(false)、そうでないなら1(true)をかえさなければならない
-int inter_party_parse_frommap(int fd)
+int inter_party_parse_frommap (int fd)
{
- switch(RFIFOW(fd,0)){
- case 0x3020: mapif_parse_CreateParty(fd,RFIFOL(fd,2),RFIFOP(fd,6),RFIFOP(fd,30),RFIFOP(fd,54),RFIFOW(fd,70)); break;
- case 0x3021: mapif_parse_PartyInfo(fd,RFIFOL(fd,2)); break;
- case 0x3022: mapif_parse_PartyAddMember(fd,RFIFOL(fd,2),RFIFOL(fd,6),RFIFOP(fd,10),RFIFOP(fd,34),RFIFOW(fd,50)); break;
- case 0x3023: mapif_parse_PartyChangeOption(fd,RFIFOL(fd,2),RFIFOL(fd,6),RFIFOW(fd,10),RFIFOW(fd,12)); break;
- case 0x3024: mapif_parse_PartyLeave(fd,RFIFOL(fd,2),RFIFOL(fd,6)); break;
- case 0x3025: mapif_parse_PartyChangeMap(fd,RFIFOL(fd,2),RFIFOL(fd,6),RFIFOP(fd,10),RFIFOB(fd,26),RFIFOW(fd,27)); break;
- case 0x3026: mapif_parse_BreakParty(fd,RFIFOL(fd,2)); break;
- case 0x3027: mapif_parse_PartyMessage(fd,RFIFOL(fd,4),RFIFOL(fd,8),RFIFOP(fd,12),RFIFOW(fd,2)-12); break;
- case 0x3028: mapif_parse_PartyCheck(fd,RFIFOL(fd,2),RFIFOL(fd,6),RFIFOP(fd,10)); break;
- default:
- return 0;
- }
- return 1;
+ switch (RFIFOW (fd, 0))
+ {
+ case 0x3020:
+ mapif_parse_CreateParty (fd, RFIFOL (fd, 2), RFIFOP (fd, 6),
+ RFIFOP (fd, 30), RFIFOP (fd, 54),
+ RFIFOW (fd, 70));
+ break;
+ case 0x3021:
+ mapif_parse_PartyInfo (fd, RFIFOL (fd, 2));
+ break;
+ case 0x3022:
+ mapif_parse_PartyAddMember (fd, RFIFOL (fd, 2), RFIFOL (fd, 6),
+ RFIFOP (fd, 10), RFIFOP (fd, 34),
+ RFIFOW (fd, 50));
+ break;
+ case 0x3023:
+ mapif_parse_PartyChangeOption (fd, RFIFOL (fd, 2), RFIFOL (fd, 6),
+ RFIFOW (fd, 10), RFIFOW (fd, 12));
+ break;
+ case 0x3024:
+ mapif_parse_PartyLeave (fd, RFIFOL (fd, 2), RFIFOL (fd, 6));
+ break;
+ case 0x3025:
+ mapif_parse_PartyChangeMap (fd, RFIFOL (fd, 2), RFIFOL (fd, 6),
+ RFIFOP (fd, 10), RFIFOB (fd, 26),
+ RFIFOW (fd, 27));
+ break;
+ case 0x3026:
+ mapif_parse_BreakParty (fd, RFIFOL (fd, 2));
+ break;
+ case 0x3027:
+ mapif_parse_PartyMessage (fd, RFIFOL (fd, 4), RFIFOL (fd, 8),
+ RFIFOP (fd, 12), RFIFOW (fd, 2) - 12);
+ break;
+ case 0x3028:
+ mapif_parse_PartyCheck (fd, RFIFOL (fd, 2), RFIFOL (fd, 6),
+ RFIFOP (fd, 10));
+ break;
+ default:
+ return 0;
+ }
+ return 1;
}
// サーバーから脱退要求(キャラ削除用)
-int inter_party_leave(int party_id,int account_id)
+int inter_party_leave (int party_id, int account_id)
{
- return mapif_parse_PartyLeave(-1,party_id,account_id);
+ return mapif_parse_PartyLeave (-1, party_id, account_id);
}
-
-
-