mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 22:01:30 +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"
|
//"Got a broadcast message for ... %s ...\n"
|
||||||
struct ClientMarqueeMessage_Struct {
|
struct ClientMarqueeMessage_Struct {
|
||||||
uint32 type;
|
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:
|
uint32 priority; //needs a better name but it does:
|
||||||
//opacity = priority / 255
|
//opacity = (priority / 255) - floor(priority / 255)
|
||||||
//# of ending blinks = (int)((priority - 1) / 255)
|
//# of fade in/out blinks = (int)((priority - 1) / 255)
|
||||||
//so 510 would have 100% opacity and 1 extra blink at end
|
//so 510 would have 100% opacity and 1 extra blink at end
|
||||||
uint32 unk12; //no idea, seen 0, 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
|
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,
|
//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
|
//but there's probably a reason for them that's more subtle than what i was looking for
|
||||||
uint32 duration; //in ms
|
uint32 duration; //in ms
|
||||||
|
|||||||
@ -346,6 +346,7 @@ OP_IncreaseStats=0x0711
|
|||||||
OP_Weblink=0x7cce
|
OP_Weblink=0x7cce
|
||||||
#OP_OpenInventory=0x0000 # Likely does not exist in RoF -U
|
#OP_OpenInventory=0x0000 # Likely does not exist in RoF -U
|
||||||
OP_OpenContainer=0x654f
|
OP_OpenContainer=0x654f
|
||||||
|
OP_Marquee=0x288a
|
||||||
|
|
||||||
OP_DzQuit=0x5fc8
|
OP_DzQuit=0x5fc8
|
||||||
OP_DzListTimers=0x67b9
|
OP_DzListTimers=0x67b9
|
||||||
|
|||||||
@ -328,6 +328,7 @@ OP_RemoveNimbusEffect=0x5872 # C
|
|||||||
OP_InspectMessageUpdate=0x67e9 # C
|
OP_InspectMessageUpdate=0x67e9 # C
|
||||||
OP_OpenInventory=0x66c8
|
OP_OpenInventory=0x66c8
|
||||||
OP_OpenContainer=0x10e3
|
OP_OpenContainer=0x10e3
|
||||||
|
OP_Marquee=0x2f75
|
||||||
|
|
||||||
#expedition
|
#expedition
|
||||||
OP_DzQuit=0x20d6
|
OP_DzQuit=0x20d6
|
||||||
|
|||||||
@ -285,6 +285,7 @@ OP_SpellEffect=0x22C5
|
|||||||
OP_RemoveNimbusEffect=0x0000
|
OP_RemoveNimbusEffect=0x0000
|
||||||
OP_CrystalReclaim=0x7cfe
|
OP_CrystalReclaim=0x7cfe
|
||||||
OP_CrystalCreate=0x62c3
|
OP_CrystalCreate=0x62c3
|
||||||
|
OP_Marquee=0x1d4d
|
||||||
|
|
||||||
OP_DzQuit=0x486d
|
OP_DzQuit=0x486d
|
||||||
OP_DzListTimers=0x39aa
|
OP_DzListTimers=0x39aa
|
||||||
|
|||||||
@ -353,6 +353,7 @@ OP_Weblink=0x6840 # C
|
|||||||
OP_InspectMessageUpdate=0x7fa1 # C
|
OP_InspectMessageUpdate=0x7fa1 # C
|
||||||
#OP_OpenInventory=0x0000 # Likely does not exist in UF -U
|
#OP_OpenInventory=0x0000 # Likely does not exist in UF -U
|
||||||
OP_OpenContainer=0x041a
|
OP_OpenContainer=0x041a
|
||||||
|
OP_Marquee=0x3675
|
||||||
|
|
||||||
OP_DzQuit=0x1539
|
OP_DzQuit=0x1539
|
||||||
OP_DzListTimers=0x21e9
|
OP_DzListTimers=0x21e9
|
||||||
|
|||||||
@ -719,71 +719,6 @@ void command_sendop(Client *c,const Seperator *sep){
|
|||||||
c->QueuePacket(outapp);
|
c->QueuePacket(outapp);
|
||||||
safe_delete(outapp);
|
safe_delete(outapp);
|
||||||
return;
|
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)
|
void command_optest(Client *c, const Seperator *sep)
|
||||||
@ -824,6 +759,22 @@ void command_optest(Client *c, const Seperator *sep)
|
|||||||
c->FastQueuePacket(&outapp);
|
c->FastQueuePacket(&outapp);
|
||||||
break;
|
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:
|
default:
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user