Ir para conteúdo
  • Cadastre-se

(Resolvido)[Cast System] OTX 8.60


Ir para solução Resolvido por WooX,

Posts Recomendados

  • Moderador

Alguém me ajuda a resolver esse erro aqui do Cast por favor? Eu não sei dizer se realmente a Source possui os Arquivos necessários para o Cast funcionar, mais eu achei alguns Arquivos aqui na pasta da Source que pra mim ta envolvido com o Cast.

 

Script

Spoiler

function onSay(cid, words, param, channel)
    local tmp = param:explode(" ")
    if not(tmp[1]) then
        return doPlayerSendCancel(cid, "Parameters needed")
    end
    
    if tmp[1] == "on" then
        db.executeQuery("UPDATE `players` SET `cast` = '1' WHERE `name` = '"..getCreatureName(cid).."'")
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ligou o Cast.")
        doPlayerSetCastState(cid, true)
        doPlayerSave(cid)
    elseif getPlayerCast(cid).status == false then
        return doPlayerSendCancel(cid, "Seu Cast precisa estar em exibição para esta ação.")
    elseif tmp[1] == "off" then
        db.executeQuery("UPDATE `players` SET `cast` = '0' WHERE `name` = '"..getCreatureName(cid).."'")
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você desligou o Cast.")
        doPlayerSetCastState(cid, false)
                doPlayerSave(cid)
    elseif isInArray({"pass", "password", "p"}, tmp[1]) then
        if not(tmp[2]) then
            return doPlayerSendCancel(cid, "Você precisa definir uma senha")
        end
        
        if tmp[2]:len() > 10 then
            return doPlayerSendCancel(cid, "A senha é muito longa. (Max.: 10 Caracteres)")
        end
        
        if tmp[2] == "off" then
            doPlayerSetCastPassword(cid, "")
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "A senha do Cast foi removida.")
        else
            doPlayerSetCastPassword(cid, tmp[2])
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "A senha do Cast foi definida como: " .. tmp[2])
        end
    elseif isInArray({"desc", "description", "d"}, tmp[1]) then
        local d = param:gsub(tmp[1]..(tmp[2] and " " or ""), "")
        
        if not(d) or d:len() == 0 then
            return doPlayerSendCancel(cid, "Você precisa especificar uma descrição.")
        end
        
        if d:len() > 50 then
            return doPlayerSendCancel(cid, "A descrição é muito longa. (Max.: 50 Caracteres)")
        end
        
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "A descrição do Cast foi definida como: ")
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, d)
        doPlayerSetCastDescription(cid, d)
    elseif tmp[1] == "ban" then
        if not(tmp[2]) then
            return doPlayerSendCancel(cid, "Especifique um espectador que você deseja banir.")
        end
        
        if doPlayerAddCastBan(cid, tmp[2]) then
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Espectdor '" .. tmp[2] .. "' foi banido.")
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Espectdor '" .. tmp[2] .. "' não pode ser banido.")
        end
    elseif tmp[1] == "unban" then
        if not(tmp[2]) then
            return doPlayerSendCancel(cid, "Especifique a pessoa que você deseja desbanir.")
        end
        
        if doPlayerRemoveCastBan(cid, tmp[2]) then
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Espectdor '" .. tmp[2] .. "' foi desbanido.")
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Espectdor '" .. tmp[2] .. "' não pode ser banido.")
        end
    elseif param == "bans" then
        local t = getCastBans(cid)
        local text = "Cast Bans:\n\n"
        for k, v in pairs(t) do
            text = text .. "*" .. v.name .. "\n"
        end 
        if text == "Cast Bans:\n\n" then
            text = text .. "Nenhum banimento."
        end
        doShowTextDialog(cid, 5958, text)
    elseif tmp[1] == "mute" then
        if not(tmp[2]) then
            return doPlayerSendCancel(cid, "Especifique um espectador que você deseja silenciar.")
        end
        
        if doPlayerAddCastMute(cid, tmp[2]) then
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Espectdor '" .. tmp[2] .. "' foi silenciado.")
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Espectdor '" .. tmp[2] .. "' não pode ser silenciado.")
        end
    elseif tmp[1] == "unmute" then
        if not(tmp[2]) then
            return doPlayerSendCancel(cid, "Especifique a pessoa que você deseja autorizar a falar.")
        end
        
        if doPlayerRemoveCastMute(cid, tmp[2]) then
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Espectdor '" .. tmp[2] .. "' tem autorização para falar.")
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Espectdor '" .. tmp[2] .. "' não foi possível autorizar.")
        end
    elseif param == "mutes" then
        local t = getCastMutes(cid)
        local text = "Cast Mutes:\n\n"
        for k, v in pairs(t) do
            text = text .. "*" .. v.name .. "\n"
        end 
        if text == "Cast Bans:\n\n" then
            text = text .. "Nenhuma pessoa foi silenciada."
        end
        doShowTextDialog(cid, 5958, text)
    elseif param == "viewers" then
        local t = getCastViewers(cid)
        local text, count = "Espectadores:\n#Viewers: |COUNT|\n\n", 0
        for _,v in pairs(t) do
            count = count + 1
            text = text .. "*" .. v.name .."\n"
        end
        
        if text == "Espectadores:\n#Viewers: |COUNT|\n\n" then text = "Espectadores:\n\nNo viewers." end
        text = text:gsub("|COUNT|", count)
        doShowTextDialog(cid, 5958, text)
    elseif param == "status" then
        local t, c = getCastViewers(cid), getPlayerCast(cid)
        local count = 0
        for _,v in pairs(t) do count = count + 1 end
        
        doShowTextDialog(cid, 5958, "Cast Status:\n\n*Viewers:\n      " .. count .. "\n*Descrição:\n      "..(c.description == "" and "Não configurado" or c.description).."\n*Password:\n      " .. (c.password == "" and "Não configurado" or "Configurado - '"..c.password.."'"))
    elseif param == "update" then
        if getPlayerStorageValue(cid, 656544) > os.time() then
            return doPlayerSendCancel(cid, "Você usou este comando ultimamente. Espere: " .. (getPlayerStorageValue(cid, 656544)-os.time()) .. " segundos.")
        end
        doPlayerSave(cid)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "As configurações de transmissão foram atualizadas.")
        doPlayerSetStorageValue(cid, 656544, os.time()+60)
    end
    return true
