怎么看都没有错的变量匹配错误tag mismatch
stock bool:fm_is_hull_vacant(const Float:origin, hull){
static tr; tr = 0; engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr);
return (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen)) ? true : false
}
以上代码最后一行红色部分,一编译就提示tag mismatch
救命啊。。。:cry:
回复: 怎么看都没有错的变量匹配错误tag mismatch
TraceResult constants cause a tag mismatch on compile if both engine and fakemeta are included, since both const includes have the TraceResult enum.engine_const.inc:
// Used by the traceresult() native.
enum
{
TR_AllSolid, // (int) if true, plane is not valid
TR_StartSolid,// (int) if true, the initial point was in a solid area
TR_InOpen,// (int)
TR_InWater, // (int)
TR_Fraction, // (float) time completed, 1.0 = didn't hit anything
TR_EndPos, // (vector) final position
TR_PlaneDist,// (float)
TR_PlaneNormal,// (vector) surface normal at impact
TR_Hit, // (entity) entity the surface is on
TR_Hitgroup // (int) 0 == generic, non zero is specific body part
};fakemeta_const.inc:
enum TraceResult
{
TR_AllSolid,// int
TR_StartSolid,// int
TR_InOpen, // int
TR_InWater, // int
TR_flFraction,// float
TR_vecEndPos,// float array
TR_flPlaneDist,// float
TR_vecPlaneNormal, // float array
TR_pHit, // int (edict_t*)
TR_iHitgroup,// int
};
--------------------------------------------------------------------------------
Was using:
get_tr2(tr, TR_InOpen)Could only get it to compile, after I realized what was going on, when I placed TraceResult in front like so:
get_tr2(tr, TraceResult:TR_InOpen)
回复: 怎么看都没有错的变量匹配错误tag mismatch
TR_StartSolidTR_AllSolid
TR_InOpen
是整型int,没错呀
回复: 怎么看都没有错的变量匹配错误tag mismatch
多加几个括号试试:sweat:
回复: 怎么看都没有错的变量匹配错误tag mismatch
Post by 52yz多加几个括号试试
:sweat:
也不行,就算我缩减成get_tr2(tr, TR_InOpen),也会提示一个错误,如果3个都加的话,就提示3个错误,如果这3个我删除了,就不会报错,问题一定是出在get_tr2(tr, TR_InOpen)这个里面。。。:confused:
回复: 怎么看都没有错的变量匹配错误tag mismatch
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#define PLUGIN "Test"
#define AUTHOR "Jim"
#define VERSION "1.0"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("test", "test")
}
public test(id)
{
new Float:origin
pev(id, pev_origin, origin)
fm_is_hull_vacant(origin, 1)
}
stock bool:fm_is_hull_vacant(const Float:origin, hull)
{
static tr;
tr = 0;
engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr);
return (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen)) ? true : false
}
我用这个测试了一下,没有任何错误
回复: 怎么看都没有错的变量匹配错误tag mismatch
Post by ttbs123stock bool:fm_is_hull_vacant(const Float:origin, hull)
{
static tr; tr = 0; engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr);
return (!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen)) ? true : false
}
以上代码最后一行红色部分,一编... 经测试,这几行代码没有任何错误或警告提示。
回复: 怎么看都没有错的变量匹配错误tag mismatch
已经解决了,感谢大家这是丧尸插件里面的,没有修改之前是编译没有错误的,修改之后就有错误。
今天仔细看我2楼发的资料,我在他们前面加TraceResult:,编译就没有问题了,等于
return (!get_tr2(tr, TraceResult:TR_StartSolid) && !get_tr2(tr, TraceResult:TR_AllSolid) && get_tr2(tr, TraceResult:TR_InOpen)) ? true : false
原因我也不知道为什么要加上那个,现在不会出错太高兴了
回复: 怎么看都没有错的变量匹配错误tag mismatch
我也没仔细看你2楼的,刚才一看,原来是因为fakemeta和engine都包含TraceResult这个枚举常量,所以编译的时候会出现错误。回复: 怎么看都没有错的变量匹配错误tag mismatch
Post by jim_yang我也没仔细看你2楼的,刚才一看,原来是因为fakemeta和engine都包含TraceResult这个枚举常量,所以编译的时候会出现错误。
哦,原来是这个原因,我不懂英文真惨,什么都看不懂
页:
[1]