Helló én hozzá írtam csak nem menüből hanem chat vagy konzolból lehet adni játékosnak prefxet..
Parancs: say /prefix játékos prefix
amx_addprefix játékos prefix
Tesztelni nem teszteltem de kéne működnie... ééés el is menti mikor épp hozzáadunk valakinek prefixet sqlbe.. ezért szükséges lesz elkészíteni manuálisan az sql táblát hozzá prefixek néven amiben 2 oszlop szerepeljen, steamid, prefix (Mindkettő szöveges oszlop legyen!! Azaz VARCHAR) . Ha valami probléma lenne vele irj privibe vagy itt és kijavítom.
Kód: #include <amxmodx> #include <amxmisc> #include <cstrike> #include <csstats> #include <sqlx> #pragma tabsize 0 #define PLUGIN "Rankrendszer (HUD + prefix)" #define VERSION "1.5" #define AUTHOR "6lmasok,qKKKJ;>, RaZ_HU" ///Szerk:. Jucika #define ACCESS_LEVEL ADMIN_CHAT #define ADMIN_LISTEN ADMIN_CHAT #define RANK_SILVER 0 #define RANK_SILVER2 1 #define RANK_SILVER3 2 #define RANK_SILVER4 3 #define RANK_SILVERE 4 #define RANK_SILVEREM 5 #define RANK_NOVA 6 #define RANK_NOVA2 7 #define RANK_NOVA3 8 #define RANK_NOVAM 9 #define RANK_AK 10 #define RANK_AK2 11 #define RANK_DAK 12 #define RANK_SHERIFF 13 #define RANK_SAS 14 #define RANK_SASM 15 #define RANK_SUPREME 16 #define RANK_GLOBAL 17 #define RANK_UBER 18 #define MAXRANKS 19
new message[192] new strName[191] new strText[191] new sayText new teamInfo new maxPlayers new PlayerRank[33] new bool: g_bHud[ 33 ] new Float:HUD_INTERVAL new static color[10] // prefix cucc new g_prefix[33][100], bool:g_hasprefix[33], g_authid[33][100] new Handle:g_SqlTuple
new const g_HOST[] = "" new const g_USERNAME[] = "" new const g_PASSWORD[] = "" new const g_DATABASE[] = ""
new const RANKS[MAXRANKS][] = { "Ăšjonc", "AmatĹ‘r", "HaladĂł", "Tud valamit", "Tag", "Gyilkos", "VĂ©rbeli gyilkos", "AlázĂł", "Profi", "Ĺrűlt", "KĂmĂ©letlen", "LegyĹ‘zhetetlen", "Psychopata", "FĂ©l Isten", "RadioaktĂv állat", "Pokolfajzat", "Ĺstag", "ĹskövĂĽlet", "LEGENDA" } #define size 18 new const szamok[size] = { 150, 300, 450, 550, 700, 800, 1250, 1500, 1700, 1950, 2300, 2550, 2600, 2900, 3300, 3600, 4100, 8000, } public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) g_SqlTuple = SQL_MakeDbTuple(g_HOST, g_USERNAME, g_PASSWORD, g_DATABASE) register_clcmd("say /prefix", "chat_prefix", ADMIN_IMMUNITY, "Celpont Prefix") register_clcmd("say /rang", "hud") register_clcmd("say rang", "hud") register_clcmd( "say /rangok", "cmdRangs" ); register_clcmd( "say /hud", "cmdHud" ); register_clcmd ("say", "hook_say") register_clcmd ("say_team", "hook_teamsay") register_concmd("amx_addprefix", "console_prefix", ADMIN_IMMUNITY, "Celpont Prefix") register_cvar("sv_rankrendszer","1") // A plugin be- illetve kikapcsolása register_cvar("sv_rankrendszer_HUD","1") // A HUD-ra valĂł kijelzĂ©s be- illetve kikapcsolása sethudtime() sayText = get_user_msgid ("SayText") teamInfo = get_user_msgid ("TeamInfo") maxPlayers = get_maxplayers() set_task(160.0, "korUzenet", 0, _, _, "b") register_message (sayText, "avoid_duplicated") } public cmdRangs( iPlayerId ) { static iLen = 0, sMotd[ 2048 ], iMotdLen = charsmax( sMotd ); iLen = formatex( sMotd, iMotdLen, "<meta charset=utf-8><style>table{color:#FFB000;} td,th{border:1px solid #666;text-align:center;}</style><body bgcolor=#000000><center><table width='400'><tr><th>Rang</th><th>Ă–lĂ©s</th><tr>" ); iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "<tr><td>%s</td><td>0</td><tr>", RANKS[ 0 ] ); for ( new i; i < size; ++i ) iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "<tr><td>%s</td><td>%d</td><tr>", RANKS[ i + 1 ], szamok[ i ] ); show_motd( iPlayerId, sMotd, "Rangrendszer infĂł" ); } public cmdHud( iPlayerId ) { ColorChat( iPlayerId, "^1A hud kijelzĹ‘ ^3%skapcsolva^1!", ( g_bHud[ iPlayerId ] ^= true ) ? "be" : "ki" ); if ( !g_bHud[ iPlayerId ] ) remove_task( iPlayerId ); else { if ( !task_exists( iPlayerId ) ) set_task( HUD_INTERVAL, "setDisplay", iPlayerId ); } } public sethudtime() { new refreshtime = register_cvar("sv_rankrendszer_HUDtime","0.9") // A HUD-ra valĂł kijelzĂ©s frissĂtĂ©si ideje másodpercben if (refreshtime == 0.9) { HUD_INTERVAL = 0.9 } else if (refreshtime != 0.9) { HUD_INTERVAL = get_pcvar_float(refreshtime) } return PLUGIN_CONTINUE } public avoid_duplicated (msgId, msgDest, receiver) { return PLUGIN_HANDLED } public korUzenet() { ColorChat( 0, "^3ĂŤrd be ^4/rang ^3vagy ^4rang ^3hogy megnĂ©zd hány ölĂ©s kell a következĹ‘ ranghoz.") return PLUGIN_HANDLED; } public hud(id) { new stats[8] new bodyhits[8] get_user_stats(id, stats, bodyhits) ColorChat( id, "^4Rangod: ^3%s ^1| ^4Ă–lĂ©sek: ^3%d",RANKS[PlayerRank[id]], stats[0]) if(PlayerRank[id] == MAXRANKS-1) { //client_print(id, print_chat, "^4Rangod: ^3%s ^1| ^4Ă–lĂ©sek: ^3%d ^n^4A következĹ‘ szinthez kell mĂ©g: ^3%d",RANKS[PlayerRank[id]], stats[0],szamok[PlayerRank[id]]-stats[0]) ColorChat( id, "^4Már elĂ©rted a legnagyobb ^4rangot.") } else { //client_print(id, print_chat, "^4Rangod: ^3%s ^1| ^4Ă–lĂ©sek: ^3%d ^n^4Már elĂ©rted a legnagyobb rangot.",RANKS[PlayerRank[id]], stats[0]) ColorChat( id, "^4KövetkezĹ‘ rang: ^3%s ^1| ^4A következĹ‘ szinthez kell mĂ©g: ^3%d",RANKS[PlayerRank[id]+1], szamok[PlayerRank[id]]-stats[0]) } } public hook_say(id) { read_args (message, 191) remove_quotes (message) if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, "")) // Ignores Admin Hud Messages, Admin Slash commands, return PLUGIN_CONTINUE new name[32] get_user_name (id, name, 31) new isAlive, alive[32] if (is_user_alive (id)) { isAlive = 1 alive = "^1*Él*" } else { isAlive = 0 alive = "^1*Halott* " } //static color[10] if(get_user_flags(id)&ADMIN_CVAR) { //get_user_team (id, color, 9) getTeam(id) format (strName, 191, "%s^3[Tulaj]^4[%s] ^3%s:", alive, RANKS[PlayerRank[id]], name) format (strText, 191, "^4%s", message) } else if(get_user_flags(id)&ADMIN_MAP) { getTeam(id) format (strName, 191, "%s^4[Admin][%s] ^3%s:", alive, RANKS[PlayerRank[id]], name) format (strText, 191, "^4%s", message) } else if(get_user_flags(id)&ADMIN_MENU) { getTeam(id) format (strName, 191, "%s^4[Vip][%s] ^3%s:", alive, RANKS[PlayerRank[id]], name) format (strText, 191, "^4%s", message) } else if(get_user_flags(id)&ADMIN_USER) { getTeam(id) format (strName, 191, "%s^4[%s] ^3%s:",alive, RANKS[PlayerRank[id]], name) format (strText, 191, "^1%s", message) } else if(g_hasprefix[id]) { getTeam(id) format (strName, 191, "%s^4[%s][%s] ^3%s:",alive, g_prefix[id], RANKS[PlayerRank[id]], name) format (strText, 191, "^1%s", message) } format (message, 191, "%s ^1%s", strName, strText) sendMessage (color, isAlive) return PLUGIN_CONTINUE } public hook_teamsay(id) { new playerTeam = get_user_team(id) new playerTeamName[19] switch (playerTeam) { case 1: copy (playerTeamName, 11, "Terrorista") case 2: copy (playerTeamName, 18, "Anti-Terrorista") default: copy (playerTeamName, 9, "NĂ©zĹ‘") } read_args (message, 191) remove_quotes (message) if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, "")) return PLUGIN_CONTINUE new isAlive, alive[32] if (is_user_alive (id)) { isAlive = 1 alive = "^1*Él*" } else { isAlive = 0 alive = "^1*Halott* " } new name[32] get_user_name (id, name, 31) //static color[10] if(get_user_flags(id)&ADMIN_CVAR) { //get_user_team (id, color, 9) getTeam(id) format (strName, 191, "%s(%s)^3[Tulaj]^3[%s] ^3%s:",alive , playerTeamName, RANKS[PlayerRank[id]], name) format (strText, 191, "^4%s", message) } else if(get_user_flags(id)&ADMIN_MAP) { getTeam(id) format (strName, 191, "%s(%s)^4[Admin][%s] ^3%s:",alive , playerTeamName, RANKS[PlayerRank[id]], name) format (strText, 191, "^4%s", message) } else if(get_user_flags(id)&ADMIN_MENU) { getTeam(id) format (strName, 191, "%s(%s)^4[Vip][%s] ^3%s:",alive , playerTeamName, RANKS[PlayerRank[id]], name) format (strText, 191, "^4%s", message) } else if(get_user_flags(id)&ADMIN_USER) { getTeam(id) format (strName, 191, "%s(%s)^4[%s] ^3%s:",alive ,playerTeamName, RANKS[PlayerRank[id]], name) format (strText, 191, "^1%s", message) } else if(g_hasprefix[id]) { getTeam(id) format (strName, 191, "%s(%s)^4[%s][%s] ^3%s:",alive ,playerTeamName, g_prefix[id], RANKS[PlayerRank[id]], name) format (strText, 191, "^1%s", message) } format (message, 191, "%s ^1%s", strName, strText) sendTeamMessage (color,isAlive, playerTeam) return PLUGIN_CONTINUE } public sendMessage (color[], alive) { new teamName[10] for (new player = 1; player < maxPlayers; player++) { if (!is_user_connected(player)) continue if((alive && is_user_alive(player)) || (!alive && !is_user_alive(player)) || (get_user_flags(player) && ADMIN_LISTEN)) { get_user_team (player, teamName, 9) changeTeamInfo (player, color) writeMessage (player, message) changeTeamInfo (player, teamName) } } } public sendTeamMessage (color[], alive, playerTeam) { new teamName[10] for (new player = 1; player < maxPlayers; player++) { if (!is_user_connected(player)) continue if (get_user_team(player) == playerTeam || get_user_flags(player) & ADMIN_LISTEN) { if (alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_user_flags(player) & ADMIN_LISTEN) { get_user_team (player, teamName, 9) changeTeamInfo (player, color) writeMessage (player, message) changeTeamInfo (player, teamName) } } } } public changeTeamInfo (player, team[]) { message_begin (MSG_ONE, teamInfo, _, player) write_byte (player) write_string (team) message_end() } public writeMessage (player, message[]) { message_begin (MSG_ONE, sayText, {0, 0, 0}, player) write_byte (player) write_string (message) message_end () } stock bool:is_user_steam(id) { static dp_pointer; if (dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider"))) { server_cmd("dp_clientinfo %d", id); server_exec(); return (get_pcvar_num(dp_pointer) == 2) ? true : false; } return false; } public client_putinserver(id) { if(get_cvar_num("sv_rankrendszer")==0) { return PLUGIN_HANDLED } else if (get_cvar_num("sv_rankrendszer")==1 && get_cvar_num("sv_rankrendszer_HUD")==1) { g_bHud[ id ] = true; set_task(HUD_INTERVAL, "setDisplay", id) } else { set_task(0.5, "remTask", id) } get_user_authid(id, g_authid[id], charsmax(g_authid)) sql_load_user(id) return PLUGIN_CONTINUE } public client_disconnect(id) { if(is_user_bot(id)) return g_hasprefix[id] = false g_prefix[id] = "" g_authid[id] = "" } public remTask(id) { remove_task(id, 0) } public getTeam(id) { get_user_team (id, color, 9) } public setDisplay(id) { if(!is_user_connected(id)) return PLUGIN_CONTINUE new stats[8] new bodyhits[8] get_user_stats(id, stats, bodyhits) if(stats[0] < 50) { PlayerRank[id] = RANK_SILVER } else if(stats[0] >= 50 && stats[0] < 200) { PlayerRank[id] = RANK_SILVER2 } else if(stats[0] >= 200 && stats[0] < 350) { PlayerRank[id] = RANK_SILVER3 } else if(stats[0] >= 350 && stats[0] < 450) { PlayerRank[id] = RANK_SILVER4 } else if(stats[0] >= 450 && stats[0] < 600) { PlayerRank[id] = RANK_SILVERE } else if(stats[0] >= 600 && stats[0] < 800) { PlayerRank[id] = RANK_SILVEREM } else if(stats[0] >= 800 && stats[0] < 1150) { PlayerRank[id] = RANK_NOVA } else if(stats[0] >= 1150&& stats[0] < 1400) { PlayerRank[id] = RANK_NOVA2 } else if(stats[0] >= 1400 && stats[0] < 1600) { PlayerRank[id] = RANK_NOVA3 } else if(stats[0] >= 1600 && stats[0] < 1850) { PlayerRank[id] = RANK_NOVAM } else if(stats[0] >= 1850 && stats[0] < 2200) { PlayerRank[id] = RANK_AK } else if(stats[0] >= 2200 && stats[0] < 2450) { PlayerRank[id] = RANK_AK2 } else if(stats[0] >= 2450 && stats[0] < 2600) { PlayerRank[id] = RANK_DAK } else if(stats[0] >= 2600 && stats[0] < 2800) { PlayerRank[id] = RANK_SHERIFF } else if(stats[0] >= 2800 && stats[0] < 3200) { PlayerRank[id] = RANK_SAS } else if(stats[0] >= 3200 && stats[0] < 3500) { PlayerRank[id] = RANK_SASM } else if(stats[0] >= 3500 && stats[0] < 4000) { PlayerRank[id] = RANK_SUPREME } else if(stats[0] >= 4000 && stats[0] < 4500) { PlayerRank[id] = RANK_GLOBAL } else if(stats[0] >= 4500) { PlayerRank[id] = RANK_UBER } set_hudmessage(random_num(15, 255), random_num(15, 255), random_num(15, 255), 0.01, 0.20, 0, 6.0, 1.0, 0.0, 0.0, -1) show_hudmessage(id, "^nĂ–lĂ©seid: %i^nRangod: %s^nParancsok: /rang, /rangok, /hud", stats[0], RANKS[PlayerRank[id]]) //show_hudmessage(id, "%s ^nĂ–lĂ©sek: %i ^nRang: %s", name, stats[0], RANKS[PlayerRank[id]]) set_task(HUD_INTERVAL, "setDisplay", id) return PLUGIN_CONTINUE } public chat_prefix(id, lvl, cid) { if(!cmd_access(id, lvl, cid, 0)) return PLUGIN_HANDLED new Arg1[40], Arg2[40] read_argv(1, Arg1, charsmax(Arg1)) read_argv(2, Arg2, charsmax(Arg2)) new player = cmd_target(id, Arg1, 1) if (!player) return PLUGIN_HANDLED if(g_hasprefix[player]) { g_prefix[player] = Arg2 g_hasprefix[player] = true sql_user(player, 0) return PLUGIN_HANDLED } g_prefix[player] = Arg2 g_hasprefix[player] = true sql_user(player, 1) return PLUGIN_HANDLED } public console_prefix(id, lvl, cid) { if(!cmd_access(id, lvl, cid, 0)) return PLUGIN_HANDLED new Arg1[40], Arg2[40] read_argv(1, Arg1, charsmax(Arg1)) read_argv(2, Arg2, charsmax(Arg2)) new player = cmd_target(id, Arg1, 1) if (!player) return PLUGIN_HANDLED if(g_hasprefix[player]) { g_prefix[player] = Arg2 g_hasprefix[player] = true sql_user(player, 0) return PLUGIN_HANDLED } g_prefix[player] = Arg2 g_hasprefix[player] = true sql_user(player, 1) return PLUGIN_HANDLED } public sql_user(player, mode) { static Query[256]
if(mode == 0) formatex(Query, charsmax(Query), "UPDATE `prefixek` SET `prefix` = '%s' WHERE `steamid` = '%s';", g_prefix[player], g_authid[player]); else formatex(Query, charsmax(Query), "INSERT INTO `prefixek` (`steamid`, `prefix`) VALUES ('%s', '%s');", g_authid[player], g_prefix[player]); SQL_ThreadQuery(g_SqlTuple, "sql_user_thr", Query); } public sql_user_thr(FailState, Handle:Query, Error[], Errcode, DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) { log_amx("%s", Error); return; } } public sql_load_user(id) { static Query[512]; static szData[2] szData[0] = id szData[1] = get_user_userid(id) formatex(Query, charsmax(Query), "SELECT * FROM `prefixek` WHERE `authid` = '%s';", g_authid[id]) SQL_ThreadQuery(g_SqlTuple, "sql_load_user_thr", Query, szData, 2) } public sql_load_user_thr(FailState, Handle:Query, Error[], Errcode, szData[], DataSize, Float:Queuetime) { if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) { log_amx("%s", Error); return; } else { new id = szData[0] if(szData[1] != get_user_userid(id)) return if(SQL_NumRows(Query) > 0) { SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "prefix"), g_prefix[id], charsmax(g_prefix[])) g_hasprefix[id] = true } } } stock ColorChat(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^4"); // Green Color replace_all(msg, 190, "!y", "^1"); // Default Color replace_all(msg, 190, "!t", "^3"); // Team Color if (id) players[0] = id; else get_players(players, count, "ch"); { for (new i = 0; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } } }
|