GA
suporte scripts

Ajuda com esse script.

Por gabriel28, 20 de out. de 2016 em Resolvidos

suporte otserv
23
2.5k
01 de dezembro de 2016 às 21:17

substitui o script por esse:

 

function onUse(cid, item, frompos, item2, topos)local storage = 80777local storage2 = 80888local vocation = {4,8,12} -- id da vocation knight (ou outra)local value = getCreatureMaxHealth(cid) / 10if isInArray(vocation, getPlayerVocation(cid)) then   if os.time() > getPlayerStorageValue(cid, storage) then	  setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)+ value)      doCreatureAddHealth(cid, getCreatureMaxHealth(cid))      setPlayerStorageValue(cid, storage, os.time()+ 1*24*60*60)      setPlayerStorageValue(cid, storage2, 1)      doPlayerSendTextMessage(cid, 22, "You add 10% hp to you health!")      doSendMagicEffect(getCreaturePosition(cid), 30)      doRemoveItem(item.uid, 1)   else      doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já usou esse item hoje, tente novamente em 24 horas.")   endelse   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item exclusivo para knights.")endreturn trueend

 

e coloca esse onlogin em creaturescript:

 

function onLogin(cid)local storage2 = 80888local health = getCreatureMaxHealth(cid)*0.10	if getPlayerStorageValue(cid, storage2) >= 1 then		setPlayerStorageValue(cid, storage2, 0)		setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) - health)		doRemoveCreature(cid)	end	return trueend

 

não testei, vê se funciona ai.

gabriel28G
02 de dezembro de 2016 às 19:53
22 horas atrás, DuuhCarvalho disse:

substitui o script por esse

 

 

 

É pra criar um arquivo .lua pra esse creaturescript ou por no login.lua? E Qual é a tag que tenho que por no xml do creaturescript?

02 de dezembro de 2016 às 20:33
35 minutos atrás, gabriel28 disse:

 

É pra criar um arquivo .lua pra esse creaturescript ou por no login.lua? E Qual é a tag que tenho que por no xml do creaturescript?

primeiro substitui o script, depois vai em creaturescripts/scripts/login.lua e antes do ultimo return true coloca isso:

 

local storage22 = 80888local health = getCreatureMaxHealth(cid)*0.10if getPlayerStorageValue(cid, storage22) >= 1 then	setPlayerStorageValue(cid, storage22, 0)	setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) - health)	doRemoveCreature(cid)end

 

gabriel28G
02 de dezembro de 2016 às 20:55
18 minutos atrás, DuuhCarvalho disse:

primeiro substitui o script, depois vai em creaturescripts/scripts/login.lua e antes do ultimo return true coloca isso:

 

 

 

Cara, ta indo bem. Tive que tirar a parte do doRemoveCreature(cid), porque sempre na primeira tentativa de logar com o char que tinha usado o item, começava a dar erro em todos os creaturescripts que tinha registrado, ai tinha que dar cancel e logar de novo. Dai removi isso e os erros pararam.

 

Só que, além de remover o bônus, sempre ta removendo um pouco a mais da life original. Quando desloga e reloga, o bônus permanesse, mas dai usa uma spell ou item de heal e o bônus some mas leva um pouco a mais do hp do personagem, como eu disse antes.

Tipo, testei num char com hp de 1360 no total, usei o item, deu o bônus, desloguei e reloguei, ficou o bônus mas usei o spell de heal, o bônus sumiu, mas o hp total ficou 1346. Saiu o bônus mas tirou 14 de hp a mais.

Editado Dezembro 2 por gabriel28

PoccnnP
02 de dezembro de 2016 às 21:15
Em 01/12/2016 at 20:47, gabriel28 disse:

Consegui essa parte, só tá faltando remover o bônus quando o char desloga. =/

 

Aí já é outra questão. 

O script funcionou como deveria?

gabriel28G
02 de dezembro de 2016 às 21:19

Tá funfando. Agora só ta com esse problema na hora de tirar o bônus. Creio que seja porque está dando o bônus em porcentagem, eu testei com valor exato e funcionou certo.

PoccnnP
02 de dezembro de 2016 às 21:24

Existe uma razão matemática para o erro, que é :

100+10%=110.

110-10%=99. 

10% de 110 é  igual a 11.

 

Pra resolver esse problema teria que marcar o lífe do player em uma store para que o player volte ao valor correto.

 

02 de dezembro de 2016 às 21:27
Agora, Poccnn disse:

Existe uma razão matemática para o erro, que é :

100+10%=110.

110-10%=99. 

10% de 110 é  igual a 11.

 

Pra resolver esse problema teria que marcar o lífe do player em uma store para que o player volte ao valor correto.

 

 

exatamente o que pensei kk, estava fazendo aqui..

mas se já tiver feito ótimo 

 

o único problema com a storage é que se o player upar e aumentar a hp quando voltar o hp para o valor da storage, o player vai ficar com o hp menor do q deveria

Editado Dezembro 2 por DuuhCarvalho