Ir para conteúdo

Featured Replies

Postado

.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()

 

Resolvido por Pacera

Ir para solução
  • Respostas 18
  • Visualizações 2.4k
  • Created
  • Última resposta

Top Posters In This Topic

Postado

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
  • 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
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)

 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo