应用对象
1.在国内完美平台接入了自己的服务器.
2.安装了完美平台互联插件.
3.成功配置AppId 等属性.
4.了解SourceMod的基础编译和编写
完美互联插件基本功能
可直接配置给予flag权限 例如vip等功能需要.
可配合Store插件兑换积分
可自定义开发你想要的(完美平台操作)
- 道具数量获取
- 道具消耗
- 是否VIP获取
- VIP的过期时间
头部文件
您可以将这些头部调用创建一个名为 xnet_pwd_connect.inc 方便日后调用
xnet_pwd_connect.inc 头文件,没有请创建 并放到sourcemod 脚本编译器的include下
/** Double-include prevention */
#if defined _xnet_pwd_connect_included_
#endinput
#endif
#define _xnet_pwd_connect_included_
//可调用native
native bool PWDItem_IsClientSteamValid(int client); //检查Steam是否获取成功 结果在PWDItem_OnUserLoaded 后
native void PWDItem_UseItem(int client,int itemid,int count); // 使用物品
native void PWDItem_GetUserItem(int client,int itemid);// 获取物品
//全局转发
forward void PWDItem_OnUserLoaded(int client,bool isVip,const char[] sFlags,const char[] sSteam64,int vipExpireTime); //任何人都应该会得到该数据 除非完美接口出现错误.
forward Action PWDItem_OnItemUseRequestPre(int client,int itemid,const char[] sDesc,int count);//当使用物品发送请求
forward void PWDItem_OnItemUsePost(int client,int itemid,const char[] sDesc,int count);//使用物品时返回结果
forward void PWDItem_OnGetItemAny(int client,int itemid,int counts);//获取物品时返回结果
//复制到任何插件中有效 全局转发
//当物品使用请求
/**
*
* 当使用物品可阻断
* @param client 客户端
* @param itemid 物品ID
* @param sDesc 文本说明 可作为log
* @param count 物品数量
* @return Plugin_Handled 可阻断操作, Plugin_Continue 则不阻止.
*/
public Action PWDItem_OnItemUseRequestPre(int client,int itemid,const char[] sDesc,int count) {
char sAuthId[32];
GetClientAuthId(client,AuthId_SteamID64,sAuthId,sizeof(sAuthId));
LogMessage("Steam用户 %s 请求使用道具ID:%d %s",sAuthId,itemid,sDesc);
}
/**
*
* 当使用物品成功 完美服务器返回成功才会返回 PWDItem_OnItemUsePost
* @param client 客户端
* @param itemid 物品ID
* @param sDesc 文本说明 可作为log
* @param count 物品数量
* @return 无返回值
*/
public void PWDItem_OnItemUsePost(int client,int itemid,const char[] sDesc,int count) {
char sAuthId[32];
GetClientAuthId(client,AuthId_SteamID64,sAuthId,sizeof(sAuthId));
LogMessage("用户 %s 使用道具ID:%d %s",sAuthId,itemid,sDesc);
}
//这个转发代表从完美服务器获取了用户是否为vip 无论是否是VIP都会转发 除非http请求失败.
//参数1 客户端
//参数2 判定是不是购买了VIP
//参数3 = 互联插件配置的flag权限
//参数4 = SteamId64
//参数5 vipExpireTime unix 时间戳判定过期时间
//用法实例:
public void PWDItem_OnUserLoaded(int client,bool isVIP,const char[] sflags,const char[] sSteam64,int vipExpireTime) {
if(isVIP && IsClientInGame(client)){
char sTime[128]
FormatTime(sTime, 128, "%Y/%m/%d/%H:%M", vipExpireTime); //将时间戳 vipExpireTime 格式化为文本 年/月/日/时/分
PrintToChat(client," %N 您是VIP用户 flags %s 过期时间 %s",client,sflags,sTime);
}
}
版本更新 2.29 2022-08-10
使用引擎userid 增加 请求用户可靠性 这将有更好的id安全性.
作者:admin 创建时间:2022-08-10 22:26
最后编辑:admin 更新时间:2024-09-25 02:22
最后编辑:admin 更新时间:2024-09-25 02:22