From The Mana World
(Page for notes on the guild system)
 
 
Line 1: Line 1:
This is how the guild system worked before it was removed from tmwa.
This is how the guild system worked before it was removed from tmwa.


--------------------------------------------------------------------------------
 
(client) 0x0165 CMSG_GUILD_CREATE
== Server handling of guild packets from client ==
=== 0x0165   CMSG_GUILD_CREATE ===
     (map) clif_parse_CreateGuild              //  map/clif.cpp
     (map) clif_parse_CreateGuild              //  map/clif.cpp
         guild_create                          //  map/guild.cpp
         guild_create                          //  map/guild.cpp
Line 34: Line 35:
                                     (client)
                                     (client)
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
(client) 0x0168 CMSG_GUILD_INVITE
=== 0x0168   CMSG_GUILD_INVITE ===
     (map) clif_parse_GuildInvite            // map/clif.cpp
     (map) clif_parse_GuildInvite            // map/clif.cpp
         guild_invite                        // map/guild.cpp
         guild_invite                        // map/guild.cpp
Line 42: Line 43:
                 (client)
                 (client)
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
(client) 0x016b CMSG_GUILD_INVITE_REPLY
=== 0x016b   CMSG_GUILD_INVITE_REPLY ===
      
      
     clif_parse_GuildInviteReply              //  map/clif.cpp
     clif_parse_GuildInviteReply              //  map/clif.cpp
Line 80: Line 81:
                                 clif_guild_notice ------ 0x016f    //  map/clif.cpp
                                 clif_guild_notice ------ 0x016f    //  map/clif.cpp
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
== Client handling of guild packets from tmwa ==
=== 0x0167    SMSG_GUILD_CREATE_RESPONSE ===
    processGuildCreateResponse                                 
        notify(GUILD_CREATED)[0]                               
        notify(GUILD_ALREADY)[1]               
        notify(GUILD_ALREADY)[2]             
        notify(GUILD_EMPERIUM_CHECK_FAILED)[3] 
        notify(GUILD_ERROR)[default]                                   
--------------------------------------------------------------------------------
=== 0x016c    SMSG_GUILD_POSITION_INFO ===
    processGuildPositionInfo   
        setGuildPositionFlags(Invite)
        getGuild(guildID)
            if not guild, return
        setName(guildName)
        setEmblemId(emblem)
        {open guild tab}
        {if local player} 
            set guild and guild name
