搜索
楼主: overlord

请教安完C4后在屏幕显示这个队员得ID!!!!

[复制链接]
 楼主| 发表于 2007-3-8 16:51:26 | 显示全部楼层 来自 黑龙江哈尔滨

回复: 请教安完C4后在屏幕显示这个队员得ID!!!!

说白了呢 我编这些代码很困难 我只是凭自己以前得开发经验来些插件得

[PHP]
#include <amxmodx>
#include <amxmisc>
#include <csx>
public plugin_init()
{
register_plugin("Change to Knife", "1.0", "nuo")
register_logevent("logevent_function_p", 3, "2=Planted_The_Bomb") //这里是注册在安装玩C4后执行
register_clcmd("lastinv","hook_Q", 0, "hook key Q" ) //这个是注册在判断按Q时执行
}
public logevent_function_p  
{
}
public hook_Q   
{
}
[/PHP]

现在时  我想在logevent_function_p这里得到安装C4玩家得ID  然后在进入hook_Q里判断这个玩家按Q得时候是不是没有任何武器了      就是这样得代码我写不出来      我不了解程序是如何执行得   不了解在logevent_function_p执行后   也就是说在玩家安装C4后是否就执行hook_Q这里     还是说不管玩家是否安装了C4都会执行hook_Q      这个是我不明白得     我也想找些资料    但是这类得资料真得是有限    而且对我来说看英文得资料是很难理解得     所以才到这里问问    可能是我得问题太肤浅   但是我真得是没有办法    懂这些语言得人更是少     真不知道如何才能学好这门语言     :burn:
回复

使用道具 举报

发表于 2007-3-8 21:15:43 | 显示全部楼层 来自 广东深圳

回复: 请教安完C4后在屏幕显示这个队员得ID!!!!

[php]
#include <amxmodx>
#include <amxmisc>
#include <csx>

public plugin_init()
{
   register_plugin("Change to Knife", "1.0", "nuo")
   register_logevent("logevent_function_p", 3, "2=Planted_The_Bomb") //这里是注册在安装玩C4后执行
   register_clcmd("lastinv","hook_Q", 0, "hook key Q" ) //这个是注册在判断按Q时执行
}

// 注册日志事件,当事件发生时被执行,也就是按放C4后被执行一次
public logevent_function_p()
{
   // 这是日志事件,player id 我们可以从日志里获得
   new szLoguser[80], szName[32]
   read_logargv(0, szLoguser, 79)
   parse_loguser(szLoguser, szName, 31)
   new id = get_user_index(szName) // 获得 id

}

// 注册玩家命令事件,当玩家(id)执行此命令时被执行
public hook_Q(id)
{
}
[/php]

有一点,可能楼主搞错了,当玩家放好C4后,手里不会没有武器的
一般是主枪/手枪,如果没有枪,也会是雷/刀等。
两个事件执行没有一点联系,不太明白你要的功能。

注册的事件都是当事件发生时被自动执行的
例如 hook_Q(id) 玩家任何时候按Q键,都会被执行一次,
执行时传送的 id 就是按下Q键的玩家

另外,如果使用了 <csx> 模块,可以使用(详见 csx.inc)
  1. // 当事件发生时系统自动执行,也就是按放C4后被执行一次
  2. public bomb_planted(planter)
  3. {
  4. }
复制代码
用来代替注册日志事件的所有代码,这种 forward 系统自动执行的函数,名字不能改变。
回复

使用道具 举报

发表于 2007-3-8 22:33:12 | 显示全部楼层 来自 广东中山

回复: 请教安完C4后在屏幕显示这个队员得ID!!!!

Post by overlord
我想在按C4的同时或按完C4做这样的判断
还有planter是指安装C4玩家的ID吗
请多指教点 谢谢

是,取值范围是1~32的自然数。
回复

使用道具 举报

 楼主| 发表于 2007-3-9 08:19:06 | 显示全部楼层 来自 黑龙江哈尔滨

回复: 请教安完C4后在屏幕显示这个队员得ID!!!!

我想判断这个玩家是否只有刀或只有刀和C4 有什么简单得判断方法吗

还是只有类似这样得方法判断
stock bool:block_weapon(wpn)
{
switch(wpn)
{
// 没有注释掉的这个禁止使用
case CSW_P228: return true
case CSW_SCOUT: return true
// 这个被注释掉的手雷,不禁止使用
//case CSW_HEGRENADE: return true
case CSW_XM1014: return true
case CSW_MAC10: return true
case CSW_AUG: return true
case CSW_SMOKEGRENADE: return true
//case CSW_ELITE: return true
//case CSW_FIVESEVEN: return true
case CSW_UMP45: return true
case CSW_SG550: return true
case CSW_GALI: return true
case CSW_FAMAS: return true
//case CSW_USP: return true
//case CSW_GLOCK18: return true
case CSW_AWP: return true
case CSW_MP5NAVY: return true
case CSW_M249: return true
//case CSW_M3: return true
case CSW_M4A1: return true
//case CSW_TMP: return true
case CSW_G3SG1: return true
//case CSW_FLASHBANG: return true
//case CSW_DEAGLE: return true
case CSW_SG552: return true
case CSW_AK47: return true
case CSW_P90: return true
}
return false
}


谢谢各位得帮助 谢谢
回复

使用道具 举报

 楼主| 发表于 2007-3-9 08:46:15 | 显示全部楼层 来自 黑龙江哈尔滨

回复: 请教安完C4后在屏幕显示这个队员得ID!!!!

在问一下get_user_weapon    和  get_user_weapons得区别在那里   


我想这两个函数应该可以有一个能统计出   当前玩家有多少武器得  

如果我判断出只有1个或2个得时候在进行判断就方便多了   

