Histórico de Curtidas
-
Guilherme recebeu reputação de alrtronca em sprite agua transparenteSó deus sabe, mas você pode encontrar ajudas na otland.net
http://otland.net/threads/how-to-make-transparent-sprites.221250/tem esse tópico e alguns outros explicando como fazer, não é um tutorial e sim uma ajuda.
Você pode conseguir baixar um executável já compilado com o alpha channel e fazer apenas a configuração nos modulos.
-
Guilherme recebeu reputação de Kageyama em [C++] Color Name [DigiWo]Por: BananaFight > DragonElement
Depois de ver muitos pedidos, Resolvi doar em nome da equipe DigiWo o código que muda a cor do nome dos monstros.
Este é uma versão 1.0 que não serve mais para o DigiWo por ja termos um sistema mais avançado.
Instalação
Creature.cpp procure por
if(healthPercent > 92) Embaixo você muda para
if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x00, 0xBC, 0x00); } Acho que deu de entender o que tem que fazer,
Adicionando Nomes
Isto representa o nome do monstro/player que terá a cor do nome alterada. (Sim, vai ter que cadastrar nome por nome nesse sistema.)
if (m_name == "Banana Fight") Para adicionar mais nomes é só seguindo a logica
if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else if (m_name == "Demon"){ m_informationColor = Color(0xFF, 0xFF, 0xFF); }else{ m_informationColor = Color(0x00, 0xBC, 0x00); } E para colorir o resto das porcentagens a mesma coisa
else if(healthPercent > 60) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x50, 0xA1, 0x50); } Só recomendo que não mecha no ultimo, pois se não souber mexer pode dar erro.
else m_informationColor = Color(0x85, 0x0C, 0x0C); Adicionando Cores
Isto representa a porcentagem de hp que o player ou monstro vai estar
m_informationColor = Color(0x00, 0xBC, 0x00); Para mudar a cor você edita aqui :
Color(0x00, 0xBC, 0x00) As corer funcionam da seguinte maneira (RGB)
00 BC 00 < Está é uma cor RGB Hexadecimal
Aqui um link com uma tabela: http://shibolete.tripod.com/RGB.html
Você tem que pegar a cor hexadecimal e dividir em 3 partes
#FFFF00 > FF FF 00
Ai é só você preencher, Color(0xFF, 0xFF, 0x00) com cada letra/numero.
Exemplo Final
void Creature::setHealthPercent(uint8 healthPercent)[/center] { if(healthPercent > 92) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x00, 0xBC, 0x00); } else if(healthPercent > 60) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x50, 0xA1, 0x50); } else if(healthPercent > 30) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0xA1, 0xA1, 0x00); } else if(healthPercent > 8) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0xBF, 0x0A, 0x0A); } else if(healthPercent > 3) if (m_name == "Banana Fight"){ m_informationColor = Color(0xB2, 0x22, 0x22); }else{ m_informationColor = Color(0x91, 0x0F, 0x0F); } else m_informationColor = Color(0x85, 0x0C, 0x0C); m_healthPercent = healthPercent; callLuaField("onHealthPercentChange", healthPercent); if(healthPercent <= 0) onDeath(); } -
Guilherme recebeu reputação de Budrox em Projeto Charlover 2DEu acho que se você fizer em cima do OTC e lançar pra mobile, vai conseguir ganhar alguns jogadores do kakele. Hoje em dia tem muita gente atrás de jogo mobile
-
Guilherme deu reputação a oclipper em [SOURCE] BOT OTClient (Free - COM CAVEBOT)BOT ATUALIZAÇÃO 03MAR2022
Mudanças
_ Não precisa mais encontrar o rootPanel, agora é só desenhar a tela do tibia. Muito mais facil, agora da pra usar waypoints em qualquer ot rapidamente.
_ Varias outras melhorias internas.
Download Link: https://www.4shared.com/s/fe6Wmup49ea
SCAN: https://www.virustotal.com/gui/file/61504ff82daa2b12c838894b19a33c5edd7c3a9c08c776b5abe1eb647c4e2c4d?nocache=1
-
Guilherme recebeu reputação de CaduGTX em Mostrando suas HuntsPor: BananaFight > DragonElement
Bom, como acho que todos ja viram o map do servidor de poketibia (Pxg) ele mostra icones, nomes etc no minimap, e hoje vim trazer isso para vocês
Nome: Map Icon Descrição: Adiciona um icone no minimap Autor: Eduardo Vicente (Banana Fight) Versão 1.0
Features: Criar Icones no minimap
Instalação
dentro de modules/game_minimap/minimap.lua
embaixo de :
function toggle() if minimapButton:isOn() then minimapWindow:close() minimapButton:setOn(false) else minimapWindow:open() minimapButton:setOn(true) end end Você adiciona a função :
function setMonsterCave(posx, posy, posz, icon, description) local pos = {} pos.x = posx pos.y = posy pos.z = posz minimapWidget:addFlag(pos, icon, description) end function removeMonsterCave(posx, posy, posz, icon, description) local pos = {} pos.x = posx pos.y = posy pos.z = posz minimapWidget:removeFlag(pos, icon, description) end Como usar
setMonsterCave(Posição X do map, Posição Y do map,Posição Z do map, "Nome da Imagem", "Descrição que vai aparecer") Obs: como eu usei uma função que já existe você vai te que seguir um padrão na hora de adicionar o nome da sua imagem.
Exemplo: O nome da minha imagem é "dragonicon.png", para que eu possa usar ela no script eu tenho que adicionar essa imagem dentro da pasta "data/images/game/minimap/", e vou ter que renomear essa imagem para "flagdragonicon.png", Ai depois de ter feito isso dentro do meu script quando eu for fazer o script adicionar essa imagem eu vou fazer da seguinte maneira :
setMonsterCave(32238, 32240, 7, "dragonicon", "Dragon Cave")
Se você ainda não entendeu é da seguinte forma, você tem uma imagem com nome "test.png", você vai adiciona a imagem no lugar certo, com o nome "flagtest.png", ai dentro do script você só usa "test", pois o script já sabe que vai ter que juntar flag+nome da imagem que você adicionou+.png.
Obs 2: Sua imagem tem que ter o fundo transparente
Obs 3: quando mais transparente for a imagem, mais do map aparece e causa o efeito igual ao do PXG, do map se abrindo.
Exemplo de uso :
arquivo : minimap.lua
function init() minimapButton = modules.client_topmenu.addRightGameToggleButton('minimapButton', tr('Minimap') .. ' (Ctrl+M)', '/images/topbuttons/minimap', toggle) minimapButton:setOn(true) minimapWindow = g_ui.loadUI('minimap', modules.game_interface.getRightPanel()) minimapWindow:setContentMinimumHeight(64) minimapWidget = minimapWindow:recursiveGetChildById('minimap') local gameRootPanel = modules.game_interface.getRootPanel() g_keyboard.bindKeyPress('Alt+Left', function() minimapWidget:move(1,0) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Right', function() minimapWidget:move(-1,0) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Up', function() minimapWidget:move(0,1) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Down', function() minimapWidget:move(0,-1) end, gameRootPanel) g_keyboard.bindKeyDown('Ctrl+M', toggle) g_keyboard.bindKeyDown('Ctrl+Shift+M', toggleFullMap) minimapWindow:setup() connect(g_game, { onGameStart = online, onGameEnd = offline, }) connect(LocalPlayer, { onPositionChange = updateCameraPosition }) if g_game.isOnline() then online() setMonsterCave(32239, 32240, 7, "dragon", "hihi") removeMonsterCave(32239, 32240, 7, "dragon", "hihi") end end -
Guilherme recebeu reputação de jpma em Tibia logo templateIsso é um template pra o pessoal editar e criar sua própria logo do seu server baseado na logo do tibia.com
Feito por mim e gostaria que se possível, não fosse removido o nome do tibiaking.
Download: http://www.mediafire.com/download/25j524s9fnbrda3/tibialogoedited.psd
-
Guilherme recebeu reputação de Cat em Pack de sprites freePosta um preview das sprites amigo.
-
Guilherme recebeu reputação de Vodkart em Mostrando suas HuntsPor: BananaFight > DragonElement
Bom, como acho que todos ja viram o map do servidor de poketibia (Pxg) ele mostra icones, nomes etc no minimap, e hoje vim trazer isso para vocês
Nome: Map Icon Descrição: Adiciona um icone no minimap Autor: Eduardo Vicente (Banana Fight) Versão 1.0
Features: Criar Icones no minimap
Instalação
dentro de modules/game_minimap/minimap.lua
embaixo de :
function toggle() if minimapButton:isOn() then minimapWindow:close() minimapButton:setOn(false) else minimapWindow:open() minimapButton:setOn(true) end end Você adiciona a função :
function setMonsterCave(posx, posy, posz, icon, description) local pos = {} pos.x = posx pos.y = posy pos.z = posz minimapWidget:addFlag(pos, icon, description) end function removeMonsterCave(posx, posy, posz, icon, description) local pos = {} pos.x = posx pos.y = posy pos.z = posz minimapWidget:removeFlag(pos, icon, description) end Como usar
setMonsterCave(Posição X do map, Posição Y do map,Posição Z do map, "Nome da Imagem", "Descrição que vai aparecer") Obs: como eu usei uma função que já existe você vai te que seguir um padrão na hora de adicionar o nome da sua imagem.
Exemplo: O nome da minha imagem é "dragonicon.png", para que eu possa usar ela no script eu tenho que adicionar essa imagem dentro da pasta "data/images/game/minimap/", e vou ter que renomear essa imagem para "flagdragonicon.png", Ai depois de ter feito isso dentro do meu script quando eu for fazer o script adicionar essa imagem eu vou fazer da seguinte maneira :
setMonsterCave(32238, 32240, 7, "dragonicon", "Dragon Cave")
Se você ainda não entendeu é da seguinte forma, você tem uma imagem com nome "test.png", você vai adiciona a imagem no lugar certo, com o nome "flagtest.png", ai dentro do script você só usa "test", pois o script já sabe que vai ter que juntar flag+nome da imagem que você adicionou+.png.
Obs 2: Sua imagem tem que ter o fundo transparente
Obs 3: quando mais transparente for a imagem, mais do map aparece e causa o efeito igual ao do PXG, do map se abrindo.
Exemplo de uso :
arquivo : minimap.lua
function init() minimapButton = modules.client_topmenu.addRightGameToggleButton('minimapButton', tr('Minimap') .. ' (Ctrl+M)', '/images/topbuttons/minimap', toggle) minimapButton:setOn(true) minimapWindow = g_ui.loadUI('minimap', modules.game_interface.getRightPanel()) minimapWindow:setContentMinimumHeight(64) minimapWidget = minimapWindow:recursiveGetChildById('minimap') local gameRootPanel = modules.game_interface.getRootPanel() g_keyboard.bindKeyPress('Alt+Left', function() minimapWidget:move(1,0) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Right', function() minimapWidget:move(-1,0) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Up', function() minimapWidget:move(0,1) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Down', function() minimapWidget:move(0,-1) end, gameRootPanel) g_keyboard.bindKeyDown('Ctrl+M', toggle) g_keyboard.bindKeyDown('Ctrl+Shift+M', toggleFullMap) minimapWindow:setup() connect(g_game, { onGameStart = online, onGameEnd = offline, }) connect(LocalPlayer, { onPositionChange = updateCameraPosition }) if g_game.isOnline() then online() setMonsterCave(32239, 32240, 7, "dragon", "hihi") removeMonsterCave(32239, 32240, 7, "dragon", "hihi") end end -
Guilherme recebeu reputação de Cat em Mostrando suas HuntsPor: BananaFight > DragonElement
Bom, como acho que todos ja viram o map do servidor de poketibia (Pxg) ele mostra icones, nomes etc no minimap, e hoje vim trazer isso para vocês
Nome: Map Icon Descrição: Adiciona um icone no minimap Autor: Eduardo Vicente (Banana Fight) Versão 1.0
Features: Criar Icones no minimap
Instalação
dentro de modules/game_minimap/minimap.lua
embaixo de :
function toggle() if minimapButton:isOn() then minimapWindow:close() minimapButton:setOn(false) else minimapWindow:open() minimapButton:setOn(true) end end Você adiciona a função :
function setMonsterCave(posx, posy, posz, icon, description) local pos = {} pos.x = posx pos.y = posy pos.z = posz minimapWidget:addFlag(pos, icon, description) end function removeMonsterCave(posx, posy, posz, icon, description) local pos = {} pos.x = posx pos.y = posy pos.z = posz minimapWidget:removeFlag(pos, icon, description) end Como usar
setMonsterCave(Posição X do map, Posição Y do map,Posição Z do map, "Nome da Imagem", "Descrição que vai aparecer") Obs: como eu usei uma função que já existe você vai te que seguir um padrão na hora de adicionar o nome da sua imagem.
Exemplo: O nome da minha imagem é "dragonicon.png", para que eu possa usar ela no script eu tenho que adicionar essa imagem dentro da pasta "data/images/game/minimap/", e vou ter que renomear essa imagem para "flagdragonicon.png", Ai depois de ter feito isso dentro do meu script quando eu for fazer o script adicionar essa imagem eu vou fazer da seguinte maneira :
setMonsterCave(32238, 32240, 7, "dragonicon", "Dragon Cave")
Se você ainda não entendeu é da seguinte forma, você tem uma imagem com nome "test.png", você vai adiciona a imagem no lugar certo, com o nome "flagtest.png", ai dentro do script você só usa "test", pois o script já sabe que vai ter que juntar flag+nome da imagem que você adicionou+.png.
Obs 2: Sua imagem tem que ter o fundo transparente
Obs 3: quando mais transparente for a imagem, mais do map aparece e causa o efeito igual ao do PXG, do map se abrindo.
Exemplo de uso :
arquivo : minimap.lua
function init() minimapButton = modules.client_topmenu.addRightGameToggleButton('minimapButton', tr('Minimap') .. ' (Ctrl+M)', '/images/topbuttons/minimap', toggle) minimapButton:setOn(true) minimapWindow = g_ui.loadUI('minimap', modules.game_interface.getRightPanel()) minimapWindow:setContentMinimumHeight(64) minimapWidget = minimapWindow:recursiveGetChildById('minimap') local gameRootPanel = modules.game_interface.getRootPanel() g_keyboard.bindKeyPress('Alt+Left', function() minimapWidget:move(1,0) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Right', function() minimapWidget:move(-1,0) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Up', function() minimapWidget:move(0,1) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Down', function() minimapWidget:move(0,-1) end, gameRootPanel) g_keyboard.bindKeyDown('Ctrl+M', toggle) g_keyboard.bindKeyDown('Ctrl+Shift+M', toggleFullMap) minimapWindow:setup() connect(g_game, { onGameStart = online, onGameEnd = offline, }) connect(LocalPlayer, { onPositionChange = updateCameraPosition }) if g_game.isOnline() then online() setMonsterCave(32239, 32240, 7, "dragon", "hihi") removeMonsterCave(32239, 32240, 7, "dragon", "hihi") end end -
Guilherme recebeu reputação de toninhogc em Atualização Tk 2020 - Novo Fórum, Menus, Layout e Medalhões!Ficou muito bom.
Parabéns a todos.
Os medalhões não podem ser automáticos? No fórum do tibiabr é automático e acredito que dê menos trabalho para a equipe ficar adicionando as medalhas manualmente.
-
Guilherme recebeu reputação de Yan Liima em Salve uma vida!Com certeza você já viu uma das sprites dele no seu servidor favorito, seja ele Pxg, Otp, Immortals, Padventures, Grand Line Adventures, Archlight, Shadowrealm e em inúmeros outros projetos e servidores.
Pai de duas filhas, uma pessoa extremamente dedicada, um artista excepcional, Miller hoje precisa da sua ajuda!!
Iven Miller dos Santos está precisando de doação de sangue de QUALQUER TIPAGEM, para que seja dada continuidade ao tratamento de Leucemia Aguda.
As doações deverão ser feitas em nome do mesmo, no HU (Hospital Universitário Prof. Alberto Antunes) Tabuleiro dos Martins.
Se você for de Alagoas/Maceió e puder doar sangue, entre em contato inbox.
----------------
ATUALIZAÇÃO:
Infelizmente nosso querido amigo Miller não resistiu e agora ele se encontra em um lugar melhor.
-
Guilherme recebeu reputação de Celulose em Salve uma vida!Com certeza você já viu uma das sprites dele no seu servidor favorito, seja ele Pxg, Otp, Immortals, Padventures, Grand Line Adventures, Archlight, Shadowrealm e em inúmeros outros projetos e servidores.
Pai de duas filhas, uma pessoa extremamente dedicada, um artista excepcional, Miller hoje precisa da sua ajuda!!
Iven Miller dos Santos está precisando de doação de sangue de QUALQUER TIPAGEM, para que seja dada continuidade ao tratamento de Leucemia Aguda.
As doações deverão ser feitas em nome do mesmo, no HU (Hospital Universitário Prof. Alberto Antunes) Tabuleiro dos Martins.
Se você for de Alagoas/Maceió e puder doar sangue, entre em contato inbox.
----------------
ATUALIZAÇÃO:
Infelizmente nosso querido amigo Miller não resistiu e agora ele se encontra em um lugar melhor.
-
Guilherme recebeu reputação de Willyw em Salve uma vida!Com certeza você já viu uma das sprites dele no seu servidor favorito, seja ele Pxg, Otp, Immortals, Padventures, Grand Line Adventures, Archlight, Shadowrealm e em inúmeros outros projetos e servidores.
Pai de duas filhas, uma pessoa extremamente dedicada, um artista excepcional, Miller hoje precisa da sua ajuda!!
Iven Miller dos Santos está precisando de doação de sangue de QUALQUER TIPAGEM, para que seja dada continuidade ao tratamento de Leucemia Aguda.
As doações deverão ser feitas em nome do mesmo, no HU (Hospital Universitário Prof. Alberto Antunes) Tabuleiro dos Martins.
Se você for de Alagoas/Maceió e puder doar sangue, entre em contato inbox.
----------------
ATUALIZAÇÃO:
Infelizmente nosso querido amigo Miller não resistiu e agora ele se encontra em um lugar melhor.
-
Guilherme recebeu reputação de SlowK em Salve uma vida!Com certeza você já viu uma das sprites dele no seu servidor favorito, seja ele Pxg, Otp, Immortals, Padventures, Grand Line Adventures, Archlight, Shadowrealm e em inúmeros outros projetos e servidores.
Pai de duas filhas, uma pessoa extremamente dedicada, um artista excepcional, Miller hoje precisa da sua ajuda!!
Iven Miller dos Santos está precisando de doação de sangue de QUALQUER TIPAGEM, para que seja dada continuidade ao tratamento de Leucemia Aguda.
As doações deverão ser feitas em nome do mesmo, no HU (Hospital Universitário Prof. Alberto Antunes) Tabuleiro dos Martins.
Se você for de Alagoas/Maceió e puder doar sangue, entre em contato inbox.
----------------
ATUALIZAÇÃO:
Infelizmente nosso querido amigo Miller não resistiu e agora ele se encontra em um lugar melhor.
-
Guilherme recebeu reputação de Chriistian em Salve uma vida!Com certeza você já viu uma das sprites dele no seu servidor favorito, seja ele Pxg, Otp, Immortals, Padventures, Grand Line Adventures, Archlight, Shadowrealm e em inúmeros outros projetos e servidores.
Pai de duas filhas, uma pessoa extremamente dedicada, um artista excepcional, Miller hoje precisa da sua ajuda!!
Iven Miller dos Santos está precisando de doação de sangue de QUALQUER TIPAGEM, para que seja dada continuidade ao tratamento de Leucemia Aguda.
As doações deverão ser feitas em nome do mesmo, no HU (Hospital Universitário Prof. Alberto Antunes) Tabuleiro dos Martins.
Se você for de Alagoas/Maceió e puder doar sangue, entre em contato inbox.
----------------
ATUALIZAÇÃO:
Infelizmente nosso querido amigo Miller não resistiu e agora ele se encontra em um lugar melhor.
-
Guilherme recebeu reputação de Mathias Kenfi em Salve uma vida!Com certeza você já viu uma das sprites dele no seu servidor favorito, seja ele Pxg, Otp, Immortals, Padventures, Grand Line Adventures, Archlight, Shadowrealm e em inúmeros outros projetos e servidores.
Pai de duas filhas, uma pessoa extremamente dedicada, um artista excepcional, Miller hoje precisa da sua ajuda!!
Iven Miller dos Santos está precisando de doação de sangue de QUALQUER TIPAGEM, para que seja dada continuidade ao tratamento de Leucemia Aguda.
As doações deverão ser feitas em nome do mesmo, no HU (Hospital Universitário Prof. Alberto Antunes) Tabuleiro dos Martins.
Se você for de Alagoas/Maceió e puder doar sangue, entre em contato inbox.
----------------
ATUALIZAÇÃO:
Infelizmente nosso querido amigo Miller não resistiu e agora ele se encontra em um lugar melhor.
-
Guilherme recebeu reputação de Vodkart em Salve uma vida!Com certeza você já viu uma das sprites dele no seu servidor favorito, seja ele Pxg, Otp, Immortals, Padventures, Grand Line Adventures, Archlight, Shadowrealm e em inúmeros outros projetos e servidores.
Pai de duas filhas, uma pessoa extremamente dedicada, um artista excepcional, Miller hoje precisa da sua ajuda!!
Iven Miller dos Santos está precisando de doação de sangue de QUALQUER TIPAGEM, para que seja dada continuidade ao tratamento de Leucemia Aguda.
As doações deverão ser feitas em nome do mesmo, no HU (Hospital Universitário Prof. Alberto Antunes) Tabuleiro dos Martins.
Se você for de Alagoas/Maceió e puder doar sangue, entre em contato inbox.
----------------
ATUALIZAÇÃO:
Infelizmente nosso querido amigo Miller não resistiu e agora ele se encontra em um lugar melhor.
-
Guilherme recebeu reputação de amarelosk em Salve uma vida!Com certeza você já viu uma das sprites dele no seu servidor favorito, seja ele Pxg, Otp, Immortals, Padventures, Grand Line Adventures, Archlight, Shadowrealm e em inúmeros outros projetos e servidores.
Pai de duas filhas, uma pessoa extremamente dedicada, um artista excepcional, Miller hoje precisa da sua ajuda!!
Iven Miller dos Santos está precisando de doação de sangue de QUALQUER TIPAGEM, para que seja dada continuidade ao tratamento de Leucemia Aguda.
As doações deverão ser feitas em nome do mesmo, no HU (Hospital Universitário Prof. Alberto Antunes) Tabuleiro dos Martins.
Se você for de Alagoas/Maceió e puder doar sangue, entre em contato inbox.
----------------
ATUALIZAÇÃO:
Infelizmente nosso querido amigo Miller não resistiu e agora ele se encontra em um lugar melhor.
-
Guilherme recebeu reputação de abmauromacedo em Salve uma vida!Com certeza você já viu uma das sprites dele no seu servidor favorito, seja ele Pxg, Otp, Immortals, Padventures, Grand Line Adventures, Archlight, Shadowrealm e em inúmeros outros projetos e servidores.
Pai de duas filhas, uma pessoa extremamente dedicada, um artista excepcional, Miller hoje precisa da sua ajuda!!
Iven Miller dos Santos está precisando de doação de sangue de QUALQUER TIPAGEM, para que seja dada continuidade ao tratamento de Leucemia Aguda.
As doações deverão ser feitas em nome do mesmo, no HU (Hospital Universitário Prof. Alberto Antunes) Tabuleiro dos Martins.
Se você for de Alagoas/Maceió e puder doar sangue, entre em contato inbox.
----------------
ATUALIZAÇÃO:
Infelizmente nosso querido amigo Miller não resistiu e agora ele se encontra em um lugar melhor.
-
Guilherme recebeu reputação de duduprec em Salve uma vida!Com certeza você já viu uma das sprites dele no seu servidor favorito, seja ele Pxg, Otp, Immortals, Padventures, Grand Line Adventures, Archlight, Shadowrealm e em inúmeros outros projetos e servidores.
Pai de duas filhas, uma pessoa extremamente dedicada, um artista excepcional, Miller hoje precisa da sua ajuda!!
Iven Miller dos Santos está precisando de doação de sangue de QUALQUER TIPAGEM, para que seja dada continuidade ao tratamento de Leucemia Aguda.
As doações deverão ser feitas em nome do mesmo, no HU (Hospital Universitário Prof. Alberto Antunes) Tabuleiro dos Martins.
Se você for de Alagoas/Maceió e puder doar sangue, entre em contato inbox.
----------------
ATUALIZAÇÃO:
Infelizmente nosso querido amigo Miller não resistiu e agora ele se encontra em um lugar melhor.
-
Guilherme recebeu reputação de Cat em Salve uma vida!Com certeza você já viu uma das sprites dele no seu servidor favorito, seja ele Pxg, Otp, Immortals, Padventures, Grand Line Adventures, Archlight, Shadowrealm e em inúmeros outros projetos e servidores.
Pai de duas filhas, uma pessoa extremamente dedicada, um artista excepcional, Miller hoje precisa da sua ajuda!!
Iven Miller dos Santos está precisando de doação de sangue de QUALQUER TIPAGEM, para que seja dada continuidade ao tratamento de Leucemia Aguda.
As doações deverão ser feitas em nome do mesmo, no HU (Hospital Universitário Prof. Alberto Antunes) Tabuleiro dos Martins.
Se você for de Alagoas/Maceió e puder doar sangue, entre em contato inbox.
----------------
ATUALIZAÇÃO:
Infelizmente nosso querido amigo Miller não resistiu e agora ele se encontra em um lugar melhor.
-
Guilherme recebeu reputação de GOD Vitor em Mostrando suas HuntsPor: BananaFight > DragonElement
Bom, como acho que todos ja viram o map do servidor de poketibia (Pxg) ele mostra icones, nomes etc no minimap, e hoje vim trazer isso para vocês
Nome: Map Icon Descrição: Adiciona um icone no minimap Autor: Eduardo Vicente (Banana Fight) Versão 1.0
Features: Criar Icones no minimap
Instalação
dentro de modules/game_minimap/minimap.lua
embaixo de :
function toggle() if minimapButton:isOn() then minimapWindow:close() minimapButton:setOn(false) else minimapWindow:open() minimapButton:setOn(true) end end Você adiciona a função :
function setMonsterCave(posx, posy, posz, icon, description) local pos = {} pos.x = posx pos.y = posy pos.z = posz minimapWidget:addFlag(pos, icon, description) end function removeMonsterCave(posx, posy, posz, icon, description) local pos = {} pos.x = posx pos.y = posy pos.z = posz minimapWidget:removeFlag(pos, icon, description) end Como usar
setMonsterCave(Posição X do map, Posição Y do map,Posição Z do map, "Nome da Imagem", "Descrição que vai aparecer") Obs: como eu usei uma função que já existe você vai te que seguir um padrão na hora de adicionar o nome da sua imagem.
Exemplo: O nome da minha imagem é "dragonicon.png", para que eu possa usar ela no script eu tenho que adicionar essa imagem dentro da pasta "data/images/game/minimap/", e vou ter que renomear essa imagem para "flagdragonicon.png", Ai depois de ter feito isso dentro do meu script quando eu for fazer o script adicionar essa imagem eu vou fazer da seguinte maneira :
setMonsterCave(32238, 32240, 7, "dragonicon", "Dragon Cave")
Se você ainda não entendeu é da seguinte forma, você tem uma imagem com nome "test.png", você vai adiciona a imagem no lugar certo, com o nome "flagtest.png", ai dentro do script você só usa "test", pois o script já sabe que vai ter que juntar flag+nome da imagem que você adicionou+.png.
Obs 2: Sua imagem tem que ter o fundo transparente
Obs 3: quando mais transparente for a imagem, mais do map aparece e causa o efeito igual ao do PXG, do map se abrindo.
Exemplo de uso :
arquivo : minimap.lua
function init() minimapButton = modules.client_topmenu.addRightGameToggleButton('minimapButton', tr('Minimap') .. ' (Ctrl+M)', '/images/topbuttons/minimap', toggle) minimapButton:setOn(true) minimapWindow = g_ui.loadUI('minimap', modules.game_interface.getRightPanel()) minimapWindow:setContentMinimumHeight(64) minimapWidget = minimapWindow:recursiveGetChildById('minimap') local gameRootPanel = modules.game_interface.getRootPanel() g_keyboard.bindKeyPress('Alt+Left', function() minimapWidget:move(1,0) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Right', function() minimapWidget:move(-1,0) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Up', function() minimapWidget:move(0,1) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Down', function() minimapWidget:move(0,-1) end, gameRootPanel) g_keyboard.bindKeyDown('Ctrl+M', toggle) g_keyboard.bindKeyDown('Ctrl+Shift+M', toggleFullMap) minimapWindow:setup() connect(g_game, { onGameStart = online, onGameEnd = offline, }) connect(LocalPlayer, { onPositionChange = updateCameraPosition }) if g_game.isOnline() then online() setMonsterCave(32239, 32240, 7, "dragon", "hihi") removeMonsterCave(32239, 32240, 7, "dragon", "hihi") end end -
Source é todo o codigo fonte de seu trabalho/projeto, é lá onde fica todos os codigos utilizados para executar uma ação/função.
Todo programa/jogo é escrito por um programador e esse programador deve escrever na linguagem de computador em uma ide para depois compilar e virar binário.
Todo o código que o programador escreve, se chama source ou em portugues, código fonte.
Não é obrigatório você mecher com a source de um otserv se você não tem domínio de programação. Pode continuar seu servidor normalmente baixando os arquivos data,executavel e dll.
-
Guilherme recebeu reputação de Reginaldo Filho em [C++] Opcode versão 8.54+Por: BananaFight > DragonElement
Adaptação pra source 8.54+
LEMBRE-SE, ISSO É NA SOURCE DO SERVIDOR
Vamos ao código.
protocolgame.h
Embaixo de
void AddShopItem(NetworkMessage_ptr msg, const ShopInfo item); Adicione
void parseExtendedOpcode(NetworkMessage& msg); void sendExtendedOpcode(uint8_t opcode, const std::string& buffer); protocolgame.cpp
Embaixo de
uint32_t key[4] = {msg.GetU32(), msg.GetU32(), msg.GetU32(), msg.GetU32()}; enableXTEAEncryption(); setXTEAKey(key); Adicione
// notifies to otclient that this server can receive extended game protocol opcodes if(operatingSystem >= CLIENTOS_OTCLIENT_LINUX) sendExtendedOpcode(0x00, std::string()); Embaixo de
void ProtocolGame::AddShopItem(NetworkMessage_ptr msg, const ShopInfo item) { const ItemType& it = Item::items[item.itemId]; msg->AddU16(it.clientId); if(it.isSplash() || it.isFluidContainer()) msg->AddByte(fluidMap[item.subType % 8]); else if(it.stackable || it.charges) msg->AddByte(item.subType); else msg->AddByte(0x01); msg->AddString(item.itemName); msg->AddU32(uint32_t(it.weight * 100)); msg->AddU32(item.buyPrice); msg->AddU32(item.sellPrice); } Adicione
void ProtocolGame::parseExtendedOpcode(NetworkMessage& msg) { uint8_t opcode = msg.GetByte(); std::string buffer = msg.GetString(); // process additional opcodes via lua script event addGameTask(&Game::parsePlayerExtendedOpcode, player->getID(), opcode, buffer); } void ProtocolGame::sendExtendedOpcode(uint8_t opcode, const std::string& buffer) { // extended opcodes can only be send to players using otclient, cipsoft's tibia can't understand them NetworkMessage_ptr msg = getOutputBuffer(); if(msg) { TRACK_MESSAGE(msg); msg->AddByte(0x32); msg->AddByte(opcode); msg->AddString(buffer); } } Embaixo de
case 0x1E: // keep alive / ping response parseReceivePing(msg); break;
Adicione
case 0x32: // otclient extended opcode parseExtendedOpcode(msg); break; enums.h
Embaixo de
enum GuildLevel_t { GUILDLEVEL_NONE = 0, GUILDLEVEL_MEMBER, GUILDLEVEL_VICE, GUILDLEVEL_LEADER }; Substitua o OperatingSystem por este
enum OperatingSystem_t { CLIENTOS_LINUX = 0x01, CLIENTOS_WINDOWS = 0x02, CLIENTOS_OTCLIENT_LINUX = 0x0A, CLIENTOS_OTCLIENT_WINDOWS = 0x0B, CLIENTOS_OTCLIENT_MAC = 0x0C, };/
player.h
Embaixo de
void sendCreatureShield(const Creature* creature) Adicione
void sendExtendedOpcode(uint8_t opcode, const std::string& buffer) {if(client) client->sendExtendedOpcode(opcode, buffer);} luascript.cpp
Embaixo de
void LuaScriptInterface::registerFunctions() { Adicione
//doSendPlayerExtendedOpcode(cid, opcode, buffer) lua_register(m_luaState, "doSendPlayerExtendedOpcode", LuaScriptInterface::luaDoSendPlayerExtendedOpcode); Embaixo de
SHIFT_OPERATOR(int32_t, LeftShift, <<) SHIFT_OPERATOR(int32_t, RightShift, >>) SHIFT_OPERATOR(uint32_t, ULeftShift, <<) SHIFT_OPERATOR(uint32_t, URightShift, >>) #undef SHIFT_OPERATOR Adicione
int32_t LuaScriptInterface::luaDoSendPlayerExtendedOpcode(lua_State* L) { //doSendPlayerExtendedOpcode(cid, opcode, buffer) std::string buffer = popString(L); int opcode = popNumber(L); ScriptEnviroment* env = getEnv(); if(Player* player = env->getPlayerByUID(popNumber(L))) { player->sendExtendedOpcode(opcode, buffer); lua_pushboolean(L, true); } lua_pushboolean(L, false); return 1; } luascript.h
Embaixo de
virtual void registerFunctions(); Adicione
static int32_t luaDoSendPlayerExtendedOpcode(lua_State* L); creatureevent.h
.
Substitua
CREATURE_EVENT_PREPAREDEATH Por isso
CREATURE_EVENT_PREPAREDEATH, CREATURE_EVENT_EXTENDED_OPCODE // otclient additional network opcodes Embaixo de
uint32_t executePrepareDeath(Creature* creature, DeathList deathList); Adicione
uint32_t executeExtendedOpcode(Creature* creature, uint8_t opcode, const std::string& buffer); creatureevent.cpp
Embaixo de
else if(tmpStr == "death") m_type = CREATURE_EVENT_DEATH; Adicione
else if(tmpStr == "extendedopcode") m_type = CREATURE_EVENT_EXTENDED_OPCODE; Embaixo de
case CREATURE_EVENT_DEATH: return "onDeath"; Adicione
case CREATURE_EVENT_EXTENDED_OPCODE: return "onExtendedOpcode"; Embaixo de
case CREATURE_EVENT_DEATH: return "cid, corpse, deathList"; Adicione
case CREATURE_EVENT_EXTENDED_OPCODE: return "cid, opcode, buffer"; Embaixo de
std::cout << "[Error - CreatureEvent::executeFollow] Call stack overflow." << std::endl; return 0; } } Adicione
uint32_t CreatureEvent::executeExtendedOpcode(Creature* creature, uint8_t opcode, const std::string& buffer) { //onExtendedOpcode(cid, opcode, buffer) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; scriptstream << "local opcode = " << (int)opcode << std::endl; scriptstream << "local buffer = " << buffer.c_str() << std::endl; scriptstream << m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[35]; sprintf(desc, "%s", player->getName().c_str()); env->setEvent(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); lua_pushnumber(L, opcode); lua_pushlstring(L, buffer.c_str(), buffer.length()); bool result = m_interface->callFunction(3); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeRemoved] Call stack overflow." << std::endl; return 0; } } game.h
Embaixo de
int32_t getLightHour() {return lightHour;} void startDecay(Item* item); Adicione
void parsePlayerExtendedOpcode(uint32_t playerId, uint8_t opcode, const std::string& buffer);
game.cpp
Embaixo de
player->sendTextMessage(MSG_INFO_DESCR, buffer); }
Adicione
void Game::parsePlayerExtendedOpcode(uint32_t playerId, uint8_t opcode, const std::string& buffer) { Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return; CreatureEventList extendedOpcodeEvents = player->getCreatureEvents(CREATURE_EVENT_EXTENDED_OPCODE); for(CreatureEventList::iterator it = extendedOpcodeEvents.begin(); it != extendedOpcodeEvents.end(); ++it) (*it)->executeExtendedOpcode(player, opcode, buffer); } /creaturescripts/creaturescrips.xml
<event type="extendedopcode" name="ExtendedOpcode" event="script" value="extendedopcode.lua"/>
/creaturescripts/extendedopcode.lua
OPCODE_LANGUAGE = 1 function onExtendedOpcode(cid, opcode, buffer) if opcode == OPCODE_LANGUAGE then -- otclient language if buffer == 'en' or buffer == 'pt' then -- example, setting player language, because otclient is multi-language... --doCreatureSetStorage(cid, CREATURE_STORAGE_LANGUAGE, buffer) end else -- other opcodes can be ignored, and the server will just work fine... end end Créditos : MaXwEllDeN 100% por adaptar o código
-
Guilherme recebeu reputação de Cat em Eventos do Tibia King?Eu acho interessante, inclusive irei verificar com o pessoal do discord, o que acham dessa ideia e quando seria interessante começar, até pq precisamos levantar no começo uma galera exata que participaria.