Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 11/30/23 em todas áreas

  1. 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
  2. No arquivo Weapons.xml dentro da pasta XML do seu servidor você pode manipular o dano das wands/rods.
  3. 1 ponto
    Boa tarde! Fiz um script melhor e bem simples. É possível entender o script, Segue o GIF para ver como ele funciona e foi testado no tfs 0.4, tudo certo. Divirta-se function onUse(cid, item, frompos, item2, topos) local playerLocation = getCreaturePosition(cid) local itemData = { {itemId = 2400, x = 722, y = 658, z = 7}, {itemId = 2401, x = 722, y = 657, z = 7}, {itemId = 2376, x = 724, y = 658, z = 7} -- Adicione mais itens para combinação aqui } local newItemId = 2406 -- ID do novo item após a combinação local newItemPosition = {x = 724, y = 657, z = 7} -- Posição para o novo item local foundItems = {} local hasAllItems = true for _, data in ipairs(itemData) do local tileItem = getTileItemById({x = data.x, y = data.y, z = data.z}, data.itemId) if tileItem.uid > 0 then table.insert(foundItems, tileItem.uid) else hasAllItems = false break end end if hasAllItems then for _, uid in ipairs(foundItems) do if not doRemoveItem(uid, 1) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Erro ao remover um dos itens necessários.") return false end end local newItem = doCreateItem(newItemId, 1, newItemPosition) if newItem ~= LUA_ERROR then doSendMagicEffect(newItemPosition, 39) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Erro ao criar o novo item.") return false end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você não possui todos os itens necessários para a combinação.") return false end return true end @deza 20231130_150112.mp4
  4. Spell buff em área

    Underewar reagiu a Luucas017 por uma resposta no tópico

    -1 pontos
    local combat = createCombatObject() local area = createCombatArea(AREA_CROSS5X5) setCombatArea(combat, area) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_REGENERATION) setConditionParam(condition, CONDITION_PARAM_SUBID, 1) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setConditionParam(condition, CONDITION_PARAM_TICKS, 2 * 60 * 1000) setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, 20) setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 2000) local baseMana = 120 function onCastSpell(cid, var) local pos = getCreaturePosition(cid) local membersList = getPartyMembers(cid) if(membersList == nil or type(membersList) ~= 'table' or table.maxn(membersList) <= 1) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE) doSendMagicEffect(pos, CONST_ME_POFF) return false end local affectedList = {} for _, pid in ipairs(membersList) do if(getDistanceBetween(getCreaturePosition(pid), pos) <= 36) then table.insert(affectedList, pid) end end local tmp = table.maxn(affectedList) if(tmp <= 1) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE) doSendMagicEffect(pos, CONST_ME_POFF) return false end local mana = math.ceil((0.9 ^ (tmp - 1) * baseMana) * tmp) if(getCreatureMana(cid) < mana) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA) doSendMagicEffect(pos, CONST_ME_POFF) return false end if(not doCombat(cid, combat, var)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) doSendMagicEffect(pos, CONST_ME_POFF) return false end doCreatureAddMana(cid, -(mana - baseMana), false) doPlayerAddSpentMana(cid, (mana - baseMana)) for _, pid in ipairs(affectedList) do doAddCondition(pid, condition) end return true end
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo