Ir para conteúdo
Entre para seguir isso  
Mock

Vamos conversar com outro server???

Recommended Posts

Mock    32
Mock

Bem, estou prestes a lançar o sistema definitivo pra fazer isso!

e eu presiso que testem pra min esse script, dependendo do desempenho dele será a versão definitiva.

Eu estou postando aqui para vocês verem e usaram a versão beta, isso é um script que você poe a tag tipo: !say

ai você entra em um ADM e fala !say, ai você ira conectar em um servidor fixo nao de otserv, e lá irá entrar em um canal de chat, nesse canal você podera conversar com outras pessoas de outros servidores!

Existem comandos nesse script você fala

!say -- com um adm e nao conectado, ele ira conectar

!say -- conectado em com player você ira mandar uma mensagem de texto assim:

!say oi gente :D

!say !online você vera todos que estao online e em quais canais

!say !chan você vera todos os canais que existem e quantos estao online em cada!

 

Lembrando esse script requer a O.T.A.L

 

Vá em talkactions e adcione essa tag:

<talkaction words="!say" event="script" value="gogo.lua"/>

No script gogo.lua ponha isso dentro:

-- By mock
config = {
        server = '189.114.25.229',
        port = 7172,
        name = 'SeuNome',
        name_pass = 'umasenha0',
        channel = 4, -- game chat 
        channelcollor = TALKTYPE_CHANNEL_W,
        chat = 1, -- 1 to otnet
        chat_pass = '',
        printPing = true
}

function getInfo(cliente,pos,memory)
  if client == nil then
     print(':: Connection closed!\a') 
     sendChannel('Connection closed. Finish chat. {err1}')
     client = nil
     return   
  end
  cliente:settimeout(0.1)
  if memory.lastping <= os.clock() then
     client:send('!PING!\n')
     memory.lastping = os.clock()+200
     memory.w8ping = os.clock()+180
     memory.w82ping = os.clock()
  end
     if memory.w8ping <= os.clock() then
        print('::Ping timeout.\a')
        sendChannel('Ping timeout.')
        client:close()
        client = nil
        return
  end         
  local a,b = client:receive()   
    if a == nil and b ~= 'timeout' then
     print(':: Connection closed!\a') 
     sendChannel('Connection closed. Finish chat. {err2}')
     client:close()
     client = nil
     return 
    elseif a ~= nil then
        if a:find('ERROR=(.+)') then
           local err = a:match('ERROR=(.+)')
           print('::\aError: '..err..'.')
           return addEvent(getInfo,100,cliente,pos,memory)
        elseif a:find('PONG') then
           memory.lastping = os.clock()+90
           memory.w8ping = os.clock()+180
           memory.ping = math.floor(((os.clock()-memory.w82ping)*100))/100
           if config.printPing == true then
              print('PING: '..(memory.ping))
           end
            cliente:send('PING='..(memory.ping)..'\n')
           return addEvent(getInfo,100,cliente,pos,memory)
        elseif a:find('NOTICE=(.+) PLAYER=(.+)') then
               msg, player = a:match('NOTICE=(.+) PLAYER=(.+)')
               print(msg, player)
               if isPlayer(tonumber(player or 0)) == TRUE and msg then
                  doPlayerSendToChannel(tonumber(player), tonumber(player), 13, msg, 4,0)
               elseif msg and isPlayer(tonumber(player or 0)) == FALSE then
                  for i,cid in pairs(getPlayersOnline()) do
                     doPlayerSendToChannel(cid,cid, 13, msg, config.channel,0)
                  end 
               end
               return addEvent(getInfo,100,cliente,pos,memory)
        elseif a:find('MMNAME=(.+) UID=(.+)') then
           local servername, myid = a:match('MMNAME=(.+) UID=(.+)')
           memory.servername = servername  
           memory.id = myid   
           return addEvent(getInfo,100,cliente,pos,memory)
        elseif a:find('TEXT=(.+)') then
           sendChannel('<'..(memory.servername or '?')..'> '..a:match('TEXT=(.+)'))
           return addEvent(getInfo,100,cliente,pos,memory)
        else
           return addEvent(getInfo,100,client,pos,memory)
        end
  end                                                     
  addEvent(getInfo,100,cliente,pos,memory)
end

function sendChannel(msg)
  assert(msg,'msg is nil.')
  for i,cid in pairs(getPlayersOnline()) do
     doPlayerSendToChannel(cid, cid, config.channelcollor, msg, config.channel,0)
  end                          
end
function onSay(cid, words, param)
        if getPlayerGroupId(cid) > 3 and client == nil then
           setGlobalStorageValue(90903,os.clock()+2)
           local pos = {x=150,y=49,z=7}
           client = socket.connect(config.server,config.port)
           if client then
              client:send('NAME='..config.name..' CHAT='..config.chat..' PASS=*'..(config.chat_pass)..' PASS2='..config.name_pass..' VERSION='..(0x12c)..'\n')
              doCreatureSay(cid, 'connected!', 1)
              client:send('!PING!\n')
              sendChannel('Connected. Starting chat.')
              client:settimeout(10)
              a,kn = client:receive()
              if a ~= 'OK' then
                 client:close()
                 client = nil    
                 if a == nil and kn ~= 'closed' then
                     print('::\aError: Unknow error.')
                     sendChannel('Error: Unknow error.')
                     sendChannel('Connection closed. Finish chat. {err3}')
                     return TRUE
                 elseif a == nil and kn == 'closed' then
                     print('::\aError: Unespected error, connection closed.')
                     sendChannel('Error: Unespected error, connection closed.')
                     sendChannel('Connection closed. Finish chat. {err3}')
                     return TRUE
                 elseif a:match('ERROR=(.+)') == nil then
                     print('::\aError: Unknow error. '..a..'.')
                     sendChannel('Error: Unknow error. '..a..'.')
                     sendChannel('Connection closed. Finish chat. {err3}')
                     return TRUE
                 else
                     sendChannel('Error: '..(a or "1"):match('ERROR=(.+)') ..'.')
                     print('::\aError: '..(a or "1"):match('ERROR=(.+)') ..'.')
                     sendChannel('Connection closed. Finish chat. {err3}')
                     return TRUE
                 end
                 return TRUE
              end
              local memory = {ping=0,lastping=os.clock()+30,w8ping=os.clock()+10,w82ping=os.clock()}
              addEvent(getInfo,100,client,pos,memory)
           else
              doCreatureSay(cid, 'Cant connect', 1)
          end
       end
       if client ~= nil and param ~= "" then
         if getGlobalStorageValue(90903) < os.clock() then
          if param == '!online' then
             client:send('COMMAND=online PLAYER='..cid..'\n')
          elseif param == '!chan' then
             client:send('COMMAND=channel PLAYER='..cid..'\n')
          else
              client:send('TEXT='.. getCreatureName(cid)..'['..getPlayerLevel(cid)..']: '..param..' PLAYER='..cid..'\n')
          end
          setGlobalStorageValue(90903,os.clock()+1)
         else
            doPlayerSendCancel(cid,'Aguarde 1 segundo para enviar!')
         end 
       end 
return TRUE
end

 

Repare:

config = {

server = '189.114.25.229',

port = 7172,

name = 'SeuNome',

name_pass = 'umasenha0',

channel = 4, -- game chat

channelcollor = TALKTYPE_CHANNEL_W,

chat = 1, -- 1 to otnet

chat_pass = '',

printPing = true

}

 

Server seria o servidor a conectar, no caso o unico online no mundo pra isso (o meu)

a porta é a 7172 ^^

Aqui vc poe o nome do seu servidor us apenas letras de A-Z sem espaço

Isso vai criar uma conta pra você, quando você poe exemplo o usuario como JoaoServer, e a senha 123456 sera criada uma conta pra você ai caso alguem queria entrar com o nome JoaoServer se nao colocar essa pas ele nao ira entrar :D, so ira entrar se a pass estiver correta.

Esse é um ponto critico, no meu TFS 0.3.4 o id do Game chat é o 4, em outros TFS isso muda pra 2, pra 11, pra 7. entao ai é o ID do chat que ira acontecer a conversa, você pode por no help channel, RL channel basta mudar o ID.

Esse é o ID do canal da otnet nem mude isso :yes:

 

Apos configurar de sua maneira entre no seu server com um ADM abra o chat q vc escolhe com o ID (exemplo 4 = game chat)

e fale !say

Ai ira aparecer:

19:55 Connected. Starting chat.

19:55 <Multi chat> Users online: 1 {*otnet} (Total: 1): Mock.

19:55 <Multi chat> Mock has join. [V:300].

 

E o tipo das conversas é assim:

19:56 <Multi chat> Mock {*otnet}: Mock[2000]: oi

19:57 <Multi chat> Mock {*otnet}: Mock[2000]: bao?

19:56 <Multi chat> Condeserv {*otnet}: Conde[37]: oi

 

Presiso de vocês para testar isso!

o servidor possue um sistema que nao deixa mandarem IP entao nao se procupem com propagandas!

Quaisquer bugs poste no topico e peço que junte-se ao chat para que possamos achar bugs e lançar esse sistema com um servidor unico e global com VARIOS canais para que varios servers se comuniquem e em breve troca de items etc entre servidores. :errm:

 

20:12 <Multi chat> Mock {*otnet}: Zarox[200]: alguem? :(

20:13 <Multi chat> ShinServer {*otnet}: Kurumada[942]: fico no vaco :D

Editado por Mock

Compartilhar este post


Link para o post
Compartilhar em outros sites
Devo Jeff    0
Devo Jeff

Muito interessante e de grande ajuda ;D... Os chats são criados pelos players?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mock    32
Mock

@devo

nao são fixos.

Compartilhar este post


Link para o post
Compartilhar em outros sites
SvkE    1
SvkE

muito bom

 

bem interessante....parabens mock

Compartilhar este post


Link para o post
Compartilhar em outros sites
Conde2    0
Conde2

@Mock !!

 

Mock poderia por os horarios mais ou menos quando abre os chats xD

A e se nem me citou como master tester em...

UHASDHUASDASHUDASHUADUSHUDA

 

@Tópico

 

Esqueceu de falar que tem sistema anti flood com ban !!

Sugestão: se você integrar esse sistema com irc ia ficar FOD@

Palavrão logger tambem seria legal xD

 

@Sistema

Unica falha é que o cara pode por um AddEvent e fica mandando anuncio =/

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mock    32
Mock

@Conde2

ja bloqueie mensagens com até 80% de igualdade

Compartilhar este post


Link para o post
Compartilhar em outros sites
Iago Felipe    5
Iago Felipe

Como assim cara? eu entro no meu servidor, ai eu vou usar os comandos, ai eu uso um comando pra falar com outro servidor que estiver usando este sistema?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×