Histórico de Curtidas
-
Haxz recebeu reputação de kbelin em [Pedido] Mudar barra de Hp e Mana do OTClientJovem, comentei em outro tópico seu referente ao assunto.
Mas posso ajuda-lo a fazer algo parecido, barras arredondadas e a barra de mana menor que a de life.
Basta alterar duas coisas.
1 - Coloque essa imagem (progressbar) no lugar da progressbar do Otclient.
2 - No arquivo healthInfo.otui.
Procure por esse código e acrescente a ultima linha.
ManaBar < ProgressBar id: manaBar background-color: #E3BC05 anchors.top: prev.bottom anchors.left: parent.left anchors.right: parent.right margin: 1 margin-top: 3 margin-right: 8 <EDIT> A cor da minha barra está diferente da sua.
-
Haxz deu reputação a Fir3z em Town Scroll (teleporta pra cidade e remove o item)Nome: Town Scroll Autor: Eu (Fir3z) Servidor Testado: TFS 0.4_dev (8.6) Descrição: O script consiste em você usar o town scroll e será teleportado para a cidade onde você mora, simples! Você também pode configurar se quer que use somente em pz, se precisa estar sem battle e se o item irá remover ao ser usado. Vamos ao script
Em actions\actions.xml adicione a seguinte linha:
<action itemid="xxxx" event="script" value="town scroll.lua"/> itemid="xxxx" aqui você coloca o item que será usado.
Em actions\scripts crie um arquivo com o nome town scroll.lua e cole o código:
function onUse(cid, item, frompos, item2, topos) local config = { pz = false, -- false = não precisa estar em protect zone battle = true, -- true = não pode ter battle remover = true, -- true = remove o item } local cidade = getTownTemplePosition(getPlayerTown(cid)) local posicao = getCreaturePosition(cid) if config.pz == true and getTilePzInfo(posicao) == FALSE then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você precisa estar em protection zone pra poder teleportar.") elseif config.battle == true and getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar sem battle pra poder teleportar.") else if config.remover == true then doRemoveItem(item.uid) end doSendMagicEffect(posicao, CONST_ME_POFF) doTeleportThing(cid, cidade) doSendMagicEffect(cidade, CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce foi teleportado e o town scroll destruido.") end return true end Pronto! Já está funcionando. Simples não?
-
Haxz deu reputação a MatheusEnjoy em Salvar tudo que os Players FalamEstou tentando trazer o máximo de conteúdo de outros forum para o pt-BR, hoje trago um tutorial de como salvar tudo que os players falam para procurar bugs depois ou ate banir membros que fazem propaganda.
Bom, vamos ao tutorial:
Na Pasta que contem suas sources antes de fazer a compilação altere o game.cpp, procure por:
#include "group.h" Abaixo, coloque:
#include "textlogger.h"Procure por:
Game::playerSayDentro da função, encontre:
switch(type) { case SPEAK_SAY: return internalCreatureSay(player, SPEAK_SAY, text, false); case SPEAK_WHISPER: return playerWhisper(player, text); case SPEAK_YELL: return playerYell(player, text); (...) Adicione acima de switch(type)
Logger::getInstance()->eFile("players/" + player->getName() + ".log", text, true); Assim tudo que os players falar/digitar in-game sera salvo no log do servidor.
CRÉDITOS:
GM BLumaster - OTSerV
-
Haxz deu reputação a Adriano SwaTT em [MOD] Loot Ring (Anél de Loot)Faça assim, não precisa upar ainda.
Até porque eu estou bem corrido, vou ver se acho o tópico sobre este atributo, que por sinal, acho que meu amigo tem em seu server.
Aí eu posto ou crio um tópico para e te aviso.
-
Haxz deu reputação a grafit em Critical Chance HitEsse sistema foi postado na otland pelo usuário VirrageS
Foi testado em um TFS 0.4 REV.3884
Vamos lá:
ITEM.CPP
Embaixo de:
case ATTR_ARTICLE: { std::string article; if(!propStream.getString(article)) return ATTR_READ_ERROR; setAttribute("article", article); break; } Colocar: case ATTR_CRITICALHITCHANCE: { int32_t criticalHitChance; if(!propStream.getLong((uint32_t&)criticalHitChance)) return ATTR_READ_ERROR; setAttribute("criticalhitchance", criticalHitChance); break; } Embaixo de: bool begin = true; if(tmp) { s << " (Arm:" << tmp; begin = false; } Colocar: if(it.criticalHitChance || (item && item->getCriticalHitChance())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Crit Chance:" << std::showpos << int32_t(item ? item->getCriticalHitChance() : it.criticalHitChance) << "%"<< std::noshowpos; } Embaixo de: if(it.defense || it.extraDefense || (item && (item->getDefense() || item->getExtraDefense()))) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Def:" << int32_t(item ? item->getDefense() : it.defense); if(it.extraDefense || (item && item->getExtraDefense())) s << " " << std::showpos << int32_t(item ? item->getExtraDefense() : it.extraDefense) << std::noshowpos; } Colocar: if(it.criticalHitChance || (item && item->getCriticalHitChance())) { if(begin) { begin = false; s << " ("; } else s << ", "; s << "Crit Chance:" << std::showpos << int32_t(item ? item->getCriticalHitChance() : it.criticalHitChance) << "%"<< std::noshowpos; } ITEM.H Embaixo de: ATTR_DUALWIELD = 43, Colocar: ATTR_CRITICALHITCHANCE = 44, Embaixo de: int32_t getAttack() const; Colocar: int32_t getCriticalHitChance() const; Embaixo de: inline bool Item::isScriptProtected() const { const bool* v = getBooleanAttribute("scriptprotected"); if(v) return *v; return false; } Colocar: inline int32_t Item::getCriticalHitChance() const { const int32_t* v = getIntegerAttribute("criticalhitchance"); if(v) return *v; return items[id].criticalHitChance; } ITEMS.CPP Embaixo de: attackSpeed = 0; Colocar: criticalHitChance = 0; Embaixo de: else if(tmpStrValue == "extradefense" || tmpStrValue == "extradef") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.extraDefense = intValue; } Colocar: else if(tmpStrValue == "criticalhitchance") { if(readXMLInteger(itemAttributesNode, "value", intValue)) it.criticalHitChance = intValue; } ITEMS.H TROCAR: int32_t attack, extraAttack, defense, extraDefense, armor, breakChance, hitChance, maxHitChance, POR: int32_t attack, criticalHitChance, extraAttack, defense, extraDefense, armor, breakChance, hitChance, maxHitChance, LUASCRIPT.CPP Embaixo de: setField(L, "text", item->text); Colocar: setField(L, "criticalHitChance", item->criticalHitChance); PLAYER.CPP Embaixo de: int32_t Player::getArmor() const { int32_t i = SLOT_FIRST, armor = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) armor += item->getArmor(); } if(vocation->getMultiplier(MULTIPLIER_ARMOR) != 1.0) return int32_t(armor * vocation->getMultiplier(MULTIPLIER_ARMOR)); return armor; } Colocar: int32_t Player::getCriticalHitChance() const { int32_t i = SLOT_FIRST, crit = 0; for(; i < SLOT_LAST; ++i) { if(Item* item = getInventoryItem((slots_t)i)) crit += item->getCriticalHitChance(); } return crit; } PLAYER.H Embaixo de: virtual int32_t getArmor() const; Colocar: virtual int32_t getCriticalHitChance() const; WEAPONS.CPP Substituir todos: if(random_range(1, 100) < g_config.getNumber(ConfigManager::CRITICAL_HIT_CHANCE)) Por: if(random_range(1, 100) < player->getCriticalHitChance() + g_config.getNumber(ConfigManager::CRITICAL_HIT_CHANCE)) A tag para se colocar no items.xml é a seguinte: <attribute key="criticalHitChance" value="5" />
Espero que gostem!
-
Haxz deu reputação a Avuenja em Mini Funções | OTCNome: Block Mods Descrição: bloquear mods para que só funcionem no seu server Autor: Eduardo Vicente (Banana Fight) Instalação
modules\client_entergame\entergame.lua
Embaixo de EnterGame.In, Você adiciona esta linha.
function returnServer() return enterGame:getChildById('serverHostTextEdit'):getText() end Agora você tem a escolha de "Esconder" seu código em um arquivo, Eu escolhi o gamelib, Então vamos para
modules\gamelib\game.lua
Lá no final desse arquivo você adiciona isso
function checkServerMod() if returnServer() ~= 'go.thunderot.com.br' then x = 'no' else x = 'yes' end return x end Processo de instalação pronto.
Como Usar Dentro do seu Mod
no arquivo .lua, existe uma função como está :
function toggle() if ThunderButton:isOn() then ThunderWindow:hide() ThunderButton:setOn(false) else ThunderWindow:show() ThunderButton:setOn(true) end end E ela você vai editar ficando assim :
function toggle() if checkServerMod() == 'yes' then if ThunderButton:isOn() then[ ThunderWindow:hide() ThunderButton:setOn(false) else ThunderWindow:show() ThunderButton:setOn(true) end end end -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Nome: Play Music Descrição: toca musica quando ativado Autor: Eduardo Vicente (Banana Fight) Instalação
Gamelib/game.lua, lá no final adiciona isso:
function playMusic(fileName, value) g_sounds.getChannel(1):play(fileName) end Como Usar Dentro do seu Mod
playMusic('Nome da musica')
OBS: Só funciona com arquivos .ogg O a musica deve estar dentro da pasta de onde a função esta sendo usada em playMusic('') Deixe apenas o nome da musica = playMusic('attack') -
Haxz recebeu reputação de Rafix06 em OTClient - HuntedOnlineOlá, Galerinha!
Estou trabalhando em um client específico para o server que estou criando (vai chamar HuntedOnline)...
Bom, vou postando as coisas conforme eu for editando ele.
06/05/14
Hoje - 18/05/14
"Período de aprendizado."
-
Haxz deu reputação a ZORAN em [Tutorial] Compilando TFS v1.0 com MSVC 2013Olá amigos da Comunidade Tibiaking venho trazer a vocês este tutorial de como compilar o TFS v1.0 em windows 32 or 64 bits com Microsoft Visual Studio 2013 (Obs: Eu uso a 2013 Ultimater Recomendo). Vamos ao tutorial >> 1) Primeito baixe os programas abaixo se não tiver claro: MSVS 2013 >> Click Here http://www.visualstudio.com/downloads/download-visual-studio-vs Agora baixar os Programas do TFS v1.0: TFS Sdk >> Click Here - Link 2: (Mirror)
Source Do TFS v1.0 >> Click Here
Atenção Baixe apenas a Boost da versão do Pc 32 or 64 Bits. Boost MSVS 2013 32Bits >> Click Here
Boost MSVS 2013 64Bits >> Click Here
2) Agora vamos começar a instalar os Programs do TFS v1.0 >> Primeiro instale o Boost 32 or 64Bits No diretorio raiz do seu HD: Print >>
Agora coloque o SDK Extraido na raiz do Seu HD: Print >> Faça a mesma coisa com a source do TFS v1.0: Print>> Depois de ter feito tudo isso abra a pasta da source e abra a pasta vc12 e siga a print: ( Obs: Você vera Boost32 isso acontece porque na instalação eu coloquei no diretório como Boost32 (Primeira foto) mas basta você deixar como C:\Boost ( A letra C:\ Refere-se a letrado do seu HD ela pode ser D - H - F e Etc... Varia de Pc a Pc.) ) Print >> Com o Visual Studio (2013 Recomendado) aberto Siga as Prints abaixo: Click com botão direito no projeto e vá em propriedades: Print >> Depois Click em Cofiguration manager: Print >> Vamos as explicações: 1 >> Click la Primeiro Quando abrir a caixa com os passos 2-3 and 4 siga-os abaixo >> 2>> Coloque release e só nada mais. 3>> escolha para qual sistema de 32 or 64Bits. (Lembrado que ali e de acordo com a Boost oks. ) 4>> Só Click lá quando terminar de fazer os passos acima. Rsrs.] ------------------------------------|||||------------------------------- 3) Terceira parte Passos 1 do tutorial vamos lá >> Primeiro agora depois de fazer os passos anteriores faça os seguintes passos Click em C/C++ >>> General e siga a Print: Print>> Caso você não entendeu siga as explicações: Vamos as explicações: 1>> Onde você Deve clicar C/C++ >> General. 2>> Click onde a seta esta apontado e click em edit ou de dois clicks. 3>> Quando abrir a caixa de dialogo deixe os diretórios iguais ao da foto e de um Ok. ( Obs: Você vera Boost32 isso acontece porque na instalação eu coloquei no diretório como Boost32 (Primeira foto) mas basta você deixar como C:\Boost ) Terceira parte passo 2 Click em Linker >> General e siga as Prints >> Prints >> Vamos as explicações: 1>> Onde você deve Clicar depois de fazer os passos anteriores da terceira parte passos 1. Oks. 2>> igual ao passo 2 da parte 1 da terceira parte só que mais explicativo. 3>> Click em Edit e espere abrir a caixa de Dialogo siga a Print 2. Print 2>> Deixe igual a caixa de dialogo onde esta marcado com o 1 Grande Oks. Depois basta da um OK e um Apply e Ok e esperar aparecer Ready >>
Print>> Explicações: 1>> Esperar o Ready. 2>> Click com o botão direito no projeto e depois em BuilD. Basta Esperar terminar a compilação e Pronto. Caso o tutorial não tenha sido bem explicativo Posso melhorá-lo a sugestão e depois posto a foto final da compilação Oks. Se quiser me agradecer eu serei grato pois deu trabalho fazer esse tutorial pois bugo algumas vezes. Um grande abraço e fiquem com Deus! Nota: Eu Tenho permissão do autor do tutorial Original em Inglês para criar o post em PT-Br Não e permitido copiar ou reproduzir sem a devida autorização de Dominique120. Não e permitido postar o Faq do mesmo aqui neste tutorial para ver mais informações siga o LINK ou Veja os #créditos. #Creditos: -------------------///------------------ Dominique120 >> Click aqui para ver o tutorial original -------------------///-------------------- ZORAN >> Click aqui para ver o meu perfil -
Haxz deu reputação a MaXwEllDeN em prazer, HaxzSeja bem vindo ao fórum. Espero que curta a estadia
Na minha assinatura tem o link para um tópico com um índice de alguns tutoriais sobre Scripting para OT Servers. Já que você já tem boa noção de programação, sugiro que comece olhando o Tutorial Como Funcionam os Scripts? A lógica é bem simples, quase tudo é executado por meio de métodos callback, que têm retorno da Distro. Onde esses callbacks foram predefinidos na source do servidor.