mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 05:21:29 +00:00
More work on OP_Marquee. Should be enough to implement a function with it. Anyone wants to fiddle around with the unknowns and get them better documented they are free to.
This commit is contained in:
parent
ccf6b5ff68
commit
a96f10b6aa
@ -5077,13 +5077,15 @@ struct ServerLootItem_Struct {
|
||||
//"Got a broadcast message for ... %s ...\n"
|
||||
struct ClientMarqueeMessage_Struct {
|
||||
uint32 type;
|
||||
uint32 unk04; // no idea, have seen 10 mostly, didn't notice a change when altering it
|
||||
uint32 unk04; // no idea, didn't notice a change when altering it.
|
||||
//According to asm the following are hard coded values: 2, 4, 5, 6, 7, 10, 12, 13, 14, 15, 16, 18, 20
|
||||
//There is also a non-hardcoded fall through but to be honest i don't know enough about what it does yet
|
||||
uint32 priority; //needs a better name but it does:
|
||||
//opacity = priority / 255
|
||||
//# of ending blinks = (int)((priority - 1) / 255)
|
||||
//opacity = (priority / 255) - floor(priority / 255)
|
||||
//# of fade in/out blinks = (int)((priority - 1) / 255)
|
||||
//so 510 would have 100% opacity and 1 extra blink at end
|
||||
uint32 unk12; //no idea, seen 0, 500, 1000.
|
||||
uint32 unk16; //no idea, seen 500, 1000
|
||||
uint32 unk12; //no idea, seen 0, 500, 1000. I'm assuming this has to do with the fade in/out.
|
||||
uint32 unk16; //no idea, seen 500, 1000. I'm assuming this has to do with the fade in/out.
|
||||
//Visually I couldn't tell a difference from these previous two,
|
||||
//but there's probably a reason for them that's more subtle than what i was looking for
|
||||
uint32 duration; //in ms
|
||||
|
||||
@ -346,6 +346,7 @@ OP_IncreaseStats=0x0711
|
||||
OP_Weblink=0x7cce
|
||||
#OP_OpenInventory=0x0000 # Likely does not exist in RoF -U
|
||||
OP_OpenContainer=0x654f
|
||||
OP_Marquee=0x288a
|
||||
|
||||
OP_DzQuit=0x5fc8
|
||||
OP_DzListTimers=0x67b9
|
||||
|
||||
@ -328,6 +328,7 @@ OP_RemoveNimbusEffect=0x5872 # C
|
||||
OP_InspectMessageUpdate=0x67e9 # C
|
||||
OP_OpenInventory=0x66c8
|
||||
OP_OpenContainer=0x10e3
|
||||
OP_Marquee=0x2f75
|
||||
|
||||
#expedition
|
||||
OP_DzQuit=0x20d6
|
||||
|
||||
@ -285,6 +285,7 @@ OP_SpellEffect=0x22C5
|
||||
OP_RemoveNimbusEffect=0x0000
|
||||
OP_CrystalReclaim=0x7cfe
|
||||
OP_CrystalCreate=0x62c3
|
||||
OP_Marquee=0x1d4d
|
||||
|
||||
OP_DzQuit=0x486d
|
||||
OP_DzListTimers=0x39aa
|
||||
|
||||
@ -353,6 +353,7 @@ OP_Weblink=0x6840 # C
|
||||
OP_InspectMessageUpdate=0x7fa1 # C
|
||||
#OP_OpenInventory=0x0000 # Likely does not exist in UF -U
|
||||
OP_OpenContainer=0x041a
|
||||
OP_Marquee=0x3675
|
||||
|
||||
OP_DzQuit=0x1539
|
||||
OP_DzListTimers=0x21e9
|
||||
|
||||
@ -719,71 +719,6 @@ void command_sendop(Client *c,const Seperator *sep){
|
||||
c->QueuePacket(outapp);
|
||||
safe_delete(outapp);
|
||||
return;
|
||||
|
||||
/*if(sep->arg[1][0] && sep->arg[2][0])
|
||||
{
|
||||
c->Message_StringID(atoi(sep->arg[1]),atoi(sep->arg[2]),sep->arg[3],sep->arg[4],sep->arg[5],sep->arg[6],sep->arg[7],sep->arg[8]);
|
||||
}
|
||||
else
|
||||
c->Message(0,"type,string id, message1...");*/
|
||||
/*
|
||||
clientupdate lvl and such
|
||||
uint32 level; //new level
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
if(sep->arg[1][0] && sep->arg[2][0]){
|
||||
EQApplicationPacket* outapp = new EQApplicationPacket((EmuOpcode)atoi(sep->arg[1]),sizeof(GMName_Struct));
|
||||
GMName_Struct* gms=(GMName_Struct*)outapp->pBuffer;
|
||||
memset(outapp->pBuffer,0,outapp->size);
|
||||
strcpy(gms->gmname,c->GetName());
|
||||
strcpy(gms->oldname,c->GetName());
|
||||
strcpy(gms->newname,sep->arg[3]);
|
||||
if(sep->arg[4][0])
|
||||
gms->badname=atoi(sep->arg[4]);
|
||||
c->QueuePacket(outapp);
|
||||
safe_delete(outapp);
|
||||
}
|
||||
*/
|
||||
/*
|
||||
else{
|
||||
EQApplicationPacket* outapp = new EQApplicationPacket(121,atoi(sep->arg[2]));
|
||||
memset(outapp->pBuffer,0,outapp->size);
|
||||
uint8 offset=atoi(sep->arg[3]);
|
||||
if(offset<outapp->size && sep->arg[4][0])
|
||||
outapp->pBuffer[offset]=atoi(sep->arg[4]);
|
||||
offset++;
|
||||
if(offset<outapp->size && sep->arg[5][0])
|
||||
outapp->pBuffer[offset+3]=atoi(sep->arg[5]);
|
||||
offset++;
|
||||
if(offset<outapp->size && sep->arg[6][0])
|
||||
outapp->pBuffer[offset+3]=atoi(sep->arg[6]);
|
||||
offset++;
|
||||
if(offset<outapp->size && sep->arg[7][0])
|
||||
outapp->pBuffer[offset]=atoi(sep->arg[7]);
|
||||
offset++;
|
||||
if(offset<outapp->size && sep->arg[8][0])
|
||||
outapp->pBuffer[offset]=atoi(sep->arg[8]);
|
||||
offset++;
|
||||
if(offset<outapp->size && sep->arg[9][0])
|
||||
outapp->pBuffer[offset]=atoi(sep->arg[9]);
|
||||
c->QueuePacket(outapp);
|
||||
safe_delete(outapp);
|
||||
}*/
|
||||
//c->SetStats(atoi(sep->arg[1]),atoi(sep->arg[2]));
|
||||
//}
|
||||
/*EQApplicationPacket* outapp = new EQApplicationPacket(atoi(sep->arg[1]), sizeof(PlayerAA_Struct));
|
||||
memcpy(outapp->pBuffer,c->GetAAStruct(),outapp->size);
|
||||
c->QueuePacket(outapp);
|
||||
safe_delete(outapp);
|
||||
}
|
||||
else
|
||||
c->Message(15,"Invalid opcode!");
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
void command_optest(Client *c, const Seperator *sep)
|
||||
@ -824,6 +759,22 @@ void command_optest(Client *c, const Seperator *sep)
|
||||
c->FastQueuePacket(&outapp);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
char *msg = "This is a test message";
|
||||
EQApplicationPacket outapp(OP_Marquee, sizeof(ClientMarqueeMessage_Struct) + strlen(msg));
|
||||
ClientMarqueeMessage_Struct *cms = (ClientMarqueeMessage_Struct*)outapp.pBuffer;
|
||||
cms->priority = 510;
|
||||
cms->type = 15;
|
||||
cms->unk04 = 10;
|
||||
cms->unk12 = 1000;
|
||||
cms->unk16 = 1000;
|
||||
cms->duration = 5000;
|
||||
strcpy(cms->msg, msg);
|
||||
|
||||
c->QueuePacket(&outapp);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
break;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user