Ir para conteúdo

zipter98

Herói
  • Total de itens

    2553
  • Registro em

  • Última visita

  • Dias Ganhos

    72

Tudo que zipter98 postou

  1. Troque a tabela premios por: local premios = { -- -- [chance] -- itemid,amount [vocation_id] = { [{1, 5}] = {{12674}, {11754}}, [{10, 30}] = {{2390}, {2469}, {2646}, {8306,5}, {2408}, {9693}}, [{80, 100}] = {{2160,1000}} }, --etc} Depois, substitua: for v, k in pairs(premios) do por: for v, k in pairs(premios[getPlayerVocation(winner)]) do
  2. Em algum arquivo de data/lib: TRAP_IDS = {itemid, itemid, ...} --IDs dos items que exercem a função de trap. Nos códigos das traps, troque: for n, pos in ipairs(permittedPos[cid]) do doSendMagicEffect(pos, 130) doCreateItem(config.createGates[n], 1, pos) addEvent(function() if(getTileItemById(pos, config.createGates[n]).uid > 0) then doRemoveItem(getTileItemById(pos, config.createGates[n]).uid, 1) end end, config.gatesTime*1000)end por: for n, pos in ipairs(permittedPos[cid]) do local break_scope for i = 1, #TRAP_IDS do if getTileItemById(pos, TRAP_IDS[i]).uid > 0 then break_scope = true break end end if not break_scope then doSendMagicEffect(pos, 130) doCreateItem(config.createGates[n], 1, pos) addEvent(function() if(getTileItemById(pos, config.createGates[n]).uid > 0) then doRemoveItem(getTileItemById(pos, config.createGates[n]).uid, 1) end end, config.gatesTime*1000) endend Deve haver alguma maneira mais elegante de evitar esse problema de acumulação de traps, mas meu cérebro trabalha mal de madrugada.
  3. zipter98

    Erro Shiny Stone

    ^ neste caso, para chamar um elemento de balls você precisa de um index, além do fato de que getPokeballs é algo inexistente no código, por isso imagino que seu objetivo foi chamar newBall e não getPokeballs. Se o autor do tópico preferir manter a linha, pode substituí-la por: doTransformItem(getPlayerSlotItem(cid, 8).uid, balls[getPlayerSlotItem(cid, 8).itemid].newBall)
  4. zipter98

    Erro Shiny Stone

    Remova esta linha: doTransformItem(getPlayerSlotItem(cid, 8).uid, getPokeballs.newBall) Como o ID da pokeball permanecerá o mesmo, a função acima é desnecessária.
  5. Poste o creatureevent responsável pela etapa dos canais, por gentileza (data/creaturescripts/scripts).
  6. Esse segundo argumento não existia originalmente na função getPokemonBoost. Para escrever as modificações requisitadas no tópico, eu reescrevi tal função para que, se mencionado um segundo argumento verdadeiro, o valor retornado fosse o boost original do pokémon. Caso não seja explicitado um segundo parâmetro (ou seja usado segundo parâmetro falso), o que seria retornado é o boost somado ao bônus do X-Boost. Alternativamente, uma explicação mais simples: getPokemonBoost(uid, true) --> Boost VERDADEIRO do pokémon.getPokemonBoost(uid) ou getPokemonBoost(uid, false) --> Boost TOTAL do pokémon (boost + bônus do X-Boost). @Josegvb Você registrou a nova moeda na tag do código?
  7. Troque o código da função getPokemonBoost por: function getPokemonBoost(poke, normal_boost) if not isSummon(poke) then return 0 end local item = getPlayerSlotItem(getCreatureMaster(poke), 8).uid local boost, held_item = getItemAttribute(item, "boost") or 0, getItemAttribute(item, "heldx") local extra_boost = held_item and Tiers2[held_item] and Tiers2[held_item].bonus or 0 return normal_boost and boost or boost + extra_boostend Depois, em newStatusSyst.lua, troque: math.random(1, 100) <= (getPokemonBoost(ret.id) > 50 and 50 or getPokemonBoost(ret.id)) por: math.random(1, 100) <= getPokemonBoost(ret.id, true)
  8. Ah, de fato. Vou corrigir esse probleminha assim que possível.
  9. Quanto ao boost, experimente o seguinte: Primeiramente, remova todas as alterações feitas em level system.lua relativas ao X-Boost. Depois, troque: function getPokemonBoost(poke) if not isSummon(poke) then return 0 end return getItemAttribute(getPlayerSlotItem(getCreatureMaster(poke), 8).uid, "boost") or 0end por: local Tiers2 = { [36] = {bonus = BoostBonus1}, [37] = {bonus = BoostBonus2}, [38] = {bonus = BoostBonus3}, [39] = {bonus = BoostBonus4}, [40] = {bonus = BoostBonus5}, [41] = {bonus = BoostBonus6}, [42] = {bonus = BoostBonus7},}function getPokemonBoost(poke) if not isSummon(poke) then return 0 end local item = getPlayerSlotItem(getCreatureMaster(poke), 8).uid local boost, held_item = getItemAttribute(item, "boost") or 0, getItemAttribute(item, "heldx") local extra_boost = held_item and Tiers2[held_item] and Tiers2[held_item].bonus or 0 return boost + extra_boostend Depois, em newStatusSyst.lua, procure por: math.random(1, 100) <= getPokemonBoost(ret.id) Troque-a, tomando cuidado para não remover mais que o necessário, pelo seguinte: math.random(1, 100) <= (getPokemonBoost(ret.id) > 50 and 50 or getPokemonBoost(ret.id))
  10. Ah é, esqueci do espaço. Corrigido. Um pouco mais tarde verei o caso do X-Boost (acabei de chegar em casa, ainda não tomei banho e nem jantei).
  11. Substitua por este código e não se esqueça de configurar a tabela: local prof_names = { --[storage] = "profession_name",}function getPlayerDesc(cid, thing, TV) if (not isCreature(cid) or not isCreature(thing)) and not TV then return "" end local pos, prof_name = getThingPos(thing), "" local ocup = youAre[getPlayerGroupId(thing)] local rank = (getPlayerStorageValue(thing, 86228) <= 0) and "a Pokemon Trainer" or lookClans[getPlayerStorageValue(thing, 86228)][getPlayerStorageValue(thing, 862281)] local rank2 = (getPlayerStorageValue(thing, 86228) <= 0) and "a Pokemon Trainer" or lookClans2[getPlayerStorageValue(thing, 86228)][getPlayerStorageValue(thing, 862281)] local name = thing == cid and "yourself" or getCreatureName(thing) --alterado v1.8 local art = thing == cid and "You are" or (getPlayerSex(thing) == 0 and "She is" or "He is") local str = "You see "..name..". "..art.." " for key, str in pairs(prof_names) do if getPlayerStorageValue(cid, key) > -1 then prof_name = str break end end if youAre[getPlayerGroupId(thing)] then str = str..""..(ocup)..(prof_name == "" and "" or ", "..prof_name).." and "..rank.." from ".. getTownName(getPlayerTown(thing)).."." else if getPlayerSex(thing) == 1 then str = str..""..(rank)..(prof_name == "" and "" or " and "..prof_name).." from ".. getTownName(getPlayerTown(thing)).."." elseif getPlayerSex(thing) == 0 then str = str..""..(rank2)..(prof_name == "" and "" or " and "..prof_name).." from ".. getTownName(getPlayerTown(thing)).."." end end if getPlayerGuildId(thing) > 0 then str = str.." "..art.." "..getPlayerGuildRank(thing).." from the "..getPlayerGuildName(thing).."." end if TV then str = str.." "..art.." watching TV." end str = str..""..((isPlayer(cid) and youAre[getPlayerGroupId(cid)]) and "\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]" or "") --alterado v1.8 return str end
  12. Pode postar o código da função getPlayerDesc, localizada em some functions.lua? Depois de resolver o problema no look, darei uma olhada no X-Boost. PS: Não é necessária criar um novo arquivo, como dito no tópico do sistema de profissões. Se possível, delete-o.
  13. Well, achei bem legal não terem vilanizado o Tony Stark como fizeram nos quadrinhos. A luta no Aeroporto foi, na minha opinião, a melhor cena até agora nos filmes da Marvel. Achei meio wat terem matado o Ossos Cruzados logo no início do filme, mas não vejo outra utilidade para ele nos futuros filmes, caso tivesse sobrevivido. Gostaria de ver como o impacto causado na comunidade heroica até agora apresentada será trabalhado em Guerra Infinita, com a introdução do Thanos em posse da Manopla e Jóias do Infinito. E quanto ao personagem favorito proposto pela enquete, logicamente Homem Formiga, apesar de não pertencer aos Vingadores no filme.
  14. zipter98

    [pedido] y-cure

    Não sei quem escreveu a função cleanBuffs2 do seu servidor, mas ela tá bem errada. Troque: function cleanBuffs2(item) if item ~= 0 then for i = 1, 3 do doItemEraseAttribute(item, Buffs[1]) doItemEraseAttribute(item, Buffs[1].."eff") doItemEraseAttribute(item, Buffs[1].."skill") end endend por: function cleanBuffs2(item) if item ~= 0 then for i = 1, 3 do doItemEraseAttribute(item, Buffs[i][1]) doItemEraseAttribute(item, Buffs[i][1].."eff") doItemEraseAttribute(item, Buffs[i][1].."skill") end endend E, na função: function doBuff2(cid, cd, eff, check, buff, first, attr) troque: atributo = Buffs[1] por: atributo = Buffs[i][1]
  15. zipter98

    [pedido] y-cure

    Ah sim, já vi o erro. Foi de fato falta de atenção minha na tabela, não tinha percebido que os valores estavam dentro de uma tabela. lol Quando disse que havia testado no meu servidor, eu na verdade apenas testei a lógica e não detalhei com uma tabela, por isso o erro passou despercebido. Basta trocar: if math.random(1, 100) <= Tiers[held_item] then por: if math.random(1, 100) <= Tiers[held_item].chance then
  16. zipter98

    [pedido] y-cure

    Eu testei a minha modificação em um PDA e funcionou perfeitamente, exatamente como no vídeo. Provavelmente a modificação anterior do Y-Cure ainda se mantém, talvez você não tenha atualizado os arquivos ou alguma coisa passou despercebida. Se possível, remova tudo que tiver doCureWithY no seu servidor (utilize a ferramenta "Localizar em arquivos", do Notepad++). Quanto ao texto animado "MED", basta chamar a seguinte função: doSendAnimatedText(getThingPos(ret.id), "MED", 215)
  17. zipter98

    [pedido] y-cure

    Você deve remover a modificação em some functions.lua, deixando apenas a feita em newStatusSyst.lua.
  18. zipter98

    [pedido] y-cure

    Desculpe a demora, semana cheia. Em newStatusSyst.lua, troque: if isSummon(ret.id) and getPokemonBoost(ret.id) ~= 0 and math.random(1, 100) <= getPokemonBoost(ret.id) then --sistema "pegou no boost" if ret.cond and not isInArray({"Poison", "Leech", "Fear"}, ret.cond) then doSendAnimatedText(getThingPosWithDebug(ret.id), "BOOST", 215) --alterado v1.8 return true endend por: if isSummon(ret.id) then if getPokemonBoost(ret.id) ~= 0 and math.random(1, 100) <= getPokemonBoost(ret.id) then --sistema "pegou no boost" if ret.cond and not isInArray({"Poison", "Leech", "Fear"}, ret.cond) then doSendAnimatedText(getThingPosWithDebug(ret.id), "BOOST", 215) --alterado v1.8 return true end end local Tiers, master = { [8] = {chance = Cure1}, [9] = {chance = Cure2}, [10] = {chance = Cure3}, [11] = {chance = Cure4}, [12] = {chance = Cure5}, [13] = {chance = Cure6}, [14] = {chance = Cure7} }, getCreatureMaster(ret.id) if getPlayerStorageValue(master, 52480) < 1 then local held_item = getItemAttribute(getPlayerSlotItem(master, 8).uid, "heldy") if held_item and Tiers[held_item] then if math.random(1, 100) <= Tiers[held_item].chance then doSendMagicEffect(getThingPos(ret.id), 14) return true end end endend Optei por incluir ambas as proteções de efeitos negativos em um mesmo escopo, porém a lógica que expliquei na primeira página se mantém.
  19. Tipo assim? local t = { {name = "engenheiro", storage = 12012, value = 1}, {name = "professor", storage = 12013, value = 1}, {name = "aventureiro", storage = 12014, value = 1}, {name = "estilista", storage = 12015, value = 1},}function onLook(cid, thing, position, lookDistance) for _, prof in ipairs(t) do if isPlayer(thing.uid) then if getPlayerStorageValue(thing.uid, prof.storage) >= prof.value and thing.uid ~= cid then local textx = "This player is "..prof.name.."." doPlayerSendTextMessage(cid, 22, textx) end if getPlayerStorageValue(thing.uid, prof.storage) >= prof.value and thing.uid == cid then local text = "You are "..prof.name.."." doPlayerSendTextMessage(cid, 22, text) end end end return trueend
  20. Isso está acontecendo porque a função xReturn está sendo chamada depois da verificação de imunidade do monstro, que, se verdadeira, interrompe a execução do código. Por consequência, xReturn não é chamado nesta condição. Eu não li o código inteiro para ver se a seguinte mudança de eventos pode prejudicar em algum cálculo. Qualquer coisa, basta um backup e veremos o que pode ser feito. Transfira: if valor >= getCreatureHealth(cid) then if isInArray(cannotKill, combat) and isPlayer(cid) then valor = getCreatureHealth(cid) - 1 else valor = getCreatureHealth(cid) endendvalor = math.floor(valor) --alterado v1.6 Para abaixo de: if p.x == 1 and p.y == 1 and p.z == 10 then return false end Transfira: -- Return -- xReturn(cid, attacker, valor)-- Return -- Para abaixo da primeira modificação. O resultado final deve ser: if p.x == 1 and p.y == 1 and p.z == 10 then return false endif valor >= getCreatureHealth(cid) then if isInArray(cannotKill, combat) and isPlayer(cid) then valor = getCreatureHealth(cid) - 1 else valor = getCreatureHealth(cid) endendvalor = math.floor(valor) -- Return -- xReturn(cid, attacker, math.abs(valor))-- Return -- if getPlayerStorageValue(cid, 9658783) == 1 then return false --imuneend Assim, a função xReturn será chamada antes da interrupção do código pela verificação de invulnerabilidade.
  21. HAPPY B-DAY 2 ME

    1. Mostrar comentários anteriores  %s mais
    2. Josegvb

      Josegvb

      qndo tiver tempo da uma olhada ai nesse post querido pfv =x odeio esse jeito do return funfar ;/ td ao contrario de como deberia ser, em bixos eles perdem bem pouca hp

       

    3. zipter98

      zipter98

      Ainda sairei daqui a pouco e irei ao cinema mais tarde. Caso eu lembre na volta, darei uma olhada neste e outros tópicos.

    4. Josegvb

      Josegvb

      obrigado ^^ estou precisando dessa pequena modificaçao pra deixar os duels decentes e com vontade de duelar mesmo, pois o return atualmente fode mt o duel :/

  22. zipter98

    [pedido] y-cure

    No arquivo que mencionei, você pode encontrar o seguinte bloco de código: if isSummon(ret.id) and getPokemonBoost(ret.id) ~= 0 and math.random(1, 100) <= getPokemonBoost(ret.id) then --sistema "pegou no boost" if ret.cond and not isInArray({"Poison", "Leech", "Fear"}, ret.cond) then doSendAnimatedText(getThingPosWithDebug(ret.id), "BOOST", 215) --alterado v1.8 return true endend Acima (ou abaixo, tanto faz) dele que você deve escrever a função do Y-Cure. Neste caso, entretanto, você não precisa usar a função doCureStatus. Na verdade, basta retornar verdadeiro. Um pequeno esboço expressando a lógica que deve ser usada: if is_not_in_duel then if math.random(1, 100) <= chance_de_ativar_held then return true endend Logicamente você deve detalhar mais este bloco de código, mas o fundamento é este.
  23. zipter98

    [pedido] y-cure

    Ah, acho que entendi. Então, o held item funciona tanto contra pokémon selvagens quanto de players? De qualquer maneira, basta uma pequena modificação em newStatusSyst.lua (data/lib), e o código agirá diretamente na origem do status negativo, inclusive inviabilizando este erro que você mencionou, Bodak. Se ninguém tiver o interesse de procurar saber como escrever o script, basta responder minha pergunta e farei a mudança.
  24. zipter98

    [pedido] y-cure

    Peraí, não entendi muito bem. O Y-Cure que você está usando funciona na questão das chances de execução, porém remove os status negativos contra tanto pokémon selvagens e de jogadores, certo? O que você quer é que a função desse held item seja apenas executada contra pokémon selvagens?
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...