Ir para conteúdo

Woodcutting Sistem V1.0 by PsyMcKenzie


Posts Recomendados

Bom galera, estou começando minha carreira na área de scripts, e estou fazendo o possível para postar 1 por semana.

 

Semana passada eu postei o Sistema de Fome

 

E hoje estou postando o Woodcutting Sistem na versão 1.0, em breve updates. Então, vamos lá!

 

Em data/actions/scripts, crie um arquivo.lua com o nome de wood e coloque isso:

 

function onUse(cid, item, frompos, item2, topos)

local chance = 70 -- chance de cortar
local madeiras = {5941, 5901} -- item que o player irá ganhar
local premio = madeiras[math.random(1, #madeiras)]
local transformItem = 8786
local texts = {"Tuc", "Toc", "Trec"}
local random = texts[math.random(1,#texts)]
local vocationUse = 2
local time = 2 -- Minutos para crescer novamente

	  if getPlayerVocation(cid) ~= vocationUse then
				   doPlayerSendTextMessage(cid,22,"Você não tem a vocação necessária para cortar.")
	  return true
	  end

		   if item2.itemid == 2708 or item2.itemid == 2700 or item2.itemid == 6218 or item2.itemid == 2701 or item2.itemid == 2707 then
				if math.random(1,100) >= chance then
					 doPlayerAddItem(cid,premio, math.random(1, 2))
					 doTransformItem(item2.uid, transformItem)
					 doSendMagicEffect(topos, 16)
					 doPlayerSendTextMessage(cid,22,"Você cortou uma madeira.")
					 doSendAnimatedText(topos, ""..random.."", TEXTCOLOR_GREEN)
					 doDecayItem(item2.uid)
					 addEvent(doCreateItem, time*60*1000, item2.itemid, 1, getThingPos(item2.uid))
 else
					 doSendAnimatedText(topos, ""..random.."", TEXTCOLOR_GREEN)
					 doPlayerSendTextMessage(cid,22,"Você não conseguiu cortar.")
				end
		   end
 return true
end

 

Em data/actions/actions.xml adicione a tag:

 

<action itemid="4874" event="script" value="wood.lua"/>

 

4874 é o ID do Dwarven Pickaxe.

 

Imagens:

 

woodd.png

 

wood2e.png

 

É isso ai galera. Obrigado!

 

 

 

Créditos: Roksas, notle2012 e LuckOake por tirarem dúvidas.

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

identação é tipo o espaço que fica entre cada linha (entre ifs diferentes, etc)

 

exemplo:

function onUse(cid, item, frompos, item2, topos)
local chance = 80 -- chance de cortar
local madeiras = {5941, 5901} -- item que o player irá ganhar
local premio = madeiras[math.random(1, #madeiras)]
local transformItem = 8786
local texts = {"Tuc", "Toc", "Trec"}
local random = texts[math.random(1,#texts)]
local vocationUse = 2
local time = 2 -- Minutos para crescer novamente
if getPlayerVocation(cid) == vocationUse then
 if item2.itemid == 2708 or item2.itemid == 2700 or item2.itemid == 6218 or item2.itemid == 2701 or item2.itemid == 2707 then
  if math.random(1,100) >= chance then
doPlayerAddItem(cid,premio, math.random(1, 2))
doTransformItem(item2.uid, transformItem)
doSendMagicEffect(topos, 16)
doPlayerSendTextMessage(cid,22,"Você cortou uma madeira.")
doSendAnimatedText(topos, ""..random.."", TEXTCOLOR_GREEN)
doDecayItem(item2.uid)
addEvent(doCreateItem, time*60*1000, novaarvore, 1, getThingPos(item2.uid))
  else
doSendAnimatedText(topos, ""..random.."", TEXTCOLOR_GREEN)
doPlayerSendTextMessage(cid,22,"Você não conseguiu cortar.")
  end
 end
end
return true
end

 

pode ver, é o seu script, porem mais organizado ^^

é que se nao fica dificil de saber onde termina cada if, e em scripts grandes pode dar zebra kk

a ideia é legal.. pra quem ja jogou o bronsonserver, la pode utilizar isso para criar internal bolts.. é só saber adaptar a ideia ^^

Link para o comentário
Compartilhar em outros sites

Boa cara, um dos seus primeiros códigos né? Está bom até, parabéns. Obrigado por colaborar com a comunidade ÉksTibiana :)

Aqui um tutorial sobre identação e elegância:

http://www.xtibia.com/forum/topic/203791-qual-e-a-coisa-mais-importante-em-um-codigo-e-por-que-e-a-elegancia/

Link para o comentário
Compartilhar em outros sites

cara se esqueceu de colocar a varivel "novaarvore",troque por "item2.itemid"(id da arvore cortada).

nessa parte

if item2.itemid == 2708 or item2.itemid == 2700 or item2.itemid == 6218 or item2.itemid == 2701 or item2.itemid == 2707 then

seria melhor

 if isInArray( { 2708, 2700, 6218, 2701, 2707},item2.itemid) then

é se inverteu as bolas nessa parte

if math.random(1,100) >= chance then

dessa forma com 80 na varivel chance so teria 20% de chance

o correto seria

if math.random(1,100) <= chance then

ou

if chance  >= math.random(1,100) then

 

e sobre indendatação, sempre use a mesma quantidade de spaço para indentar.

Link para o comentário
Compartilhar em outros sites

Sim sim, um dos primeiros.

Obrigado pela ajuda.

Vou ver o tutorial sim, abraços!

 

lordbugg, explique melhor essa primeira parte, por favor? ( da novaarvore )

 

Ah sim, desculpe ;s

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...