Ir para conteúdo
  • Cadastre-se

Suporte Script para upgrade de Wands


Posts Recomendados

Boa tarde pessoal, peguei um server no meio do caminho e agora estou tendo dificuldade para finalizar alguns sistemas, entre eles um onde o player troca items em um npc para aumentar progressivamente o dano da sua wand em 50%, o npc está funcionando corretamente e consegue fazer essa troca do item para setar um storage novo. Segue parte do script do NPC com a wand que estou tentando arrumar:

Citar

function creatureSayCallback(cid, type, msg)
          if(not npcHandler:isFocused(cid)) then
                    return false
          end
          local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
          if msgcontains(msg, 'comuns') then 
                     npcHandler:say("Voce deseja evoluir a {jester staff} ou {crystal staff}?", cid)
                              elseif msgcontains(msg, {"jester staff"}) then 
                              local a1 = 5 * getPlayerStorageValue(cid, 81)    
                              local level1 = 50 * getPlayerStorageValue(cid, 81)
                              if getPlayerStorageValue(cid, 80) < 7500 then                              
                              if getPlayerItemCount(cid, 5944) >= a1 then
                              doPlayerRemoveItem(cid, 5944, a1)
                              setPlayerStorageValue(cid, 80, getPlayerStorageValue(cid, 80)+500)
                              setPlayerStorageValue(cid, 81, getPlayerStorageValue(cid, 81)+1)
                              doSendAnimatedText(getPlayerPosition(cid), "Upgrade!", TEXTCOLOR_YELLOW)
                              doSendMagicEffect(getCreaturePosition(cid), math.random(28,28))
                              doBroadcastMessage("[WANDS/RODS SYSTEM]: O jogador (" .. getCreatureName(cid) .. ") aumentou em ".. level1 .."% o ataque com a Jester Staff.", 19)
                              selfSay('Parabéns voce recebeu seu upgrade.', cid)
                              else
                              selfSay('Desculpe voce não tem '.. a1 ..' upgrade sphere.', cid)
                              end
                              else
                              selfSay('Desculpe voce atingiu o limite de upgrade da jester staff.', cid)
                              end

 

A parte que não estou conseguindo resolver é sobre onde utilizar esse storage setado... nesse server as wands são editadas com paralyze critical etc a partir do seguinte script:

Citar

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)

setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -5.10, -60, -5.10, -60, 5, 5, 4, 7)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_SMALLCLOUDS)


local condition = createConditionObject(CONDITION_CURSED)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, 9, 600, -2200)
addDamageCondition(condition, 9, 600, -2200)
setCombatCondition(combat2, condition)

local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)

setCombatParam(combat3, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatParam(combat3, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -7.20, -60, -7.20, -60, 5, 5, 4, 7)


local function onUseWeapon1(parameters)
doCombat(parameters.cid, combat, parameters.var)
end

local function onUseWeapon2(parameters)
doCombat(parameters.cid, combat2, parameters.var)
end

local function onUseWeapon3(parameters)
doCombat(parameters.cid, combat3, parameters.var)
end


function onUseWeapon(cid, var)
local parameters = {cid = cid, var = var, combat = combat, combat2 = combat2, combat3 = combat3}
local chance = math.random(1, 100)

if chance > 20 then
doCombat(cid, combat, var)
elseif chance > 1 and chance <= 5 then
doCombat(cid, combat2, var)
doSendAnimatedText(getPlayerPosition(cid),"CURSED!", TEXTCOLOR_GREY)
doCombat(cid, combat, var)
elseif chance <= 10 then
doCombat(cid, combat3, var)
doSendAnimatedText(getPlayerPosition(cid),"CRITICAL!", TEXTCOLOR_GREY)
elseif chance <= 8 then
doPlayerAddMana(cid, 15000)
doSendMagicEffect(getPlayerPosition(cid), COST_ME_MAGIC_BLUE)
addEvent(onUseWeapon1, 1, parameters)
end
return true
end

 

 

Minha idéia foi utilizar essa fórmula de dano para aumentar conforme a storage, porém sou muito iniciante na escrita .lua e acho que estou errando algo, segue o que tentei fazer:

Citar

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)

if getPlayerStorageValue(cid, 80) then
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -5.10, -60, -5.10, -60, 5, 5, 4, 7)
elseif (getPlayerStorageValue(cid, 81) == 1) then
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -15.10, -60, -15.10, -60, 5, 5, 4, 7)
end
 

Obtive os seguintes erros no registro e a wand sequer ataca agora

Citar

[Error - Test Interface] data/weapons/scripts/anihi/jester.lua Description: (luaGetCreatureStorage) Creature not found [Error - Test Interface] data/weapons/scripts/anihi/jester.lua Description: (luaGetCreatureStorage) Creature not found [Error - Weapon Interface] data/weapons/scripts/anihi/jester.lua Description: (luaGetCreatureStorage) Creature not found [Error - Weapon Interface] data/weapons/scripts/anihi/jester.lua Description: (luaGetCreatureStorage) Creature not found (done).

Agradeceria muito qualquer ajuda! Desde já obrigado

Link para o post
Compartilhar em outros sites

Coloquei alguns comentários pra vc entender passo a passo.

 

Spoiler

local function damage(cid, critical) 
    local lvl, ml = getPlayerLevel(cid), getPlayerMagLevel(cid)
    local formula = (lvl + ml + 100) -- crie sua formula do dano da wand aqui
    if critical == true then -- aqui checa se é dano critical
        formula = formula * 2 -- aqui é o dano base se tornando critico
    end
    if getPlayerStorageValue(cid, XXXX) >= 1 then -- storage que boosta a wand
        for i = 1, getPlayerStorageValue(cid, XXXX) do 
            formula = formula * 1.5 -- multiplica o dano por 50%
        end
    end
    return(formula) -- retorna o dano da wand após os devidos calculos
end

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_SMALLCLOUDS)

local condition = createConditionObject(CONDITION_CURSED)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, 9, 600, -2200)
addDamageCondition(condition, 9, 600, -2200)
setCombatCondition(combat2, condition)

local combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TARGETCASTERORTOPMOST, true)
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatParam(combat3, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)

function onTargetCreature(cid, target)  -- funcao que eh ativada quando o "combat" for atingir o alvo
    doTargetCombatHealth(cid, target, COMBAT_DEATHDAMAGE, -damage(cid, false), -damage(cid, false), CONST_ME_NONE) -- causa dano no alvo
end
setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")

function onTargetCreature(cid, target) -- funcao que eh ativada quando o "combat3" for atingir o alvo
    doTargetCombatHealth(cid, target, COMBAT_DEATHDAMAGE, -damage(cid, true), -damage(cid, true), CONST_ME_NONE) -- causa dano no alvo
end
setCombatCallback(combat3, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")

function onUseWeapon(cid, var)
    local chance = math.random(1, 100)
    if chance > 20 then
        doCombat(cid, combat, var)
    elseif chance > 1 and chance <= 5 then
        doCombat(cid, combat2, var)
        doSendAnimatedText(getPlayerPosition(cid),"CURSED!", TEXTCOLOR_GREY)
        doCombat(cid, combat, var)
    elseif chance <= 10 then
        doCombat(cid, combat3, var)
        doSendAnimatedText(getPlayerPosition(cid),"CRITICAL!", TEXTCOLOR_GREY)
    elseif chance <= 8 then
        doPlayerAddMana(cid, 15000)
        doSendMagicEffect(getPlayerPosition(cid), COST_ME_MAGIC_BLUE)
        doCombat(cid, combat, var)
    end
return true
end

 

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por braianlomas
      Como faço para corrigir esse problema para meu cliente, eu uso o tfs 0.3.6  
      Quero resolver esse problema que tenho no meu cliente, como e onde posso resolver?  
      Eu uso o tfs 0.3.6, não tenho as fontes do cliente, se você puder me dar eu vou amá-las para sempre  
       

       
    • Por A.Mokk
      Ola pessoal, estou tentando compilar o TFS 1.5 Downgrade para 8.60 atraves do MSVC 2022, ao tentar compilar da o seguinte erro:
       
       
      Fiz o download do MSVC, GitDash, TFS-SDK-3.2, e de varios boosts que tentei, ao fazer o seguinte procedimento no GitDash:
       
      Ao chegar em ./bootstrap-vcpkg.bat o GitDash nao consegue realizar o procedimento corretamente, alguem poderia me ajudar ?

      Tentei de diversas formas mas o mesmo erro sempre persiste, atualmente meu servidor utiliza TFS 0.4, consigo compilar sem nenhum problema no MSVC 2010, porem, as limitações do TFS 0.4 estão me fazendo precisar atualizar, se alguem souber como corrigir esses erros eu agradeço !

      Tutoriais utilizados :
      Compiling on Windows (vcpkg) · otland/forgottenserver Wiki · GitHub
      Compiling on Windows · otland/forgottenserver Wiki · GitHub
      Compilando TFS 1.3 com vídeo-aula - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
      Compilar TFS 1.3 Vcpkg - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
       
      O que acontece no Powershell:
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      Canary 2.3.6
      Qual o motivo deste tópico? 
      Queria fazer com que os players não pudessem mexer no aleta sio, pois, agora os mesmos estão conseguindo mexer nos itens
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      canary para o cliente 13.16
      Qual o motivo deste tópico? 
      Não consigo encontrar onde ajusta
      to com o problema no 13.16  o exausted, por exemplo os kinas era pra combar exori, erori gran e exori min, porém não ta indo ta dando exausted o char ta soltando magia ou runa e não consegue usar as potions
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • Por Andersontatuador
      Olá galera da TK, me chamo Anderson estou procurando alguém profissional em otservs e site.
      Já tenho um servidor o site e o cliente preciso só de uma pessoal competente, que esteja empenhado a trabalhar,
      não quero nada de graça, pois nessa onda fui mais roubado do quer eu pagar um profissional.
      caso alguém se interesse entrar em contato comigo através do whatsapp
      82 9 9304-9462
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo