廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 9101 個閱讀者
 
<<   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 雅幣已有 85 人購買]
若發現會員採用欺騙的方法獲取財富,請立刻舉報,我們會對會員處以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.030300 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言