Ir para conteúdo

Oneshot

Marquês
  • Total de itens

    1347
  • Registro em

  • Última visita

  • Dias Ganhos

    36

Tudo que Oneshot postou

  1. Olá, XTibiano. Não trabalhamos com conteúdo relacionado a bots, essa área é apenas para pedidos de scripts Lua para Open Tibia. Seu tópico foi fechado.
  2. Mas você está falando o quê para o Account Manager? 'warlord' ou 'a warlord'? Você tem que falar para o account manager, o que estiver no 'name' da vocação.
  3. O account manager só lista vocações onde o id seja igual ao fromvoc. Ou seja se o id da vocação 'warlord' é 13, seu fromvoc também tem que ser 13, e, no arquivo, ele está 9. Abraços.
  4. Oneshot

    Adeus Éks

    Adeus, caro contemporâneo.
  5. Realmente Modern Warfare você vai achar por esse preço mesmo, principalmente por que é o primeiro de três jogos, ou seja bem old já. Se você usar o Buscapé, dá até para achar umas boas ofertas, o problema é a confiança na loja em questão.
  6. Bom e barato na categoria de FPS são duas palavras opostas.
  7. não vlw, e eu tenho permição de moderar o forum todo, se eu ver uma irregularidade ou poder mover uma duvida sanada, e etc. eu posso e isso é sinal que vocês não estão fazendo os seus devidos trabalhos! Bju gato! permição permição permição permição permição permição permição permição A parte mais engraçada é que como Coordenador de Websites, você devia concentrar a maioria dos seus esforços lá, e não deixar aquela área fraca e praticamente abandonada como está atualmente. Além de analfabeto, belo coordenador, você hein? Não vem se achar o foda em cima dos outros, quando você é um bosta inútil atrás de um nick verde. Mas não vou levar pro lado pessoal não. Estamos no Barzinho para descontrair. "Bjo gato"
  8. Caro Piabeta, você que gosta de se meter na moderação dos outros e fechar os tópicos do Barzinho, faça um grande favor e feche o seu próprio tópico. Abraço.
  9. Oneshot

    checar storage

    Essa não é a área de pedidos correta, amigo. Movido para Pedidos e dúvidas - Clientes de OTserv
  10. Não é tão difícil fazer algo assim não. local tmp = {} for k, v in pairs(_G) do if type(v) == "table" then for m, n in pairs(v) do if type(m) == "string" and type(n) == "function" then m = (k == "_G" and m or (k .. "." .. m)) table.insert(tmp, m) end end end end table.sort(tmp, function(a, b) return string.byte(string.sub(a, 1, 1)) < string.byte(string.sub(b, 1, 1)) end) local file = io.open("data.txt", "w+") for i = 1, #tmp do file:write(tmp[i] .. "\n") end file:close() Consegui 742 funções Obs: Não liguem pra gambiarra.
  11. local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local think = os.clock() function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() local direction = getCreatureLookDirection(getNpcId()) if os.clock() > think then doCreatureSetLookDirection(getNpcId(), (direction == 3 and 0 or (direction + 1))) think = think + 2 end end npcHandler:addModule(FocusModule:new())
  12. O que o Ferminiano fez para ser banido dessa vez? trololol
  13. Oneshot

    Script De Força

    Já está com todas modificações, melee, distance e wands e rods. Movido para Pedidos e dúvidas resolvidos - Scripting
  14. Então, Raposa, lá no cliente do Tibia, realmente os valores são variáveis em uint8. É por isso mesmo que as skills "quebram", quando passam de 255, ou seja, quando um jogador tivesse skill 256, o cliente mostraria nível 0 na skill. Nas sources do maldito TFS, não sei se é o mesmo para o Open Tibia original, o sistema já é bem diferente. A experiência de uma skill, também chamada de skill tries, é declarada como uma variável uint64 e o nível da skill uma variável uint32. O mesmo ocorre para magic level. Esse limite de skill acontece porque chega uma hora que a fórmula de skill tries necessárias passa o valor máximo de uint64, reiniciando do 0, é nessa hora que o sistema entende que já não é possível mais avançar tal skill. Estes são os valores máximos para as vocações padrões, sem modificações nos multiplicadores do vocations.xml Sorcerer fist fighting = 110 club fighting = 69 sword fighting = 69 axe fighting = 69 distance fighting = 70 shielding = 109 fishing = 445 magic level = 389 Druid fist fighting = 110 club fighting = 79 sword fighting = 79 axe fighting = 79 distance fighting = 80 shielding = 109 fishing = 445 magic level = 389 Paladin fist fighting = 232 club fighting = 232 sword fighting = 232 axe fighting = 232 distance fighting = 440 shielding = 428 fishing = 445 magic level = 110 Knight fist fighting = 435 club fighting = 435 sword fighting = 435 axe fighting = 435 distance fighting = 132 shielding = 428 fishing = 445 magic level = 34 Os multiplicadores de skill ou o manaMultiplier são inversamente proporcionais ao nível máximo que uma vocação pode atingir. Se você diminuir o multiplicador, o nível máximo aumenta e vice-versa.
  15. Nossa, caotic, você está estudando pog?
  16. Oneshot

    Script De Força

    Ensinarei nos mínimos detalhes, de modo que até um leigo qualquer, seguindo os passos conseguiria fazer as modificações corretamente. Para seguir os passos abaixo, é recomendável ter em mãos, o código-fonte do seu servidor, ou seja, as sources. 1. No seu IDE de preferência, abra o arquivo weapons.cpp, e procure pela função abaixo: int32_t WeaponMelee::getWeaponDamage(const Player* player, const Creature* target, const Item* item, bool maxDamage /*= false*/) const { int32_t attackSkill = player->getWeaponSkill(item); int32_t attackValue = std::max((int32_t)0, (int32_t(item->getAttack() + item->getExtraAttack()) - elementDamage)); float attackFactor = player->getAttackFactor(); double maxValue = Weapons::getMaxWeaponDamage(player->getLevel(), attackSkill, attackValue, attackFactor); if(random_range(1, 100) <= g_config.getNumber(ConfigManager::CRITICAL_HIT_CHANCE)) { maxValue = std::pow(maxValue, g_config.getDouble(ConfigManager::CRITICAL_HIT_MUL)); player->sendCritical(); } Vocation* vocation = player->getVocation(); if(vocation && vocation->getMultiplier(MULTIPLIER_MELEE) != 1.0) maxValue *= vocation->getMultiplier(MULTIPLIER_MELEE); int32_t ret = (int32_t)std::floor(maxValue); if(maxDamage) return -ret; return -random_range(0, ret, DISTRO_NORMAL); } Precisamos modificar o dano, certo? Então modificaremos o valor de retorno da função. int32_t ret = (int32_t)std::floor(maxValue); Precisamos editar de um modo que, a cada ponto na skill Fist Fighting, o jogador receba 20 de dano extra, certo? Para isso basta adicionar a seguinte linha abaixo: ret += (player->getSkill(SKILL_FIST, SKILL_LEVEL) * 20); Ficando assim: int32_t ret = (int32_t)std::floor(maxValue); ret += (player->getSkill(SKILL_FIST, SKILL_LEVEL) * 20); Você precisará fazer o mesmo procedimento para as funções que retornam o dano das armas de combate a distância, como bows e crossbows e armas mágicas, como wands e rods. Armas "melee" também possuem uma segunda função, responsável por retornar o dano elemental, como exemplo Fire Sword. Como sou muito bonzinho, deixo abaixo o arquivo weapons.cpp.tar.gz com as modificações. weapons.cpp.tar.gz Basta substituir ele na pasta das sources de seu servidor, abrir o projeto no seu IDE de preferência e compilar. Lembre também de deletar qualquer pasta obj/
  17. Bom, eu estava dando uma olhada nas sources, tentando entender porque cada classe tinha um nível máximo de skill e magic level específicos. Então desenvolvi essas duas funções, que retornam esses tais níveis máximos, para skills e para maglevel. function getPlayerMaxSkill(cid, skillid) local skill_level = getPlayerSkillLevel(cid, skillid) while true do local x = getPlayerRequiredSkillTries(cid, skillid, skill_level) local y = getPlayerRequiredSkillTries(cid, skillid, (skill_level + 1)) if x > y then break end skill_level = skill_level + 1 end return skill_level end function getPlayerMaxMagLevel(cid) local maglevel = getPlayerMagLevel(cid, true) while true do local x = getPlayerRequiredMana(cid, maglevel) local y = getPlayerRequiredMana(cid, (maglevel + 1)) if x > y then break end maglevel = maglevel + 1 end return maglevel end Creio eu que elas não possuem utilidade nenhuma, são apenas funções teóricas que criei para entender como funciona o avanço de skills e magic level para cada vocação.
  18. Só sabe vir aqui postar "errinho" e esperar que caia do céu a solução, não mexe um dedo um milímetro para tentar aprender a consertar erros e aprender um pouco de Lua. Cansei já da sua folga, então se vira aí. Abraços.
  19. É, ele errou a linha do talkactions.xml. <talkaction words="/additem" acces="5" event="script" value="additem.lua"/> O correto é assim: <talkaction words="/additem" access="5" event="script" value="additem.lua"/>
  20. Errei a linha: doCombat(cid, var) Troque por: doCombat(cid, combat, var)
  21. 1. Crie um arquivo Lua com o nome que você quiser em data/weapons/scripts, cole o conteúdo passado acima. 2. Abra o arquivo weapons.xml e coloque a linha abaixo: <wand id="ID_DA_WAND" level="LEVEL_DA_WAND" mana="MANA_POR_TIRO" event="script" value="nome_do_arquivo.lua"> Certifique-se também que não exista nenhuma outra linha relacionada ao ID que você vai colocar, para evitar erros.
  22. Não vai funcionar. O processo de instalação é o mesmo do passado pelo usuário acima. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE) -- min = (level / minl + maglevel / minml) * 1. * mina + minb -- max = (level / maxl + maglevel / maxml) * 1. * maxa + maxb -- min < minc -- min = minc -- max < maxc -- max = maxc -- setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, mina, minb, maxa, maxb[, minl, maxl[, minm, maxm[, minc[, maxc]]]]) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, 0, -1, 0, 5, 5, 1.2, 1.4) function onUseWeapon(cid, var) if math.random(0, 100) > 70 then doPlayerCastSpell(cid, "exori flam") end doCombat(cid, var) return true end Lembrando que um script de weapon, você precise criar um combat para que ele funcione e editar a fórmula de dano a gosto. Deixei alguns comentários para te auxiliar quanto ao dano.
  23. Não é muito, mas estou destacando o tutorial na seção de Tutoriais. Porque trata de um tema essencial para novos programadores, que é a organização e identação dos códigos. Espero que alguém também o publique no portal.
  24. O fórum não trabalha com bots, meu colega. Essa seção é apenas para scripts Lua relacionados com Open Tibia. Fechado.
  • Quem Está Navegando   0 membros estão online

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