Ir para conteúdo

ManaTile


lucasaoqui

Posts Recomendados

Tipo eu quero que tenha um npc chamado nuvem e que la vc compre pot para uma camera de treinamento so que as pot nao vai pra sua bp ela fica armazenada e quando voce pisar em certo tile elas vao ser usada nao ocupa cap nem nada as pot e tipo invisivel ela fica no tile e quando se pisar no tile as pot que se compro la no npc começa a pota

as pot nao vai pra bp elas fica armaezenada no tile elas vao ser usada quando vc pisar no tile
se nao intendeu posso postar ss que eu vi num ot


up

Link para o comentário
Compartilhar em outros sites

Boa tarde amigo,
E o que essas Pots fariam exatamente? Aumentaria sua mana? Se sim, quanto de mana seria aumentado? Explique melhor o seu pedido, está meio confuso para mim...
Aguardando Boa tarde.
Abraços.

Link para o comentário
Compartilhar em outros sites

seria aumentada quando o player ficasse em cima de um piso

Aumentaria sua mana? Se sim, quanto de mana seria aumentado? Explique melhor o seu pedido, está meio confuso para mim...

Tente ser o mais claro possivel quando postar uma duvida, evita mensagens desnecessárias como essa.

Link para o comentário
Compartilhar em outros sites

Sorc = Aumentara 800 de mana Master Sorcerer = Aumentaram 3100 de mana Druid = Aumentara 800 de mana Elder druid = Aumentara 3100 de mana
Paladin = Aumentara 600 de mana Royal Paladin = Aumentara 2350 de mana Knight = Aumentara 350 de mana Elite knight aumentara 1670 de mana

Pra essas mana seja aumentada eles tipo tem q comprar umas pot virtual q nao ocupa nada tipo fica no tile as pot se ele comprar 5000 pot ele tera 5000 pot virtual sem pesa nada e sem ficar na bp tipo o tile pota ele

Link para o comentário
Compartilhar em outros sites

Nao irar gastar todas

Master sorcerer = vai gasta 8

Elder Druid= Vai gasta 8

Elite Knight = Vai gasta 4

Royal Paladin = Vai gastar 6

Paladin = 1

Sorc = 1

Druid = 1

Knight = 1

 

A cada novo post seu, eu perco o sentido do script.

O que deve acontecer é:

Um player tem 5000 pots virtuais.

Ao pisar no tile com actionid = 8200

O player vai usar 1 pot virtual por segundo e vai regenerar X de mana a cada segundo.

 

OU

 

Um player tem 5000 pots virtuais

Ao pisar no tile com actionid = 8200

O player vai usar X pot virtuais e curar X de mana.

Assim tento que sair e pisar novamente no tile para recuperar mais mana

 

Aguardando.

Link para o comentário
Compartilhar em outros sites

O player vai usar x que vai ser descontada das pot virtuais pra curar x de mana e ele fica parado encima do tile n precisa sair vai regenerando por ele esta encina do tile so nao precisa pisar dnv so de ficar parado ja vai regenerando

Link para o comentário
Compartilhar em outros sites

Nao irar gastar todas

Master sorcerer = vai gasta 8

Elder Druid= Vai gasta 8

Elite Knight = Vai gasta 4

Royal Paladin = Vai gastar 6

Paladin = 1

Sorc = 1

Druid = 1

Knight = 1

 

A cada novo post seu, eu perco o sentido do script.

O que deve acontecer é:

Um player tem 5000 pots virtuais.

Ao pisar no tile com actionid = 8200

O player vai usar 1 pot virtual por segundo e vai regenerar X de mana a cada segundo.

 

OU

 

Um player tem 5000 pots virtuais

Ao pisar no tile com actionid = 8200

O player vai usar X pot virtuais e curar X de mana.

Assim tento que sair e pisar novamente no tile para recuperar mais mana

 

Aguardando.

 

~Edit: Adicionar script;

Bem, vale lembrar que eu fiz para 9 vocações(nenhuma, as 4 normais e as 4 promoted) se seu servidor possuir mais de 9 vocações, é de EXTEMA importância que você adicione as mesmas no script, ou você terá um erro no console.

 

Eu fiz também um script para quando você usar certo item, você comprar 5000 pots virtuais a um preço de 10k, vou lhe passar também e você modifica como quiser.

 

O script é muito simples e de fácil entendimento, algumas tabelas estão comentadas para você ter uma noção de como configurar, segue o método de instalação:

 

Comando de comprar pot por item:

Vá na pasta Data/Actions/Scripts e crie o script comprarpot.lua e coloque o seguinte codigo dentro:

--Action comprar pots de mana e guardar em storage ao usar item - By: Mateuso
local storage = 19254 --Storage que guardara a quantidade de potions que o player possui ~ Não recomendo mudar, se mudar, mude tambem no script usarpot.lua na pasta de movements
local price = 10000 --Preço das poções
local qntpots = 5000 --Quantidade de poções que será comprada

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(doPlayerRemoveMoney(cid, price)) then
		qntpotsatual = getPlayerStorageValue(cid, storage)
		if(qntpotsatual == -1) then
		setPlayerStorageValue(cid, storage, 0)
		end
		setPlayerStorageValue(cid, storage, getPlayerStorageValue(cid, storage)+qntpots)
		doPlayerSendTextMessage(cid, 4, "Você comprou "..qntpots.." por "..price.." gold coins, a quantidade de pots de mana que você possui agora é: "..getPlayerStorageValue(cid, storage)..".")
	else
		doPlayerSendTextMessage(cid, 4, "Você não possui dinheiro suficiente para comprar Pots de Mana.")
	end
end

Agora adicione a seguinte TAG em actions.xml:

<action itemid="xxxx" script="comprarpot.lua"/>

Onde xxxx é o id do item que você quer que ao usar, compre os pots.

Agora vamos ao script em si:

Crei o arquivo usarpot.lua na pasta Data/Movements/Scripts e adicione o seguinte codigo:

--Script pisar em tile com Actionid X e adicionar mana, retirando mana potions de storage - By: Mateuso

local storage = 19254 --Storage que guardara a quantidade de potions que o player possui ~ Não recomendo mudar, se mudar, mude tambem no script comprarpot.lua na pasta de actions
local storage_usando = 19255 --Storage que verifica se o player está sobre o efeito
local action = 8200 --Action id de que o tile precisa ter para o script funcionar

--Nessa tabela você define o gasto de pots para cada vocação, utilizando os seguintes numeros para as seguintes vocações:
--0 = sem vocação, 1 = sorc, 2 = druid, 3 = paladin, 4 = knight, 5 = master sorc, 6 = elder druid, 7 = royal paladin, 8 = elite knight
local gasto = {
[0] = 1,
[1] = 1,
[2] = 1,
[3] = 1,
[4] = 1,
[5] = 8,
[6] = 8,
[7] = 6,
[8] = 4,
}

--Nessa tabela você coloca a quantidade de mana que o player vai ganhar ao pisar no tile, utilizando os seguinte numeros para as seguintes vocações:
--0 = sem vocação, 1 = sorc, 2 = druid, 3 = paladin, 4 = knight, 5 = master sorc, 6 = elder druid, 7 = royal paladin, 8 = elite knight
local mana = {
[0] = 1,
[1] = 800,
[2] = 800,
[3] = 600,
[4] = 350,
[5] = 3100,
[6] = 3100,
[7] = 2350,
[8] = 1670,
}

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
	if(item.actionid == action) then
		if(isPlayer(cid) ~= true) then
			return false
		end
		local pvocation = getPlayerVocation(cid)
		if(getPlayerStorageValue(cid, storage) >= gasto[pvocation]) then
			doCreatureAddMana(cid, mana[pvocation])
			ppos = getCreaturePosition(cid)
			addEvent(doAddManaOnTile, 1000, cid, gasto[pvocation], mana[pvocation], storage, storage_usando)
			setPlayerStorageValue(cid, storage_usando, 1)
		else
			doPlayerSendTextMessage(cid, 4, "Você não possui pots de mana suficientes para recuperar mana.")
		end
	end
end

function onStepOut(cid, item, pos)
	stopEvent(event)
	setPlayerStorageValue(cid, storage_usando, 0)
