Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- new Trie:g_tClassName, Trie:g_tClassAccessFlag
- new g_szPlayerClassName[33][32], bool:g_bCustomClass[33]
- new const gc_szFilePath[] = "addons/amxmodx/configs/say_classes.ini"
- new const gc_szCharReplacements[][][] = {
- { "!n", "^x01" },
- { "!t", "^x03" },
- { "!g", "^x04" }
- }
- public plugin_init() {
- register_plugin("Say Classes", "2.0", "Autor")
- register_message(get_user_msgid("SayText"), "h_msgSayText")
- }
- public h_msgSayText(MsgID, MsgDest, MsgEnt) {
- new index = get_msg_arg_int(1)
- if(is_user_connected(index) && g_bCustomClass[index]) {
- new szTemp[192], szTemp2[192]
- get_msg_arg_string(2, szTemp, sizeof(szTemp) - 1)
- if(equal(szTemp, "#Cstrike_Chat_All")) {
- add(szTemp2, sizeof(szTemp2) - 1, g_szPlayerClassName[index])
- add(szTemp2, sizeof(szTemp2) - 1, " ^x03 %s1^x01 : %s2");
- set_msg_arg_string(2, szTemp2)
- }
- }
- return PLUGIN_CONTINUE
- }
- public plugin_cfg() {
- g_tClassName = TrieCreate()
- g_tClassAccessFlag = TrieCreate()
- LoadClasses()
- }
- public LoadClasses() {
- if(!file_exists(gc_szFilePath))
- {
- write_file(gc_szFilePath, "; Primer dodavanja klase")
- write_file(gc_szFilePath, "; ^"STEAM ID^" ^"Klasa^" ^"flag^"")
- write_file(gc_szFilePath, "; Maksimalna duzina linije moze biti 64 znaka (24 za steam id, 32 za klasu i 1 za flag (+ ostali znakovi))")
- write_file(gc_szFilePath, "; Boje koje se mogu koristiti: !t - boja tima, !g - zelena, !n - default (narandzasta)")
- write_file(gc_szFilePath, "; ^"STEAM_0:1:12345^" ^"!g[!tClass !nname!g]^" ^"a^"")
- }
- new szContent[64], szSteamID[24], szClassName[32], cFlag[2], iFlag
- new pFile = fopen(gc_szFilePath, "r")
- while(!feof(pFile)) {
- fgets(pFile, szContent, sizeof(szContent) - 1)
- if(szContent[0] == ';' || strlen(szContent) < 34) continue
- if(parse(szContent, szSteamID, sizeof(szSteamID) - 1, szClassName, sizeof(szClassName) - 1, cFlag, sizeof(cFlag) - 1) > 1) {
- CleanUpColors(szClassName, sizeof(szClassName) - 1)
- TrieSetString(g_tClassName, szSteamID, szClassName)
- if(strlen(cFlag) > 0) {
- iFlag = read_flags(cFlag)
- TrieSetCell(g_tClassAccessFlag, szSteamID, iFlag)
- }
- } else {
- log_amx("Invalid data supplied to parse function: [%s]", szContent)
- }
- }
- fclose(pFile)
- }
- public client_putinserver(id) {
- new szSteamID[24], FLAG
- g_bCustomClass[id] = false
- g_szPlayerClassName[id][0] = '^0'
- get_user_authid(id, szSteamID, sizeof(szSteamID) - 1)
- if(TrieGetString(g_tClassName, szSteamID, g_szPlayerClassName[id], sizeof(g_szPlayerClassName[]) - 1)) {
- if(TrieGetCell(g_tClassAccessFlag, szSteamID, FLAG)) {
- if(get_user_flags(id) & FLAG) {
- g_bCustomClass[id] = true
- }
- else {
- g_szPlayerClassName[id][0] = '^0'
- }
- } else {
- g_bCustomClass[id] = true
- }
- }
- }
- public plugin_end() {
- TrieDestroy(g_tClassName)
- TrieDestroy(g_tClassAccessFlag)
- }
- stock CleanUpColors(in[], iLen) {
- for(new i = 0; i < sizeof(gc_szCharReplacements); i++) {
- replace_all(in, iLen, gc_szCharReplacements[i][0], gc_szCharReplacements[i][1])
- }
- format(in, iLen, "^x01%s^x01", in)
- }
Advertisement
Add Comment
Please, Sign In to add comment