My mistake. sorry.TheRedShoko написа: ↑11 Окт 2018, 16:01Try like this.Код за потвърждение: Избери целия код
#include <amxmodx> #include <amxmisc> #if AMXX_VERSION_NUM < 183 #include <dhudmessage> #endif #define PLUGIN_VERSION "2.0" enum _: Settings { ACN_ADMIN_FLAG[2], Float:ACN_TASK_TIME, ACN_CONNECT_SOUND, ACN_SOUND_DIR[128], ACN_HUD_TYPE, ACN_HUD_R_COLOR, ACN_HUD_G_COLOR, ACN_HUD_B_COLOR, Float:ACN_HUD_X_POS, Float:ACN_HUD_Y_POS, ACN_HUD_EFFECTS, Float:ACN_HUD_EFFECTS_TIME, Float:ACN_HUD_TIME, ACN_HUD_TEXT[192] } new g_eSettings[Settings] public plugin_init() { register_plugin("Admin Connect Name", PLUGIN_VERSION, "Unbr3akable") register_cvar("AdminConnectName", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED) } public plugin_precache() readfile() readfile() { new szConfigsName[256], szFileName[256] get_configsdir(szConfigsName, charsmax(szConfigsName)) formatex(szFileName, charsmax(szFileName), "%s/AdminConnectName.ini", szConfigsName) new iFilePointer = fopen(szFileName, "rt") if(iFilePointer) { new szData[160], szKey[32], szValue[128] while(!feof(iFilePointer)) { fgets(iFilePointer, szData, charsmax(szData)) trim(szData) switch(szData[0]) { case EOS, ';': continue default: { strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=') trim(szKey); trim(szValue) if(is_blank(szValue)) continue if(equal(szKey, "ACN_ADMIN_FLAG")) copy(g_eSettings[ACN_ADMIN_FLAG], charsmax(g_eSettings[ACN_ADMIN_FLAG]), szValue) else if(equal(szKey, "ACN_TASK_TIME")) g_eSettings[ACN_TASK_TIME] = _:str_to_float(szValue) else if(equal(szKey, "ACN_CONNECT_SOUND")) g_eSettings[ACN_CONNECT_SOUND] = clamp(str_to_num(szValue), 0, 1) else if(equal(szKey, "ACN_SOUND_DIR")) { copy(g_eSettings[ACN_SOUND_DIR], charsmax(g_eSettings[ACN_SOUND_DIR]), szValue) precache_sound(szValue) } else if(equal(szKey, "ACN_HUD_TYPE")) g_eSettings[ACN_HUD_TYPE] = clamp(str_to_num(szValue), 0, 1) else if(equal(szKey, "ACN_HUD_R_COLOR")) g_eSettings[ACN_HUD_R_COLOR] = clamp(str_to_num(szValue), 0, 255) else if(equal(szKey, "ACN_HUD_G_COLOR")) g_eSettings[ACN_HUD_G_COLOR] = clamp(str_to_num(szValue), 0, 255) else if(equal(szKey, "ACN_HUD_B_COLOR")) g_eSettings[ACN_HUD_B_COLOR] = clamp(str_to_num(szValue), 0, 255) else if(equal(szKey, "ACN_HUD_X_POS")) g_eSettings[ACN_HUD_X_POS] = _:floatclamp(str_to_float(szValue), -1.0, 1.0) else if(equal(szKey, "ACN_HUD_Y_POS")) g_eSettings[ACN_HUD_Y_POS] = _:floatclamp(str_to_float(szValue), -1.0, 1.0) else if(equal(szKey, "ACN_HUD_EFFECTS")) g_eSettings[ACN_HUD_EFFECTS] = clamp(str_to_num(szValue), 0, 2) else if(equal(szKey, "ACN_HUD_EFFECTS_TIME")) g_eSettings[ACN_HUD_EFFECTS_TIME] = _:str_to_float(szValue) else if(equal(szKey, "ACN_HUD_TIME")) g_eSettings[ACN_HUD_TIME] = _:str_to_float(szValue) else if(equal(szKey, "ACN_HUD_TEXT")) copy(g_eSettings[ACN_HUD_TEXT], charsmax(g_eSettings[ACN_HUD_TEXT]), szValue) } } } fclose(iFilePointer) } } public client_authorized(id) set_task(g_eSettings[ACN_TASK_TIME], "AdminConnect", id) public AdminConnect(id) { new szAdminName[32], szMessage[sizeof g_eSettings[ACN_HUD_TEXT]]; copy(szMessage, charsmax(szMessage), g_eSettings[ACN_HUD_TEXT]); get_user_name(id, szAdminName, charsmax(szAdminName)) replace_all(szMessage, charsmax(szMessage), "<name>", szAdminName) if(has_flag(id, g_eSettings[ACN_ADMIN_FLAG])) { if(g_eSettings[ACN_CONNECT_SOUND]) client_cmd(0, "spk %s", g_eSettings[ACN_SOUND_DIR]) if(!g_eSettings[ACN_HUD_TYPE]) { set_hudmessage(g_eSettings[ACN_HUD_R_COLOR], g_eSettings[ACN_HUD_G_COLOR], g_eSettings[ACN_HUD_B_COLOR], g_eSettings[ACN_HUD_X_POS], g_eSettings[ACN_HUD_Y_POS], g_eSettings[ACN_HUD_EFFECTS], g_eSettings[ACN_HUD_EFFECTS_TIME], g_eSettings[ACN_HUD_TIME]) show_hudmessage(0, szMessage) } else { set_dhudmessage(g_eSettings[ACN_HUD_R_COLOR], g_eSettings[ACN_HUD_G_COLOR], g_eSettings[ACN_HUD_B_COLOR], g_eSettings[ACN_HUD_X_POS], g_eSettings[ACN_HUD_Y_POS], g_eSettings[ACN_HUD_EFFECTS], g_eSettings[ACN_HUD_EFFECTS_TIME], g_eSettings[ACN_HUD_TIME]) show_dhudmessage(0, szMessage) } } } bool:is_blank(szString[]) return szString[0] == EOS ? true : false
actually, this is working great! I forgot that I removed the ini. file when it didn't work well at first time, that's why it didn't work as well when I tried what you sent.. sorry again
Should I use what you sent? is it better? can you tell me what's the difference between this and shoko's? (shoko's working)JackEyedJones написа: ↑14 Окт 2018, 09:16Changes made:Код за потвърждение: Избери целия код
#include <amxmodx> #include <amxmisc> #if AMXX_VERSION_NUM < 183 #include <dhudmessage> #endif #define PLUGIN_VERSION "2.0" enum _:Settings { ACN_ADMIN_FLAG[33], Float:ACN_TASK_TIME, ACN_CONNECT_SOUND, ACN_SOUND_DIR[128], ACN_HUD_TYPE, ACN_HUD_R_COLOR, ACN_HUD_G_COLOR, ACN_HUD_B_COLOR, Float:ACN_HUD_X_POS, Float:ACN_HUD_Y_POS, ACN_HUD_EFFECTS, Float:ACN_HUD_EFFECTS_TIME, Float:ACN_HUD_TIME, ACN_HUD_TEXT[192] } new g_eSettings[Settings] public plugin_init() { register_plugin("Admin Connect Name", PLUGIN_VERSION, "Unbr3akable") register_cvar("AdminConnectName", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED) } public plugin_precache() readfile() readfile() { new szConfigsName[256], szFileName[256] get_configsdir(szConfigsName, charsmax(szConfigsName)) formatex(szFileName, charsmax(szFileName), "%s/AdminConnectName.ini", szConfigsName) new iFilePointer = fopen(szFileName, "rt") if(iFilePointer) { new szData[256], szKey[64], szValue[160] while(!feof(iFilePointer)) { fgets(iFilePointer, szData, charsmax(szData)) trim(szData) switch(szData[0]) { case EOS, ';': continue default: { strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=') trim(szKey); trim(szValue) if(is_blank(szValue)) continue if(equal(szKey, "ACN_ADMIN_FLAG")) copy(g_eSettings[ACN_ADMIN_FLAG], charsmax(g_eSettings[ACN_ADMIN_FLAG]), szValue) else if(equal(szKey, "ACN_TASK_TIME")) g_eSettings[ACN_TASK_TIME] = _:str_to_float(szValue) else if(equal(szKey, "ACN_CONNECT_SOUND")) g_eSettings[ACN_CONNECT_SOUND] = _:clamp(str_to_num(szValue), 0, 1) else if(equal(szKey, "ACN_SOUND_DIR")) { copy(g_eSettings[ACN_SOUND_DIR], charsmax(g_eSettings[ACN_SOUND_DIR]), szValue) precache_sound(szValue) } else if(equal(szKey, "ACN_HUD_TYPE")) g_eSettings[ACN_HUD_TYPE] = _:clamp(str_to_num(szValue), 0, 1) else if(equal(szKey, "ACN_HUD_R_COLOR")) g_eSettings[ACN_HUD_R_COLOR] = _:clamp(str_to_num(szValue), 0, 255) else if(equal(szKey, "ACN_HUD_G_COLOR")) g_eSettings[ACN_HUD_G_COLOR] = _:clamp(str_to_num(szValue), 0, 255) else if(equal(szKey, "ACN_HUD_B_COLOR")) g_eSettings[ACN_HUD_B_COLOR] = _:clamp(str_to_num(szValue), 0, 255) else if(equal(szKey, "ACN_HUD_X_POS")) g_eSettings[ACN_HUD_X_POS] = _:floatclamp(str_to_float(szValue), -1.0, 1.0) else if(equal(szKey, "ACN_HUD_Y_POS")) g_eSettings[ACN_HUD_Y_POS] = _:floatclamp(str_to_float(szValue), -1.0, 1.0) else if(equal(szKey, "ACN_HUD_EFFECTS")) g_eSettings[ACN_HUD_EFFECTS] = _:clamp(str_to_num(szValue), 0, 2) else if(equal(szKey, "ACN_HUD_EFFECTS_TIME")) g_eSettings[ACN_HUD_EFFECTS_TIME] = _:str_to_float(szValue) else if(equal(szKey, "ACN_HUD_TIME")) g_eSettings[ACN_HUD_TIME] = _:str_to_float(szValue) else if(equal(szKey, "ACN_HUD_TEXT")) copy(g_eSettings[ACN_HUD_TEXT], charsmax(g_eSettings[ACN_HUD_TEXT]), szValue) } } } fclose(iFilePointer) } } public client_putinserver(id) { if(!is_user_bot(id)) set_task(g_eSettings[ACN_TASK_TIME], "AdminConnect", id); } public AdminConnect(id) { new szAdminName[32] get_user_name(id, szAdminName, charsmax(szAdminName)) replace_all(g_eSettings[ACN_HUD_TEXT], charsmax(g_eSettings[ACN_HUD_TEXT]), "<name>", szAdminName) if(has_flag(id, g_eSettings[ACN_ADMIN_FLAG])) { if(g_eSettings[ACN_CONNECT_SOUND]) client_cmd(0, "spk %s", g_eSettings[ACN_SOUND_DIR]) if(!g_eSettings[ACN_HUD_TYPE]) { set_hudmessage(g_eSettings[ACN_HUD_R_COLOR], g_eSettings[ACN_HUD_G_COLOR], g_eSettings[ACN_HUD_B_COLOR], g_eSettings[ACN_HUD_X_POS], g_eSettings[ACN_HUD_Y_POS], g_eSettings[ACN_HUD_EFFECTS], g_eSettings[ACN_HUD_EFFECTS_TIME], g_eSettings[ACN_HUD_TIME]) show_hudmessage(0, g_eSettings[ACN_HUD_TEXT]) } else { set_dhudmessage(g_eSettings[ACN_HUD_R_COLOR], g_eSettings[ACN_HUD_G_COLOR], g_eSettings[ACN_HUD_B_COLOR], g_eSettings[ACN_HUD_X_POS], g_eSettings[ACN_HUD_Y_POS], g_eSettings[ACN_HUD_EFFECTS], g_eSettings[ACN_HUD_EFFECTS_TIME], g_eSettings[ACN_HUD_TIME]) show_dhudmessage(0, g_eSettings[ACN_HUD_TEXT]) } } } bool:is_blank(szString[]) return szString[0] == EOS; /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1026\\ f0\\ fs16 \n\\ par } */
1. Changed size of ACN_ADMIN_FLAG[2] = > ACN_ADMIN_FLAG[33]. It now correctly reads the flag from the file.
2. All clamp(str_to_num(szValue), 0, 255) values are now _:clamp(str_to_num(szValue), 0, 255). All clamp values are also _:
3. return szString[0] == EOS ? true : false is now changed to return szString[0] == EOS;
4. Changed client_authorized(id) to client_putinserver(id) and added checking for is_user_bot(id)It now should be working as expected.Код за потвърждение: Избери целия код
public client_putinserver(id) { if(!is_user_bot(id)) set_task(g_eSettings[ACN_TASK_TIME], "AdminConnect", id); }