Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Fala Galera nunca postei algo assim , então essa vai ser a minha 1° vez , então sem mais delongas é um sistema basico para OTC , é um novo tipo de BroadCast , lembrando que a ideia inicial desse sistema não é minha apenas copiei o sistema de um servidor de poketibia pl.

então uma print de como é o sistema 

 

nVEyPX8.png

 

 

então la vai como instalar esse mod no seu OTC

 

1° Crie uma pasta escrito mod_broadcast

2° adicione esses scripts dentro da pasta

 

bc.lua

-- configs



-- private variables
widget = nil
hideEvent = nil

function reg()
ProtocolGame.registerOpcode(71, onPacket)
end

function ureg()
ProtocolGame.unregisterOpcode(71)
end
-- public functions
function init()
connect(g_game, { onGameStart = reg,
onGameEnd = ureg})
g_ui.importStyle('bc.otui')
widget = g_ui.createWidget('broadcastWindow', modules.game_interface.getMapPanel())
widget:hide()
widget:setTextHorizontalAutoResize(true)
widget:setTextWrap(true)
--[[widget:setX((g_window.getWidth() - widget:getImageWidth()) / 2)
widget:addAnchor(AnchorLeft, 'gameMapPanel', AnchorLeft)
widget:addAnchor(AnchorTop, 'gameMapPanel', AnchorTop)
widget:addAnchor(AnchorRight, 'gameMapPanel', AnchorRight)]]

if g_game.isOnline() then
reg()
end
notify_init(showText)
end

function terminate()
disconnect(g_game, { onGameStart = reg,
onGameEnd = ureg})
if g_game.isOnline() then
ureg()
end

widget:destroy()
end

function hideWindow()
return widget and g_effects.fadeOut(widget)
end

function calculateVisibleTime(text)
return math.max(1000 + #text * 100, 4000)
end

function showText(s)
widget:setText(s)
if hideEvent then
hideEvent:cancel()
end
widget:resizeToText()
widget:setHeight(widget:getHeight() + 20)
widget:show()
g_effects.fadeIn(widget)
hideEvent = scheduleEvent(hideWindow, calculateVisibleTime(s))
return true
end


function onPacket(protocol, message)
showText(message:getString())
end

 

bc.otmod

Module


name: mod_broadcast
description: Show broadcasts and other messages in window
author: GabrielTxu
website: tibiaking.com
scripts: [ bc ]
sandboxed: true
@onLoad: init()
@onUnload: terminate()

 

bc.otui

 

broadcastWindow < UIWidget


opacity: 0.85
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
border: 0 white
witdh: 600
margin: 30
border: 2 black

text-align: center
font: sans-bold-16px_cp1252
background-color: #b40000
focusable: false
phantom: false
draggable: true

 

e é só isso galera , qual quer coisa comenta aqui , erro , se funcionou , se gostou deixa seu rep+ ai ,

lembrando que esse servidor Opal não vou mais postar , e talves vou fazer um novo video no meu canal de como deixar seu servidor On com net via radio ou compartilhada sem Hamachi , uma surpresa xD 

 

 

créditos :

Poke-Evo

Gabrieltxu

 

 

Meu Ultimo projeto em desenvolvimento!

 

http://www.tibiaking.com/forum/topic/47753-show-off-ultimo-projeto-para-download/

 

 

Grupo do facebook para OtServidores! (Divulgação + Criação de Equipe)

 

https://www.facebook.com/groups/otservidores/

 

Link para o post
Compartilhar em outros sites

estou usando PDA by: Bolz e com otclient mais não funcionou :(

aparece o broadcast mais aparece normal

                                                            vps-plano-01.png

 

                                                                                                                    http://www.weblara.com.br/

Link para o post
Compartilhar em outros sites

ve se o seu otc está lendo o mod 

Meu Ultimo projeto em desenvolvimento!

 

http://www.tibiaking.com/forum/topic/47753-show-off-ultimo-projeto-para-download/

 

 

Grupo do facebook para OtServidores! (Divulgação + Criação de Equipe)

 

https://www.facebook.com/groups/otservidores/

 

Link para o post
Compartilhar em outros sites

ve se o seu otc está lendo o mod 

como posso fazer isso?

                                                            vps-plano-01.png

 

                                                                                                                    http://www.weblara.com.br/

Link para o post
Compartilhar em outros sites

Entendo , tente instalar opcodes na sua source e teste novamente , aqui funciona e eu uso opcodes 

Meu Ultimo projeto em desenvolvimento!

 

http://www.tibiaking.com/forum/topic/47753-show-off-ultimo-projeto-para-download/

 

 

Grupo do facebook para OtServidores! (Divulgação + Criação de Equipe)

 

https://www.facebook.com/groups/otservidores/

 

Link para o post
Compartilhar em outros sites

Entendo , tente instalar opcodes na sua source e teste novamente , aqui funciona e eu uso opcodes 

Obrigado mais como faço isso? uso servidor PDA

Link para o post
Compartilhar em outros sites

ufa ainda bem que funcionou em algum , pensei que não estava certo o sistema 

Meu Ultimo projeto em desenvolvimento!

 

http://www.tibiaking.com/forum/topic/47753-show-off-ultimo-projeto-para-download/

 

 

Grupo do facebook para OtServidores! (Divulgação + Criação de Equipe)

 

https://www.facebook.com/groups/otservidores/

 

Link para o post
Compartilhar em outros sites

Quem tiver PDA vai ter que tentar de outra forma sem ser OPCODES.

e como vamos fazer isso?

 

ufa ainda bem que funcionou em algum , pensei que não estava certo o sistema 

o meu é PDA e agora?

                                                            vps-plano-01.png

 

                                                                                                                    http://www.weblara.com.br/

Link para o post
Compartilhar em outros sites

ninguém vai ensina como colocar no PDA? vlw vocês são feras :facepalm:

                                                            vps-plano-01.png

 

                                                                                                                    http://www.weblara.com.br/

Link para o post
Compartilhar em outros sites
  • 4 weeks later...

não tem como usar esse mod ai no pda gente deixa de cena e saiam do lixo do pda e vao fazer seu proprio serve com a devida source seu codigo fonte como querem colocar mais coisas no serves de vocês se vc nao tm o codigo fonte certas coisas precisa do codigo fonte é por isso que os ots de voces nao vão pra frente

Link para o post
Compartilhar em outros sites

What a pity you didn't mention zygzagZ from Sharp#Team as an author, cause whole .lua and .otui code is his own work. You did nothing but changed "author" property in otmod. It's very kind of you.

Editado por Ashba666 (veja o histórico de edições)
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.

  • Conteúdo Similar

    • Por Underewar
      Tutorial: Criando um Sistema de Enviar efeito com OTClient.


       
      Neste tutorial, vamos criar um sistema simples de Enviar efeito no OTClient.
      Este sistema permitirá que os jogadores ativem um efeito especial e vejam uma janela ao clicar em um botão específico.
      Pré-requisitos:
      Ambiente de Desenvolvimento:
      Certifique-se de ter um ambiente de desenvolvimento configurado com OTClient Edubart. Conhecimento Básico em Lua:
      Familiaridade com a linguagem de script Lua.
       
      Passo 1: Estrutura do projeto
       
      Organize seu projeto conforme abaixo:

      OTC / MODS



      Passo 2: Criando a Interface Gráfica (OTUI)

      game_pass.otui
      Repare que em nossa interface nossos botões de ação entram no caminho do module e iniciam uma função que esta disponivel em nosso game_pass.lua (Client-Side)

       



      Passo 3: Criando funções Client-Side

      Agora com as funções criada podemos chamar elas de acordo com a necessidade em nosso arquivo de interface.
      Por exemplo a função effect() que foi chamada em nosso arquivo de interface.otui agora é criada aqui para mostrar o efeito ao jogador.

      game_pass.lua
       
       
      Passo 4: Registrando o novo Mod

      Agora podemos registrar e iniciar nosso modulo usando o arquivo de configuração

      game_pass.otmod
       

      Feito isso ja podemos ver nosso module no client e enviar opcodes através do gameprotocol e também receber o buffer para manipular os dados podemos utilizar :
      protocolGame:sendExtendedOpcode(14, "1")
      Basicamente oque estamos fazendo é armazenando o valor 1 na variaval 14 do ExtendedOpcode e futuramente podemos recuperar esse valor.

      Recuperamos esse valor em nosso server side data/creatuerscript/otc/game_pass.lua

      Verificando se o opcode é 14 se for 14 então fazemos x ação.

      Show, tendo isso em mente para que o nosso client-side consiga receber com sucesso o efeito enviado ao jogador então utilizamos 

      Passo 5: Criando o Server-side responsavel por enviar o efeito correto ao jogador dependendo do opcode selecionado no nosso cliente.

      data/creaturescripts/otc/game_pass.lua
       
      Passo 6: Registrando o evento para evitar erros futuros!
      Para que tudo funcione corretamente sem erros é  necessário registrar o evento no creaturescript.xml / login.lua

      creaturescript.xml
      <event type="extendedopcode" name="GamePass" script="otc/game_pass.lua" />
      login.lua
          player:registerEvent("GamePass")  


      Ótimo agora ao selecionar o menu recompensa o jogador recebera um efeito.

      Espero que tenha ficado claro como usar Opcodes/ExetendedOpcodes.

      Arquivos usados no tutorrial:
      OTC MODULE
      game_pass.rar
      Creaturescript
      game_pass.lua

      Vi muitos tutoriais desatualizado então resolvi trazer esse!
      Reparem que nesse caso passamos creature como parametro do buffer isso porque precisamos enviar um efeito no player.

      Melhorando a formatação com JSON Encoder

       
       
    • Por chateadoagr
      Servidor baseado em jogos e series: Resident Evil, TWD, Jurassic World, Jurassic Park, entre outros.
       
      O Inicio:
      Em 1993, em uma ilha remota, um rico empresário monta um parque temático com dinossauros vivos, criados a partir de DNA pré-histórico. Antes de abri-lo ao público, ele convida um conceituado paleontologista e sua namorada paleobotânica, um renomado matemático e também seus dois netos para conhecerem o parque - e ajudarem a acalmar investidores ansiosos. Mas a visita não é nem um pouco tranquila, já que os predadores pré-históricos escapam e começam a caçar os habitantes da ilha, no final do ano de 1993, foi isolada a ilha, exterminados os animais e ninguém mais explorou a ilha temática.
       
      Em 1998, quando crimes bizarros começam a assolar a pequena Raccoon City. As vítimas, normalmente andarilhos e excursionistas que passam pela floresta nos arredores da cidade, são brutalmente assassinadas e seus corpos apresentam sinais de canibalismo e violência extrema. O departamento de polícia de Raccoon decide enviar seu time de elite, os S.T.A.R.S. (Special Tactics and Rescue Service, Serviço de Táticas Especiais e de Resgate) para cuidar do caso. A primeira equipe enviada é a Bravo, que perdeu contato com a delegacia minutos após entrar na área da floresta. Após 24 horas sem contato via rádio, a equipe Alpha é enviada, e se surpreendem ao encontrar o helicóptero da outra equipe completamente abandonado. Enquanto checavam os arredores em busca de pistas sobre a localização dos policiais desaparecidos, Joseph Frost, um dos membros da equipe Alpha, é atacado por cães selvagens, que aparentam estado de decomposição avançada. Abandonados por Brad Vickers, piloto da equipe, que foge levando o helicóptero, os oficiais sobreviventes se veem sem opção a não ser se refugiar em uma mansão que é avistada de longe.[...]
       
       
       
       
      Após o fracasso do parque temático e o apocalipse, os sobreviventes foram levados para uma nova ilha que se tornou uma cidade com muitos recursos recuperados pelo apocalipse. Anos se passaram e a humanidade cresceu relativamente. Novos médicos, cientista e estudantes vieram a tona, mas um deles se destacou, o Dr Edward Kirk.
      O Dr Edward Kirk, um cientista, que assumiu as empresas Umbrella Corporation e as empresas Weskers, assim que seus diretores foram mortos nos ataques de Reccoon City. Dr Kirk mudou o nome das empresas para Healthy Life(vida saudável), com seu principal projeto: Terceira energia, esse projeto consiste num sistema em que cria energia limpa e barata.
      Porem o Governo, não quis patrocinar esse projeto então o Dr, retornou ao seu antigo projeto "O Fim da Extinção". Esse projeto teve ajuda de vários empresários que investiram muito nesse projeto que era trazer animais que foram extinto de volta a vida, pegando DNAs de fosseis e transformando eles a vida novamente, também teve ajuda do Dr Albert wesker.[...[
      Continua...
       
       
       
       



       

       

       
      Mapa:
       
       




      A ideia é deixar assim uma das ilhas:

      Será na versão 8.6 
      Cliente OTC
      O que estou precisando:
      Spriters de dinossauros, personagens, itens(arma e equipamentos), etc.
      Programadores pra ajudar a desenvolver alguns sistemas que estão faltando.
      Mapper para ajuda a termina o mapa.
      Doações, sugestões e ajuda:
      Entre em contato pelo whatsapp:
      42 9 88067789
      Nome: Itamar Vinicius
       
       
       
    • Por Gabrieltxu
      Prometi a mim mesmo não ajudar mais a comunidade, porem com os acontecimentos em cima dessa base me deixou com raiva e vim compartilhar a mesma com vocês, o servidor foi feito em cima da base vasada do Psoul, onde Walox e outro que não sei o nick trabalharam, porem como já de costume Walox melhorou a interface assim como a Mytology e a ZRing, e para não perder o costume anunciou a venda do mesmo, onde algumas pessoas chegaram a pagar bem caro pela base, quase 2 mil reais. 
      Até ai tudo bem, porem não contente começou a vender ainda mais copias do servidor, e quem comprava também vendia a copia do servidor, algo que acho totalmente errado.
      Enfim para acabar com essa palhaçada hoje estou postando a base.
       
      Ressalvo que NÃO IREI DAR SUPORTE A ESSA BASE, BASE CONTEM MUITOS BUGS, OQUE TEM DE MELHOR É A INTERFACE MESMO 
       
      Algumas Imagens do servidor:
       
      Scans
       
      Link para Download (Contem tudo, Client, server etc..): https://mega.nz/file/6dIwRaxT#y2nRFVckLLTLFSBRRtEUJVb-KBAwVPfMhqxyTEEv4Cs
      Mediafire: https://www.mediafire.com/file/d89t3ol1beq8129/poke+jornadas+completo+++src.rar/file
      Senha do Winrar: naoetrote1234567890@
       
      Créditos:  - Criadores da base Psoul
                       - Walox (Wave) e equipe
       
       
      É isso, espero que essa pratica de venda de servidores desenfreados acabe, desejo boa sorte a todos com a base e façam bom proveito.      
       
       
    • Por Akun
      Oiiii Boa Noite !!! , Gostaria de pedir a ajuda de vocês em um poblemas que eu estou tendo,
       
      Adicionei recentemente esse Script Abaixo e consegui instalar tudo direitinho, ta rodando liso.. Mas Gostaria de implementar bonus nesse script
      Exemplo:
      Player Vip: 20% a + de XP
      Player Vip: 1%   a + de ATK SPEED
       
      abaixo todo o Script
       
      [Fonte]
       
      Sistema Vip
       
      1° execute dentro da sua db
      ALTER TABLE `accounts` ADD COLUMN `viplastday` int(10) NOT NULL DEFAULT 0 AFTER `lastday`, ADD COLUMN `vipdays` int(11) NOT NULL DEFAULT 0 AFTER `lastday`;  
       
       
      2º na pasta data/creaturescripts/scripts procure pelo arquivo login.lua e adicione na segunda linha, logo após o function onLogin(player) isso
      player:loadVipData() player:updateVipTime() 3° na pasta data\ crie um arquivo chamado vipsystem.lua e adicione o seguinte
      local config = { -- true = player will be teleported to this position if Vip runs out -- false = player will not be teleported useTeleport = true, expirationPosition = Position(95, 114, 7), -- true = player will received the message you set -- false = player will not receive a message useMessage = true, expirationMessage = 'Your vip days ran out.', expirationMessageType = MESSAGE_STATUS_WARNING } if not VipData then VipData = { } end function Player.onRemoveVip(self) if config.useTeleport then self:teleportTo(config.expirationPosition) config.expirationPosition:sendMagicEffect(CONST_ME_TELEPORT) end if config.useMessage then self:sendTextMessage(config.expirationMessageType, config.expirationMessage) end end function Player.getVipDays(self) return VipData[self:getId()].days end function Player.getLastVipDay(self) return VipData[self:getId()].lastDay end function Player.isVip(self) return self:getVipDays() > 0 end function Player.addInfiniteVip(self) local data = VipData[self:getId()] data.days = 0xFFFF data.lastDay = 0 db.query(string.format('UPDATE `accounts` SET `vipdays` = %i, `viplastday` = %i WHERE `id` = %i;', 0xFFFF, 0, self:getAccountId())) end function Player.addVipDays(self, amount) local data = VipData[self:getId()] local amount = math.min(0xFFFE - data.days, amount) if amount > 0 then if data.days == 0 then local time = os.time() db.query(string.format('UPDATE `accounts` SET `vipdays` = `vipdays` + %i, `viplastday` = %i WHERE `id` = %i;', amount, time, self:getAccountId())) data.lastDay = time else db.query(string.format('UPDATE `accounts` SET `vipdays` = `vipdays` + %i WHERE `id` = %i;', amount, self:getAccountId())) end data.days = data.days + amount end return true end function Player.removeVipDays(self, amount) local data = VipData[self:getId()] if data.days == 0xFFFF then return false end local amount = math.min(data.days, amount) if amount > 0 then db.query(string.format('UPDATE `accounts` SET `vipdays` = `vipdays` - %i WHERE `id` = %i;', amount, self:getAccountId())) data.days = data.days - amount if data.days == 0 then self:onRemoveVip() end end return true end function Player.removeVip(self) local data = VipData[self:getId()] if data.days == 0 then return end data.days = 0 data.lastDay = 0 self:onRemoveVip() db.query(string.format('UPDATE `accounts` SET `vipdays` = 0, `viplastday` = 0 WHERE `id` = %i;', self:getAccountId())) end function Player.loadVipData(self) local resultId = db.storeQuery(string.format('SELECT `vipdays`, `viplastday` FROM `accounts` WHERE `id` = %i;', self:getAccountId())) if resultId then VipData[self:getId()] = { days = result.getDataInt(resultId, 'vipdays'), lastDay = result.getDataInt(resultId, 'viplastday') } result.free(resultId) return true end VipData[self:getId()] = { days = 0, lastDay = 0 } return false end function Player.updateVipTime(self) local save = false local data = VipData[self:getId()] local days, lastDay = data.days, data.lastDay local daysBefore = days if days == 0 or days == 0xFFFF then if lastDay ~= 0 then lastDay = 0 save = true end elseif lastDay == 0 then lastDay = os.time() save = true else local time = os.time() local elapsedDays = math.floor((time - lastDay) / 86400) if elapsedDays > 0 then if elapsedDays >= days then days = 0 lastDay = 0 else days = days - elapsedDays lastDay = time - ((time - lastDay) % 86400) end save = true end end if save then if daysBefore > 0 and days == 0 then self:onRemoveVip() end db.query(string.format('UPDATE `accounts` SET `vipdays` = %i, `viplastday` = %i WHERE `id` = %i;', days, lastDay, self:getAccountId())) data.days = days data.lastDay = lastDay end end  
      4° no arquivo global.lua adicione a seguinte linha
      dofile('data/vipsystem.lua')  
      Talkaction !checkvip para todos os players
       
      1° vá na pasta data/talkactions/scripts e crie um arquivo chamando checkvip.lua e adicione o seguinte
      function onSay(cid, words, param) local player = Player(cid) local days = player:getVipDays() if days == 0 then player:sendCancelMessage('You do not have any vip days.') else player:sendCancelMessage(string.format('You have %s vip day%s left.', (days == 0xFFFF and 'infinite amount of' or days), (days == 1 and '' or 's'))) end return false end 2° e em data/talkactions/talkactions.xml adicione
       
      <talkaction words="!checkvip" script="checkvip.lua"/>  
      Talkaction /vip para membros da staff
      - /vip adddays, NomedoPlayer, 5 --> Adiciona 5 dias vip para o Player. - /vip removedays, NomedoPlayer, 5 --> Remove 5 dias vip do Player. - /vip remove, PlayerName --> Remove todos os dias vip do Player. - /vip check, NomedoPlayer --> Checa quantos dias vip o Player tem. - /vip addinfinite, NomedoPlayer --> Adiciona tempo vip infinito para o Player.  
      Tiles VIP
       
      1° em data/movements/movements.xml e adicione
      <movevent event="StepIn" actionid="1500" script="viptiles.lua"/> <movevent event="StepIn" actionid="1501" script="viptiles.lua"/> 2° em data/movements/script crie o arquivo viptiles.lua e adicione o seguinte
      local vipPosition = Position(101, 116, 7) function onStepIn(cid, item, position, fromPosition) local player = Player(cid) if not player then return true end if item.actionid == 1500 then if not player:isVip() then player:teleportTo(fromPosition) fromPosition:sendMagicEffect(CONST_ME_POFF) player:sendCancelMessage('You do not have any vip days.') end elseif item.actionid == 1501 then if player:isVip() then player:teleportTo(vipPosition) player:say('!* VIP *!', TALKTYPE_MONSTER_SAY) vipPosition:sendMagicEffect(CONST_ME_STUN) else player:teleportTo(fromPosition) player:sendCancelMessage('You do not have any vip days.') fromPosition:sendMagicEffect(CONST_ME_POFF) end end return true end Items que adicionam dias VIP
       
      ItemId 10135 adiciona 10 dias vip. ItemId 10134 adiciona 30 dias vip. ItemId 10133 adiciona 90 dias vip.  
       
      1° em data/actions/actions.xml adicione
      <action fromid="10133" toid="10135" script="vipitems.lua"/> 2° e em data/actions/scripts crie um arquivo chamado vipitems.lua e adicione o seguinte
      local vipItems = { -- [itemid] = amount of vip days [10135] = 10, [10134] = 30, [10133] = 90 } function onUse(cid, item, fromPosition, itemEx, toPosition, isHotkey) local player = Player(cid) local days = vipItems[item.itemid] player:addVipDays(days) player:say('!* YAY VIP! *!', TALKTYPE_MONSTER_SAY) player:getPosition():sendMagicEffect(CONST_ME_STUN) player:sendTextMessage(MESSAGE_INFO_DESCR, string.format('You received %s vip days.', days)) Item(item.uid):remove(1) return true end
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo