|
发表于 2010-5-23 00:38:47
|
显示全部楼层
来自 中国–湖北–黄石
- #include <amxmodx>
- #include <cstrike>
- //#include <hamsandwich>
- #define NAME "show teammate's money"
- #define VERSION "1.3"
- #define AUTHOR "k.k.lv"
- new g_max_players
- new g_teammate[33]
- public plugin_init()
- {
- register_plugin(NAME, VERSION, AUTHOR) // 注册插件
- // RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
- register_event("ResetHUD", "player_spawn", "be") // 注册用户事件,*重置玩家位置时会执行,例如一局开始或者用户重生时执行player_spawn函数
- register_clcmd("say /money", "show_money") // 注册一个客户端命令,"say /money",执行show_money函数
- register_event("StatusValue", "show_teammate_money", "be", "1=2", "2!0")
- register_event("StatusValue", "set_team", "be", "1=1") // 玩家加入队伍时执行
- g_max_players = get_maxplayers() // 获取服务器设置的最大玩家数
- }
- public player_spawn(client)
- {
- if (is_user_alive(client)) // 判断用户是否活着的状态
- {
- set_task(1.0, "show_money", client) // 设置一个TASK,延迟1.0秒后执行函授show_moeny,client为传递过去的用户ID,CS的用户ID为1-32,进入服务器时系统会自动将还没有用到的ID分配给你
- }
- }
- public show_money(id)
- {
- new message[1024] // 定义一个1024字节的变量
- new name[32] // 定义一个32字节的变量
- new money // 定义一个为money的整型变量
- new len = format(message, sizeof message - 1, "队友金钱:^n") // 格式化一句字符进message变量内,format为格式化命令
- for (new i = 1; i <= g_max_players; i++) // 循环1-最大玩家数
- {
- if (is_user_connected(i)) // 判断用户是否连接中
- {
- if (cs_get_user_team(i) == cs_get_user_team(id)) // 对比执行命令的用户及循环出来的用户ID的队伍是否一样,cs_get_user_team为获取玩家队伍,返回1为T,返回2是CT,返回0是未知,返回3为观察者
- {
- money = cs_get_user_money(i) // 获取玩家金钱
- get_user_name(i, name, 31) // 获取玩家名字
- len += format(message[len], sizeof message - 1 -len, "%-22.22s: %d^n", name, money)
- }
- }
- }
- set_hudmessage(0, 100, 0, 0.05, 0.55, 2, 0.02, 6.0, 0.1, 0.2, 2)
- /*
- set_hudmessage ( red=200, green=100, blue=0, Float:x=-1.0, Float:y=0.35, effects=0, Float:fxtime=6.0, Float:holdtime=12.0, Float:fadeintime=0.1, Float:fadeouttime=0.2, channel=4 )
- 前三个参数是用来控制颜色的;第四、第五个分别是水平位置和垂直位置,取值范围为0.0~1.0及-1.0,-1.0代表居中显示;第六个参数是效果,取值范围为0~2,为0时代表不使用效果,为1时代表打字效果,为2时代表闪烁效果;第七个参数是与效果相关的时间参数;第八个是持续时间即在屏幕上显示的时间,单位为秒;第九、第十个为淡入淡出时间;第十一个参数为频道,取值范围为1~4,即可以同时最多显示4个HUD,取其它值则是自动选择一个尚未使用的频道。
- 由此可以看出,要在屏幕上一直显示,holdtime设一个足够大的数就可以了。另外,应该对所有插件的HUD显示规划一下,看哪个频道显示什么,因为如果频道冲突的话,前面显示的HUD就会消失,显示后面的HUD。另外,当产生 ResetHUD 事件时,HUD内容也是会消失的。
- */
- show_hudmessage(id, message) // 发送HUD文字
- }
- public set_team(id)
- {
- g_teammate[id] = read_data(2)
- }
- public show_teammate_money(id)
- {
- if(!is_user_bot(id) && is_user_connected(id))
- {
- new name[32]
- new pid = read_data(2)
- new red = 0, green = 0
-
- if (get_user_team(pid) == 1)
- red = 255
- else
- green = 255
-
- get_user_name(pid, name, sizeof name - 1)
- new money = cs_get_user_money(pid)
- if (g_teammate[id] == 1)
- {
- set_hudmessage(red, 50, green, -1.0, 0.60, 1, 0.01, 0.6, 0.01, 0.01, 8)
- show_hudmessage(id, "Name:%s -- Money:%d", name, money)
- }
- else {
- set_hudmessage(red, 50, green, -1.0, 0.60, 1, 0.01, 0.6, 0.01, 0.01, 8)
- show_hudmessage(id, "Name:%s", name)
- }
- }
- }
复制代码 这个啦。。。 |
|