Ir para conteúdo
  • Cadastre-se

Suporte Problema com script Upgrade by Mock


Posts Recomendados

Olá galera do Tibia King.

 

Sou um ADM de tibia de outras épocas. Fiquei longe disso por 6 anos, e ultimamente tem me dado uma vontade de abrir um novo servidor. Juntei um amigo, e estamos criando algo do zero, mapa próprio, muitos scripts que reforçam o RPG que estão no Tibia King, baseado em outros jogos com muito RPG, exemplo Black Desert, Metin, e o próprio World of Warcraft... Mas não vim divulgar meu servidor, só quero criar um contexto.

 

Com muito tempo ausente desse mundo de script e ot server, perdi algumas habilidades com script, já que sou da área de biológicas... Ainda manjo, mas existem problemas que estão fora do meu alcance.

 

Venho tendo problema com um sistema, até então funcional, porém com algumas desvantagens para algumas vocações. Pretendo manter o server bem balanceado, bem igualado para todas as vocações, logicamente sem tirar a peculiaridade e especialidade de cada uma...

 

O sistema de Upgrade do Mock refina Attack, Armor, Defense, certo ?

 

Porém, não está refinando escudos, e pior, está adicionando Attack aos escudos, e aos Bows não faz nada... Só adiciona level e nada mais.

Uma grande desvantagem para magos e paladins. Magos poderiam se beneficiar do Defense em Spellbooks.

 

Estava pensando que podia ser adicionado atributos como hitchance, attackspeed, range, para beneficiar magos e paladinos, pois quem tira proveito desse sistema é apenas o Knight.}

Reformulando:

-Escudos não ganham defesa, e estão ganhando ataque,
-Bows não ganham nada, só refin level,

 

Segue o script da forma que estou usando:

Spoiler

-- &a = weapon attack
-- &d = weapon defense
-- &s = shield defense
-- &p = armor defense
-- &h = hitchance
-- # = nivel do item
-- @ = max level
local gain = {
gainArmor='&p+(1)',loseArmor='&p-(1)',
gainShield='&s+(1)',loseShield='&s-(1)',
gainAttack='&a+(1)',loseAttack='&a-(1)',
gainDefense='&d+(1)',loseDefense='&d-(1)',
gainHitChance='&h+(1)',loseHitChance='&h-(1)',
chance='(100/math.sqrt((((@/4)+(#*2))/@)*#))',
maxlvl = 10,
blocked_ids = {8881}
}
local it = {
--[itemid] = [percent]
[8299] = 0, -- 0% additional
--[8303] = 100, -- 50%
}
if not setItemName then
    function setItemName(uid,name)
        return doItemSetAttribute(uid,'name',name)
    end
    
	function setItemAttack(uid,name)
        return doItemSetAttribute(uid,'attack',name)
    end
    function setItemDefense(uid,name)
        return doItemSetAttribute(uid,'defense',name)
    end
	function setItemHitChance(uid)
        return doItemSetAttribute(uid,'hitchance')
    end
	function setItemArmor(uid,name)
        return doItemSetAttribute(uid,'armor',name)
    end
	
    function getItemAttack(uid)
        return getItemAttribute(uid,'attack')
    end
    function getItemDefense(uid)
        return getItemAttribute(uid,'defense')
    end
	function getItemHitChance(uid)
        return getItemAttribute(uid,'hitchance')
    end
	function getItemArmor(uid)
   if type(uid) == 'number' then
      return getItemAttribute(uid,'armor')
   else
      return getItemInfo(uid.itemid).armor
   end
	end
end
 
local function isArmor(uid) -- Function by Mock the bear.
    if (getItemInfo(uid.itemid).armor ~= 0) and (getItemWeaponType(uid.uid) == 0) then
        return true
    end
    return false
end
local function isWeapon(uid) -- Function by Mock the bear.
    uid = uid or 0
    local f = getItemWeaponType(uid)
    if f == 1 or f == 2 or f == 3 then
        return true
    end
    return false
end
local function isShield(uid) -- Function by Mock the bear.
    uid = uid or 0
    if getItemWeaponType(uid) == 4 then
        return true
    end
    return false
end
local function isBow(uid) -- Function by Mock the bear.
    uid = uid or 0
    if getItemWeaponType(uid) == 5 then
        return true
    end
    return false
end
local function getWeaponLevel(uid) -- Function by Mock the bear.
   uid = uid or 0
   local name = getItemName(uid.uid) or getItemInfo(uid.itemid).name or ''
   local lvl = string.match(name,'%s%+(%d+)%s*')
   return tonumber(lvl) or 0
end
local function doTransform(s,i) -- Function by Mock the bear.
    local c = string.gsub(s,'@',gain.maxlvl)
    local c = string.gsub(c,'&a',(getItemAttack(i.uid) ~= 0 and getItemAttack(i.uid) or getItemInfo(i.itemid).attack))
    local c = string.gsub(c,'&d',(getItemDefense(i.uid) ~= 0 and getItemDefense(i.uid) or getItemInfo(i.itemid).defense))
    local c = string.gsub(c,'&s',(getItemDefense(i.uid) ~= 0 and getItemDefense(i.uid) or getItemInfo(i.itemid).defense))
    local c = string.gsub(c,'&p',(getItemArmor(i.uid) ~= 0 and getItemArmor(i.uid) or getItemInfo(i.itemid).armor))
	local c = string.gsub(c,'&h',(getItemHitChance(i.uid) ~= 0 and getItemHitChance(i.uid) or getItemInfo(i.itemid).hitchance))
    local c = string.gsub(c,'#',getWeaponLevel(i))
    local q =  assert(loadstring('return '..c))
    return math.floor(assert(q()))
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
         if item.uid == 0 or item.itemid == 0 then return false end
         toPosition.stackpos = 255
         if isInArray(gain.blocked_ids, itemEx.itemid)
          or (not getItemWeaponType(itemEx.uid) or getItemWeaponType(itemEx.uid) > 5)
           or (getItemWeaponType(itemEx.uid) == 0 and not isArmor(itemEx))
             or itemEx.itemid == 0 or itemEx.type > 1 or isItemStackable(itemEx.uid) then
                doPlayerSendTextMessage(cid, 24,"You cant refine this item.")
                return TRUE
         end
         if isCreature(itemEx.uid) == TRUE then
            return FALSE
         end
        local level = getWeaponLevel(itemEx)
        local chance = doTransform(gain.chance,itemEx)
        if level == gain.maxlvl then
            doSendMagicEffect(toPosition, 2)
            return doPlayerSendTextMessage(cid, 24,"Your item is on max level, you can't upgrade it.")
        end
        doPlayerSendTextMessage(cid, 24,"Trying refine with "..(chance+it[item.itemid] > 100 and 100 or chance+it[item.itemid]).."% of sucess!")
        if chance+it[item.itemid] >= math.random(0,100) then
            local nm = getItemName(itemEx.uid)
            local slot = nm:match('(%[.+%])') or '' ---If you server use slot system dont change it ^^
            slot = slot~='' and ' '..slot or slot
            setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level+1)..slot)
            addEvent(doPlayerSendTextMessage,500,cid, 24,"Your item has been upgrated to +"..(level+1)..slot..".")
            doSendMagicEffect(toPosition, 14)
            if isArmor(itemEx) then
                local get = doTransform(gain.gainArmor,itemEx)
                setItemArmor(itemEx.uid,get)
            elseif isBow(itemEx.uid) then
                setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx))
				setItemHitChance(itemEx.uid, doTransform(gain.gainHitChance,itemEx))
            elseif isWeapon(itemEx.uid) then
                setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx))
                setItemDefense(itemEx.uid, doTransform(gain.gainDefense,itemEx))
            elseif isShield(itemEx.uid) then
                setItemDefense(itemEx.uid, doTransform(gain.gainShield,itemEx))
            end
        else
            if level == 0 then
                addEvent(doPlayerSendTextMessage,500,cid, 24,"No effect.")
                doSendMagicEffect(toPosition, 2)
            elseif level > 0 then
            local nm = getItemName(itemEx.uid)
            local slot = nm:match('(%[.+%])') or '' ---If you server use slot system dont change it ^^
                slot = slot~='' and ' '..slot or slot
                if level == 1 then
                    setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..slot)
                    addEvent(doPlayerSendTextMessage,500,cid, 24,"Your item back to normal.")
                else
                    setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level-1)..slot)
                    addEvent(doPlayerSendTextMessage,500,cid, 24,"Your item back to +"..(level-1)..slot..".")
                end
                if isArmor(itemEx) then
                    setItemArmor(itemEx.uid,doTransform(gain.loseArmor  ,itemEx))
                elseif isWeapon(itemEx.uid) then
                    setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx))
                    setItemDefense(itemEx.uid, doTransform(gain.loseDefense,itemEx))
                elseif isBow(itemEx.uid) then
                    setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx))
					setItemHitChance(itemEx.uid, doTransform(gain.loseHitChance,itemEx))
                elseif isShield(itemEx.uid) then
                    setItemDefense(itemEx.uid, doTransform(gain.loseShield,itemEx))
                end
            end
            doSendMagicEffect(toPosition, 3)
        end
    doRemoveItem(item.uid,1)
    return true
end

 

 

Segue prints do problema:

Spoiler

Bow, qualquer bow acontece o mesmo, recebe o level mas não altera em nada.

image.thumb.png.e1e794867d6e94344ea013fd1e02c3f1.png

 

Escudos, como dito, nao recebem defense, porem estao recebendo attack, mesmo sem o comando no script.

image.png.f9f25bd830505fb71fc6177c3a022696.png

image.thumb.png.b4b33b254d7f21317636817322f584a3.png

 

Desconfio que o problema seja aqui:

image.png.69a8771100e6814a8298b5405aa59fe0.png

 

Mas como estou leigo no assunto, invoco os experts, deuses da programação pra me ajudar.

 

Peço encarecidamente a ajuda de vocês, o plano é um servidor revitalizado, com RPG bem reforçado, onde a galera vai gastar muito bem o tempo, se divertindo, coletando itens, refinando, vendendo no market mundial, e por ai vai.

 

Obrigado desde já.

Editado por Vitoxy (veja o histórico de edições)
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