end

Arquivos

image.png.94a181b2c5e17828dae88f627c7f58eb.png

Erro

image.thumb.png.1517d3b4be807895f89ba944198d3df2.png

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites

Sim, os arquivos spectators.cpp/spectators.h são responsáveis por enviar bytes aos espectadores. Por alguma razão, sua source não possui as funções informadas no erro do console.

Link para o post
Compartilhar em outros sites
  • Moderador

@Storm @Lyu E para adiciona-las, eu teria que ir em qual dos arquivos? E em qual linha adiciona-las? Poderiam me ajudar por favor?

 

OBS: O @movie entrou em meu Notebook pelo TeamViwer, e conseguiu achar as funções. Porém, nem eu e ele  conseguiu entender o por que está dando esse erro sendo que as funções estão lá.

@victor4312 Obrigado pela sugestão.

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
  • Solução

O problema é que você está utilizando OTX2 que sim, possui o cast system do elf nas sources. Mas você está utilizando as funções Lua do cast do summ, que vem no TFS 0.4, assim não vai funcionar mesmo.

 

A função correta seria:

doPlayerSetSpectators

 

Caso não possua a talkaction, aqui está.

Spoiler

function onSay(cid, words, param, channelId)
        local t, data = string.explode(param, " ", 1), getPlayerSpectators(cid)
        if(isInArray({'off', 'no', 'disable'}, t[1])) then
                data.mutes = {}
                data.broadcast = false
                doPlayerSetSpectators(cid, data)
 
                db.executeQuery("UPDATE `players` SET `broadcasting` = 0, `viewers` = 0 WHERE `id` = " .. getPlayerGUID(cid))
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have disabled your live stream.")
        elseif(isInArray({'on', 'yes', 'enable'}, t[1])) then
                data.broadcast = true
                doPlayerSetSpectators(cid, data)
				doPlayerOpenPrivateChannel(cid)
 
                db.executeQuery("UPDATE `players` SET `broadcasting` = 1 WHERE `id` = " .. getPlayerGUID(cid))
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have enabled your live stream.")
        elseif(isInArray({'show', 'count', 'see'}, t[1])) then
                if(data.broadcast) then
                        local count = table.maxn(data.names)
                        if(count > 0) then
                                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are currently watched by " .. count .. " people.")
                                local str = ""
                                for _, name in ipairs(data.names) do
                                        str = str .. (str:len() > 0 and ", " or "") .. name
                                end
 
                                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str .. ".")
                        else
                                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "None is watching your stream right now.")
                        end
                else
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are not streaming right now.")
                end
        elseif(isInArray({'kick', 'remove'}, t[1])) then
                if(data.broadcast) then
                        if(t[2]) then
                                if(t[2] ~= "all") then
                                        local found = false
                                        for _, name in ipairs(data.names) do
                                                if(t[2]:lower() == name:lower()) then
                                                        found = true
                                                        break
                                                end
                                        end
 
                                        if(found) then
                                                table.insert(data.kick, t[2])
                                                doPlayerSetSpectators(cid, data)
                                                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " has been kicked.")
                                        else
                                                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " not found.")
                                        end
                                else
                                        data.kick = data.names
                                        doPlayerSetSpectators(cid, data)
                                end
                        else
                                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to type a name.")
                        end
                else
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are not streaming right now.")
                end
        elseif(isInArray({'ban', 'block'}, t[1])) then
                if(data.broadcast) then
                        if(t[2]) then
                                local found = false
                                for _, name in ipairs(data.names) do
                                        if(t[2]:lower() == name:lower()) then
                                                found = true
                                                break
                                        end
                                end
 
                                if(found) then
                                        table.insert(data.bans, t[2])
                                        doPlayerSetSpectators(cid, data)
                                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " has been banned.")
                                else
                                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " not found.")
                                end
                        else
                                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to type a name.")
                        end
                else
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are not streaming right now.")
                end
        elseif(isInArray({'unban', 'unblock'}, t[1])) then
                if(data.broadcast) then
                        if(t[2]) then
                                local found, i = 0, 1
                                for _, name in ipairs(data.bans) do
                                        if(t[2]:lower() == name:lower()) then
                                                found = i
                                                break
                                        end
 
                                        i = i + 1
                                end
 
                                if(found > 0) then
                                        table.remove(data.bans, found)
                                        doPlayerSetSpectators(cid, data)
                                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " has been unbanned.")
                                else
                                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " not found.")
                                end
                        else
                                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to type a name.")
                        end
                else
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are not streaming right now.")
                end
        elseif(isInArray({'bans', 'banlist'}, t[1])) then
                if(table.maxn(data.bans)) then
                        local str = ""
                        for _, name in ipairs(data.bans) do
                                str = str .. (str:len() > 0 and ", " or "") .. name
                        end
 
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Currently banned spectators: " .. str .. ".")
                else
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your ban list is empty.")
                end
        elseif(isInArray({'mute', 'squelch'}, t[1])) then
                if(data.broadcast) then
                        if(t[2]) then
                                local found = false
                                for _, name in ipairs(data.names) do
                                        if(t[2]:lower() == name:lower()) then
                                                found = true
                                                break
                                        end
                                end
 
                                if(found) then
                                        table.insert(data.mutes, t[2])
                                        doPlayerSetSpectators(cid, data)
                                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " has been muted.")
                                else
                                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " not found.")
                                end
                        else
                                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to type a name.")
                        end
                else
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are not streaming right now.")
                end
        elseif(isInArray({'unmute', 'unsquelch'}, t[1])) then
                if(data.broadcast) then
                        if(t[2]) then
                                local found, i = 0, 1
                                for _, name in ipairs(data.mutes) do
                                        if(t[2]:lower() == name:lower()) then
                                                found = i
                                                break
                                        end
 
                                        i = i + 1
                                end
 
                                if(found > 0) then
                                        table.remove(data.mutes, found)
                                        doPlayerSetSpectators(cid, data)
                                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " has been unmuted.")
                                else
                                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Spectator " .. t[2] .. " not found.")
                                end
                        else
                                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to type a name.")
                        end
                else
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are not streaming right now.")
                end
        elseif(isInArray({'mutes', 'mutelist'}, t[1])) then
                if(table.maxn(data.mutes)) then
                        local str = ""
                        for _, name in ipairs(data.mutes) do
                                str = str .. (str:len() > 0 and ", " or "") .. name
                        end
 
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Currently muted spectators: " .. str .. ".")
                else
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your mute list is empty.")
                end
        elseif(isInArray({'auth', 'protect', 'protection', 'protected'}, t[1])) then
                if(isInArray({'off', 'no', 'disable'}, t[2])) then
                        data.auth = false
                        doPlayerSetSpectators(cid, data)
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your chat is now unprotected, all spectators can chat without authentication.")
                elseif(isInArray({'on', 'yes', 'enable'}, t[2])) then
                        data.auth = true
                        doPlayerSetSpectators(cid, data)
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your chat is now protected, all spectators have to authenticate before they can talk.")
                else
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your chat is currently " .. (data.auth and "protected" or "unprotected") .. " from guests.")
                end
        elseif(isInArray({'password', 'guard'}, t[1])) then
                if(t[2]) then
                        if(isInArray({'off', 'no', 'disable'}, t[2])) then
                                if(data.password:len() ~= 0) then
                                        db.executeQuery("UPDATE `players` SET `broadcasting` = `broadcasting` - 2 WHERE `id` = " .. getPlayerGUID(cid))
                                end
 
                                data.password = ""
                                doPlayerSetSpectators(cid, data)
                                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have removed password for your stream.")
                        else
                                if(data.password:len() ~= 0) then
                                        db.executeQuery("UPDATE `players` SET `broadcasting` = `broadcasting` + 2 WHERE `id` = " .. getPlayerGUID(cid))
                                end
 
                                data.password = string.trim(t[2])
                                doPlayerSetSpectators(cid, data)
                                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have set new password for your stream.")
                        end
                elseif(data.password ~= "") then
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your stream is currently protected with password: " .. data.password .. ".")
                else
                        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your stream is currently not protected.")
                end
        elseif(isInArray({'status', 'info'}, t[1])) then
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your stream is currently " .. (data.broadcast and "enabled" or "disabled") .. ".")
        else
                doPlayerPopupFYI(cid, "Available commands:\n\n/live on - enables the stream\n/live off - disables the stream\n/live password {password} - sets a password on the stream\n/live password off - disables the password protection\n/live auth on - enables requirement of authentication on chat\n/live auth off - disables requirement of authentication on chat\n/live kick {name} - kick a spectator from your stream\n/live ban {name} - locks spectator IP from joining your stream\n/live unban {name} - removes banishment lock\n/live bans - shows banished spectators list\n/live mute {name} - mutes selected spectator from chat\n/live unmute {name} - removes mute\n/live mutes - shows muted spectators list\n/live show - displays the amount and nicknames of current spectators\n/live status - displays stream status")
        end
 
        return true
end

 

 

Edit: Impossível ele ter achado as funções, pois elas não existem no OTX, as funções são do cast system do summ, que geralmente vem no TFS 0.4. Então, ou você simplesmente pegou os arquivos spectators.cpp e spectators.h (que são do cast system do elf e não existem no TFS 0.4) e jogou no TFS 0.4, ou a alguém tentou adicionar essas funções do cast do summ que é totalmente diferente do que o elf fez, e obviamente não fez um bom trabalho.

Editado por WooX (veja o histórico de edições)

 

 

 

Nós somos aquilo que fazemos repetidamente. Excelência, não é um modo de agir, mas um hábito.

                                                                                                                                                                                                                                        Aristóteles 

Link para o post
Compartilhar em outros sites
  • Moderador

@WooX Puts cara, obrigadão mesmo

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo