应用对象

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-03-05 10:19