Beispiel #1
0
static cell _message_begin(AMX *amx, cell *params, bool useFloat) /* 4 param */
{
	int numparam = *params / sizeof(cell);
	float vecOrigin[3];
	cell *cpOrigin;

	if (params[2] < 1 || ((params[2] > 63)		// maximal number of engine messages
		&& !GET_USER_MSG_NAME(PLID, params[2], NULL)))
	{
		LogError(amx, AMX_ERR_NATIVE, "Plugin called message_begin with an invalid message id (%d).", params[2]);
		return 0;
	}

	switch (params[1])
	{
	case MSG_BROADCAST:
	case MSG_ALL:
	case MSG_SPEC:
	case MSG_INIT:
		MESSAGE_BEGIN(params[1], params[2], NULL);
		break;
	case MSG_PVS: case MSG_PAS:
	case MSG_PVS_R: case MSG_PAS_R:
		if (numparam < 3)
		{
			LogError(amx, AMX_ERR_NATIVE, "Invalid number of parameters passed");
			return 0;
		}

		cpOrigin = get_amxaddr(amx, params[3]);

		if (!useFloat)
		{
			vecOrigin[0] = static_cast<float>(*cpOrigin);
			vecOrigin[1] = static_cast<float>(*(cpOrigin + 1));
			vecOrigin[2] = static_cast<float>(*(cpOrigin + 2));
		} else {
			vecOrigin[0] = amx_ctof(*cpOrigin);
			vecOrigin[1] = amx_ctof(*(cpOrigin + 1));
			vecOrigin[2] = amx_ctof(*(cpOrigin + 2));
		}

		MESSAGE_BEGIN(params[1], params[2], vecOrigin);

		break;
	case MSG_ONE_UNRELIABLE:
	case MSG_ONE:
		if (numparam < 4)
		{
			LogError(amx, AMX_ERR_NATIVE, "Invalid number of parameters passed");
			return 0;
		}

		MESSAGE_BEGIN(params[1], params[2], NULL, INDEXENT(params[4]));
		break;
	}

	return 1;
}
Beispiel #2
0
void wd_msglist(void) {
	int i, size;
	const char *cp;
	LOG_CONSOLE(PLID, "registered user msgs:");
	for(i=0; i < MAX_REG_MSGS; i++) {
		cp=GET_USER_MSG_NAME(PLID, i, &size);
		if(cp)
			LOG_CONSOLE(PLID, "%d %s %d", i, cp, size);
	}
}
Beispiel #3
0
void MessageBegin(int msg_dest, int msg_type, const float *pOrigin, edict_t *ed) {
	const char *name, *dest;
	name=GET_USER_MSG_NAME(PLID, msg_type, NULL);
	if(!name) name="unknown";
	dest=msg_dest_types[msg_dest];
	if(!dest) dest="unknown";
	ENGINE_TRACE(pfnMessageBegin, P_PRE, ("type=%s(%d), dest=%s(%d), classname=%s netname=%s", name, msg_type, dest, msg_dest,
				ed ? STRING(ed->v.classname) : "nil",
				ed ? STRING(ed->v.netname) : "nil"));
	RETURN_META(MRES_IGNORED);
}