Jump to content

TopBarChat problem


aaron001

Recommended Posts

i want to create an announce system like when i do /ann text it displays in topbarchat but it doesnt work out for me ye i am an noob scipter

addCommandHandler("ann", 
    function(player, cmd, ...) 
        local accName = getAccountName ( getPlayerAccount ( player ) ) 
    if isObjectInACLGroup ("user."..accName, aclGetGroup ( "LWS" )) then 
        local message = table.concat({...}, " ") 
        if #message > 0 then 
                    bool sendClientMessage ( string message, player thePlayer [, int r=255, int g=255, int b=255, bool topBar=true, int time=8 ] ) 
            end 
        end 
    end) 

Link to comment

Try that

addCommandHandler("ann", 
function(player, cmd, ...) 
    local accName = getAccountName ( getPlayerAccount ( player ) ) 
    if isObjectInACLGroup ("user."..accName, aclGetGroup ( "LWS" )) then 
        local message = table.concat({...}, " ") 
        if #message > 0 then 
            sendClientMessage (message, getRootElement(), 255,0,0) 
        end 
    end 
end) 

Link to comment

well it doesnt do anything

Lua:

addCommandHandler("ann", 
function(player, cmd, ...) 
    local accName = getAccountName ( getPlayerAccount ( player ) ) 
    if isObjectInACLGroup ("user."..accName, aclGetGroup ( "LWS" )) then 
        local message = table.concat({...}, " ") 
        if #message > 0 then 
            sendClientMessage (message, getRootElement(), 255,0,0) 
        end 
    end 
end) 

meta:

  "UnKnown" type="script" version="0.1"/> 
  

Link to comment
Thats all i have those 2 and i have an topbarchat script

So you have to make an exports for your topbarchat script.

Try this, it will out put on CHATBOX main chat.

addCommandHandler("ann", 
function(player, cmd, ...) 
    local accName = getAccountName ( getPlayerAccount ( player ) ) 
    if isObjectInACLGroup ("user."..accName, aclGetGroup ( "LWS" )) then 
        local message = table.concat({...}, " ") 
        if #message > 0 then 
            outputChatBox(message, getRootElement(), 255,0,0) 
        end 
    end 
end) 

Link to comment

Seems like the problem is how you would display multiple messages at once and let them fade out and stuff like that, take a look here for some inspiration. Or you could just download that resource and call it with an export with the exact same syntax as outputChatBox and get a perfectly working announcement system just the way you want it.

Link to comment

My announce script:

Lua;

addCommandHandler("ann", 
function(player, cmd, ...) 
    local accName = getAccountName ( getPlayerAccount ( player ) ) 
    if isObjectInACLGroup ("user."..accName, aclGetGroup ( "LWS" )) then 
        local message = table.concat({...}, " ") 
        if #message > 0 then 
            sendClientMessage (message, getRootElement(), 255,0,0) 
        end 
    end 
end) 

Meta:

  "UnKnown" type="script" version="0.1"/> 
  

TOPBARCHAT SCRIPT:

c.Lua:

------------------------------------------ 
--            TopBarChat                -- 
------------------------------------------ 
-- Developer: Braydon Davis             -- 
-- File: c.lua                          -- 
-- Copyright 2013 (C) Braydon Davis     -- 
-- All rights reserved.                 --   
------------------------------------------ 
-- Script Version: 1.4                  -- 
------------------------------------------ 
  
  
local maxMessages = 5;      -- The max messages that will show (on each bar) 
local DefaultTime = 8;      -- The max time each message will show if time isn't defined. 
  
------------------------------------------ 
-- For scripters only                   -- 
------------------------------------------ 
local sx_, sy_ = guiGetScreenSize ( ) 
local sx, sy = sx_/1280, sy_/720 -- you got xXMADEXx's resolution :3 plz no hak mi 
local DefaultPos = true; 
local messages_top = { } 
local messages_btm = { } 
  
function sendClientMessage ( msg, r, g, b, pos, time ) 
    -- Msg: String 
    -- R: Int (0-255) 
    -- G: Int (0-255) 
    -- B: Int (0-255) 
    -- Pos: Boolean 
    -- Time: Int 
    if ( not msg ) then return false end 
  
    if ( pos == nil ) then pos = DefaultPos end 
    local r, g, b = r or 255, g or 255, b or 255 
    local time = tonumber ( time ) or DefaultTime 
    local data = {  
        message = msg, 
        r = r, 
        g = g, 
        b = b, 
        alpha=0, 
        locked=true, 
        rTick = getTickCount ( ) + (time*1000) 
    } 
    --> Scripters note:  
        --> The remove and intro fades are handled in the render event 
    if ( pos == true or pos == "top" ) then 
        table.insert ( messages_top, data ) 
        return true 
    elseif ( pos == false or pos == "bottom" ) then 
        table.insert ( messages_btm, data ) 
        return true 
    end 
    return false 
end  
addEvent ( getResourceName ( getThisResource ( ) )..":sendClientMessage", true ) 
addEventHandler ( getResourceName ( getThisResource ( ) )..":sendClientMessage", root, sendClientMessage ) 
  
function dxDrawNotificationBar ( ) 
    local doRemove = { top = { }, bottom = { } }    -- This is used so it prevents the next message from flashing 
     
  
    -- Top Message Bar 
    for i, v in pairs ( messages_top ) do 
        local i = i - 1 
        if ( not v.locked ) then 
            v.alpha = v.alpha - 3 
            if ( v.alpha <= 20 ) then 
                table.insert ( doRemove.top, i+1 ) 
            end 
            messages_top[i+1].alpha = v.alpha 
        else 
            if ( v.alpha < 160 ) then 
                v.alpha = v.alpha + 1 
                messages_top[i+1].alpha = v.alpha 
            end 
            if ( v.rTick <= getTickCount ( ) ) then 
                v.locked = false 
                messages_top[i+1].locked=false 
            end 
        end 
        dxDrawRectangle ( (sx_/2-530/2), i*25, 530, 25, tocolor ( 0, 0, 0, v.alpha ) ) 
        dxDrawText ( tostring ( v.message ), 0, i*25, sx_, (i+1)*25, tocolor ( v.r, v.g, v.b, v.alpha*1.59375 ), sy*1, "default-bold", "center", "center") 
    end  
    if ( #messages_top > maxMessages and messages_top[1].locked ) then 
        messages_top[1].locked = false 
    end  
  
    -- Bottom Message Bar 
    for i, v in pairs ( messages_btm ) do 
        if ( not v.locked ) then 
            v.alpha = v.alpha - 3 
            if ( v.alpha <= 20 ) then 
                table.insert ( doRemove.bottom, i ) 
            end 
            messages_btm[i].alpha = v.alpha 
        else 
            if ( v.alpha < 160 ) then 
                v.alpha = v.alpha + 1 
                messages_btm[i].alpha = v.alpha 
            end 
            if ( v.rTick <= getTickCount ( ) ) then 
                v.locked = false 
                messages_btm[i].locked=false 
            end 
        end 
        dxDrawRectangle ( (sx_/2-530/2), sy_-(i*25), 530, 25, tocolor ( 0, 0, 0, v.alpha ) ) 
        dxDrawText ( tostring ( v.message ), 0, sy_-(i*25), sx_, sy_-((i-1)*25), tocolor ( v.r, v.g, v.b, v.alpha*1.59375 ), sy*1, "default-bold", "center", "center") 
    end  
    if ( #messages_btm > maxMessages and messages_btm[1].locked ) then 
        messages_btm[1].locked = false 
    end  
  
    -- handle message removes 
    if ( #doRemove.top > 0 )then 
        for i, v in pairs ( doRemove.top ) do 
            table.remove ( messages_top, v ) 
        end 
    end 
    if ( #doRemove.bottom > 0 ) then 
        for i, v in pairs ( doRemove.bottom ) do 
            table.remove ( messages_btm, v ) 
        end 
    end 
end 
addEventHandler ( "onClientRender", root, dxDrawNotificationBar ) 
  
  
------------------------------ 
-- For development          -- 
------------------------------ 
addCommandHandler ( 'rt', function ( ) 
    for i=1, 5 do  
        sendClientMessage ( "Testing - Index ".. tostring ( i ), 255, 255, 255, false ) 
        sendClientMessage ( "Testing - Index ".. tostring ( i ), 255, 255, 255, true ) 
    end 
end ) 

S.Lua:

------------------------------------------ 
--            TopBarChat                -- 
------------------------------------------ 
-- Developer: Braydon Davis             -- 
-- File: s.lua                          -- 
-- Copyright 2013 (C) Braydon Davis     -- 
-- All rights reserved.                 --   
------------------------------------------ 
local rName = getResourceName ( getThisResource ( ) ) 
function sendClientMessage ( msg, who, r, g, b, pos, time ) 
    if ( msg and who ) then 
        if ( isElement ( who ) ) then 
            triggerClientEvent ( who, rName..":sendClientMessage", who, msg, r, g, b, pos, time ) 
            return true 
        else return false end 
    else return false end 
end 
  
addEventHandler ( "onPlayerJoin", root, function ( ) 
    sendClientMessage ( '* '..getPlayerName ( source )..' has joined!', root, 255, 100, 100, false ) 
end ) 
  
addEventHandler ( 'onPlayerQuit', root, function ( tp, reason, respons ) 
    if ( tp == 'Kicked' or tp == 'Banned' ) then 
        msg = '['..tp..' - '..respons..'] ('..reason..')' 
    else 
        msg = '['..tp..']' 
    end 
    sendClientMessage ( "* "..getPlayerName ( source ).." has quit. "..msg, root, 255, 100, 100, false ) 
end ) 

Meta:

    "xXMADEXx" name="Top Chat" type="script" version="1.4.1" /> 
    

Link to comment

Here you go:

Follow what I am gonna say,

First, you've to be sure your topbarchat script is running.

Second thing, is go to line "7" ,and change resourcename to the topbarchat folder name.

It should work if you had followed those steps correctly.

addCommandHandler("ann", 
function(player, cmd, ...) 
    local accName = getAccountName ( getPlayerAccount ( player ) ) 
    if isObjectInACLGroup ("user."..accName, aclGetGroup ( "LWS" )) then 
        local message = table.concat({...}, " ") 
        if #message > 0 then 
            exports.resourcename:sendClientMessage(message, getRootElement(), 0, 255, 0, false)  
        end 
    end 
end) 

Link to comment
i dont want them in main chat i want them in that topbarchat i have an script for it but it wont work out

I didn't say the output was in main chat, I said that the script would have been just as simple to write as if it was in main chat. The actual announcements would appear as a fading list of DX messages in the top of your screen, I think the one you use now should provide the same functionality as well but if it fails at least you got alternatives, this is how the syntax would be:

addCommandHandler("ann", 
function(player, cmd, ...) 
    local accName = getAccountName ( getPlayerAccount ( player ) ) 
    if isObjectInACLGroup ("user."..accName, aclGetGroup ( "LWS" )) then 
        exports.resourcename:dm(message, root, 0,255,0) 
    end 
end) 

And just as in KariiiM's code you gonna have to replace "resourcename" with the actual name of the top bar resource. Good luck and happy coding.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...