--------------------------------------------------------------------------------
=== 0x016d    SMSG_GUILD_MEMBER_LOGIN ===
    processGuildMemberLogin
        {if they're in our guild}
            guildTab->showOnline(guildmember, online)
            socialWindow->updateGuildCounter()
--------------------------------------------------------------------------------
=== 0x014e    SMSG_GUILD_MASTER_OR_MEMBER ===
unimplemented?
    processguildMasterOrMember                      //  net/ea/guildhandler.cpp
        msg.readInt32("type")
            {0x57 for member, 0xd7 for master}
       
--------------------------------------------------------------------------------
=== 0x01b6    SMSG_GUILD_BASIC_INFO ===
    processGuildBasicInfo                            //  net/ea/guildhandler.cpp
        {if guildTab && showBasicInfo}
            print a bunch of stuff to guild chat
        {get new or existing guild}
        g->setName
        g->setEmblemId
--------------------------------------------------------------------------------
=== 0x014c    SMSG_GUILD_ALIANCE_INFO ===
unimplemented?
    processGuildAllianceInfo                          // net/ea/guildhandler.cpp
        {if msg length < 4 }
            return
        msg.readInt32("opposition")
        msg.readInt32("guild id")
        msg.raedString(24, "guild name")
--------------------------------------------------------------------------------
=== 0x0154    SMSG_GUILD_MEMBER_LIST ===
hair and hair color are skipped as well as the 50 bytes at the end of the packet
    processGuildMemberList                            //  net/ea/guildhandler.cpp
        {if msg len < 4 }
            return
        { if !taGuild }
            return
        taGuild->clearMembers()
       
        {create a guild member and add to taGuild}
            { if guild member }
                setOnline(online)
                setID(id)
                setCharId(charId)
                setGender(intToGender(gender))
                setLevel(level)
                setExp(exp)
                setPos(pos)
                setRace(race)
                    { if player can be found and their level != 'level' }
                        being->setLevel(level)
                        being->updateName()
                    increment onlineNum
                    increment totalNum
                taGuild->sort()
            { if actorManager }
                updatePlayerGuild()
                updatePlayerColors()
            { if socialWindow }
                updateGuildCounter(onlineNum, totalNum)
--------------------------------------------------------------------------------
=== 0x0166    SMSG_GUILD_POS_NAME_LIST ===
    processGuildPosNameList                          //  net/ea/guildhandler.cpp
        { if !taGuild }
            return
        { if msg len < 4 }
            return
        taGuild->addPos(id, name)
--------------------------------------------------------------------------------
=== 0x0160    SMSG_GUILD_POS_INFO_LIST ===
unimplemented?
    processGuildPosInfoList                          //  net/ea/guildhandler.cpp
        { if msg len < 4 }
            return
        msg.readInt32("id")
        msg.readInt32("mode")
        msg.readInt32("same id")
        msg.readInt32("exp mode")
--------------------------------------------------------------------------------
=== 0x0174    SMSG_GUILD_POSITION_CHANGED ===
unimplemented?
    processGuildPositionChanged                      //  net/ea/guildhandler.cpp
        msg.readInt16("len")
        msg.readInt32("id")
        msg.readInt32("mode")
        msg.readInt32("same ip")
        msg.readInt32("exp mode")
        msg.readString(24, "name")
--------------------------------------------------------------------------------
=== 0x0156    SMSG_GUILD_MEMBER_POS_CHANGE ===
unimplemented?
message length is skipped
    processGuildPositionChanged                      //  net/ea/guildhandler.cpp
        { if guild member(accountId, charId) exists }
            setPos(pos)
--------------------------------------------------------------------------------
=== 0x0152    SMSG_GUILD_EMBLEM_DATA ===
unimplemented?
    processGuildEmblemData                          //  net/ea/guildhandler.cpp
        length = "len"
        msg.readInt32("guild id")
        msg.readint32("emblem id")
        { if length < 12 }
            return
        msg.skip(length - 12, "emblem data")
--------------------------------------------------------------------------------
=== 0x0162    SMSG_GUILD_SKILL_INFO ===
skill points is unused
    processGuildSkillInfo                            //  net/ea/guildhandler.cpp
        count = "len" - 6 / 37
        { if skillDialog }
            hideSkills(SkillOwner::Guild)
        { try updating the skill }
            { if that failed, add the skill }
        { if skillDialog }
            skillDialog->updateModels()
--------------------------------------------------------------------------------
=== 0x016f    SMSG_GUILD_NOTICE ===
    processGuildNotice                              //  net/ea/guildhandler.cpp
        msg1 = "msg1"
        msg2 = "msg2"
        { if guildTab }
            chatLog(msg1, BY_SERVER)
            chatLog(msg2, BY_SERVER)
--------------------------------------------------------------------------------
=== 0x016a    SMSG_GUILD_INVITE ===
    processGuildInvite                              //  net/ea/guildhandler.cpp
        guildId = "guild id"
        guildName = "guild name"
        { if socialWindow }
            showGuildInvite(guildName, guildId, "")
--------------------------------------------------------------------------------
=== 0x0169    SMSG_GUILD_INVITE_ACK ===
    processGuildInviteAck                            // net/ea/guildhandler.cpp
        notify(GUILD_INVITE_FAILED) [0]
        notify(GUILD_INVITE_REJECTED) [1]
        notify(GUILD_INVITE_JOINED) [2]
        notify(GUILD_INVITE_FULL) [3]
        notify(GUILD_INVITE_ERROR) [default]
--------------------------------------------------------------------------------
=== 0x015a    SMSG_GUILD_LEAVE ===
--------------------------------------------------------------------------------
=== 0x015c    SMSG_GUILD_EXPULSION ===
--------------------------------------------------------------------------------
=== 0x0163    SMSG_GUILD_EXPULSION_LIST ===
--------------------------------------------------------------------------------
=== 0x017f    SMSG_GUILD_MESSAGE ===
--------------------------------------------------------------------------------
=== 0x010e    SMSG_GUILD_SKILL_UP ===
unimplemented?
    processGuildSkillUp                              // net/ea/guildhandler.cpp
        msg.readInt16("skill id")
        msg.readInt16("level")
        msg.readInt16("sp")
        msg.readInt16("range")
        msg.readUInt8("unused?") 
--------------------------------------------------------------------------------
=== 0x0171    SMSG_GUILD_REQ_ALLIANCE ===
Implementation not planned at this time
--------------------------------------------------------------------------------
=== 0x0173    SMSG_GUILD_REQ_ALLIANCE_ACK ===
Implementation not planned at this time
--------------------------------------------------------------------------------
=== 0x0184    SMSG_GUILD_DEL_ALLIANCE ===
Implementation not planned at this time
--------------------------------------------------------------------------------
=== 0x0181    SMSG_GUILD_OPPOSITION_ACK ===
Implementation not planned at this time
--------------------------------------------------------------------------------
=== 0x015e    SMSG_GUILD_BROKEN ===
unimplemented?
--------------------------------------------------------------------------------
    processGuildBroken
        msg.readInt32("flag")

Latest revision as of 01:43, 7 May 2015

This is how the guild system worked before it was removed from tmwa.


Server handling of guild packets from client

0x0165 CMSG_GUILD_CREATE

   (map) clif_parse_CreateGuild              //  map/clif.cpp
       guild_create                          //  map/guild.cpp
           guild_makemember                  //  map/guild.cpp
           intif_guild_create -- 0x3030      //  map/intif.cpp
           
               (char) mapif_parse_CreateGuild           //  char/int_guild.cpp
                   mapif_guild_created -- 0x3830        //  char/int_guild.cpp
                   
                       (map) intif_parse_GuildCreated                    //  map/intif.cpp
                           guild_created                                 //  map/guild.cpp
                               clif_guild_created -- 0x167 (client)      //  map/clif.cpp
                               
                   (char) mapif_guild_info -- 0x3831
                   
                       (map) intif_parse_GuildInfo                 //  map/intif.cpp
                           guild_recv_noinfo                       //  map/guild.cpp
                               None -- set guild_id to 0
                           guild_recv_info                         //  map/guild.cpp
                               clif_guild_basicinfo -- 0x01b6      //  map/clif.cpp
                                   (client)
                               clif_guild_emblem -- 0x0152         //  map/clif.cpp
                                   (client)
                               clif_guild_memberlist -- 0x0154     //  map/clif.cpp
                                   (client)
                               clif_guild_skillinfo -- 0x0162      //  map/clif.cpp
                                   (client)
                               clif_guild_belonginfo -- 0x016c     //  map/clif.cpp
                                   (client)
                               clif_guild_notice -- 0x016f         //  map/clif.cpp
                                   (client)

0x0168 CMSG_GUILD_INVITE

   (map) clif_parse_GuildInvite             // map/clif.cpp
       guild_invite                         // map/guild.cpp
           clif_guild_inviteack -- 0x0169   // map/clif.cpp
               (client)
           clif_guild_invite -- 0x016a      // map/clif.cpp
               (client)

0x016b CMSG_GUILD_INVITE_REPLY

   clif_parse_GuildInviteReply               //  map/clif.cpp
       guild_reply_invite                    //  map/guild.cpp
           clif_guild_inviteack --- 0x0169   //  map/clif.cpp
           guild_makemember                  //  map/guild.cpp       
           intif_guild_addmember -- 0x3032   //  map/intif.cpp
               
               mapif_parse_GuildAddMember                //  char/int_guild.cpp
                   guild_calcinfo                        //  char/int_guild.cpp
                   mapif_guild_memberadded -- 0x3832     //  char/int_guild.cpp
                       
                       intif_parse_GuildMemberAdded                //  map/intif.cpp
                           guild_member_added                      //  map/guild.cpp
                               intif_guild_leave -- 0x3034         //  map/intif.cpp
                               clif_guild_inviteack -- 0x0169      //  map/clif.cpp
                               guild_check_conflict                //  map/guild.cpp
                                   guild_check_conflict_sub        //  map/guild.cpp
                                       mapif_parse_GuildLeave      //  map/intif.cpp
                                           >>>
                   mapif_guild_info -- 0x3831            //  char/int_guild.cpp
                       
                       intif_parse_guildInfo                       //  map/intif.cpp
                           guild_recv_noinfo                       //  map/guild.cpp
                               set guild_id to 0
                           guild_recv_info                         //  map/guild.cpp
                               clif_guild_basicinfo --- 0x01b6     //  map/clif.cpp
                                   (client)
                               clif_guild_emblem ------ 0x0152     //  map/clif.cpp
                                   (client)
                               clif_guild_memberlist -- 0x0154     //  map/clif.cpp
                                   (client)
                               clif_guild_skillinfo --- 0x0162     //  map/clif.cpp
                                   (client)
                               clif_guild_belonginfo -- 0x016c     //  map/clif.cpp
                                   (client)
                               clif_guild_notice ------ 0x016f     //  map/clif.cpp



Client handling of guild packets from tmwa

0x0167 SMSG_GUILD_CREATE_RESPONSE

   processGuildCreateResponse                                  
       notify(GUILD_CREATED)[0]                                
       notify(GUILD_ALREADY)[1]                
       notify(GUILD_ALREADY)[2]               
       notify(GUILD_EMPERIUM_CHECK_FAILED)[3]   
       notify(GUILD_ERROR)[default]                                    

0x016c SMSG_GUILD_POSITION_INFO

   processGuildPositionInfo    
       setGuildPositionFlags(Invite) 
       getGuild(guildID) 
           if not guild, return
       setName(guildName)
       setEmblemId(emblem)
       {open guild tab}
       {if local player}   
           set guild and guild name

0x016d SMSG_GUILD_MEMBER_LOGIN

   processGuildMemberLogin
       {if they're in our guild}
           guildTab->showOnline(guildmember, online)
           socialWindow->updateGuildCounter()

0x014e SMSG_GUILD_MASTER_OR_MEMBER

unimplemented?

   processguildMasterOrMember                       //  net/ea/guildhandler.cpp
       msg.readInt32("type") 
           {0x57 for member, 0xd7 for master}
       

0x01b6 SMSG_GUILD_BASIC_INFO

   processGuildBasicInfo                            //  net/ea/guildhandler.cpp
       {if guildTab && showBasicInfo}
           print a bunch of stuff to guild chat
       {get new or existing guild}
       g->setName
       g->setEmblemId

0x014c SMSG_GUILD_ALIANCE_INFO

unimplemented?

   processGuildAllianceInfo                          // net/ea/guildhandler.cpp
       {if msg length < 4 }
           return
       msg.readInt32("opposition")
       msg.readInt32("guild id")
       msg.raedString(24, "guild name")

0x0154 SMSG_GUILD_MEMBER_LIST

hair and hair color are skipped as well as the 50 bytes at the end of the packet

   processGuildMemberList                            //  net/ea/guildhandler.cpp
       {if msg len < 4 }
           return
       { if !taGuild }
           return
       taGuild->clearMembers()
       
       {create a guild member and add to taGuild}
           { if guild member }
               setOnline(online)
               setID(id)
               setCharId(charId)
               setGender(intToGender(gender))
               setLevel(level)
               setExp(exp)
               setPos(pos)
               setRace(race)
                   { if player can be found and their level != 'level' }
                       being->setLevel(level)
                       being->updateName()
                   increment onlineNum
                   increment totalNum
               taGuild->sort()
           { if actorManager }
               updatePlayerGuild()
               updatePlayerColors()
           { if socialWindow }
               updateGuildCounter(onlineNum, totalNum)

0x0166 SMSG_GUILD_POS_NAME_LIST

   processGuildPosNameList                          //  net/ea/guildhandler.cpp
       { if !taGuild }
           return
       { if msg len < 4 }
           return
       taGuild->addPos(id, name)

0x0160 SMSG_GUILD_POS_INFO_LIST

unimplemented?

   processGuildPosInfoList                          //  net/ea/guildhandler.cpp
       { if msg len < 4 }
           return
       msg.readInt32("id")
       msg.readInt32("mode")
       msg.readInt32("same id")
       msg.readInt32("exp mode")

0x0174 SMSG_GUILD_POSITION_CHANGED

unimplemented?

   processGuildPositionChanged                      //  net/ea/guildhandler.cpp
       msg.readInt16("len")
       msg.readInt32("id")
       msg.readInt32("mode")
       msg.readInt32("same ip")
       msg.readInt32("exp mode")
       msg.readString(24, "name")

0x0156 SMSG_GUILD_MEMBER_POS_CHANGE

unimplemented?

message length is skipped

   processGuildPositionChanged                      //  net/ea/guildhandler.cpp
       { if guild member(accountId, charId) exists }
           setPos(pos)

0x0152 SMSG_GUILD_EMBLEM_DATA

unimplemented?

   processGuildEmblemData                           //  net/ea/guildhandler.cpp
       length = "len"
       msg.readInt32("guild id")
       msg.readint32("emblem id")
       { if length < 12 }
           return
       msg.skip(length - 12, "emblem data")

0x0162 SMSG_GUILD_SKILL_INFO

skill points is unused

   processGuildSkillInfo                            //  net/ea/guildhandler.cpp
       count = "len" - 6 / 37
       { if skillDialog }
           hideSkills(SkillOwner::Guild)
       { try updating the skill }
           { if that failed, add the skill }
       { if skillDialog }
           skillDialog->updateModels()

0x016f SMSG_GUILD_NOTICE

   processGuildNotice                               //  net/ea/guildhandler.cpp
       msg1 = "msg1"
       msg2 = "msg2"
       { if guildTab }
           chatLog(msg1, BY_SERVER)
           chatLog(msg2, BY_SERVER)

0x016a SMSG_GUILD_INVITE

   processGuildInvite                               //  net/ea/guildhandler.cpp
       guildId = "guild id"
       guildName = "guild name"
       { if socialWindow }
           showGuildInvite(guildName, guildId, "")

0x0169 SMSG_GUILD_INVITE_ACK

   processGuildInviteAck                             // net/ea/guildhandler.cpp
       notify(GUILD_INVITE_FAILED) [0]
       notify(GUILD_INVITE_REJECTED) [1]
       notify(GUILD_INVITE_JOINED) [2]
       notify(GUILD_INVITE_FULL) [3]
       notify(GUILD_INVITE_ERROR) [default]

0x015a SMSG_GUILD_LEAVE


0x015c SMSG_GUILD_EXPULSION


0x0163 SMSG_GUILD_EXPULSION_LIST


0x017f SMSG_GUILD_MESSAGE


0x010e SMSG_GUILD_SKILL_UP

unimplemented?

   processGuildSkillUp                               // net/ea/guildhandler.cpp
       msg.readInt16("skill id")
       msg.readInt16("level")
       msg.readInt16("sp")
       msg.readInt16("range")
       msg.readUInt8("unused?")   

0x0171 SMSG_GUILD_REQ_ALLIANCE

Implementation not planned at this time


0x0173 SMSG_GUILD_REQ_ALLIANCE_ACK

Implementation not planned at this time


0x0184 SMSG_GUILD_DEL_ALLIANCE

Implementation not planned at this time


0x0181 SMSG_GUILD_OPPOSITION_ACK

Implementation not planned at this time


0x015e SMSG_GUILD_BROKEN

unimplemented?


   processGuildBroken
       msg.readInt32("flag")