Fixed crash from guild skill point allocation, there seems to be a problem with guilds loading still.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/athena@16 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
valaris 2004-11-05 20:59:29 +00:00
parent 58df9f7c59
commit 94bcb3e6de
6 changed files with 25 additions and 9 deletions

View File

@ -629,7 +629,7 @@ int guild_calcinfo(struct guild *g) {
struct guild before = *g; struct guild before = *g;
// スキルIDの設定 // スキルIDの設定
for(i = 0; i < 20; i++) for(i = 0; i < MAX_GUILDSKILL; i++)
g->skill[i].id = i + 10000; g->skill[i].id = i + 10000;
// ギルドレベル // ギルドレベル
@ -979,7 +979,7 @@ int mapif_parse_CreateGuild(int fd, int account_id, char *name, struct guild_mem
// ここでギルド情報計算が必要と思われる // ここでギルド情報計算が必要と思われる
g->max_member = 16; g->max_member = 16;
g->average_lv = master->lv; g->average_lv = master->lv;
for(i = 0; i < 20; i++) for(i = 0; i < MAX_GUILDSKILL; i++)
g->skill[i].id = i + 10000; g->skill[i].id = i + 10000;
numdb_insert(guild_db, g->guild_id, g); numdb_insert(guild_db, g->guild_id, g);

View File

@ -690,7 +690,7 @@ int guild_calcinfo(struct guild *g)
struct guild before=*g; struct guild before=*g;
// スキルIDの設定 // スキルIDの設定
for(i=0;i<20;i++) for(i=0;i<MAX_GUILDSKILL;i++)
g->skill[i].id=i+10000; g->skill[i].id=i+10000;
// ギルドレベル // ギルドレベル
@ -1046,7 +1046,7 @@ int mapif_parse_CreateGuild(int fd,int account_id,char *name,struct guild_member
g->max_member=16; g->max_member=16;
g->average_lv=master->lv; g->average_lv=master->lv;
g->castle_id=-1; g->castle_id=-1;
for(i=0;i<20;i++) for(i=0;i<MAX_GUILDSKILL;i++)
g->skill[i].id=i+10000; g->skill[i].id=i+10000;
// Save to sql // Save to sql
@ -1088,6 +1088,7 @@ int mapif_parse_GuildAddMember(int fd,int guild_id,struct guild_member *m)
{ {
struct guild *g=guild_pt; struct guild *g=guild_pt;
int i; int i;
inter_guild_fromsql(guild_id,g); inter_guild_fromsql(guild_id,g);
if(g==NULL||g->guild_id<=0){ if(g==NULL||g->guild_id<=0){
@ -1114,6 +1115,7 @@ int mapif_parse_GuildAddMember(int fd,int guild_id,struct guild_member *m)
int mapif_parse_GuildLeave(int fd,int guild_id,int account_id,int char_id,int flag,const char *mes) int mapif_parse_GuildLeave(int fd,int guild_id,int account_id,int char_id,int flag,const char *mes)
{ {
struct guild *g=guild_pt; struct guild *g=guild_pt;
inter_guild_fromsql(guild_id,g); inter_guild_fromsql(guild_id,g);
if(g!=NULL&&g->guild_id>0){ if(g!=NULL&&g->guild_id>0){
@ -1175,6 +1177,10 @@ int mapif_parse_GuildChangeMemberInfoShort(int fd,int guild_id,
struct guild * g=guild_pt; struct guild * g=guild_pt;
int i,alv,c; int i,alv,c;
if(g==NULL||g->guild_id<=0) if(g==NULL||g->guild_id<=0)
return 0; return 0;
@ -1214,6 +1220,9 @@ int mapif_parse_BreakGuild(int fd,int guild_id)
return 0; return 0;
inter_guild_fromsql(guild_id,g); inter_guild_fromsql(guild_id,g);
// Delete guild from sql // Delete guild from sql
//printf("- Delete guild %d from guild\n",guild_id); //printf("- Delete guild %d from guild\n",guild_id);
sprintf(tmp_sql, "DELETE FROM `%s` WHERE `guild_id`='%d'",guild_db, guild_id); sprintf(tmp_sql, "DELETE FROM `%s` WHERE `guild_id`='%d'",guild_db, guild_id);
@ -1280,6 +1289,10 @@ int mapif_parse_GuildBasicInfoChange(int fd,int guild_id,
// int dd=*((int *)data); // int dd=*((int *)data);
short dw=*((short *)data); short dw=*((short *)data);
if(g==NULL||g->guild_id<=0) if(g==NULL||g->guild_id<=0)
return 0; return 0;
inter_guild_fromsql(guild_id,g); inter_guild_fromsql(guild_id,g);
@ -1310,6 +1323,7 @@ int mapif_parse_GuildMemberInfoChange(int fd,int guild_id,int account_id,int cha
// Could make some improvement in speed, because only change guild_member // Could make some improvement in speed, because only change guild_member
int i; int i;
struct guild * g=guild_pt; struct guild * g=guild_pt;
inter_guild_fromsql(guild_id,g); inter_guild_fromsql(guild_id,g);
//printf("GuildMemberInfoChange %s \n",(type==GMI_EXP)?"GMI_EXP":"OTHER"); //printf("GuildMemberInfoChange %s \n",(type==GMI_EXP)?"GMI_EXP":"OTHER");
@ -1350,6 +1364,7 @@ int mapif_parse_GuildPosition(int fd,int guild_id,int idx,struct guild_position
{ {
// Could make some improvement in speed, because only change guild_position // Could make some improvement in speed, because only change guild_position
struct guild * g=guild_pt; struct guild * g=guild_pt;
inter_guild_fromsql(guild_id,g); inter_guild_fromsql(guild_id,g);
if(g==NULL || idx<0 || idx>=MAX_GUILDPOSITION){ if(g==NULL || idx<0 || idx>=MAX_GUILDPOSITION){
@ -1432,6 +1447,7 @@ int mapif_parse_GuildAlliance(int fd,int guild_id1,int guild_id2,
int mapif_parse_GuildNotice(int fd,int guild_id,const char *mes1,const char *mes2) int mapif_parse_GuildNotice(int fd,int guild_id,const char *mes1,const char *mes2)
{ {
struct guild *g=guild_pt; struct guild *g=guild_pt;
inter_guild_fromsql(guild_id,g); inter_guild_fromsql(guild_id,g);
if(g==NULL||g->guild_id<=0) if(g==NULL||g->guild_id<=0)
@ -1445,6 +1461,7 @@ int mapif_parse_GuildNotice(int fd,int guild_id,const char *mes1,const char *mes
int mapif_parse_GuildEmblem(int fd,int len,int guild_id,int dummy,const char *data) int mapif_parse_GuildEmblem(int fd,int len,int guild_id,int dummy,const char *data)
{ {
struct guild * g=guild_pt; struct guild * g=guild_pt;
inter_guild_fromsql(guild_id,g); inter_guild_fromsql(guild_id,g);
if(g==NULL||g->guild_id<=0) if(g==NULL||g->guild_id<=0)

View File

@ -41,7 +41,7 @@
#define MAX_GUILDPOSITION 20 // increased max guild positions to accomodate for all members [Valaris] (removed) [PoW] #define MAX_GUILDPOSITION 20 // increased max guild positions to accomodate for all members [Valaris] (removed) [PoW]
#define MAX_GUILDEXPLUSION 32 #define MAX_GUILDEXPLUSION 32
#define MAX_GUILDALLIANCE 16 #define MAX_GUILDALLIANCE 16
#define MAX_GUILDSKILL 20 // increased max guild skills because of new skills [Sara-chan] #define MAX_GUILDSKILL 15 // increased max guild skills because of new skills [Sara-chan]
#define MAX_GUILDCASTLE 24 // increased to include novice castles [Valaris] #define MAX_GUILDCASTLE 24 // increased to include novice castles [Valaris]
#define MAX_GUILDLEVEL 50 #define MAX_GUILDLEVEL 50

View File

@ -473,8 +473,8 @@ int intif_guild_skillup(int guild_id,int skill_num,int account_id,int flag)
WFIFOL(inter_fd, 2)=guild_id; WFIFOL(inter_fd, 2)=guild_id;
WFIFOL(inter_fd, 6)=skill_num; WFIFOL(inter_fd, 6)=skill_num;
WFIFOL(inter_fd,10)=account_id; WFIFOL(inter_fd,10)=account_id;
WFIFOL(inter_fd,14)=flag; //WFIFOL(inter_fd,14)=flag;
WFIFOSET(inter_fd,18); WFIFOSET(inter_fd,14);
return 0; return 0;
} }
// ギルド同盟/敵対要求 // ギルド同盟/敵対要求

View File

@ -3182,7 +3182,7 @@ int buildin_getskilllv(struct script_state *st)
* skill_id = 10000 : GD_APPROVAL * skill_id = 10000 : GD_APPROVAL
* 10001 : GD_KAFRACONTACT * 10001 : GD_KAFRACONTACT
* 10002 : GD_GUARDIANRESEARCH * 10002 : GD_GUARDIANRESEARCH
* 10003 : GD_CHARISMA * 10003 : GD_GUARDUP
* 10004 : GD_EXTENSION * 10004 : GD_EXTENSION
*------------------------------------------ *------------------------------------------
*/ */

View File

@ -835,7 +835,6 @@ enum {
GD_APPROVAL=10000, GD_APPROVAL=10000,
GD_KAFRACONTACT=10001, GD_KAFRACONTACT=10001,
GD_GUARDIANRESEARCH=10002, GD_GUARDIANRESEARCH=10002,
GD_CHARISMA=10003,
GD_GUARDUP=10003, GD_GUARDUP=10003,
GD_EXTENSION=10004, GD_EXTENSION=10004,
GD_GLORYGUILD=10005, GD_GLORYGUILD=10005,