-
Total de itens
1347 -
Registro em
-
Última visita
-
Dias Ganhos
36
Tudo que Oneshot postou
-
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 respostas
-
- pedido
- tibiabot ng
-
(e 3 mais)
Tags:
-
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.
-
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.
-
Adeus, caro contemporâneo.
-
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.
-
Bom e barato na categoria de FPS são duas palavras opostas.
-
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"
-
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.
-
Essa não é a área de pedidos correta, amigo. Movido para Pedidos e dúvidas - Clientes de OTserv
-
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.
- 16 respostas
-
- 724 linhas
- script
- (e 4 mais)
-
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())
-
O que o Ferminiano fez para ser banido dessa vez? trololol
-
Já está com todas modificações, melee, distance e wands e rods. Movido para Pedidos e dúvidas resolvidos - Scripting
-
getPlayerMaxSkill(cid, skillid) e getPlayerMaxMagLevel(cid)
tópico respondeu ao Oneshot de Oneshot em Mods, funções e outros
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. -
Nossa, caotic, você está estudando pog?
-
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/
-
getPlayerMaxSkill(cid, skillid) e getPlayerMaxMagLevel(cid)
um tópico no fórum postou Oneshot Mods, funções e outros
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. -
pedido function onCombat , me ajuda a fazer isso aqui?
pergunta respondeu ao tonynamoral de Oneshot em Scripts
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. -
talkaction Adicionando Itens Para Todos Os Players.
tópico respondeu ao pessoa93 de Oneshot em Actions e Talkactions
É, 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"/> -
pedido function onCombat , me ajuda a fazer isso aqui?
pergunta respondeu ao tonynamoral de Oneshot em Scripts
Errei a linha: doCombat(cid, var) Troque por: doCombat(cid, combat, var) -
pedido function onCombat , me ajuda a fazer isso aqui?
pergunta respondeu ao tonynamoral de Oneshot em Scripts
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. -
pedido function onCombat , me ajuda a fazer isso aqui?
pergunta respondeu ao tonynamoral de Oneshot em Scripts
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. -
Qual é a coisa mais importante em um código? E por que é a elegância?
tópico respondeu ao Skyen de Oneshot em Lixeira Pública
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. -
O fórum não trabalha com bots, meu colega. Essa seção é apenas para scripts Lua relacionados com Open Tibia. Fechado.
-
Não, não tem como. Abraços.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.