请指教
回复

使用道具 举报

 楼主| 发表于 2007-3-9 09:20:02 | 显示全部楼层 来自 黑龙江哈尔滨

回复: 请教安完C4后在屏幕显示这个队员得ID!!!!

[php]#include <amxmodx>
#include <amxmisc>
#include <csx>

public plugin_init()
{
register_plugin("Change to Knife", "1.0", "nuo")
//register_logevent("logevent_function_p", 3, "2=Planted_The_Bomb") //这里是注册在安装玩C4后执行
register_clcmd("lastinv","hook_Q", 0, "hook key Q" ) //这个是注册在判断按Q时执行
}

// 注册日志事件,当事件发生时被执行,也就是按放C4后被执行一次
public hook_Q(id)
{
new szLoguser[80], szName[32]
read_logargv(0, szLoguser, 79)
parse_loguser(szLoguser, szName, 31)
new id = get_user_index(szName) // 获得 id
new Weapons[32]
new numWeapons,weapon
get_user_weapons(id, Weapons, numWeapons)
if (numWeapons<=2) //判断是否少于2种武器
{
for(new i=0;i<numWeapons;i++)
{
if(Weapons==CSW_C4) //如果有一个是C4的话 按Q就切换成刀
{
engclient_cmd(id, "weapon_knife")
return PLUGIN_HANDLED
}
}
}
else return PLUGIN_CONTINUE
}[/php]

根据我目前的水平  暂时只能写出这些  但发现一些错误 不知道错在哪里 请指教一下
回复

使用道具 举报

发表于 2007-3-9 13:54:47 | 显示全部楼层 来自 广东深圳

回复: 请教安完C4后在屏幕显示这个队员得ID!!!!

   new szLoguser[80], szName[32]
   read_logargv(0, szLoguser, 79)
   parse_loguser(szLoguser, szName, 31)
   new id = get_user_index(szName) // 获得 id
// 这段多余的,这是日志事件才需要
// 玩家命令事件会自动传送id

weapon // 没有使用?多余的

public hook_Q(id)
{

//函数的最后面需要返回值
return PLUGIN_CONTINUE
}

不错,整体没有大问题,只是一些处理过程好像不很合理--
如果像上面的代码,玩家只要有C4在身上,但当前武器并非C4时,按Q也会切换为刀,不知是否你的原意?

//如果只是需要当玩家手持C4时,按Q才切换为刀时,可以这样做(方法之一)
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. public plugin_init()
  4. {
  5.    register_plugin("Change to Knife", "1.0", "nuo")
  6.    register_clcmd("lastinv","hook_Q", 0, "hook key Q" ) //这个是注册在判断按Q时执行
  7. }
  8. // 注册日志事件,当事件发生时被执行,也就是按放C4后被执行一次
  9. public hook_Q(id)
  10. {
  11.    // 玩家当前手持武器不是C4?仔细看代码 No sXe 插件
  12.    // 添上判断当前武器代码。。。。
  13.    {
  14.       engclient_cmd(id, "weapon_knife") // 强制换为刀
  15.       return PLUGIN_HANDLED // 换为刀后,返回 PLUGIN_HANDLED 屏蔽Q键的切换
  16.    }
  17.    return PLUGIN_CONTINUE // 其他情况,让事件正常运作
  18. }
复制代码
回复

使用道具 举报

 楼主| 发表于 2007-3-9 14:08:39 | 显示全部楼层 来自 黑龙江哈尔滨

回复: 请教安完C4后在屏幕显示这个队员得ID!!!!

先谢谢Jop对我的帮助

我现在要做的是我要判断出玩家没有任何武器 只有C4和刀 或者只有刀的时候

只有这个时候按Q才切换成刀
[PHP]#include <amxmodx>
#include <amxmisc>

public plugin_init()
{
   register_plugin("Change to Knife", "1.0", "nuo")
   register_clcmd("lastinv","hook_Q", 0, "hook key Q" ) //这个是注册在判断按Q时执行
}

// 注册日志事件,当事件发生时被执行,也就是按放C4后被执行一次
public hook_Q(id)
{
   // 玩家当前手持武器不是C4?仔细看代码 No sXe 插件
   // 添上判断当前武器代码。。。。
    new Weapons[32]
new numWeapons
get_user_weapons(id, Weapons, numWeapons)
if (numWeapons<=2)    //判断是否少于2种武器
{
  for(new i=0;i<numWeapons;i++)
  {
   if(Weapons==CSW_C4)    //如果有一个是C4的话  按Q就切换成刀
   {
    engclient_cmd(id, "weapon_knife")
    return PLUGIN_HANDLED
   }
  }
}
  return PLUGIN_CONTINUE // 其他情况,让事件正常运作
}  [/PHP]

这样写怎么还有错误  loose indentation  这个错误什么意思
回复

使用道具 举报

发表于 2007-3-9 14:19:06 | 显示全部楼层 来自 广东深圳

回复: 请教安完C4后在屏幕显示这个队员得ID!!!!

上下文没有对齐,不会有影响的

但好的习惯是代码每一节都需要区分并且,同一节需要对齐,方便检查。。
  1. public test()
  2. {
  3.     if (ok==0)
  4.     {
  5.         // .....
  6.         // ....
  7.     }
  8. }
复制代码
回复

使用道具 举报

 楼主| 发表于 2007-3-9 14:26:22 | 显示全部楼层 来自 黑龙江哈尔滨

回复: 请教安完C4后在屏幕显示这个队员得ID!!!!

运行过去了    原来是我开始是用记事本写的    里面加了不少的空格

现在我重新弄了一下    用UE弄的    哈哈  

谢谢     我去试试     看是不是我想要的效果     

谢谢你
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表