Fixed an exploit that makes guild skill get higher level than the max defined in guild_skill_tree. (bugreport:3241)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13894 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
@@ -1691,7 +1691,7 @@ int mapif_parse_GuildPosition(int fd,int guild_id,int idx,struct guild_position
|
||||
}
|
||||
|
||||
// Guild Skill UP
|
||||
int mapif_parse_GuildSkillUp(int fd,int guild_id,int skill_num,int account_id)
|
||||
int mapif_parse_GuildSkillUp(int fd,int guild_id,int skill_num,int account_id,int max)
|
||||
{
|
||||
struct guild * g;
|
||||
int idx = skill_num - GD_SKILLBASE;
|
||||
@@ -1700,7 +1700,7 @@ int mapif_parse_GuildSkillUp(int fd,int guild_id,int skill_num,int account_id)
|
||||
if(g == NULL || idx < 0 || idx >= MAX_GUILDSKILL)
|
||||
return 0;
|
||||
|
||||
if(g->skill_point>0 && g->skill[idx].id>0 && g->skill[idx].lv<10 )
|
||||
if(g->skill_point>0 && g->skill[idx].id>0 && g->skill[idx].lv<max )
|
||||
{
|
||||
g->skill[idx].lv++;
|
||||
g->skill_point--;
|
||||
@@ -1949,7 +1949,7 @@ int inter_guild_parse_frommap(int fd)
|
||||
case 0x3039: mapif_parse_GuildBasicInfoChange(fd,RFIFOL(fd,4),RFIFOW(fd,8),(const char*)RFIFOP(fd,10),RFIFOW(fd,2)-10); break;
|
||||
case 0x303A: mapif_parse_GuildMemberInfoChange(fd,RFIFOL(fd,4),RFIFOL(fd,8),RFIFOL(fd,12),RFIFOW(fd,16),(const char*)RFIFOP(fd,18),RFIFOW(fd,2)-18); break;
|
||||
case 0x303B: mapif_parse_GuildPosition(fd,RFIFOL(fd,4),RFIFOL(fd,8),(struct guild_position *)RFIFOP(fd,12)); break;
|
||||
case 0x303C: mapif_parse_GuildSkillUp(fd,RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10)); break;
|
||||
case 0x303C: mapif_parse_GuildSkillUp(fd,RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOL(fd,14)); break;
|
||||
case 0x303D: mapif_parse_GuildAlliance(fd,RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOL(fd,14),RFIFOB(fd,18)); break;
|
||||
case 0x303E: mapif_parse_GuildNotice(fd,RFIFOL(fd,2),(const char*)RFIFOP(fd,6),(const char*)RFIFOP(fd,66)); break;
|
||||
case 0x303F: mapif_parse_GuildEmblem(fd,RFIFOW(fd,2)-12,RFIFOL(fd,4),RFIFOL(fd,8),(const char*)RFIFOP(fd,12)); break;
|
||||
|
||||
@@ -48,7 +48,7 @@ int inter_recv_packet_length[] = {
|
||||
-1,-1, 7,-1, -1,13,36, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3000-
|
||||
6,-1, 0, 0, 0, 0, 0, 0, 10,-1, 0, 0, 0, 0, 0, 0, // 3010-
|
||||
-1, 6,-1,14, 14,19, 6,-1, 14,14, 0, 0, 0, 0, 0, 0, // 3020-
|
||||
-1, 6,-1,-1, 55,19, 6,-1, 14,-1,-1,-1, 14,19,186,-1, // 3030-
|
||||
-1, 6,-1,-1, 55,19, 6,-1, 14,-1,-1,-1, 18,19,186,-1, // 3030-
|
||||
5, 9, 0, 0, 0, 0, 0, 0, 7, 6,10,10, 10,-1, 0, 0, // 3040-
|
||||
-1,-1,10,10, 0,-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3050- Auction System [Zephyrus]
|
||||
6,-1,10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3060- Quest system [Kevin]
|
||||
|
||||
Reference in New Issue
Block a user