Jump to content

Comprando Pontos De Exp


LuckOake

Recommended Posts

Olá olá galere do Ékz. Eu, na necessidade de treinar scripting, fico pensando no que fazer. Pesquisando scripts em lugares, vi um que comprava EXP, mas é daqueles simples que ninguém acha graça que é tipo:

 

Fulano: !buyexp
Fulano ganhou 15k de XP.

 

Pesquisei e não achei nenhum mais legal. Então eu fiz um que compra Exp por cada ponto. Exemplo, se você configurar pra cada Exp point ser 2 gold coins, se eu comprar 20, pagarei 40 gold coins.

 

Compreenderam? Vamos ao script.

 

talkactions.xml:

 

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

 

buyexp.lua:

 

-- Script by LuckOake

function onSay(cid, words, param)

local exp_cost = 1 -- Quando custa cada ponto de XP

local eff = 29 -- Efeito que será mandado

 

if not param or not tonumber(param) then

doPlayerSendCancel(cid, "Escreva apenas números.") return true

elseif not doPlayerRemoveMoney(cid, param*exp_cost) then

doPlayerSendCancel(cid, "Você não possui dinheiro suficiente para comprar "..param.." pontos de experiência.") return true

end

 

doPlayerAddExp(cid, param)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você comprou "..param.." pontos de experiência por "..param*exp_cost.." gold coins.")

doSendMagicEffect(getCreaturePos(cid), eff)

return true

end

 

 

Exemplo:

 

Fulano: !buyexp 100
Você comprou 100 pontos de experiência por 100 gold coins.

 

Obrigado :D

Edited by LuckOake
Link to comment
Share on other sites

Parabéns cara, depois vamos fazer alguns sistemas pra postar aqui tbm

ta progrediu mto

xD

Que isso Vodkart, muito é pouco para oque ele progrediu.

 

------------------------------------------

 

Parabéns pelo script, grande LuckOake.

 

No momento estou "devendo" 3 REP+.

 

Após paga-los com certeza o próximo será seu.

 

Ainda bem que copiei seu avatar.

 

Aehaehaheah.

 

@Dúvida

 

Como põe identação no script?

Edited by Newtonnotwen
Link to comment
Share on other sites

Bacana o Sistema manin, da pra fazer algumas coisas com esse script ^^

O bacana mesmo seria não comprar por GOLDS e sim pontos, ou por items de "pontos" digamos assim..apenas uma dica :p, pois acredito que não iria tirar tanto o RPG.

Link to comment
Share on other sites

Obrigado, galera, tô fazendo o possível pra evoluir e tentar virar um Vodkart da vida heaueahuaheuhae

 

@milbradt

 

Bom, ai eu teria que adaptar o script pra storage dos pontos, nada muito complexo.

Link to comment
Share on other sites

Parabéns cara está avançando muito mais poderia colocar o seu script em code fica melhor e também estudar return deixa o script mais piqueno e ainda melhor de visualizar

 

 

 

 

function onSay(cid, words, param)
local maxim = 9999 -- máximo de exp por vez
   local exp_cost = 1 -- Quando custa cada ponto de XP
						 local eff = 29 -- Efeito que será mandado
			local msg_buy = "Você comprou " .. tonumber(param) .. " pontos de experiência por " .. exp_cost .. " gp's cada um ou seja " .. exp_cost * tonumber(param) .. " gp's."

  if not pay(cid, tonumber(param) * exp_cost) and not tonumber(param) or tonumber(param) > maxim then
		 doPlayerSendCancel(cid, "Você não tem dinheiro, ou não digitou número ou quis comprar muita exp o máximo permitido é " .. maxim .. " pontos.")
					   end
		 return doPlayerSendTextMessage(cid, 27, msg_buy) and doSendMagicEffect(getPlayerPosition(cid), eff) and doPlayerAddExp(cid, tonumber(param))
end

 

 

 

 

PS: Xtibia não quebra a identação olha o script ali encima lol

Edited by Skymagnum
Link to comment
Share on other sites

@Skymagnum

 

Valeu, cara. Tô tentando melhorar ao máximo. Eu vou seguir seu conselho e estudar o return, mas nessa linha:

 

   if not pay(cid, tonumber(param) * exp_cost) and not tonumber(param) or tonumber(param) > maxim then
					 doPlayerSendCancel(cid, "Você não tem dinheiro, ou não digitou número ou quis comprar muita exp o máximo permitido é " .. maxim .. " pontos.")

 

Precisava especificar mais o erro, por isso não reduzi assim.

 

E sim, o XTibia quebra a identação se você usar o espaçamento com a tecla TAB. Com a barra de espaço não quebra mesmo.

 

@Newtonnotwen

 

Identação é o espaçamento que vem antes das funções para melhor organização do script.

 

Sem identação:

 

function onSay(cid, words)
if isPlayer(cid) then
doPlayerAddItem(cid, 1234, 1)
end
return true
end

 

Com identação:

 

function onSay(cid, words)
   if isPlayer(cid) then
       doPlayerAddItem(cid, 1234, 1)
   end
return true
end

 

Geralmente é usada a tecla TAB no bloco de notas ou em qualquer editor de texto que você usar, mas como o XTibia quebra a identação do TAB, o povo às vezes identa com barra de espaço mesmo.

Edited by LuckOake
Link to comment
Share on other sites

  • 3 months later...
  • 4 weeks later...
×
×
  • Create New...