#include #include #include new msgVal[256], msgID; new bool:catch=false, bool:stop=false; new msgPlayer, maxPlayers; public plugin_init(){ register_plugin("Prefix replacer", "0.2", "DarkGL & benio101"); new OrpheuFunction:WriteString=OrpheuGetEngineFunction("pfnWriteString", "WriteString"); new OrpheuFunction:MessageBegin=OrpheuGetEngineFunction("pfnMessageBegin", "MessageBegin"); new OrpheuFunction:MessageEnd=OrpheuGetEngineFunction("pfnMessageEnd", "MessageEnd"); new OrpheuFunction:WriteByte=OrpheuGetEngineFunction("pfnWriteByte", "WriteByte"); OrpheuRegisterHook(WriteString, "WriteStringf", OrpheuHookPre); OrpheuRegisterHook(MessageBegin, "MessageBeginf", OrpheuHookPre); OrpheuRegisterHook(MessageEnd, "MessageEndf", OrpheuHookPost); OrpheuRegisterHook(WriteByte, "WriteBytef", OrpheuHookPre); } public plugin_cfg(){ maxPlayers=get_maxplayers(); } public OrpheuHookReturn:WriteBytef(val){ return ((catch && stop) ? OrpheuSupercede : OrpheuIgnored); } public OrpheuHookReturn:WriteStringf(str[]){ if(catch){ if(stop){ copy(msgVal, 255, str); return OrpheuSupercede; } if(!msgPlayer){ new tmp[256]; copy(tmp, 255, str); if(containi(tmp, "[PREFIX]")!=-1){ replace_all(tmp, 255, "[PREFIX]", "[HNS]"); OrpheuSetParam(1, tmp); } } } return OrpheuIgnored; } public OrpheuHookReturn:MessageBeginf(msgDest, msgType, Float:origin[], idDest){ catch=stop=false; msgID=0; msgVal=""; switch(msgType){ case 23, 76, 77:{ catch=true; msgPlayer=idDest; if(msgType!=23 && (!msgPlayer || msgDest==MSG_ALL)){ msgID=msgType; stop=true; } } } } public OrpheuHookReturn:MessageEndf(){ msgPlayer=0; if(stop){ new msg[256]; copy(msg, 255, msgVal); msgVal=""; switch(msgID){ case 76, 77:{ for(new id=1; id<=maxPlayers; ++id){ if(is_user_connected(id)){ message_begin(MSG_ONE_UNRELIABLE, msgID, {0, 0, 0}, id); write_byte(id) write_string(msg); message_end(); } } } } } msgID=0; }