mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-14 19:51:29 +00:00
Raid MOTD for RoF
This commit is contained in:
parent
48eba3c092
commit
f097eaf3cd
@ -2602,6 +2602,17 @@ namespace RoF
|
|||||||
add_member->flags[4] = in_add_member->flags[4];
|
add_member->flags[4] = in_add_member->flags[4];
|
||||||
dest->FastQueuePacket(&outapp);
|
dest->FastQueuePacket(&outapp);
|
||||||
}
|
}
|
||||||
|
else if (raid_gen->action == 35)
|
||||||
|
{
|
||||||
|
RaidMOTD_Struct *inmotd = (RaidMOTD_Struct *)__emu_buffer;
|
||||||
|
EQApplicationPacket *outapp = new EQApplicationPacket(OP_RaidUpdate, sizeof(structs::RaidMOTD_Struct) + strlen(inmotd->motd) + 1);
|
||||||
|
structs::RaidMOTD_Struct *outmotd = (structs::RaidMOTD_Struct *)outapp->pBuffer;
|
||||||
|
|
||||||
|
outmotd->general.action = inmotd->general.action;
|
||||||
|
strn0cpy(outmotd->general.player_name, inmotd->general.player_name, 64);
|
||||||
|
strn0cpy(outmotd->motd, inmotd->motd, strlen(inmotd->motd) + 1);
|
||||||
|
dest->FastQueuePacket(&outapp);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
RaidGeneral_Struct* in_raid_general = (RaidGeneral_Struct*)__emu_buffer;
|
RaidGeneral_Struct* in_raid_general = (RaidGeneral_Struct*)__emu_buffer;
|
||||||
@ -4475,15 +4486,40 @@ namespace RoF
|
|||||||
|
|
||||||
DECODE(OP_RaidInvite)
|
DECODE(OP_RaidInvite)
|
||||||
{
|
{
|
||||||
DECODE_LENGTH_EXACT(structs::RaidGeneral_Struct);
|
DECODE_LENGTH_ATLEAST(structs::RaidGeneral_Struct);
|
||||||
SETUP_DIRECT_DECODE(RaidGeneral_Struct, structs::RaidGeneral_Struct);
|
|
||||||
|
|
||||||
strn0cpy(emu->leader_name, eq->leader_name, 64);
|
// This is a switch on the RaidGeneral action
|
||||||
strn0cpy(emu->player_name, eq->player_name, 64);
|
switch (*(uint32 *)__packet->pBuffer) {
|
||||||
IN(action);
|
case 35: { // raidMOTD
|
||||||
IN(parameter);
|
// we don't have a nice macro for this
|
||||||
|
structs::RaidMOTD_Struct *__eq_buffer = (structs::RaidMOTD_Struct *)__packet->pBuffer;
|
||||||
FINISH_DIRECT_DECODE();
|
__eq_buffer->motd[1023] = '\0';
|
||||||
|
size_t motd_size = strlen(__eq_buffer->motd) + 1;
|
||||||
|
__packet->size = sizeof(RaidMOTD_Struct) + motd_size;
|
||||||
|
__packet->pBuffer = new unsigned char[__packet->size];
|
||||||
|
RaidMOTD_Struct *emu = (RaidMOTD_Struct *)__packet->pBuffer;
|
||||||
|
structs::RaidMOTD_Struct *eq = (structs::RaidMOTD_Struct *)__eq_buffer;
|
||||||
|
strn0cpy(emu->general.player_name, eq->general.player_name, 64);
|
||||||
|
strn0cpy(emu->motd, eq->motd, motd_size);
|
||||||
|
IN(general.action);
|
||||||
|
IN(general.parameter);
|
||||||
|
FINISH_DIRECT_DECODE();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 36: { // raidPlayerNote unhandled
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
DECODE_LENGTH_EXACT(structs::RaidGeneral_Struct);
|
||||||
|
SETUP_DIRECT_DECODE(RaidGeneral_Struct, structs::RaidGeneral_Struct);
|
||||||
|
strn0cpy(emu->leader_name, eq->leader_name, 64);
|
||||||
|
strn0cpy(emu->player_name, eq->player_name, 64);
|
||||||
|
IN(action);
|
||||||
|
IN(parameter);
|
||||||
|
FINISH_DIRECT_DECODE();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DECODE(OP_ReadBook)
|
DECODE(OP_ReadBook)
|
||||||
|
|||||||
@ -3994,6 +3994,11 @@ struct RaidAddMember_Struct {
|
|||||||
/*139*/ uint8 flags[5]; //no idea if these are needed...
|
/*139*/ uint8 flags[5]; //no idea if these are needed...
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct RaidMOTD_Struct {
|
||||||
|
/*000*/ RaidGeneral_Struct general; // leader_name and action only used
|
||||||
|
/*140*/ char motd[0]; // max size 1024, but reply is variable
|
||||||
|
};
|
||||||
|
|
||||||
struct RaidAdd_Struct {
|
struct RaidAdd_Struct {
|
||||||
/*000*/ uint32 action; //=0
|
/*000*/ uint32 action; //=0
|
||||||
/*004*/ char player_name[64]; //should both be the player's name
|
/*004*/ char player_name[64]; //should both be the player's name
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user