Digore Posted May 29, 2015 Share Posted May 29, 2015 (edited) Buenas, lo primero gracias por leer este post. Os comento, he descargado este resource de la comunidad: https://community.multitheftauto.com/in ... ls&id=2963 Se trata del tag que tienen los admines, moderadores.... cuando hablan. El problema esque este tag únicamente se produce si escribes por el chat Local (es un modo Dayz) aparece 2 veces en el chat, una en el local y una en el normal (por esto no hay realmente ningún problema). Mi objetivo es que en vez de pulsar "T" para hablar por el chat local y que luego este mensaje sea leido 1 vez por todos los jugadores y 2 veces por mí (suena algo lioso). En mi servidor todo el mundo usa el GlobalChat con la tecla "X" pero este resource no se adapta y si trato de escribir con el GlobalChat no aparece el tag de Admin. En fín, si alguien pudiera mirar lo que es el resource y decirme que debo cambiar para que el tag salga en el Global, lo agradecería Un Saludo, Diego Edited May 30, 2015 by Guest Link to comment
Pipee20k Posted May 29, 2015 Share Posted May 29, 2015 Modifica el codigo del global chat en base al de este script si [[es administrador]] entonces outputchatbox ("[global] [admin] nick:...") else outputchatbox ("[global] nick:...") espero que entiendas mis ejemplos de mierda XDD Link to comment
Digore Posted May 29, 2015 Author Share Posted May 29, 2015 No creo que eso se muestre en el archivo server Te dejo lo poco que viene en el archivo client, que llega a ser algo parecido a lo que decias pero sigo sin saber que hacer -- Set chatbox layout data. chatLines = getChatboxLayout()["chat_lines"] setElementData(localPlayer, 'chatLines', chatLines) Link to comment
Pipee20k Posted May 29, 2015 Share Posted May 29, 2015 La verdad entonces no se como funcione ese script, para que lo muestre en el archivo server usa outputServerLog Link to comment
Enargy, Posted May 29, 2015 Share Posted May 29, 2015 Postea la parte del codigo serverside donde donde trabaja el sistema del chat. Link to comment
Digore Posted May 29, 2015 Author Share Posted May 29, 2015 Aquí tienes settings = { ['enableTeamChat'] = true, ['adminTag'] = { ['enabled'] = true, ['ACL'] = { -- A bit more advanced. { 'Admin', '#00B7FF[Admin] ' }, { 'SuperModerator', '#F200FF[s.mod] ' }, { 'Moderator', '#A1FF9C[Mod] ' }, } }, ['swearFilter'] = { ['enabled'] = true, ['swearCost'] = 0, ['swears'] = { -- Allows you to set the blocked swear words, syntax is ['WORD'] = 'REPLACEMENT' ['asshole'] = '*******', ['fuck'] = '****', ['slut'] = '****', ['bitch'] = '*****', ['cunt'] = '****', ['whore'] = '*****', ['pussy'] = '*****', ['fag'] = '***', ['perro'] = '*****', ['puta'] = '****', ['joder'] = '*****' } }, ['antiSpamFilter'] = { ['enabled'] = true, ['execeptionGroups'] = 'Admin', -- Groups which can spam, eg. 'Admin,SuperModerator,Moderator' ['chatTimeOut'] = 1.5 -- Set in seconds. }, ['freezeChat'] = { ['enabled'] = true, ['command'] = 'freezechat', -- Command to use when activating frozen chat. ['allowedGroups'] = 'Admin,SuperModerator', -- Groups which have access to this command. ['resetTime'] = 5 -- Time in minutes before it automatically resets. }, ['clearChat'] = { ['enabled'] = true, ['command'] = 'clearchat', ['allowedGroups'] = 'Admin,SuperModerator' } } -- Required variables spam = { } stopChat = false function chatbox(message, msgtype) if stopChat then cancelEvent() outputChatBox('#FF0000[FREEZECHAT] #FFFFFFAn admin has recently frozen chat.', source, 255, 255, 255, true) return end local account = getAccountName(getPlayerAccount(source)) local name = getPlayerName(source) local serial = getPlayerSerial(source) local r, g, b = getPlayerNametagColor(source) local text = message:gsub("%a", string.upper, 1) local check = 0 local spamCheck = false if settings['swearFilter']['enabled'] then for i, v in pairs(settings['swearFilter']['swears']) do while text:lower():find(i:lower(),1,true) do local start, end_ = text:lower():find(i:lower(),1,true) local found = text:sub(start,end_) text = text:gsub(found,v) if settings['swearFilter']['swearCost'] ~= 0 then takePlayerMoney(source, settings['swearFilter']['swearCost']) end end end end if msgtype == 0 then cancelEvent() if not settings['adminTag']['enabled'] and not spam[serial] then message = RGBToHex(r, g, b) .. name .. ':#FFFFFF ' .. text if 128 <= #message then outputChatBox('#FF0000Error: The message you entered is too big, please lower it!', source, 255, 255, 255, true) else outputChatBox(message, getRootElement(), 255, 255, 255, true) aclgroup = split(settings['antiSpamFilter']['execeptionGroups'], ', ') or settings['antiSpamFilter']['execeptionGroups'] for i, v in ipairs(aclgroup) do if isObjectInACLGroup("user." .. getAccountName(getPlayerAccount(source)), aclGetGroup(v)) then spamCheck = true end end if not spamCheck then if settings['antiSpamFilter']['enabled'] then spam[serial] = true setTimer(function() spam[serial] = false end, settings['antiSpamFilter']['chatTimeOut']*1000, 1) end end outputServerLog('CHAT: ' .. name .. ': ' .. text) end return end for _,v in ipairs(settings['adminTag']['ACL']) do if isObjectInACLGroup('user.' .. account, aclGetGroup(v[1])) and check == 0 and not spam[serial] then local message = v[2] .. RGBToHex(r, g, b) .. name .. ":#FFFFFF " .. text if 128 <= #message then outputChatBox('#FF0000Error: The message you entered is too big, please lower it!', source, 255, 255, 255, true) check = 1 else check = 1 outputChatBox(message, getRootElement(), 255, 255, 255, true) if settings['antiSpamFilter']['enabled'] then aclgroup = split(settings['antiSpamFilter']['execeptionGroups'], ', ') or settings['antiSpamFilter']['execeptionGroups'] for i, v in ipairs(aclgroup) do if isObjectInACLGroup("user." .. getAccountName(getPlayerAccount(source)), aclGetGroup(v)) then spamCheck = true end end if not spamCheck then spam[serial] = true check = 1 setTimer(function() spam[serial] = false end, settings['antiSpamFilter']['chatTimeOut']*1000, 1) end end outputServerLog('CHAT: '.. v[2] .. name .. ': ' .. text) end elseif spam[serial] and check == 0 then outputChatBox('#FF0000Error: Please wait '..settings['antiSpamFilter']['chatTimeOut']..' seconds before saying a message!', source, 255, 255, 255, true) check = 1 end end elseif msgtype == 1 and not settings['enableTeamChat'] then cancelEvent() end end addEventHandler("onPlayerChat", getRootElement(), chatbox) addEventHandler("onPlayerQuit", getRootElement(), function() local serial = getPlayerName(source) spam[serial] = false end ) -- Freeze chat addCommandHandler(settings['freezeChat']['command'], function(player) if not settings['freezeChat']['enabled'] then return end aclgroup = split(settings['freezeChat']['allowedGroups'], ', ') or settings['freezeChat']['allowedGroups'] for i, v in ipairs(aclgroup) do if isObjectInACLGroup("user." .. getAccountName(getPlayerAccount(player)), aclGetGroup(v)) then check = true end end if not check then return end if not stopChat then outputChatBox('#FF0000[FREEZECHAT] #FFFFFF'..getPlayerName(player)..' has frozen the chat!', getRootElement(), 255, 255, 255, true) stopChat = true frozenTimer = setTimer(function() stopChat = false end, (settings['freezeChat']['resetTime'] * 60000), 1) else outputChatBox('#FF0000[FREEZECHAT] #FFFFFF'..getPlayerName(player)..' has unfrozen the chat!', getRootElement(), 255, 255, 255, true) stopChat = false end end ) -- Clear chat addCommandHandler(settings['clearChat']['command'], function(player) if not settings['clearChat']['enabled'] then return end aclgroup = split(settings['clearChat']['allowedGroups'], ',') or settings['clearChat']['allowedGroups'] for i, v in ipairs(aclgroup) do if isObjectInACLGroup("user." .. getAccountName(getPlayerAccount(player)), aclGetGroup(v)) then check = true end end if not check then return end for i = 2, getElementData(player, 'chatLines') do outputChatBox(' ') end outputChatBox('#FF0000[CLEARCHAT]#FFFFFF '..getPlayerName(player)..' has cleared the chat', getRootElement(), 255, 255, 255, true) end ) function RGBToHex(red, green, blue, alpha) return string.format("#%.2X%.2X%.2X", red,green,blue) end Link to comment
Pipee20k Posted May 30, 2015 Share Posted May 30, 2015 Yo en ese codigo la verdad es que no veo nada debe de estar en el client Link to comment
Digore Posted May 30, 2015 Author Share Posted May 30, 2015 Este es el archivo client chatLines = getChatboxLayout()["chat_lines"] setElementData(localPlayer, 'chatLines', chatLines) Link to comment
Mr.Aleks Posted May 30, 2015 Share Posted May 30, 2015 ¿Estás usando Dayz compliado no? En ese caso dudo que puedas editar ningún archivo. Link to comment
Digore Posted May 31, 2015 Author Share Posted May 31, 2015 Obviamente estoy usando una versión descompilada en la cual puedo editar TODOS los archivos. ¿Alguien usa un AdminTag el cual funcione para el GlobalChat? Link to comment
Tomas Posted May 31, 2015 Share Posted May 31, 2015 Obviamente estoy usando una versión descompilada en la cual puedo editar TODOS los archivos. ¿Alguien usa un AdminTag el cual funcione para el GlobalChat? Entonces estás usando una versión pirata de DayZ, lo cuál cuenta como robado... Link to comment
Digore Posted May 31, 2015 Author Share Posted May 31, 2015 Versión 0.7.3 Nada es robado, esta versión viene con algunas cosillas que yo he cogido TODAS y las he cambiado, aparte de que he añadido muchísimas mas cosas. Cualquier servidor de Dayz tiene la version descompilada similar a la mía, solo que cada uno la modifica al gusto. Link to comment
Digore Posted May 31, 2015 Author Share Posted May 31, 2015 Aunque bueno, ya he encontrado un AdminTag que me funciona. Si quieres algo en este mundo hay que buscar durante mucho tiempo. Gracias de todas maneras a todos por intentar ayudarme (no es de malas ni nada ehh, de verdad que os lo agradezco) Un Saludo Link to comment
Recommended Posts