Ir para conteúdo

[ Talkaction ]Talkaction De Compra De Itens.


Posts Recomendados

Creditos: Apocarai e MatheusMkalo

 

Bom o script funciona assim, des de que tenha um tal item no script voce pode compra-lo por um tal preço e se for agrupavel voce pode escolher a quantidade.

 

Como usar:

/buyitem gold nugget,50

 

Onde esta 50 é a quantidade de gold nugget que voce ira comprar.

 

Bom, vá na pasta data/talkactions/scripts e crie um arquivo.lua chamado buyitens e bote este script dentro:

------Script by MatheusMkalo and apocarai-------
------Exclusivo para o Xtibia--------
function onSay(cid, words, param)

local a = {
[2472] = {price = 160000, countmax = 1},
[2157] = {price = 13000, countmax = 100},
[2466] = {price = 60000, countmax = 1},
[2494] = {price = 150000, countmax = 1}
}

local b = string.explode(param, ",")

      if a[getItemIdByName(b[1])] then
         if isNumber(b[2]) then
            if tonumber(b[2]) > 0 then
               if tonumber(b[2]) <= a[getItemIdByName(b[1])].countmax then
                  if getPlayerMoney(cid) >= (a[getItemIdByName(b[1])].price*tonumber(b[2])) then 
                     doPlayerRemoveMoney(cid,(a[getItemIdByName(b[1])].price*tonumber(b[2])))
                     doPlayerAddItem(cid, getItemIdByName(b[1]),b[2])
                     doPlayerSendTextMessage(cid,25,"You have bought " .. tonumber(b[2]) .. " " .. getItemNameById(getItemIdByName(b[1])) .. " for " .. (a[getItemIdByName(b[1])].price*tonumber(b[2])) .. " gold pieces.")

                  else
                      doPlayerSendCancel(cid,"You have not enough money.")
                  end
               else
                   doPlayerSendCancel(cid,"You have informed a quantity higher than count max.")
               end
            else
                doPlayerSendCancel(cid,"You have informed a quantity lower than 0")
            end
         else
             doPlayerSendCancel(cid,"Quantity must be a number.")
         end
      end


return TRUE
end 

 

Depois salve-o e va em talkactions.xml e bote a seguinte tag:

<talkaction words="/buyitens" event="script" value="buyitens.lua"/>

 

Adicionando mais itens:

Para isso voce tera que botar mais uma linha nas tables. assim olha

Normal:

local a = {
[2472] = {price = 160000, countmax = 1},
[2157] = {price = 13000, countmax = 100},
[2466] = {price = 60000, countmax = 1},
[2494] = {price = 150000, countmax = 1}
}

 

Item adicionado:

local a = {

[2472] = {price = 160000, countmax = 1},

[2157] = {price = 13000, countmax = 100},

[2466] = {price = 60000, countmax = 1},

[2147] = {price = 600, countmax = 100},

[2494] = {price = 150000, countmax = 1}

}

 

Legendas:

Vermelho: O id do item que ira poder comprar entre colchetes "[]"

Rosa: O preço por cada unidade de item que ira comprar

Azul: A quantidade maxima que voce podera comprar (nao pode ultrapassar de 100)

 

AVISO IMPORTANTE!

Se voce botar quantidade maior que 1 em um item nao agrupavel, ou seja, nao da para juntar em 100, a pessoa ira tentar comprar 2 itens, ira pagar por 2 itens mais so recebera 1 item.

 

BETA VERSION!

Sujeito a mudanças...

Achou bugs? Duvidas? Sugestoes? Aceitamos aqui ou por PM.

NAO POSTE EM OUTRO FORUM, POIS SERA CONSIDERADO RIPPING

Editado por MatheusMkalo
Link para o comentário
Compartilhar em outros sites

Você tinha me passado no msn, agora dei uma olhada no que poderia estar errado.

 

Precisa verificar se existe os parâmetros.

if param == "" or b[1] == "" or b[2] == "" then
doPlayerSendCancel(cid,"Command param required. Use /buyitens item name, quantity")
return TRUE
end

 

Aconselho a usar variáveis.

local item = getItemIdByName(b[1], false)
local qnt = tonumber(b[2])

 

Colocar um "false" (getItemIdByName(b[1], false)) pra não ficar mostrando o erro quando alguém digita um item que não existe.

 

Poderia usar um "else" caso o a[getItemIdByName(b[1])] não exista.

 

Impedir que o player compre caso não tenha cap ou slot também seria bom.

 

Uma sugestão seria criar um parâmetro pra exibir os items da lista.

Exemplo: /buyitens info

Iria aparecer algo como:

name price max

name price max

name price max

Editado por kydrai
Link para o comentário
Compartilhar em outros sites

Gostei do sistema, interessante.

Ajuda muito em servidores de jogo rápido, mas, na minha opinião, destrói o RPG do servidor.

 

Sobre a programação, bem limpa e bem desenvolvida.

Digno de um bom programador. :)

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

Gostei muito, vou ver se ponho no meu ot.

 

Esse script e bom para aqueles items tipo, shovel, pick, rope etc.

 

Podemos tar num sitio em que precisamos de um desses items e nao tem nenhum NPC que venda por perto.

 

Abraço ;D

Link para o comentário
Compartilhar em outros sites

  • 1 year later...
×
×
  • Criar Novo...