<HTML> <HEAD> <TITLE>PVVMUD - Messages</TITLE> <LINK REL=STYLESHEET HREF="/pvvmud/pvvmud.css" TYPE="text/css"> </HEAD> <BODY> <H1>Messages</H1> <UL> <LI><A HREF="#Hello">Hello</A> <LI><A HREF="#Login">Login</A> <LI><A HREF="#ServerInfo">ServerInfo</A> <LI><A HREF="#GOSInfo">GOSInfo</A> <LI><A HREF="#Bye">Bye</A> <LI><A HREF="#GetWorld">GetWorld</A> <LI><A HREF="#Command">Command</A> <LI><A HREF="#Viewpoint">Viewpoint</A> <LI><A HREF="#Selection">Selection</A> <LI><A HREF="#Action">Action</A> <LI><A HREF="#PlayerInfo">PlayerInfo</A> <LI><A HREF="#ActionList">ActionList</A> <LI><A HREF="#UpdatePosition">UpdatePosition</A> <LI><A HREF="#UpdateDirection">UpdateDirection</A> <LI><A HREF="#Msg">Msg</A> <LI><A HREF="#ServerLogin">ServerLogin</A> <LI><A HREF="#GOSError">GOSError</A> <LI><A HREF="#GOSRequest">GOSRequest</A> <LI><A HREF="#Geometry">Geometry</A> <LI><A HREF="#Material">Material</A> <LI><A HREF="#Texture">Texture</A> </UL> <H2>msgsrvcli.H</H2> <A NAME="Hello"><H3>Hello</H3> <P>First message send from server to any connecting clients or servers.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>1</TD></TR> <TR><TD>WORD</TD><TD>Version</TD><TD></TD></TR> </TABLE> <A NAME="Login"><H3>Login</H3> <P>First message send from client to server.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>0</TD></TR> <TR><TD>CHAR[LOGINNAMELENGTH]</TD><TD>Name</TD><TD>User name</TD></TR> <TR><TD>CHAR[LOGINPASSWDLENGTH]</TD><TD>Passwd</TD><TD>Password</TD></TR> <TR><TD>BYTE</TD><TD>newUser</TD><TD>True if user try to create a new user</TD></TR> </TABLE> <A NAME="ServerInfo"><H3>ServerInfo</H3> <P>Message send from server to client after a successful login.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>?</TD></TR> <TR><TD>DWORD</TD><TD>WorldServerAddress</TD><TD>IP address</TD></TR> <TR><TD>WORD</TD><TD>WorldServerPort</TD><TD>Port number</TD></TR> <TR><TD>DWORD</TD><TD>GOSAddress</TD><TD>IP address</TD></TR> <TR><TD>WORD</TD><TD>GOSPort</TD><TD>Port number</TD></TR> </TABLE> <A NAME="GOSInfo"><H3>GOSInfo</H3> <P>Message send from server to worldsrv to inform where to find a gos.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>?</TD></TR> <TR><TD>DWORD</TD><TD>GOSAddress</TD><TD>IP address</TD></TR> <TR><TD>WORD</TD><TD>GOSPort</TD><TD>Port number</TD></TR> </TABLE> <A NAME="Bye"><H3>Bye</H3> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>1</TD></TR> <TR><TD>WORD</TD><TD>reason</TD><TD>Se table of reasons.</TD></TR> </TABLE> <H4>Table of reasons</H4> <TABLE> <TR><TD>MSGBYE_QUIT</TD></TR> <TR><TD>MSGBYE_BADPROTOCOL</TD></TR> <TR><TD>MSGBYE_UNKNOWN</TD></TR> </TABLE> <A NAME="GetWorld"><H3>GetWorld</H3> <PRE>TODO: Move this message to command message</PRE> <P>Client request to get world sceen.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>3</TD></TR> </TABLE> <A NAME="Command"><H3>Command</H3> <P>Used to send commands that don't need any data.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>7</TD></TR> <TR><TD>WORD</TD><TD>command</TD><TD>Se table of commands.</TD></TR> </TABLE> <H4>Table of commands to client</H4> <TABLE> <TR><TD>MSGCOMMAND_CLIENTCLEARWORLD</TD></TR> </TABLE> <H4>Table of commands to server</H4> <TABLE> <TR><TD>PLAYERLOOK_DEFAULT<TD></TR> <TR><TD>PLAYERLOOK_UP<TD></TR> <TR><TD>PLAYERLOOK_DOWN<TD></TR> <TR><TD>PLAYERLOOK_RIGHT<TD></TR> <TR><TD>PLAYERLOOK_LEFT<TD></TR> <TR><TD>PLAYERLOOK_FORWARD<TD></TR> <TR><TD>PLAYERLOOK_BACKWARD<TD></TR> <TR><TD>PLAYERMOVE_STEPFORWARD<TD></TR> <TR><TD>PLAYERMOVE_STEPBACKWARD<TD></TR> <TR><TD>PLAYERMOVE_STEPLEFT<TD></TR> <TR><TD>PLAYERMOVE_STEPRIGHT<TD></TR> <TR><TD>PLAYERMOVE_MOVEFORWARD<TD></TR> <TR><TD>PLAYERMOVE_MOVEBACKWARD<TD></TR> <TR><TD>PLAYERMOVE_MOVELEFT<TD></TR> <TR><TD>PLAYERMOVE_MOVERIGHT<TD></TR> <TR><TD>PLAYERMOVE_RUNFORWARD<TD></TR> <TR><TD>PLAYERMOVE_RUNBACKWARD<TD></TR> <TR><TD>PLAYERMOVE_RUNLEFT<TD></TR> <TR><TD>PLAYERMOVE_RUNRIGHT<TD></TR> <TR><TD>USERCOMMAND_0<TD></TR> <TR><TD>USERCOMMAND_1<TD></TR> <TR><TD>USERCOMMAND_2<TD></TR> <TR><TD>USERCOMMAND_3<TD></TR> <TR><TD>USERCOMMAND_4<TD></TR> <TR><TD>USERCOMMAND_5<TD></TR> <TR><TD>USERCOMMAND_6<TD></TR> <TR><TD>USERCOMMAND_7<TD></TR> <TR><TD>USERCOMMAND_8<TD></TR> <TR><TD>USERCOMMAND_9<TD></TR> </TABLE> <A NAME="Viewpoint"><H3>Viewpoint</H3> <P>Send from server to client, to update the viewpoint.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>8</TD></TR> <TR><TD>6*DWORD</TD><TD>position + direction</TD><TD></TD></TR> <TR><TD>DWORD</TD><TD>targetId</TD><TD>Where viewpoint is connected.</TD></TR> </TABLE> <A NAME="Selection"><H3>Selection</H3> <PRE>TODO: Implement use of subobjects</PRE> <P>Send from client to server, to get action list for selected object.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>9</TD></TR> <TR><TD>WORD</TD><TD>objectId</TD><TD>Uniq identifyer for selected object</TD></TR> </TABLE> <A NAME="Action"><H3>Action</H3> <PRE>TODO: Implement use of subobjects</PRE> <P>Send from client to server, to execute a action on a object.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>10</TD></TR> <TR><TD>WORD</TD><TD>objectId</TD><TD>Uniq identifyer for object</TD></TR> <TR><TD>WORD</TD><TD>actionId</TD><TD>Uniq identifyer for action</TD></TR> </TABLE> <A NAME="PlayerInfo"><H3>PlayerInfo</H3> <P>Send from server to client, to change master cell. Client then ask the world server to send world info for new cells.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>?</TD></TR> <TR><TD>DWORD</TD><TD>masterCellId</TD><TD>Uniq identifyer for master cell.</TD></TR> </TABLE> <H2>msgactionlist.H</H2> <A NAME="ActionList"><H3>ActionList</H3> <P>Send from server to client, to inform client about leagal actions for a object.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>11</TD></TR> <TR><TD>WORD</TD><TD>objectId</TD><TD>Uniq identifyer for object</TD></TR> <TR><TD>WORD</TD><TD>numActions</TD><TD>Number of actions</TD></TR> </TABLE> *numActions <TABLE BORDER> <TR><TD>WORD</TD><TD>actionId</TD><TD></TD></TR> <TR><TD>STRING</TD><TD>actionName</TD><TD></TD></TR> </TABLE> <H2>msgworld.H</H2> <A NAME="Section"><H3>Section</H3> <A NAME="Cell"><H3>Cell</H3> <A NAME="RemoveCell"><H3>RemoveCell</H3> <A NAME="Object"><H3>Object</H3> <A NAME="RemoveObject"><H3>RemoveObject</H3> <A NAME="ChangeMasterCell"><H3>ChangeMasterCell</H3> <A NAME="PVCell"><H3>PVCell</H3> <A NAME="UpdatePosition"><H3>UpdatePosition</H3> <P>Send from server to client, to update the position to a geometry object in the client world.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>5</TD></TR> <TR><TD>WORD</TD><TD>worldObjectId</TD><TD>Uniq identifyer for this object</TD></TR> <TR><TD>3*DWORD</TD><TD>position</TD><TD></TD></TR> </TABLE> <A NAME="UpdateDirection"><H3>UpdateDirection</H3> <P>Send from server to client, to update the direction to a geometry object in the client world.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>6</TD></TR> <TR><TD>WORD</TD><TD>worldObjectId</TD><TD>Uniq identifyer for this object</TD></TR> <TR><TD>3*DWORD</TD><TD>direction</TD><TD></TD></TR> </TABLE> <A NAME="UpdateHierarchy"><H3>UpdateHierarchy</H3> <H2>msgmsg.h</H2> <A NAME="Msg"><H3>Msg</H3> <P>Text message</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>12</TD></TR> <TR><TD>BUF[BodyLength]</TD><TD>msg</TD><TD>Message</TD></TR> </TABLE> <H2>msgserver.H</H2> <A NAME="ServerLogin"><H3>ServerLogin</H3> <P>Send from a server to tell inet address to use when connecting to that server.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>50</TD></TR> <TR><TD>DWORD</TD><TD>ServerAddress</TD><TD>IP address</TD></TR> <TR><TD>WORD</TD><TD>ServerPort</TD><TD>Port number</TD></TR> </TABLE> <H2>msggos.H</H2> <A NAME="GOSError"><H3>GOSError</H3> <P>Errors from GOS to client.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>101</TD></TR> <TR><TD>BYTE</TD><TD>error</TD><TD>Error number se table of errors</TD></TR> </TABLE> <H4>Table of errors</H4> <TABLE> <TR><TD>?</TD></TR> </TABLE> <A NAME="GOSRequest"><H3>GOSRequest</H3> <P>Request from client to GOS to get a object.</P> <TABLE BORDER> <TR><TH>TYPE</TH><TH>Name</TH><TH>Description</TH></TR> <TR><TD>BYTE</TD><TD>Id</TD><TD>100</TD></TR> <TR><TD>BYTE</TD><TD>requestType</TD><TD>Se table of request types</TD></TR> <TR><TD>WORD</TD><TD>objectId</TD><TD>Requested object</TD></TR> </TABLE> <H4>Table of request types</H4> <TABLE> <TR><TD>GOSREQUEST_GEOMETRY</TD></TR> <TR><TD>GOSREQUEST_MATERIAL</TD></TR> <TR><TD>GOSREQUEST_TEXTURE</TD></TR> </TABLE> <A NAME="Geometry"><H3>Geometry</H3> <A NAME="Material"><H3>Material</H3> <A NAME="Texture"><H3>Texture</H3> <H2>msgsrvgos.H</H2> <P>Empty file</P> </BODY> </HTML>