ttbs123 发表于 2008-6-29 22:47:47

怎么看都没有错的变量匹配错误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:

ttbs123 发表于 2008-6-29 22:48:43

回复: 怎么看都没有错的变量匹配错误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)

ttbs123 发表于 2008-6-29 22:49:19

回复: 怎么看都没有错的变量匹配错误tag mismatch

TR_StartSolid
TR_AllSolid
TR_InOpen
是整型int,没错呀

52yz 发表于 2008-6-30 08:05:08

回复: 怎么看都没有错的变量匹配错误tag mismatch

多加几个括号试试
:sweat:

ttbs123 发表于 2008-6-30 12:16:50

回复: 怎么看都没有错的变量匹配错误tag mismatch

Post by 52yz
多加几个括号试试
:sweat:
也不行,就算我缩减成get_tr2(tr, TR_InOpen),也会提示一个错误,如果3个都加的话,就提示3个错误,如果这3个我删除了,就不会报错,问题一定是出在get_tr2(tr, TR_InOpen)这个里面。。。:confused:

jim_yang 发表于 2008-6-30 12:34:00

回复: 怎么看都没有错的变量匹配错误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
}

我用这个测试了一下,没有任何错误

Rulzy 发表于 2008-6-30 13:29:00

回复: 怎么看都没有错的变量匹配错误tag mismatch

Post by ttbs123
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
}
以上代码最后一行红色部分,一编... 经测试,这几行代码没有任何错误或警告提示。

ttbs123 发表于 2008-6-30 14:37:26

回复: 怎么看都没有错的变量匹配错误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
原因我也不知道为什么要加上那个,现在不会出错太高兴了

jim_yang 发表于 2008-7-1 12:33:05

回复: 怎么看都没有错的变量匹配错误tag mismatch

我也没仔细看你2楼的,刚才一看,原来是因为fakemeta和engine都包含TraceResult这个枚举常量,所以编译的时候会出现错误。

ttbs123 发表于 2008-7-1 13:12:54

回复: 怎么看都没有错的变量匹配错误tag mismatch

Post by jim_yang
我也没仔细看你2楼的,刚才一看,原来是因为fakemeta和engine都包含TraceResult这个枚举常量,所以编译的时候会出现错误。
哦,原来是这个原因,我不懂英文真惨,什么都看不懂
页: [1]
查看完整版本: 怎么看都没有错的变量匹配错误tag mismatch