引用 | 編輯
z2352671213
2014-02-15 16:50 |
樓主
▼ |
||
x3
【插件資訊】插件來源:原創 使用指令:按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! x2
|
引用 | 編輯
z2352671213
2014-02-15 17:00 |
2樓
▲ ▼ |
引用 | 編輯
z2352671213
2014-02-15 17:05 |
3樓
▲ ▼ |
引用 | 編輯
z2352671213
2014-02-16 10:59 |
5樓
▲ ▼ |
引用 | 編輯
z2352671213
2014-02-16 16:10 |
7樓
▲ ▼ |
下面是引用 e1242656 於 2014-02-16 15:29 發表的 : 複製程式 #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 |
引用 | 編輯
p62104821
2014-02-16 16:36 |
8樓
▲ ▼ |
很棒的插件
在其他伺服器有見過類似的插件,但是上網找並沒有相關的插件 不過我SQL差得要死....... 比較希望有稍微完整的交學...... 對了,你使用的SQL數據庫是哪種的? MySQL麼? x0 |
引用 | 編輯
z2352671213
2014-02-18 09:24 |
11樓
▲ ▼ |
引用 | 編輯
dog91311
2014-02-18 10:17 |
12樓
▲ ▼ |
不好意思...請問一下....
ilovekyo是什麼檔案 test1是什麼檔案 可以說明一下這2個是什麼檔案嗎?謝謝. x0 |
引用 | 編輯
z2352671213
2014-02-18 14:49 |
13樓
▲ ▼ |
引用 | 編輯
yeungchun2
2014-02-21 16:29 |
14樓
▲ ▼ |
有什麼用途
x0 |
引用 | 編輯
z2352671213
2014-02-21 22:11 |
16樓
▲ ▼ |
引用 | 編輯
1661066267
2014-03-15 19:18 |
17樓
▲ ▼ |
看看支持下...........
x0 |
引用 | 編輯
a543658883
2014-03-16 13:48 |
18樓
▲ ▼ |
我還以爲會自動生成卡密和卡號 看了SMA發現就只有判斷|有點水平
x0 |
引用 | 編輯
z2352671213
2014-03-18 14:53 |
19樓
▲ ▼ |
引用 | 編輯
z2352671213
2014-03-25 14:54 |
21樓
▲ ▼ |
引用 | 編輯
zxzyman
2014-05-01 10:06 |
22樓
▲ ▼ |
除值的條件是什麼.
就是如何得到卡號 和密碼.... 用在zp上 要怎麼讓插件 讀取人類的道具 就是我希望 除值後 能購買"人類道具" (像是我發得改良AK ↓ ) 好像有點困難XD x0 |
引用 | 編輯
z2352671213
2014-05-01 15:36 |
23樓
▲ ▼ |
下面是引用 zxzyman 於 2014-05-01 10:06 發表的 Re:0威】[SQL]充值卡系統的完美設想!!原創~: 我覺得並不困難。如果是在ZP上,也可以輕鬆獲得道具。 比如使用接口。 判斷玩家輸入正確的卡ID和PW後,通過與其他武器插件的接口來讓玩家獲得指定的武器,或者用隨機數加上swtich -- case來隨機選擇,然後不同的case裏是對應不同的武器的接口。這樣顯得更加真實。不過如果是武器的話,可能不太值得(除非是永久使用權),如果是經驗的話會更好。 x0 |
引用 | 編輯
dengjacky123
2014-05-15 17:53 |
24樓
▲ ▼ |
好想下載試一下
x0 |
引用 | 編輯
a23107971a
2016-05-10 11:30 |
26樓
▲ ▼ |
原來這個也可以寫的出來,我學程才到一滴就快不能理解了說。
x0 |