Ir para conteúdo
  • Cadastre-se
  1. Drazyn1291

    Drazyn1291

  2. Milbradt

    Milbradt

  3. Wend

    Wend

  • 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
    • Por EddyHavoc
      Descrição: Com estas alterações nas sources do servidor e do OTC você conseguirá adicionar ao jogo uma barra de carregamento nas criaturas do jogo. Esta barra é personalizável e pode ser utilizada de diversas formas em diferentes scripts.

      Server sources.
      No arquivo game.h
      Abaixo de:
      Adicione:
       
      No arquivo game.cpp
      Adicione:
       
      No arquivo luascript.h
      Abaixo de:
      Adicione:
       
      No arquivo luascript.cpp
      Abaixo de:
      Adicione:
      Abaixo de:
      Adicione:
       
      No arquivo player.h
      Abaixo de:
      Adicione:
       
      No arquivo protocolgame.h
      Abaixo de:
      Adicione:
       
      No arquivo protocolgame.cpp
      No final do arquivo adicione:
       
      Client sources.
      No arquivo protocolcodes.cpp
      Abaixo de:
      Adicione:
       
      No arquivo protocolgame.h
      Abaixo de:
      Adicione:
       
      No arquivo protocolgameparse.cpp
      Abaixo de:
      Adicione:
      Abaixo de:
      Adicione:
       
      No arquivo creature.h
      Abaixo de:
      Adicione:
      Abaixo de:
      Adicione:
       
      No arquivo creature.cpp
      Abaixo de:
      Adicione:
      Substitua o código abaixo:
       
      Por este código:
       
      E ainda no arquivo creature.cpp no final da página adicione:
       
       
      Fim! Estas são todas as alterações! 

      Créditos:
      EddyHavoc
      Flatlander
      Kondrah
      Oen432
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo