广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 10188 个阅读者
 
<<   1   2   3   4  下页 >>(共 4 页)
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
z2352671213
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 社区建设奖
小人物
级别: 小人物 该用户目前不上站
推文 x10 鲜花 x47
分享: 转寄此文章 Facebook Plurk Twitter 版主评分版主评分 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x3
[插件] 【生财之道】[SQL]充值卡系统的完美设想!!原创~  (0威武,3雅币,有SMA!!!!~)
【插件资讯】

插件来源:原创
使用指令:按Y输入:
charge|卡号|卡密码

安装路径:*.amxx放到 addons/amxmodx/plugins || *.sma喜欢放哪就放哪

【插件介绍】

NAG 插件系列 NO.8
PS:RCS = Recharge Card System的缩写
写这个插件的缘由是有人想买,于是就写了,可惜后来他不要了,所以我就发了上来。使用本插件需要具备一定的基础。

PS:
1.使用本插件需要安装SQL数据库并且在AMXX中启用相关功能。(必须)
2.需要对SQL数据库有初步了解。(非必须)
3.需要对编程有初步了解。(非必须)

原作者 NAG (kyo亦对本插件的编写有贡献)
繁化者 NAG(照顾不是大陆的童鞋们,特地繁化了)
请不要侵犯原作者的版权,转载请说明,谢谢合作!


先来简单的介绍下这个插件。这个插件的功能有点类似于我们现在的点卡,或者说充值卡,玩家在输入指定的卡号和密码后,可以获取相应的奖励(比如大量子弹包,权限,经验等等),而伺服器管理员可以通过出售卡号和卡密码来获利。玩家购买卡号和卡密码,可以赠送给亲朋好友,也可以自己使用,每个卡号和卡密码使用一次后自动作废。(玩家对于SQL数据库的查询操作将会被记录到LOG中,充值成功的信息也会被记录)


插件原理:
1.在SQL DB中建立特定的表和字段,用于存储卡信息
2.判断玩家是否有充值意向
3.将玩家提交的卡信息与SQLDB中的卡信息比较
4.反馈比较结果
5.信息符合则给予奖励,并删除DB中的卡信息

如何获利?
1.手动向SQL DB中插入随机卡号和卡密码
2.将卡号和卡密码卖给玩家,你可以做成真的卡片卖出去,也可以只把号码卖出去,此时你就可以赚钱
3.玩家亦可以把卡信息转让或赠送给其他人
4.这样以来你就可以赚钱,无本万利,相当于你是买点卡的,这样你的伺服器除了卖会员以外,还可以卖点卡,是不是商机无限呢?

SQL 参数,请按照以下内容填写:
amx_sql_host    "127.0.0.1"
amx_sql_user    "帐户名"
amx_sql_pass    "密码"
amx_sql_db        "ilovekyo"
amx_sql_table    "test1"
amx_sql_type    "mysql"

你必须建立一个叫ilovekyo的数据库,再建立一个叫test1的表,再建立2个字段,分别是uid和pw,类型均为int(11)。当然如果你懂SMA的话你可以在SMA中修改。

关于充值成功的奖励,你必须在如下内容中修改:
复制程式
public reward(id) //以下为奖励部分,请认真修改
{
        //请在这里编写充值成功的奖励
        //例如:
        cs_set_user_money(id,16000)         //金钱已满
        //可以改成奖励子弹包或者奖励权限,通过文件操作相关函数,在users.ini里添加玩家信息
        //比如zp_set_user_ammo_pakcs(id,zp_get_user_ammo_packs(id) + 5000)  需要接口,亦可以与升级插件接口
}

请告知玩家,充值卡的使用方式为:
charge|卡号|卡密码
例如:
charge|140101|123456
务必为数字!!!

有图有真相

如上图,现在数据库中插入卡信息


玩家乱输卡信息肯定充不了

输对就显示充值成功

LOG中会记录玩家的操作

充值成功后卡信息会被自动删除,防止二次充值


[此文章售价 3 雅币已有 86 人购买]
若发现会员采用欺骗的方法获取财富,请立刻举报,我们会对会员处以2-N倍的罚金,严重者封掉ID!


此文章被评分,最近评分记录
财富:300 (by amore12) | 理由: 赞..^^



献花 x2 回到顶端 [楼 主] From:未知地址 | Posted:2014-02-15 16:50 |
jlbsky
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x3
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

为什么是say,这样不会被别的玩家看到吗?


献花 x0 回到顶端 [1 楼] From:IANA | Posted:2014-02-15 16:57 |
z2352671213
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 社区建设奖
小人物
级别: 小人物 该用户目前不上站
推文 x10 鲜花 x47
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 jlbsky 于 2014-02-15 16:57 发表的 : 到引言文
为什么是say,这样不会被别的玩家看到吗?
额。。看到了也没关系,用say还能防止灌水神马的。。实在不行你就自己改改吧


献花 x0 回到顶端 [2 楼] From:未知地址 | Posted:2014-02-15 17:00 |
z2352671213
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 社区建设奖
小人物
级别: 小人物 该用户目前不上站
推文 x10 鲜花 x47
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 jlbsky 于 2014-02-15 16:57 发表的 : 到引言文
为什么是say,这样不会被别的玩家看到吗?

比如用return PLUGIN_HANDLED阻止玩家说的话显示出来


献花 x0 回到顶端 [3 楼] From:未知地址 | Posted:2014-02-15 17:05 |
e1242656 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x6 鲜花 x120
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

让我想到C$O的万恶点数卡...
不过其实这挺实用的@@
只是奖励部分需要大修改就是了...



RC:18589523 欢迎加入^^
献花 x0 回到顶端 [4 楼] From:台湾中华电信股份有限公司 | Posted:2014-02-16 00:46 |
z2352671213
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 社区建设奖
小人物
级别: 小人物 该用户目前不上站
推文 x10 鲜花 x47
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 e1242656 于 2014-02-16 00:46 发表的 : 到引言文
让我想到C$O的万恶点数卡...
不过其实这挺实用的@@
只是奖励部分需要大修改就是了...

哈哈,您可真识货啊!这个插件对于没眼光的人根本毫无用处。


献花 x0 回到顶端 [5 楼] From:未知地址 | Posted:2014-02-16 10:59 |
e1242656 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x6 鲜花 x120
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 z2352671213 于 2014-02-16 10:59 发表的 : 到引言文


哈哈,您可真识货啊!这个插件对于没眼光的人根本毫无用处。



不过

通过文件操作相关函数,在users.ini里添加玩家信息[/pre]

这个部分是否可指点一下呢?


例如时效性或永久性的权限要怎么编写?!



RC:18589523 欢迎加入^^
献花 x0 回到顶端 [6 楼] From:台湾中华电信股份有限公司 | Posted:2014-02-16 15:29 |
z2352671213
个人头像
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖 社区建设奖
小人物
级别: 小人物 该用户目前不上站
推文 x10 鲜花 x47
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 e1242656 于 2014-02-16 15:29 发表的 : 到引言文


不过

通过文件操作相关函数,在users.ini里添加玩家信息[/pre]

.......

复制程式
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Admins Manager"
#define VERSION "1.3"
#define AUTHOR "Alka"

#define STR_LEN 64

#define MENU_ACCESS_FLAG ADMIN_RCON

new gConfigsDir[STR_LEN];
new gAdminsFile[STR_LEN];

new const gAdminFlags[][] = {
    
    "a", "b", "c", "d", 
    "e", "f", "g", "h", 
    "i", "j", "k", "l",
    "m", "n", "o", "p",
    "q", "r", "s", "t",
    "u"
};
new const gAdminAccessFlags[][] = {
    
    "a", "b", "c", "d", "e"
};    
new const gAdminFlagsDetails[][] = {
    
    "Immunity",
    "Reservation",
    "Kick",
    "Ban / Unban",
    "Slay / Slap",
    "Change Map",
    "Cvar change",
    "Cfg exec",
    "Chat messages",
    "Vote",
    "Server Password",
    "Rcon",
    "Custom A",
    "Custom B",
    "Custom C",
    "Custom D",
    "Custom E",
    "Custom F",
    "Custom G",
    "Custom H",
    "Amxx Menu"
};
new const gAdminAccessFlagsDetails[][] = {
    
    "Disconnect on invalid password",
    "Clan tag",
    "For SteamId / WonId",
    "For Ip",
    "Password is not checked"
};
new gAdminTargetId[33];
new gAdminTargetFlags[33][32];
new gAdminTargetPassword[33][STR_LEN];
new gAdminTargetAccessFlags[33][32];
new gAdminTargetAccount[33][32];
new gAdminTargetDetails[33][4][STR_LEN];
new gAdminSaveMode[33];
new bool:gAccessFromEditMenu[33];

public plugin_init() {
    
    register_plugin(PLUGIN, VERSION, AUTHOR);
    
    register_saycmd("adminsmanager", "cmdAdminsManage", -1, "");
    
    register_concmd("amx_adminpassword", "cmdAdminPassword", MENU_ACCESS_FLAG, "<password> - Save / change this password for specified admin.");
    register_concmd("amx_adminaccount", "cmdAdminAccount", MENU_ACCESS_FLAG, "<name / ip / steam id> - Save / change this account info for specified admin.");
    
    get_configsdir(gConfigsDir, sizeof gConfigsDir - 1);
    formatex(gAdminsFile, sizeof gAdminsFile - 1, "%s/users.ini", gConfigsDir);
    
    if(!file_exists(gAdminsFile))
        set_fail_state("Non-existent file.");
}

public cmdAdminsManage(id)
{
    static iMenu, iCallBack;
    iMenu = menu_create("\yAdmins manager (\wMain Menu\y):", "MainMenuHandler");
    iCallBack = menu_makecallback("MainMenuCallBack");
    
    menu_additem(iMenu, "\wAdd Admin", "1", 0, iCallBack);
    menu_additem(iMenu, "\wRemove Admin", "2", 0, iCallBack);
    menu_additem(iMenu, "\wEdit Admin", "3", 0, iCallBack);
    
    menu_addblank(iMenu, 0);
    menu_display(id, iMenu, 0);
}

public MainMenuCallBack(id, menu, item)
    return access(id, MENU_ACCESS_FLAG) ? ITEM_ENABLED : ITEM_DISABLED;

public MainMenuHandler(id, menu, item)
{
    if(item == MENU_EXIT)
        return 1;
    
    static iAccess, iCallback;
    static sData[6];
    menu_item_getinfo(menu, item, iAccess, sData, sizeof sData - 1, _, _, iCallback);
    
    static iKey;
    iKey = str_to_num(sData);
    
    switch(iKey)
    {
        case 1: { cmdAdminAdd(id); }
        case 2: { cmdAdminRemove(id); }
        case 3: { cmdAdminEdit(id); }
    }
    return 1;
}

public cmdAdminAdd(id)
{
    static iMenu;
    iMenu = menu_create("\yAdmins manager (\wAdd Admin\y):", "AddMenuHandler");
    
    static sPlayers[32], iNum;
    get_players(sPlayers, iNum, "ch");
    
    for(new i = 0 ; i < iNum ; i++)
    {
        static sName[32];
        get_user_name(sPlayers[i], sName, sizeof sName - 1);
        
        menu_additem(iMenu, sName, "", 0, -1);
    }
    menu_addblank(iMenu, 0);
    menu_display(id, iMenu, 0);
}

public AddMenuHandler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        cmdAdminsManage(id);
        return 1;
    }
    
    static iAccess, iCallback;
    static sBuffer[32];
    menu_item_getinfo(menu, item, iAccess, "", 0, sBuffer, sizeof sBuffer - 1, iCallback);
    
    static iTarget;
    iTarget = get_user_index(sBuffer);
    
    gAdminTargetId[id] = iTarget;
    
    cmdAdminAddSubMenu(id);
    return 1;
}

public cmdAdminAddSubMenu(id)
{    
    static sTemp[STR_LEN], sName[32];
    get_user_name(gAdminTargetId[id], sName, sizeof sName - 1);
    
    formatex(sTemp, sizeof sTemp - 1, "\yAdmins manager (\wAdd Admin \r%s\y):", sName);
    
    static iMenu;
    iMenu = menu_create(sTemp, "AddSubMenuHandler");
    
    menu_additem(iMenu, "\wAdd / Remove flags", "1", 0, -1);
    menu_additem(iMenu, "\wReset flags", "2", 0, -1);
    menu_addblank(iMenu, 0);
    
    static sBuffer[STR_LEN];
    switch(gAdminSaveMode[id])
    {
        case 0: { formatex(sBuffer, sizeof sBuffer - 1, "\wSave admin mode: \rIp"); }
        case 1: { formatex(sBuffer, sizeof sBuffer - 1, "\wSave admin mode: \rSteam Id"); }
        case 2: { formatex(sBuffer, sizeof sBuffer - 1, "\wSave admin mode: \rName + Password"); }
    }
    
    menu_additem(iMenu, sBuffer, "3", 0, -1);
    menu_additem(iMenu, "\wSave admin", "4", 0, -1);
    menu_addblank(iMenu, 0);
    
    menu_display(id, iMenu, 0);
}

public AddSubMenuHandler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        cmdAdminAdd(id);
        return 1;
    }
    
    static iAccess, iCallback;
    static sData[6];
    menu_item_getinfo(menu, item, iAccess, sData, sizeof sData - 1, _, _, iCallback);
    
    static iKey;
    iKey = str_to_num(sData);
    
    switch(iKey)
    {
        case 1: { cmdAdminAddFlags(id); }
        case 2: { cmdAdminAddResetFlags(id); }
        case 3: { cmdAdminSaveMode(id); }
        case 4: { cmdAdminAddSave(id); }
    }
    return 1;
}

public cmdAdminAddFlags(id)
{
    static iMenu;
    iMenu = menu_create("\yAdmins manager (\wAdd Admin flags):", "AddFlagsMenuHandler");
    
    static sTemp[128];
    
    for(new i = 0 ; i < sizeof gAdminFlags ; i++)
    {
        formatex(sTemp, sizeof sTemp - 1, "%s - \y%s", gAdminFlags[i], gAdminFlagsDetails[i]);
        menu_additem(iMenu, sTemp, "", 0, -1);
    }
    menu_addblank(iMenu, 0);
    menu_display(id, iMenu, 0);
}

public AddFlagsMenuHandler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        if(gAccessFromEditMenu[id])
        {
            cmdAdminEditSubMenu(id);
            gAccessFromEditMenu[id] = false;
            
            return 1;
        }
        else
        {
            cmdAdminAddSubMenu(id);
            return 1;
        }
    }
    
    static iAccess, iCallback;
    static sTemp[32], sBuffer[10];
    menu_item_getinfo(menu, item, iAccess, "", 0, sTemp, sizeof sTemp - 1, iCallback);
    
    strtok(sTemp, sBuffer, sizeof sBuffer - 1, sTemp, sizeof sTemp - 1, '-', 1);
    
    if(containi(gAdminTargetFlags[id], sBuffer) != -1)
        replace(gAdminTargetFlags[id], sizeof gAdminTargetFlags[] - 1, sBuffer, "");
    else
        format(gAdminTargetFlags[id], sizeof gAdminTargetFlags[] - 1, "%s%s", gAdminTargetFlags[id], sBuffer);
    
    set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
    show_hudmessage(id, "Add Admin flags : ^"%s^"", gAdminTargetFlags[id]);
    
    menu_display(id, menu, 0);
    return 1;
}

public cmdAdminAddResetFlags(id)
{
    formatex(gAdminTargetFlags[id], sizeof gAdminTargetFlags[] - 1, "");
    
    set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
    show_hudmessage(id, "Add Admin flags : Flags reseted");
    
    cmdAdminAddSubMenu(id);
    return 1;
}

public cmdAdminSaveMode(id)
{
    static iNum;
    iNum++;
    
    if(iNum > 2)
        iNum = 0;
    
    gAdminSaveMode[id] = iNum;
    
    if(iNum == 2)
    {
        set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
        show_hudmessage(id, "Add Admin Password: Type on console the new admin password^ncommand: amx_adminpassword");
    }
    cmdAdminAddSubMenu(id);
    return 1;
}

public cmdAdminAddSave(id)
{
    static iFile;
    iFile = fopen(gAdminsFile, "at+");
    
    if(!gAdminTargetFlags[id][0])
    {
        set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
        show_hudmessage(id, "You must select some flags before save^nthe admin.");
        
        cmdAdminAddSubMenu(id);
        return 1;
    }
    static UserInfo[32];
    
    switch(gAdminSaveMode[id])
    {
        case 0: { get_user_ip(gAdminTargetId[id], UserInfo, sizeof UserInfo - 1, 1); }
        case 1: { get_user_authid(gAdminTargetId[id], UserInfo, sizeof UserInfo - 1); }
        case 2:
        {
            if(!gAdminTargetPassword[id][0])
            {
                set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
                show_hudmessage(id, "Type on console the new admin password^ncommand: amx_adminpassword <password>");
                
                cmdAdminAddSubMenu(id);
                return 1;
            }
            get_user_name(gAdminTargetId[id], UserInfo, sizeof UserInfo - 1);    
        }
    }
    
    static sTemp[128];
    new iLine;
    
    while(!feof(iFile))
    {
        fgets(iFile, sTemp, sizeof sTemp - 1);
        
        iLine++;
        
        if((containi(sTemp, UserInfo) != -1) && sTemp[0] != ';')
        {
            client_print(id, print_chat, "Sorry but an admin account with this account info already exists!");
            return 1;
        }
    }
    
    static sBuffer[128];
    switch(gAdminSaveMode[id])
    {
        case 0: { formatex(sBuffer, sizeof sBuffer - 1, "^n^"%s^" ^"^" ^"%s^" ^"de^"", UserInfo, gAdminTargetFlags[id]); }
        case 1: { formatex(sBuffer, sizeof sBuffer - 1, "^n^"%s^" ^"^" ^"%s^" ^"ce^"", UserInfo, gAdminTargetFlags[id]); }
        case 2: { formatex(sBuffer, sizeof sBuffer - 1, "^n^"%s^" ^"%s^" ^"%s^" ^"a^"", UserInfo, gAdminTargetPassword[id], gAdminTargetFlags[id]); }
    }
    
    fprintf(iFile, sBuffer);
    
    fclose(iFile);
    client_print(id, print_chat, "Successfuly added ^"%s^" to admins list on line %d!", UserInfo, iLine + 1);
    server_cmd("amx_reloadadmins");
    
    formatex(gAdminTargetFlags[id], sizeof gAdminTargetFlags[] - 1, "");
    formatex(gAdminTargetPassword[id], sizeof gAdminTargetPassword[] - 1, "");
    gAdminTargetId[id] = 0;
    
    return 1;
}

public cmdAdminPassword(id, level, cid)
{
    if(!cmd_access(id, level, cid, 2))
        return 1;
    
    static sArg[64];
    read_argv(1, sArg, sizeof sArg - 1);
    
    if(!sArg[0])
        return 1;
    
    formatex(gAdminTargetPassword[id], sizeof gAdminTargetPassword[] - 1, sArg);
    
    console_print(id, "Successfuly saved password : ^"%s^" for specified admin!", gAdminTargetPassword[id]);
    return 1;
}

public cmdAdminRemove(id)
{
    static iMenu;
    iMenu = menu_create("\yAdmins manager (\wRemove Admin\y):", "RemoveMenuHandler");
    
    static sBuffer[128], sTempItem[128];
    static sTemp[4][STR_LEN];
    
    static iFileP;
    iFileP = fopen(gAdminsFile, "rt");
    
    while(!feof(iFileP))
    {
        fgets(iFileP, sBuffer, sizeof sBuffer - 1);
        
        if((strlen(sBuffer) < 3) || sBuffer[0] == ';')
            continue;
        
        parse(sBuffer, sTemp[0], sizeof sTemp[] - 1, sTemp[1], sizeof sTemp[] - 1, sTemp[2], sizeof sTemp[] - 1, sTemp[3], sizeof sTemp[] - 1);
        
        for(new j = 0 ; j < sizeof sTemp ; j++)
        {
            remove_quotes(sTemp[j]);
        }
        
        formatex(sTempItem, sizeof sTempItem - 1, "\w%s\r|\w%s\r|\w%s\r|\w%s\r", sTemp[0], sTemp[1], sTemp[2], sTemp[3]);
        
        menu_additem(iMenu, sTempItem, "", 0, -1);
    }
    fclose(iFileP);
    
    menu_addblank(iMenu, 0);
    menu_display(id, iMenu, 0);
}

public RemoveMenuHandler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        cmdAdminsManage(id);
        return 1;
    }
    
    static iAccess, iCallback;
    static sBuffer[128], sTemp[STR_LEN];
    menu_item_getinfo(menu, item, iAccess, "", 0, sBuffer, sizeof sBuffer - 1, iCallback);
    
    strtok(sBuffer, sTemp, sizeof sTemp - 1, sBuffer, sizeof sBuffer - 1, '|');
    
    replace(sTemp, sizeof sTemp - 1, "\w", "");
    replace(sTemp, sizeof sTemp - 1, "\r", "");
    trim(sTemp);
    
    static iFileP;
    iFileP = fopen(gAdminsFile, "rt");
    
    static sTempAccount[STR_LEN];
    new i;
    
    while(!feof(iFileP))
    {
        fgets(iFileP, sBuffer, sizeof sBuffer - 1);
        
        i++;
        
        if((strlen(sBuffer) < 3) || sBuffer[0] == ';')
            continue;
        
        parse(sBuffer, sTempAccount, sizeof sTempAccount - 1);
        
        remove_quotes(sTempAccount);
        
        if(equali(sTempAccount, sTemp))
        {
            format(sBuffer, sizeof sBuffer - 1, ";%s", sBuffer);
            write_file(gAdminsFile, sBuffer, i - 1);
            break;
        }
    }
    fclose(iFileP);
    client_print(id, print_chat, "Successfuly removed ^"%s^" from admins list!", sTemp);
    server_cmd("amx_reloadadmins");
    
    return 1;
}

public cmdAdminEdit(id)
{
    static iMenu;
    iMenu = menu_create("\yAdmins manager (\wEdit Admin\y):", "EditMenuHandler");
    
    static sBuffer[128], sTempItem[128];
    static sTemp[4][STR_LEN];
    
    static iFileP;
    iFileP = fopen(gAdminsFile, "rt");
    
    while(!feof(iFileP))
    {
        fgets(iFileP, sBuffer, sizeof sBuffer - 1);
        
        if((strlen(sBuffer) < 3) || sBuffer[0] == ';')
            continue;
        
        parse(sBuffer, sTemp[0], sizeof sTemp[] - 1, sTemp[1], sizeof sTemp[] - 1, sTemp[2], sizeof sTemp[] - 1, sTemp[3], sizeof sTemp[] - 1);
        
        for(new j = 0 ; j < sizeof sTemp ; j++)
        {
            remove_quotes(sTemp[j]);
        }
        
        formatex(sTempItem, sizeof sTempItem - 1, "\w%s\r|\w%s\r|\w%s\r|\w%s\r", sTemp[0], sTemp[1], sTemp[2], sTemp[3]);
        
        menu_additem(iMenu, sTempItem, "", 0, -1);
    }
    fclose(iFileP);
    
    menu_addblank(iMenu, 0);
    menu_display(id, iMenu, 0);
}

public EditMenuHandler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        cmdAdminsManage(id);
        
        for(new j = 0 ; j < sizeof gAdminTargetDetails[] ; j++)
            formatex(gAdminTargetDetails[id][j], sizeof gAdminTargetDetails[][] - 1, "");
        
        return 1;
    }
    
    static iAccess, iCallback;
    static sBuffer[128];
    menu_item_getinfo(menu, item, iAccess, "", 0, sBuffer, sizeof sBuffer - 1, iCallback);
    
    str_piece(id, sBuffer, gAdminTargetDetails, sizeof gAdminTargetDetails[], sizeof gAdminTargetDetails[][] - 1, '|');
    
    for(new j = 0 ; j < sizeof gAdminTargetDetails[] ; j++)
    {
        replace(gAdminTargetDetails[id][j], sizeof gAdminTargetDetails[][] - 1, "\w", "");
        replace(gAdminTargetDetails[id][j], sizeof gAdminTargetDetails[][] - 1, "\r", "");
        trim(gAdminTargetDetails[id][j]);
    }
    cmdAdminEditSubMenu(id);
    return 1;
}

public cmdAdminEditSubMenu(id)
{
    static iMenu, sTemp[STR_LEN];
    formatex(sTemp, sizeof sTemp - 1, "\yAdmins Manager(\wEdit Admin \r%s\y):", gAdminTargetDetails[id][0]);
    
    iMenu = menu_create(sTemp, "EditSubMenuHandler");
    
    menu_additem(iMenu, "\wEdit account name", "1", 0, -1);
    menu_additem(iMenu, "\wEdit password", "2", 0, -1);
    menu_additem(iMenu, "\wEdit flags", "3", 0 , -1);
    menu_additem(iMenu, "\wEdit access flags", "4", 0, -1);
    menu_addblank(iMenu, 0);
    menu_additem(iMenu, "\wSave modification", "5", 0, -1);
    
    menu_addblank(iMenu, 0);
    menu_display(id, iMenu, 0);
}

public EditSubMenuHandler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        cmdAdminEdit(id);
        return 1;
    }
    
    static iAccess, iCallback;
    static sData[6];
    menu_item_getinfo(menu, item, iAccess, sData, sizeof sData - 1, _, _, iCallback);
    
    static iKey;
    iKey = str_to_num(sData);
    
    switch(iKey)
    {
        case 1:
        {
            set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
            show_hudmessage(id, "Type on console command: amx_adminaccount for details.");
        }
        case 2:
        {
            set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
            show_hudmessage(id, "Type on console command: amx_adminpassword for details.");
        }
        case 3:
        {
            gAccessFromEditMenu[id] = true;
            cmdAdminAddFlags(id);
            
            return 1;
        }
        case 4: { cmdAdminAddAccessFlags(id); return 1; }
        case 5: { cmdSaveAdminModification(id); return 1; }
    }
    menu_display(id, menu, 0);
    return 1;
}

public cmdAdminAccount(id, level, cid)
{
    if(!cmd_access(id, level, cid, 2))
        return 1;
    
    static sArg[64];
    read_argv(1, sArg, sizeof sArg - 1);
    
    if(!sArg[0])
        return 1;
    
    formatex(gAdminTargetAccount[id], sizeof gAdminTargetAccount[] - 1, sArg);
    
    console_print(id, "Successfuly saved account : ^"%s^" for specified admin.", gAdminTargetAccount[id]);
    return 1;
}

public cmdAdminAddAccessFlags(id)
{
    static iMenu;
    iMenu = menu_create("\yAdmins manager (\wEdit Admin access flags):", "AddAccessFlagsMenuHandler");
    
    static sTemp[128];
    
    for(new i = 0 ; i < sizeof gAdminAccessFlags ; i++)
    {
        formatex(sTemp, sizeof sTemp - 1, "%s - \y%s", gAdminAccessFlags[i], gAdminAccessFlagsDetails[i]);
        menu_additem(iMenu, sTemp, "", 0, -1);
    }
    menu_addblank(iMenu, 0);
    menu_display(id, iMenu, 0);
}

public AddAccessFlagsMenuHandler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        cmdAdminEditSubMenu(id);
        return 1;
    }
    
    static iAccess, iCallback;
    static sTemp[32], sBuffer[10];
    menu_item_getinfo(menu, item, iAccess, "", 0, sTemp, sizeof sTemp - 1, iCallback);
    
    strtok(sTemp, sBuffer, sizeof sBuffer - 1, sTemp, sizeof sTemp - 1, '-', 1);
    
    if(containi(gAdminTargetAccessFlags[id], sBuffer) != -1)
        replace(gAdminTargetAccessFlags[id], sizeof gAdminTargetAccessFlags[] - 1, sBuffer, "");
    else
        format(gAdminTargetAccessFlags[id], sizeof gAdminTargetAccessFlags[] - 1, "%s%s", gAdminTargetAccessFlags[id], sBuffer);
    
    set_hudmessage(255, 255, 255, -1.0, 0.8, 0, 1.0, 2.0, 0.2, 0.1, 1);
    show_hudmessage(id, "Add Admin access flags : ^"%s^"", gAdminTargetAccessFlags[id]);
    
    menu_display(id, menu, 0);
    return 1;
}

public cmdSaveAdminModification(id)
{
    static iFileP;
    iFileP = fopen(gAdminsFile, "rt");
    
    static sBuffer[128], sTempAccount[4][STR_LEN];
    new i;
    
    while(!feof(iFileP))
    {
        fgets(iFileP, sBuffer, sizeof sBuffer - 1);
        
        i++;
        
        if((strlen(sBuffer) < 3) || sBuffer[0] == ';')
            continue;
        
        parse(sBuffer, sTempAccount[0], sizeof sTempAccount[] - 1, sTempAccount[1], sizeof sTempAccount[] - 1, sTempAccount[2], sizeof sTempAccount[] - 1, sTempAccount[3], sizeof sTempAccount[] - 1);
        
        for(new j = 0 ; j < sizeof sTempAccount ; j++)
        {
            remove_quotes(sTempAccount[j]);
        }
        
        if(equali(sTempAccount[0], gAdminTargetDetails[id][0]))
        {
            formatex(sBuffer, sizeof sBuffer - 1, "^"%s^" ^"%s^" ^"%s%^" ^"%s^"", gAdminTargetAccount[id][0] ? gAdminTargetAccount[id] : sTempAccount[0], gAdminTargetPassword[id][0] ? gAdminTargetPassword[id] : sTempAccount[1], gAdminTargetFlags[id][0] ? gAdminTargetFlags[id] : sTempAccount[2], gAdminTargetAccessFlags[id][0] ? gAdminTargetAccessFlags[id] : sTempAccount[3]);
            write_file(gAdminsFile, sBuffer, i - 1);
            break;
        }
    }
    fclose(iFileP);
    client_print(id, print_chat, "Successfuly edited admin account ^"%s^"!", gAdminTargetDetails[id][0]);
    server_cmd("amx_reloadadmins");
    
    formatex(gAdminTargetFlags[id], sizeof gAdminTargetFlags[] - 1, "");
    formatex(gAdminTargetPassword[id], sizeof gAdminTargetPassword[] - 1, "");
    formatex(gAdminTargetAccessFlags[id], sizeof gAdminTargetAccessFlags[] - 1, "");
    formatex(gAdminTargetAccount[id], sizeof gAdminTargetAccount[] - 1, "");
    
    return 1;
}

stock register_saycmd(saycommand[], function[], flags = -1, info[])
{
    static sTemp[64];
    formatex(sTemp, sizeof sTemp - 1, "say /%s", saycommand);
    register_clcmd(sTemp, function, flags, info);
    formatex(sTemp, sizeof sTemp - 1, "say .%s", saycommand);
    register_clcmd(sTemp, function, flags, info);
    formatex(sTemp, sizeof sTemp - 1, "say_team /%s", saycommand);
    register_clcmd(sTemp, function, flags, info);
    formatex(sTemp, sizeof sTemp - 1, "say_team .%s", saycommand);
    register_clcmd(sTemp, function, flags, info);
}

stock str_piece(index, const input[], output[][][], outputsize, piecelen, token = '|') //Stock by purple_pixie, edited by me. :D
{
    new i = -1, pieces, len = -1;
    
    while(input[++i] != 0)
    {
        if (input[i] != token)
        {
            if (++len < piecelen)
                output[index][pieces][len] = input[i];
        }
        else
        {
            output[index][pieces++][++len] = 0;
            len = -1;
            
            if(pieces == outputsize)
                return pieces;
        }
    }
    return pieces + 1;
}
请参考这个源码,在缐添加管理员的源码


献花 x0 回到顶端 [7 楼] From:未知地址 | Posted:2014-02-16 16:10 |
p62104821
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x1 鲜花 x55
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

很棒的插件
在其他伺服器有见过类似的插件,但是上网找并没有相关的插件 表情
不过我SQL差得要死....... 表情
比较希望有稍微完整的交学...... 表情

对了,你使用的SQL数据库是哪种的?

MySQL么?


献花 x0 回到顶端 [8 楼] From:台湾中华电信股份有限公司 | Posted:2014-02-16 16:36 |
周泊轮
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x3
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

这个好棒 狂储值 哈哈 希望里面的序号可以换成真的 用在其他线上游戏


献花 x0 回到顶端 [9 楼] From:台湾威达超舜电信多媒体股份有限公司 | Posted:2014-02-16 16:39 |

<<   1   2   3   4  下页 >>(共 4 页)
首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.074775 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言