otc [OTC] Module - game_fishing
-
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
. What server or website do you use as a base?
TFS 1.5
What is the reason for this topic?
Free module share
game_bank.zip
-
Por Under
Apresentando o Tibia-IA: A IA para Desenvolvimento de Servidores Tibia!
O que é o Tibia-IA?
Um modelo de IA especializado para Tibia! Ele está atualmente em teste gratuito, e eu adoraria que vocês o experimentassem. Basta acessar https://ai.tibiaking.com, criar uma conta e começar a usar totalmente de graça!
Versão Experimental Fechada
Atualmente, algumas funcionalidades ainda estão em desenvolvimento. No momento, apenas a geração de scripts está disponível para o público.
Se encontrarem qualquer problema nos scripts gerados, me avisem! Vamos juntos construir a IA mais poderosa para ajudar no desenvolvimento de servidores Tibia!
Contato direto discord : underewar
Acesse agora: https://ai.tibiaking.com
Como funciona?
Geração automática de scripts LUA para TFS Suporte a diferentes eventos, criaturas, NPCs, magias, etc. Ferramenta em constante evolução para aprimorar o desenvolvimento Novidades em breve confira no site. O acesso ao Tibia-IA está disponível para testes GRATUITOS!
Basta criar uma conta em: https://ai.tibiaking.com
Utilize a IA para gerar seus scripts de forma simples e rápida
Envie feedbacks para ajudarmos a tornar a ferramenta ainda melhor!
Problemas relatar diretamente no meu discord pessoal : underewar
-
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 vankk
Eu tinha esse evento muito tempo aqui no meu Pen Drive (para ser mais específico 4 anos), eu vou mudar ele para 1.2 amanha, entao nao me interessa a versao 0.4 mais. Nao sei se esta funcionando, nao tenho mapa. E nao vou explicar configuracoes, se voce nao souber configurar esse evento, voce nao merece te-lo em seu servidor!! Entao esta ai o code:
login.luaregisterCreatureEvent(cid, "TBEventC") registerCreatureEvent(cid, "TBEventS") registerCreatureEvent(cid, "TBEventO") tb.lualocal config = { base = {{x=121,y=126,z=7}, {x=142,y=149,z=7}}, -- team1 base, team2 base teamStorage = 49595, fragStorage = {49596, 49597} } function addFrag(id) return setGlobalStorageValue(config.fragStorage[id], math.max(1, (getGlobalStorageValue(config.fragStorage[id])+1))) end function getFragsTB(id) return getGlobalStorageValue(config.fragStorage[id]) == -1 and 0 or getGlobalStorageValue(config.fragStorage[id]) end function getTeam(cid) return getPlayerStorageValue(cid, config.teamStorage) == -1 and 0 or getPlayerStorageValue(cid, config.teamStorage) end function onCombat(cid, target, lastHit, flags) if not(isPlayer(cid)) or not(isPlayer(target)) then return true end if getTeam(cid) ~= 0 and getTeam(cid) == getTeam(target) then return doPlayerSendCancel(cid, "You may not attack teammates.") and false end return true end function onStatsChange(cid, attacker, type, combat, value) if combat == COMBAT_HEALING then return true end if not(isPlayer(cid)) or not(isPlayer(attacker)) then return true end if isMonster(attacker) and getTeam(cid) ~= 0 then return false end if isMonster(attacker) then return true end if getTeam(cid) ~= 0 and getTeam(cid) == getTeam(attacker) then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You may not attack teammates.") and false elseif getTeam(cid) == 0 then return true end if type ~= STATSCHANGE_HEALTHLOSS then return true end if value >= getCreatureHealth(cid) then doTeleportThing(cid, config.base[getTeam(cid)]) doSendMagicEffect(getThingPos(cid), 10) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) addFrag(getTeam(attacker)) doPlayerSendTextMessage(attacker, MESSAGE_INFO_DESCR, "You killed ".. getPlayerName(cid) .." and earned a frag for your team. Your team now has ".. getFragsTB(getTeam(attacker)) .. " frags.") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You were owned by ".. getPlayerName(attacker) ..".") return false end return true end function onOutfit(cid, old, current) if getTeam(cid) ~= 0 then return doPlayerSendCancel(cid, "You cannot change your outfit here.") and false end return true end globalevents
tbevent.lualocal config = { tpPos = {x=92,y=118,z=7}, -- where tp happends tpToPos = {x=130,y=130,z=7}, -- tp p onde minutes = 1, -- minute area = {{x=121,y=126,z=7},{x=142,y=149,z=7}}, -- top left and bottom right corner of fight area waiting = {{x=121,y=126,z=7},{x=142,y=149,z=7}}, -- top left and bottom right corner of waiting arena needed = 2, -- minimum players timeToEnd = 30*1000, -- time to end base = {{x=121,y=126,z=7}, {x=142,y=149,z=7}}, -- team1 base, team2 base names = {"Alliance", "Horde"}, -- team names outfit = {{132, 136, 40},{132, 136, 160}}, -- outfits teamStorage = 49595, fragStorage = {49596, 49597}, fragsToWin = 3, -- frags to win outfitStorage = 49598 } function getFragsTB(id) return getGlobalStorageValue(config.fragStorage[id]) == -1 and 0 or getGlobalStorageValue(config.fragStorage[id]) end function getTeam(cid) return getPlayerStorageValue(cid, config.teamStorage) == -1 and 0 or getPlayerStorageValue(cid, config.teamStorage) end function setTeam(cid, team) local o = getCreatureOutfit(cid) setPlayerStorageValue(cid, config.outfitStorage, "{lookType=" .. o.lookType .. ", lookHead=" .. o.lookHead .. ", lookAddons=" .. o.lookAddons .. ", lookLegs=" .. o.lookLegs .. ", lookBody="..o.lookBody .. ", lookFeet=".. o.lookFeet.."}") doCreatureChangeOutfit(cid, {lookType = config.outfit[team][getPlayerSex(cid)+1], lookHead = config.outfit[team][3], lookAddons = 3, lookLegs = config.outfit[team][3], lookBody = config.outfit[team][3], lookFeet = config.outfit[team][3]}) return setPlayerStorageValue(cid, config.teamStorage, team) end function winner(id) if isInArray({1,2}, id) then doBroadcastMessage(config.names[id] .. " has won the Team Battle event.") for _, cid in pairs(getPlayersOnline()) do if getTeam(cid) == id then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your team has won the Team Battle event.") local rand = math.random(1,3) if rand == 1 then doPlayerAddItem(cid, SOFTBOOTS_ID, 1) elseif rand == 2 then doPlayerAddItem(cid, 2160, 10) else doAddPoints(cid, 5) end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your team has lost the Team Battle event.") end end else doBroadcastMessage("No one won the Team Battle event. DRAW") end for _, cid in pairs(getPlayersOnline()) do if getTeam(cid) ~= 0 then doTeleportThing(cid, getTownTemplePosition(1)) doSendMagicEffect(getThingPos(cid), 10) setPlayerStorageValue(cid, config.teamStorage, -1) setGlobalStorageValue(5474578, -1) doCreatureChangeOutfit(cid, loadstring("return " .. getPlayerStorageValue(cid, config.outfitStorage))()) end end end function areaPlayers(c) local t = {} for x = c[1].x, c[2].x do for y = c[1].y, c[2].y do for z = c[1].z, c[2].z do local tmp = getThingFromPos({x=x,y=y,z=z,stackpos=253}) if tmp.uid > 0 and (isPlayer(tmp.uid)) then table.insert(t, tmp.uid) end end end end return t end function endTB(z) if z >= config.timeToEnd then local w = getFragsTB(1) == getFragsTB(2) and 3 or getFragsTB(1) > getFragsTB(2) and 1 or 2 return winner(w) elseif getFragsTB(1) ~= getFragsTB(2) then if getFragsTB(1) >= config.fragsToWin then return winner(1) elseif getFragsTB(2) >= config.fragsToWin then return winner(2) end end addEvent(endTB, 25, z+25) end function setTeams(cid, team) local pos = config.base[team] if not(isPlayer(cid)) then return true end doTeleportThing(cid, pos) doSendMagicEffect(pos, 10) setTeam(cid, team) end function startTB() doRemoveItem(getTileItemById(config.tpPos, 1387).uid) local ppl = areaPlayers(config.waiting) for i = 1, #ppl do local level = getPlayerLevel(ppl[i]) if not(level >= 150) then -- LEVEL HERE doTeleportThing(ppl[i], getTownTemplePosition(1)) doSendMagicEffect(getThingPos(ppl[i]), 10) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "To fight here must be level 150.") end end ppl = areaPlayers(config.waiting) if #ppl%2 == 1 then local r = ppl[math.random(#ppl)] doTeleportThing(r, getTownTemplePosition(1)) doSendMagicEffect(getThingPos(r), 10) doPlayerSendTextMessage(r, MESSAGE_INFO_DESCR, "Sorry, but you were kicked from the event for balancement.") end ppl = areaPlayers(config.waiting) if #ppl >= config.needed then for p = 1, #ppl/2 do addEvent(setTeams, 10*1000, ppl[p], 1) for i = 10, 1, -1 do addEvent(doPlayerSendTextMessage, (10-i)*1000, ppl[p], MESSAGE_INFO_DESCR, "Team Battle event will start in " .. i .. " seconds.") end end for p = #ppl/2+1, #ppl do addEvent(setTeams, 10*1000, ppl[p], 2) for i = 10, 1, -1 do addEvent(doPlayerSendTextMessage, (10-i)*1000, ppl[p], MESSAGE_INFO_DESCR, "Team Battle event will start in " .. i .. " seconds.") end end addEvent(endTB, 10*1000, 0) return doBroadcastMessage("Team Battle event started.") end for i = 1, #ppl do doTeleportThing(ppl[i], getTownTemplePosition(1)) doSendMagicEffect(getTownTemplePosition(1), 10) doPlayerSendTextMessage(ppl[i], MESSAGE_INFO_DESCR, "There were not enough players") end doBroadcastMessage("Team Battle failed to start, because there were not enough players.") setGlobalStorageValue(5474578, -1) end function onTime() setGlobalStorageValue(config.fragStorage[1], -1) setGlobalStorageValue(5474578, 1) setGlobalStorageValue(config.fragStorage[2], -1) doBroadcastMessage("Team Battle event will start in " .. config.minutes .. " minutes. The teleporter is open now. ") doCreateTeleport(1387, config.tpToPos, config.tpPos) for m = config.minutes-1, 0, -1 do if m == 0 then addEvent(startTB, config.minutes*60*1000) else addEvent(doBroadcastMessage, (config.minutes-m)*60*1000, "Team Battle event will start in " .. m .. " minutes.") end end return true end Créditos: Desconhecido.
Yours VANKK;
-
-
Estatísticas dos Fóruns
96842
Tópicos519599
Posts
Posts Recomendados
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.