I'm writing a metamod plugin for CS 1.6 using the latest (I think) sdks
for metamod and hl and I keep getting these fatal errors
FATAL ERROR (shutting down): New message started when msg '23' has not
been sent yet
FATAL ERROR (shutting down): New message started when msg '77' has not
been sent yet
FATAL ERROR (shutting down): New message started when msg '86' has not
been sent yet
FATAL ERROR (shutting down): New message started when msg '139' has not
been sent yet
... among others.

My plugin looks for some of these messages but also sends some of these
messages. I'm guessing that
I'm getting these messages because my mod is trying to write messages
while other messages are being
written?  Is there a method for queuing these messages in the sdk?  Its
driving me insane and I can't find
any documentation explaining these errors anywhere on google.

This is an example of how I'm writing messages:
  MESSAGE_BEGIN(MSG_ONE, GET_USER_MSG_ID(PLID,"TextMsg",NULL), NULL,
entity);
      WRITE_BYTE(HUD_PRINTTALK);
      WRITE_STRING(tmp);
  MESSAGE_END();

These are my functions for catching:
void MessageBegin(int msg_dest, int msg_type, const float *pOrigin,
edict_t *ed) {
  mPlayer = ed ? cmn->seekPlayer(ed) : NULL;
    // this is probably a bot
  if( mPlayer == NULL && ed != NULL )    {
      cmn->addPlayer(ed, STRING(ed->v.netname), "1.2.3.4");
      mPlayer = cmn->seekPlayer(ed);
  }

  mState = 0;

//    if( msg_type != 65 && msg_type != 99 )
//        LOG_CONSOLE(PLID, "GOT MSG '%d' %s ", msg_type,
GET_USER_MSG_NAME(PLID, msg_type, NULL) );

  if( msg_type == GET_USER_MSG_ID(PLID, "Damage", NULL) )
      function=Damage;
  else if( msg_type == GET_USER_MSG_ID(PLID, "CurWeapon", NULL) )
      function=CurWeapon;
  else if( msg_type == GET_USER_MSG_ID(PLID, "DeathMsg", NULL) )
      function = DeathMsg;
  else if( msg_type == GET_USER_MSG_ID(PLID, "TeamInfo", NULL) )
      function = TeamInfo;
//    else if( msg_type == GET_USER_MSG_ID(PLID, "TextMsg", NULL) )
//        function = TextMsg;
  else
      function=modMsgs[msg_type].function;

  endfunction=modMsgsEnd[msg_type].function;

  RETURN_META(MRES_IGNORED);
}

void MessageEnd(void) {
  if (endfunction) (*endfunction)(NULL);
  RETURN_META(MRES_IGNORED);
}

void WriteByte(int iValue) {
  if (function)    (*function)((void *)&iValue);
  RETURN_META(MRES_IGNORED);
}

void WriteChar(int iValue) {
  if (function)    (*function)((void *)&iValue);
  RETURN_META(MRES_IGNORED);
}

void WriteShort(int iValue) {
  if (function)    (*function)((void *)&iValue);
  RETURN_META(MRES_IGNORED);
}

void WriteLong(int iValue) {
  if (function)    (*function)((void *)&iValue);
  RETURN_META(MRES_IGNORED);
}

void WriteAngle(float flValue) {
  if (function) (*function)((void *)&flValue);
  RETURN_META(MRES_IGNORED);
}

void WriteCoord(float flValue) {
  if (function)    (*function)((void *)&flValue);
  RETURN_META(MRES_IGNORED);
}

void WriteString(const char *sz) {
  if (function)    (*function)((void *)sz);
  RETURN_META(MRES_IGNORED);
}

void WriteEntity(int iValue) {
  if (function)    (*function)((void *)&iValue);
  RETURN_META(MRES_IGNORED);
}

Any help is greatly appreciated
thank you for reading this,
Derek Brooks



_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to