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

  Mostrar conteúdo oculto

-- 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

  Mostrar conteúdo oculto

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

 

  Mostrar conteúdo oculto

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
  • Respostas 30
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

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        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   bc.otmod   bc.

A parte do servidor é só fazer um:    doSendPlayerExtendedOpcode(cid, 71, "Mensagem do BroadCast").

nao tenho certeza mas para adpatar no broadcast nao prescisaria usar code e so ir no lua do game_console e alterar   isso     if mode == MessageModes.GamemasterBroadcast then     modules.game_textmessage.displayBroadcastMessage(name .. ': ' .. message)     return   end   por      if mode == MessageModes.GamemasterBroadcast then      modules.mod_broadcast.showText(name .. ': ' .. message)     return   end

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
  Em 15/09/2014 em 01:02, Gabrieltxu disse:

ve se o seu otc está lendo o mod 

Expand   Mostrar mais  

como posso fazer isso?

                                                            vps-plano-01.png

 

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

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 L3K0T
      Bem-vindo ao tutorial sobre como compilar o OTClient Mehah no Visual Studio 2022! Neste tutorial, vou guiá-lo pelo processo de configuração do ambiente de desenvolvimento e compilação do OTClient Mehah no Visual Studio 2022
       
       
      Tutorial: Compilando o OTClient Mehah no Visual Studio 2022
       
       
      Passo 1:  Downloads necessários baixe todos primeiro
       
      Visual Studio 2022 Comunidade:
      Faça o download:  https://visualstudio.microsoft.com/pt-br/downloads/


       
       
      Microsoft Visual C++ Redistributable 2015-2022: 
      Download:  32bits: https://aka.ms/vs/17/release/vc_redist.x86.exe  ou 64 bits: https://aka.ms/vs/17/release/vc_redist.x64.exe
       
       
      Git: Se ainda não tiver o Git instalado, faça o download: https://git-scm.com/download/win
       

       
       
      Passo 2: Instalando abra o visual studio 22 ai quando chegar nessa tela você marca essas opções e desmarca as outras:
       

       

       
       
      instalando o git, pode só dar next até o final...
       

       
      instalando o Microsoft Visual C++ Redistributable 2015-2022
      abra seu powershell
       
      digite os comando 1 por vez:
       
      git clone https://github.com/Microsoft/vcpkg  
      cd vcpkg  
      .\bootstrap-vcpkg.bat  
       
      bibliotecas 64bits referente ao seus sistema
        .\vcpkg install boost-iostreams:x64-windows boost-asio:x64-windows boost-system:x64-windows boost-variant:x64-windows boost-lockfree:x64-windows luajit:x64-windows glew:x64-windows boost-filesystem:x64-windows boost-uuid:x64-windows physfs:x64-windows openal-soft:x64-windows libogg:x64-windows libvorbis:x64-windows zlib:x64-windows opengl:x64-windows openssl:x64-windows liblzma:x64-windows nlohmann-json:x64-windows protobuf:x64-windows  
      bibliotecas 32bits referente ao seus sistema
        .\vcpkg install boost-iostreams:x86-windows boost-asio:x86-windows boost-system:x86-windows boost-variant:x86-windows boost-lockfree:x86-windows luajit:x86-windows glew:x86-windows boost-filesystem:x86-windows boost-uuid:x86-windows physfs:x86-windows openal-soft:x86-windows libogg:x86-windows libvorbis:x86-windows zlib:x86-windows opengl:x86-windows openssl:x86-windows liblzma:x86-windows nlohmann-json:x86-windows protobuf:x86-windows  
      por final:
      .\vcpkg integrate install
       
       
      Download cliente mehah versão nova: https://github.com/mehah/otclient
       
      Agora só abrir o projeto pelo visual studio e clica compilar que vai configura tudo certinho e vai compilar
       


       
       
       
    • Por idlerpl
      TFS 1.5
       
      https://gyazo.com/b42464c4e3689d5d1a199e738208fb24

      game_fishing (1).zip
    • Por Under
      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 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
  • Estatísticas dos Fóruns

    96846
    Tópicos
    519605
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo