Postado Junho 15, 2022 2 anos .Qual servidor ou website você utiliza como base? Qual o motivo deste tópico? Olá, tudo bem? Eu tenho um sistema de forja no meu servidor global 12.86. Porem a criação do item forja tier 1,2....10 só pode ser criado com o comando de GOD: "/testtier falcon coif,10" Eu gostaria de criar um script que se o player tiver 100 de qualquer item"ID DO ITEM" e ele clicar no item e depois usar no item que sera forjado, o item tem 50% de receber +1 de forja, ou ele pode ter 50% de chance de falahar e nao acontecer nada. Poderia me ajudar? Obrigado Está surgindo algum erro? Se sim coloque-o aqui. Citar Você tem o código disponível? Se tiver publique-o aqui: local tier = TalkAction("/testtier") -- usage: /testtier item id or name, tier -- example: /testtier falcon coif, 8 -- make sure to move the item at least 1 time to refresh item tier icon function tier.onSay(player, words, param) local split = param:split(",") local itemType = ItemType(split[1]) if itemType:getId() == 0 then itemType = ItemType(tonumber(split[1])) if not tonumber(split[1]) or itemType:getId() == 0 then player:sendCancelMessage("There is no item with that id or name.") return false end end local tier = tonumber(split[2]) if tier <= 0 or tier == nil or tier > 10 then player:sendCancelMessage("Invalid tier count.") return false end player:addItem(itemType:getId(), 1):setTier(tier) return false end tier:separator(" ") tier:register()
Postado Junho 15, 2022 2 anos Primeiramente você deve verificar que a função usada será uma OnUse, ou seja, ela ativará "ao usar" um item (neste caso). Procure a estrutura da função que iremos usar no tutorial abaixo do projeto TFS: https://github.com/otland/forgottenserver/wiki/Revscriptsys Basicamente seu script terá essa composição: funcao AoUsar() - verificação se você tem 100x do item usado - verificação se o target é um item válido - condição para remover o item usado 100x - fazer um random da porcentagem de acerto - se o random por favorável, verificar o nível Tier do item target e somar 1 nível fim Eu poderia fazer para você, mas nenhum de nós dois ganharíamos nada com isso, portanto, procure nos scripts OnUse (actions) exemplos dessas condições, como verificar se o jogador tem X item em certa quantidade, verificar o target do item, função para verificar se tal ITEM ID é realmente um ITEM válido (no caso, creio que seja HELMET, ou ARMOR, ou LEGS, ou BOOTS, ou SHIELD?!, ou o que mais quiser ... ), condição para remover X item em certa quantidade, random de porcentagem de acerto, funções de retornar o valor atual do Tier do item e função para trocar o nível atual ... acho que é isso.
Postado Junho 15, 2022 2 anos Autor Me ajuda ae por favor. Consegui fazer algumas coisas, só que o script é bem extenso e utiliza algumas funções que nunca utilizei. Falta: 1-Alterar o onuse pro item dar use no item que vai ser forjado. exemplo, clica com direito no item 37110 e usa no item que vai forjar. Ou se possível ser feito por actionID. o cara coloca o item que sera forjado em cima de algum tile e puxa uma alavanca. 2-Depois, verificar se o item é tier=0 ou maior que 0 e menor que 10(tier maximo). Caso nao seja ele mostra a mensagem que este nao é um item forjável. 3-Fazer um random da porcentagem de acerto conforme o tier do item. tier=0 sera 100% acerto. a cada tier a porcentagem cai 15% ate o tier maximo que é 10. 4-se o random por favorável, verificar o nível Tier do item target e somar 1 nível Citar local forge = Action() local craft = { items = { [1] = {item = 37110, count = 100}-- item necessário para forjar } function forget.onUse(player, item, fromPosition, target, itemEx, toPosition) for k, v in pairs(craft.items) do if player:getItemCount(v.item) < v.count then player:sendTextMessage(MESSAGE_STATUS_SMALL, "Voce não tem a quantidade de items necessária para forjar") player:getPosition():sendMagicEffect(CONST_ME_POFF) return true end end for k, v in pairs(craft.items) do player:removeItem(v.item, v.count) end player:addItem(??????????) player:removeItem(item.itemid, 1) player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "Sucesso o item foi forjado") player:getPosition():sendMagicEffect(50) return true end forge:id(37110) forge:register()
Postado Junho 15, 2022 2 anos 1 hora atrás, Pacera disse: Me ajuda ae por favor. Consegui fazer algumas coisas, só que o script é bem extenso e utiliza algumas funções que nunca utilizei. Falta: 1-Alterar o onuse pro item dar use no item que vai ser forjado. exemplo, clica com direito no item 37110 e usa no item que vai forjar. Ou se possível ser feito por actionID. o cara coloca o item que sera forjado em cima de algum tile e puxa uma alavanca. 2-Depois, verificar se o item é tier=0 ou maior que 0 e menor que 10(tier maximo). Caso nao seja ele mostra a mensagem que este nao é um item forjável. 3-Fazer um random da porcentagem de acerto conforme o tier do item. tier=0 sera 100% acerto. a cada tier a porcentagem cai 15% ate o tier maximo que é 10. 4-se o random por favorável, verificar o nível Tier do item target e somar 1 nível - Você não precisar fazer uma lista dos items usados na forja (local craft.items = {}) pq no caso ele será o item usado: function forget.onUse(player, item, fromPosition, target, itemEx, toPosition) - Você precisa usar um item que abre a opção de "targetar" outro item (aquela setinha quando clica com o botão direito), isso é de cada item e ele fica definido dentro do cliente e só pode ser alterado pelo object builder, caso seu cliente seja customizado. - Antes de remover o item 100x usado na forja, você precisa verificar se o item é válido para forjar. 3 horas atrás, Pacera disse: player:addItem(itemType:getId(), 1):setTier(tier) Aqui no primeiro script que você colocou não tem a verificação de é um item válido para forjar, e particularmente, não sei como funciona o sistema ... também não sei se as suas sources faz essa verificação ... (faça um teste, tente criar um item "meat" tier 10, por exemplo)
Postado Junho 15, 2022 2 anos Autor A source faz a verificação se ele te 0 tier. todos os item forjaveis tem tier 0. os nao forjaveis nao tem tier
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.