end

function doAddManaOnTile(cid, gastocount, managain, storage, storage2)
	doCreatureAddMana(cid, managain)
	setPlayerStorageValue(cid, storage, getPlayerStorageValue(cid, storage)-gastocount)
	if(getPlayerStorageValue(cid, storage2) == 1) then
		event = addEvent(doAddManaOnTile, 1000, cid, gastocount, managain, storage, storage2)
	end
end

Agora adicione a seguinte TAG em movements.xml:

<movevent type="StepIn" actionid="8200" event="script" value="usarpot.lua"/>
<movevent type="StepOut" actionid="8200" event="script" value="usarpot.lua"/>

Não recomendo que mude o actionid que está definido ali, pois ele também é checado no script de usarpot.lua. Então, se mudar no movements.xml, não esqueça de mudar no usarpot.lua.

 

Pronto, agora o sistema está instalado, vá no seu map editor e coloque a actionid 8200 no tile que você quer que execute a função. Pode colocar em quantos tiles quiser, e só basta testar.

Estou agurdando a resposta aqui, testei aqui e funcionou perfeitamente.

Abraços e espero resposta.

 

Está PROIBIDO a publicação desse script em algum outro lugar.

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

mais tipo como compra as pot? virtuais

teria como vc criar um npc chamad nuvem e la vc compra essas pot virtuais

Boa noite,

No tutorial eu lhe ensinei a adicionar uma action que ao usar certo item, você compra 5000 pots virtuais por 10k.

Na verdade não posso fazer, eu não mecho com NPCs.

O que eu fiz foi o Sistema em si e a action pra comprar os potions.

Abraço.

Aguardando a resposta se o sistema funcionou ou não ai.

Link para o comentário
Compartilhar em outros sites

Cara, já respondo sua dúvida uma vez, ou então de alguem com o problema parecido.

 

Em movements.xml adiciona um script .lua com isso dentro:

--BY GSTAVOLIBER FOR XTIBIA
function onStepIn(cid, item, position, fromPosition)
	local config = {
    str = 24000,
    strCountPots = 240001
}	
if item.actionid == 2001 then
	if getPlayerStorageValue(cid, config.strCountPots) == 0 then
	    doTeleportThing(cid, fromPostition)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED,"Você precisa comprar poções especiais para treinar aqui! ")
        setPlayerStorageValue(cid, config.str, 0)
     end
		if getPlayerStorageValue(cid, config.str) == 0 then
			setPlayerStorageValue(cid, config.str, 1)
			repeat 
                  addEvent(doCreatureAddMana(cid, ADDmana()), 60)  -- editar o tempo de cada heal
                  setPlayerStorageValue(cid, config.strCountPots, getPlayerStorageValue(cid, config.strCountPots) - 1)
                  until (getPlayerStorageValue(cid, config.strCountPots) == 0) 
                  if(getPlayerStorageValue(cid, config.strCountPots) == 0) then
                     doTeleportThing(cid, fromPostition)
                     doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED,"Suas poções acabaram. Por favor, compre mais, para continuar treinando.")
                     setPlayerStorageValue(cid, config.str, 0)
                  end
         end
         else doTeleportThing(cid, fromPostition)
              setPlayerStorageValue(cid, config.str, 0)
	end		
	return TRUE
end

function onStepOut(cid, item, pos)
	setPlayerStorageValue(cid, config.str, 0)
	return TRUE
end

function ADDmana()
     manaADD = {math.random(200, 450)}      -- editar a quantidade minima e a quantidade maxima de heal.
return manaADD
end
<movevent type="StepIn" actionid="2001" event="script" value="nomeDoScript.lua"/>
<movevent type="StepOut" actionid="2001" event="script" value="nomeDoScript.lua"/>

Agora, basta criar um NPC, que adicione na strCountPots a quantidade de poções que comprar. Qnd essa storage chegar a 0, ele será retirado do tile.

 

-GstavoLiber

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

poderia me passar oque eu tenho que digitar no npc lembrando essas pot virtual nao pode pesar nada n tira nem 1% da cap

se puder eu ficaria agradecido n sei criar npc :x

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

×
×
  • Criar Novo...