Ir para conteúdo
  • 0

[AJUDA] Item que Troca Vocação


yagoshira004

Pergunta

EAE,

 

to precisando de uma ajuda com uma action, que ao usar o item, o player troca de vocação, tipo uma promotion, porem como a vocação é VIP, ela nao pode aparecer no acc manager.

 

Estou usando o seguinte script:

function onUse(cid, item, fromPosition, itemEx, toPosition)

if getPlayerStorageValue(cid,1992) == 1 then
doCreatureSay(cid, "Você já usou o golden papper.", TALKTYPE_ORANGE_1)
else if getPlayerLevel(cid) >= 8 then -- a partir de que level podera usar
doCreatureSay(cid, "Legendary!", TALKTYPE_ORANGE_1)
if getPlayerVocation(cid) == 1 or getPlayerVocation(cid) == 1 then
doPlayerSetVocation(cid, 5)
end
if getPlayerVocation(cid) == 2 or getPlayerVocation(cid) == 2 then
doPlayerSetVocation(cid, 6)
end
if getPlayerVocation(cid) == 3 or getPlayerVocation(cid) == 3 then
doPlayerSetVocation(cid, 7)
end
if getPlayerVocation(cid) == 4 or getPlayerVocation(cid) == 4 then
doPlayerSetVocation(cid, 8)
end
doSendMagicEffect(fromPosition, CONST_ME_GIFT_WRAPS)
doRemoveItem(item.uid)
setPlayerStorageValue(cid,1992,1)
return TRUE
else
doCreatureSay(cid, "Você precisa estar level 8 ou mais para usar o Item!",TALKTYPE_ORANGE_1)
end
end
end

Porem no caso desse script, ao morrer/deslogar o player perde a vocação, alguem que manja como resolver?

 

- Se eu deixar o fromvoc=x , ele nao aparece no acc manager, porem perder a voc ao deslogar

 

- Se eu deixar o fromvoc= igual as outras vocações, ele nao aparece no acc manager mas perde a vocação ao deslogar

 

- Se eu deixar o fromvoc= igual a própria nova vocação ele nao perde ao deslogar, porem ele fica no account manager dando pra criar a vocação vip, o que eu nao quero.

 

Meu vocations.xml :

<?xml version="1.0" encoding="UTF-8"?>

<vocations>
<vocation id="0" name="None" description="none" needpremium="0" gaincap="5" gainhp="5" gainmana="5" gainhpticks="6" gainhpamount="1" gainmanaticks="6" gainmanaamount="1" manamultiplier="4.0" attackspeed="200" soulmax="100" gainsoulticks="120" fromvoc="0" attackable="no">
<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
<skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/>
</vocation>
<vocation id="1" name="Master Sorcerer" description="a master sorcerer" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="3" gainhpamount="150" gainmanaticks="2" gainmanaamount="400" manamultiplier="1.1" attackspeed="200" soulmax="100" gainsoulticks="120" fromvoc="1">
<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
<skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/>
</vocation>
<vocation id="2" name="Elder Druid" description="a elder druid" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="3" gainhpamount="150" gainmanaticks="2" gainmanaamount="400" manamultiplier="1.1" attackspeed="200" soulmax="100" gainsoulticks="120" fromvoc="2">
<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
<skill fist="1.5" club="1.8" sword="1.8" axe="1.8" distance="1.8" shielding="1.5" fishing="1.1" experience="1.0"/>
</vocation>
<vocation id="3" name="Royal Paladin" description="a royal paladin" needpremium="0" gaincap="20" gainhp="10" gainmana="15" gainhpticks="2" gainhpamount="400" gainmanaticks="3" gainmanaamount="250" manamultiplier="1.4" attackspeed="200" soulmax="100" gainsoulticks="120" fromvoc="3">
<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
<skill fist="1.2" club="1.2" sword="1.2" axe="1.2" distance="1.1" shielding="1.1" fishing="1.1" experience="1.0"/>
</vocation>
<vocation id="4" name="Elite Knight" description="a elite knight" needpremium="0" gaincap="25" gainhp="15" gainmana="5" gainhpticks="2" gainhpamount="420" gainmanaticks="3" gainmanaamount="200" manamultiplier="3.0" attackspeed="200" soulmax="100" gainsoulticks="120" fromvoc="4">
<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
<skill fist="1.1" club="1.1" sword="1.1" axe="1.1" distance="1.4" shielding="1.1" fishing="1.1" experience="1.0"/>
</vocation>
<vocation id="5" name="Lord Shaman" description="a shadow shaman" needpremium="1" gaincap="10" gainhp="5" gainmana="30" gainhpticks="3" gainhpamount="200" gainmanaticks="2" gainmanaamount="450" manamultiplier="1.1" attackspeed="200" soulmax="200" gainsoulticks="15" fromvoc="5" lessloss="30">
<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
<skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/>
</vocation>
<vocation id="6" name="High Saintess" description="an high saintess" needpremium="1" gaincap="10" gainhp="5" gainmana="30" gainhpticks="3" gainhpamount="200" gainmanaticks="2" gainmanaamount="450" manamultiplier="1.1" attackspeed="200" soulmax="200" gainsoulticks="15" fromvoc="6" lessloss="30">
<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
<skill fist="1.5" club="1.8" sword="1.8" axe="1.8" distance="1.8" shielding="1.5" fishing="1.1" experience="1.0"/>
</vocation>
<vocation id="7" name="Shadow Hunter" description="a shadow hunter" needpremium="1" gaincap="20" gainhp="10" gainmana="15" gainhpticks="2" gainhpamount="420" gainmanaticks="2" gainmanaamount="260" manamultiplier="1.4" attackspeed="200" soulmax="200" gainsoulticks="15" fromvoc="7" lessloss="30">
<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
<skill fist="1.2" club="1.2" sword="1.2" axe="1.2" distance="1.1" shielding="1.1" fishing="1.1" experience="1.0"/>
</vocation>
<vocation id="8" name="Colossus Warrior" description="an colossus warrior" needpremium="1" gaincap="25" gainhp="15" gainmana="5" gainhpticks="2" gainhpamount="460" gainmanaticks="3" gainmanaamount="245" manamultiplier="3.0" attackspeed="200" soulmax="200" gainsoulticks="15" fromvoc="8" lessloss="30">
<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
<skill fist="1.1" club="1.1" sword="1.1" axe="1.1" distance="1.4" shielding="1.1" fishing="1.1" experience="1.0"/>
</vocation>
<!--
</vocations>

Agradeço desde já, +REP pra quem puder ajudar! OBG.

 

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Fiz rápido, bem simples porém creio que funcione.

Crie um arquivo chamado goldenpaper.lua em data/actions/scripts e coloque isso:
function onUse(cid, item, fromPosition, toPosition)


local voc = {1} --id da vocação
local scroll = {} --id do item
local efeito = {} -- efeito


if item.uid == scroll then
doPlayerSetVocation(cid, voc)
doSendMagicEffect(cid, efeito)
end
return true
end

Agora em actions.xml, adicione essa tag:

<action actionid="id do item" script="goldenpaper.lua"/>

 

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz rápido, bem simples porém creio que funcione.

 

Crie um arquivo chamado goldenpaper.lua em data/actions/scripts e coloque isso:
function onUse(cid, item, fromPosition, toPosition)


local voc = {1} --id da vocação
local scroll = {} --id do item
local efeito = {} -- efeito


if item.uid == scroll then
doPlayerSetVocation(cid, voc)
doSendMagicEffect(cid, efeito)
end
return true
end

Agora em actions.xml, adicione essa tag:

<action actionid="id do item" script="goldenpaper.lua"/>

 

Entus, o script está apenas para mudar qualquer vocação para uma nova? Pq o que eu uso muda por exemplo: o master sorcerer para um vip master sorcerer e assim respectivamente, no caso eu teria de criar um item para cada?

 

Claro que vai mudar, não colocou nenhum query...

só muda in-game, a database continua a mesma.

 

fica online, vou arrumar, só um segundo.

 

 

Desculpe, eu nao sei quase nada de script |:

Ok, estou no aguardo.

Link para o comentário
Compartilhar em outros sites

  • 0

 

 

Entus, o script está apenas para mudar qualquer vocação para uma nova? Pq o que eu uso muda por exemplo: o master sorcerer para um vip master sorcerer e assim respectivamente, no caso eu teria de criar um item para cada?

Sim, para cada!

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

  • 0

 

Não funciona, nada acontece ao dar "use" apenas uma mensagem : "voce nao pode usar essa runa aqui" algo assim.

Mas agradeço pela ajuda!

Ah, eu testei em Tfs 1.0, vou fazer um mais elaborado e te mando no PM.

 

Até!

Link para o comentário
Compartilhar em outros sites

  • 0

la no actions.xml coloca

<action itemid="ID DO Item" event="script" value="nome do arquivo.lua"/>

o arquivo.lua coloca isso

local voc = 632 -- ID Da Vocation Que vai virar
local outfit = 916 -- Outfit Da outfit que vai ganhar


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


if item.itemid == 12832 then -- id do item que vai ter que clickar o mesmo que coloco la no .xml
doPlayerSetVocation(cid,voc)
doCreatureChangeOutfit(cid, {lookType = outfit})
doRemoveItem(item.uid,1)
end
return true
end

na minha opniao no caso da vocation não aparece no account manager pq você não duplica cada vocation e fais que ao deslonga ele simplesmente va para vocation Master X e quando ele deslonga pela 2x ele va para Master Y assim ele não aparece no account manager e resolve o problema

Link para o comentário
Compartilhar em outros sites

  • 0

Não vai funcionar assim, ele disse que a função não tá mudando permanentemente............

 

precisa de um query....

 

 

 

 

Eu já fiz, só que me enrolei no query, e não tá dando....

vou pro meu curso, quando voltar eu dou uma outra olhada, quem quiser corrigir:

function onUse(cid, item, fromPosition, itemEx, toPosition)

    if getPlayerStorageValue(cid,1992) == 1 then
        doCreatureSay(cid, "Você já usou o golden papper.", TALKTYPE_ORANGE_1)
    else if getPlayerLevel(cid) >= 8 then -- a partir de que level podera usar
            doCreatureSay(cid, "Legendary!", TALKTYPE_ORANGE_1)
            if getPlayerVocation(cid) == 1 or getPlayerVocation(cid) == 1 then
			
				db.query('UPDATE `players` SET `vocation` = 5 WHERE `id` = '.. getPlayerGUID(cid))		
                                doRemoveCreature(cid)  	
				return true
            end
            if getPlayerVocation(cid) == 2 or getPlayerVocation(cid) == 2 then
               
				db.query('UPDATE `players` SET `vocation` = 6 WHERE `id` = '.. getPlayerGUID(cid))	
				doRemoveCreature(cid) 
				return true
            end
            if getPlayerVocation(cid) == 3 or getPlayerVocation(cid) == 3 then
              
				db.query('UPDATE `players` SET `vocation` = 7 WHERE `id` = '.. getPlayerGUID(cid))	
				doRemoveCreature(cid)  
				return true
            end
            if getPlayerVocation(cid) == 4 or getPlayerVocation(cid) == 4 then
               
				db.query('UPDATE `players` SET `vocation` = 8 WHERE `id` = '.. getPlayerGUID(cid))	
				doRemoveCreature(cid) 
				return true
            end
            return true
        else
            doCreatureSay(cid, "Você precisa estar level 8 ou mais para usar o Item!",TALKTYPE_ORANGE_1)
        end
    end
end
Editado por Caronte
Link para o comentário
Compartilhar em outros sites

  • 0

@@Entus

 

 

 

Ah, eu testei em Tfs 1.0, vou fazer um mais elaborado e te mando no PM.

 

O que você alega é IMPOSSÍVEL, já que o script que você postou não funciona corretamente em NENHUMA VERSÃO DO TFS!!!

 

Vamos analisá-lo:

 

 

 

function onUse(cid, item, fromPosition, toPosition)

local voc = {1} --id da vocação
local scroll = {} --id do item
local efeito = {} -- efeito


if item.uid == scroll then
doPlayerSetVocation(cid, voc)
doSendMagicEffect(cid, efeito)
end
return true
end

 

 

Você declara as variáveis scroll, voc e efeito como tabelas... depois você quer comparar o uid do item com o itemid que o autor iria preencher na variável scroll, ou seja, NUNCA IRIA DAR CERTO, mas mesmo assim vamos continuar analisando. O modo que você pega os valores das variáveis scroll, voc e efeito está totalmente errado, pois se trata de tabelas, ou seja, você tem que especificar o índice, caso contrário irá retornar a própria tabela, tornando IMPOSSÍVEL sua função funcionar...

 

Não é a primeira vez que você posta algo sem saber... não digo que é para parar de postar e talz, porque é importante tentarmos ajudar, mas também é importante sabermos o que estamos fazendo e acima de tudo, REALMENTE TESTAR e postar antes de falar que testou.

 

 

 

@@Caronte

 

Tentei fazer por query, ele altera quando roda o script, porém quando o player reloga o server retorna o valor da vocation na database para o que era... vou deixar a função com a alteração na query abaixo, caso queira usar para resolver o problema, pois tenho que ir trabalhar agora... no pior dos casos basta alterar o login.lua padrão...

 

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getPlayerStorageValue(cid,1992) == 1 then
		doCreatureSay(cid, "Você já usou o golden papper.", TALKTYPE_ORANGE_1)
	else
		if getPlayerLevel(cid) >= 8 then
			doCreatureSay(cid, "Legendary!", TALKTYPE_ORANGE_1)
			local voc = getPlayerVocation(cid)
			if voc <= 4 then
				doPlayerSetVocation(cid, voc + 4)
				db.executeQuery("UPDATE `players` SET `vocation` = "..(voc + 4).." WHERE `id` = "..getPlayerGUID(cid)..";")
			end
			doSendMagicEffect(fromPosition, CONST_ME_GIFT_WRAPS)
			doRemoveItem(item.uid)
			setPlayerStorageValue(cid,1992,1)
			return true
		else
			doCreatureSay(cid, "Você precisa estar level 8 ou mais para usar o Item!",TALKTYPE_ORANGE_1)
		end
	end
	return true
end
Editado por Antharaz
Link para o comentário
Compartilhar em outros sites

  • 0

Como posso fazer isso? nao faço a minima ideia de como mexer nisso oO

 

 

 

local config = {
loginMessage = getConfigValue('loginMessage'),
useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}
function onLogin(cid)
local loss = getConfigValue('deathLostPercent')
if(loss ~= nil) then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
end
local accountManager = getPlayerAccountManager(cid)
if(accountManager == MANAGER_NONE) then
local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
if(lastLogin > 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
else
str = str .. " Please choose your outfit."
doPlayerSendOutfitWindow(cid)
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
elseif(accountManager == MANAGER_NAMELOCK) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
elseif(accountManager == MANAGER_ACCOUNT) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type {account} to manage your account and if you want to start over then type {cancel}.")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type {account} to create an account or type {recover} to recover an account.")
end
if(not isPlayerGhost(cid)) then
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
end
registerCreatureEvent(cid, "Mail")
registerCreatureEvent(cid, "petKill") registerCreatureEvent(cid, "loguthunt") registerCreatureEvent(cid, "huntdeath") registerCreatureEvent(cid, "killitem") registerCreatureEvent(cid, "SkullAmulet") registerCreatureEvent(cid, "SkullCheck") registerCreatureEvent(cid, "magebomb") registerCreatureEvent(cid, "perdereifeto") registerCreatureEvent(cid, "RushOutfit") registerCreatureEvent(cid, "pvpsystem") registerCreatureEvent(cid, "RushAttack") registerCreatureEvent(cid, "RushDead") registerCreatureEvent(cid, "petDeath") registerCreatureEvent(cid, "RushCombat") registerCreatureEvent(cid, "ReflectSpellKnight") registerCreatureEvent(cid, "ReflectSpellPally") registerCreatureEvent(cid, "ReflectSpellMage") registerCreatureEvent(cid, "TiraBattle") registerCreatureEvent(cid, "PointSystem") registerCreatureEvent(cid, "petSta") registerCreatureEvent(cid, "deathBroadcast") registerCreatureEvent(cid, "addons") registerCreatureEvent(cid, "GuildMotd")
registerCreatureEvent(cid, "Idle")
if(config.useFragHandler) then
registerCreatureEvent(cid, "SkullCheck")
registerCreatureEvent(cid, "Reward")
end
registerCreatureEvent(cid, "ReportBug")
registerCreatureEvent(cid, "AdvanceSave")
registerCreatureEvent(cid, "advance")
registerCreatureEvent(cid, "FimVip")
registerCreatureEvent(cid, "SkullCheck")
registerCreatureEvent(cid, "ReportBug")
registerCreatureEvent(cid, VipReceive)
registerCreatureEvent(cid, "PlayerKill")
if (InitArenaScript ~= 0) then
InitArenaScript = 1
-- make arena rooms free
for i = 42300, 42309 do
setGlobalStorageValue(i, 0)
setGlobalStorageValue(i+100, 0)
end
end
-- if he did not make full arena 1 he must start from zero
if getPlayerStorageValue(cid, 42309) < 1 then
for i = 42300, 42309 do
setPlayerStorageValue(cid, i, 0)
end
end
-- if he did not make full arena 2 he must start from zero
if getPlayerStorageValue(cid, 42319) < 1 then
for i = 42310, 42319 do
setPlayerStorageValue(cid, i, 0)
end
end
-- if he did not make full arena 3 he must start from zero
if getPlayerStorageValue(cid, 42329) < 1 then
for i = 42320, 42329 do
setPlayerStorageValue(cid, i, 0)
end
end
if getPlayerStorageValue(cid, 42355) == -1 then
setPlayerStorageValue(cid, 42355, 0) -- did not arena level
end
setPlayerStorageValue(cid, 42350, 0) -- time to kick 0
setPlayerStorageValue(cid, 42352, 0) -- is not in arena
return true
end

Esse é meu login.lua
Link para o comentário
Compartilhar em outros sites

  • 0

@

Bem, é uma gambiarra, mas vai resolver... o script do action do seu item vai ser este:

 

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getPlayerStorageValue(cid,1992) == 1 then
		doCreatureSay(cid, "Você já usou o golden papper.", TALKTYPE_ORANGE_1)
	else
		if getPlayerLevel(cid) >= 8 then
			doCreatureSay(cid, "Legendary!", TALKTYPE_ORANGE_1)
			local voc = getPlayerVocation(cid)
			if voc <= 4 then
				doPlayerSetVocation(cid, voc + 4)
			end
			doSendMagicEffect(fromPosition, CONST_ME_GIFT_WRAPS)
			doRemoveItem(item.uid)
			setPlayerStorageValue(cid,1992,1)
		else
			doCreatureSay(cid, "Você precisa estar level 8 ou mais para usar o Item!",TALKTYPE_ORANGE_1)
		end
	end
	return true
end  

 

 

 

 

 

 

 

Agora substitua seu login.lua pelo código abaixo:

 

 

 

local config = {
				loginMessage = getConfigValue('loginMessage'),
				useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
				}
 
function onLogin(cid)
	local loss = getConfigValue('deathLostPercent')
	if(loss ~= nil) then
		doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
	end
	 
	local accountManager = getPlayerAccountManager(cid)
	if(accountManager == MANAGER_NONE) then
		local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
		if(lastLogin > 0) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
			str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
		else
			str = str .. " Please choose your outfit."
			doPlayerSendOutfitWindow(cid)
		end
	 
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
	elseif(accountManager == MANAGER_NAMELOCK) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
	elseif(accountManager == MANAGER_ACCOUNT) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type {account} to manage your account and if you want to start over then type {cancel}.")
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type {account} to create an account or type {recover} to recover an account.")
	end
	 
	if(not isPlayerGhost(cid)) then
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
	end
	 
		registerCreatureEvent(cid, "Mail")
		registerCreatureEvent(cid, "petKill")  registerCreatureEvent(cid, "loguthunt")  registerCreatureEvent(cid, "huntdeath")  registerCreatureEvent(cid, "killitem")  registerCreatureEvent(cid, "SkullAmulet")  registerCreatureEvent(cid, "SkullCheck")  registerCreatureEvent(cid, "magebomb")  registerCreatureEvent(cid, "perdereifeto")  registerCreatureEvent(cid, "RushOutfit")  registerCreatureEvent(cid, "pvpsystem")  registerCreatureEvent(cid, "RushAttack")  registerCreatureEvent(cid, "RushDead")  registerCreatureEvent(cid, "petDeath")  registerCreatureEvent(cid, "RushCombat")  registerCreatureEvent(cid, "ReflectSpellKnight")  registerCreatureEvent(cid, "ReflectSpellPally")  registerCreatureEvent(cid, "ReflectSpellMage")  registerCreatureEvent(cid, "TiraBattle")  registerCreatureEvent(cid, "PointSystem")  registerCreatureEvent(cid, "petSta")  registerCreatureEvent(cid, "deathBroadcast")  registerCreatureEvent(cid, "addons")  registerCreatureEvent(cid, "GuildMotd")
		 
		registerCreatureEvent(cid, "Idle")
	if(config.useFragHandler) then
		registerCreatureEvent(cid, "SkullCheck")
		registerCreatureEvent(cid, "Reward")
	end
	 
	registerCreatureEvent(cid, "ReportBug")
	registerCreatureEvent(cid, "AdvanceSave")
	 
	registerCreatureEvent(cid, "advance")
	registerCreatureEvent(cid, "FimVip")
	registerCreatureEvent(cid, "SkullCheck")
	registerCreatureEvent(cid, "ReportBug")
	 
	registerCreatureEvent(cid, VipReceive)
	registerCreatureEvent(cid, "PlayerKill")
    if (InitArenaScript ~= 0) then
		InitArenaScript = 1
		-- make arena rooms free
        for i = 42300, 42309 do
            setGlobalStorageValue(i, 0)
            setGlobalStorageValue(i+100, 0)
        end
    end
    -- if he did not make full arena 1 he must start from zero
    if getPlayerStorageValue(cid, 42309) < 1 then
        for i = 42300, 42309 do
            setPlayerStorageValue(cid, i, 0)
        end
    end
    -- if he did not make full arena 2 he must start from zero
    if getPlayerStorageValue(cid, 42319) < 1 then
        for i = 42310, 42319 do
            setPlayerStorageValue(cid, i, 0)
        end
    end
    -- if he did not make full arena 3 he must start from zero
    if getPlayerStorageValue(cid, 42329) < 1 then
        for i = 42320, 42329 do
            setPlayerStorageValue(cid, i, 0)
        end
    end
    if getPlayerStorageValue(cid, 42355) == -1 then
        setPlayerStorageValue(cid, 42355, 0) -- did not arena level
    end
    setPlayerStorageValue(cid, 42350, 0) -- time to kick 0
    setPlayerStorageValue(cid, 42352, 0) -- is not in arena  
	local voc = getPlayerVocation(cid)
	if getPlayerStorageValue(cid,1992) == 1 and getPlayerLevel(cid) >= 8 and voc <= 4 then
		doPlayerSetVocation(cid, voc + 4)
	end
	return true
end 

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

@

Bem, é uma gambiarra, mas vai resolver... o script do action do seu item vai ser este:

 

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getPlayerStorageValue(cid,1992) == 1 then
		doCreatureSay(cid, "Você já usou o golden papper.", TALKTYPE_ORANGE_1)
	else
		if getPlayerLevel(cid) >= 8 then
			doCreatureSay(cid, "Legendary!", TALKTYPE_ORANGE_1)
			local voc = getPlayerVocation(cid)
			if voc <= 4 then
				doPlayerSetVocation(cid, voc + 4)
			end
			doSendMagicEffect(fromPosition, CONST_ME_GIFT_WRAPS)
			doRemoveItem(item.uid)
			setPlayerStorageValue(cid,1992,1)
		else
			doCreatureSay(cid, "Você precisa estar level 8 ou mais para usar o Item!",TALKTYPE_ORANGE_1)
		end
	end
	return true
end  

 

 

 

 

 

 

 

Agora substitua seu login.lua pelo código abaixo:

 

 

 

local config = {
				loginMessage = getConfigValue('loginMessage'),
				useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
				}
 
function onLogin(cid)
	local loss = getConfigValue('deathLostPercent')
	if(loss ~= nil) then
		doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
	end
	 
	local accountManager = getPlayerAccountManager(cid)
	if(accountManager == MANAGER_NONE) then
		local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
		if(lastLogin > 0) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
			str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
		else
			str = str .. " Please choose your outfit."
			doPlayerSendOutfitWindow(cid)
		end
	 
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
	elseif(accountManager == MANAGER_NAMELOCK) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
	elseif(accountManager == MANAGER_ACCOUNT) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type {account} to manage your account and if you want to start over then type {cancel}.")
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type {account} to create an account or type {recover} to recover an account.")
	end
	 
	if(not isPlayerGhost(cid)) then
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
	end
	 
		registerCreatureEvent(cid, "Mail")
		registerCreatureEvent(cid, "petKill")  registerCreatureEvent(cid, "loguthunt")  registerCreatureEvent(cid, "huntdeath")  registerCreatureEvent(cid, "killitem")  registerCreatureEvent(cid, "SkullAmulet")  registerCreatureEvent(cid, "SkullCheck")  registerCreatureEvent(cid, "magebomb")  registerCreatureEvent(cid, "perdereifeto")  registerCreatureEvent(cid, "RushOutfit")  registerCreatureEvent(cid, "pvpsystem")  registerCreatureEvent(cid, "RushAttack")  registerCreatureEvent(cid, "RushDead")  registerCreatureEvent(cid, "petDeath")  registerCreatureEvent(cid, "RushCombat")  registerCreatureEvent(cid, "ReflectSpellKnight")  registerCreatureEvent(cid, "ReflectSpellPally")  registerCreatureEvent(cid, "ReflectSpellMage")  registerCreatureEvent(cid, "TiraBattle")  registerCreatureEvent(cid, "PointSystem")  registerCreatureEvent(cid, "petSta")  registerCreatureEvent(cid, "deathBroadcast")  registerCreatureEvent(cid, "addons")  registerCreatureEvent(cid, "GuildMotd")
		 
		registerCreatureEvent(cid, "Idle")
	if(config.useFragHandler) then
		registerCreatureEvent(cid, "SkullCheck")
		registerCreatureEvent(cid, "Reward")
	end
	 
	registerCreatureEvent(cid, "ReportBug")
	registerCreatureEvent(cid, "AdvanceSave")
	 
	registerCreatureEvent(cid, "advance")
	registerCreatureEvent(cid, "FimVip")
	registerCreatureEvent(cid, "SkullCheck")
	registerCreatureEvent(cid, "ReportBug")
	 
	registerCreatureEvent(cid, VipReceive)
	registerCreatureEvent(cid, "PlayerKill")
    if (InitArenaScript ~= 0) then
		InitArenaScript = 1
		-- make arena rooms free
        for i = 42300, 42309 do
            setGlobalStorageValue(i, 0)
            setGlobalStorageValue(i+100, 0)
        end
    end
    -- if he did not make full arena 1 he must start from zero
    if getPlayerStorageValue(cid, 42309) < 1 then
        for i = 42300, 42309 do
            setPlayerStorageValue(cid, i, 0)
        end
    end
    -- if he did not make full arena 2 he must start from zero
    if getPlayerStorageValue(cid, 42319) < 1 then
        for i = 42310, 42319 do
            setPlayerStorageValue(cid, i, 0)
        end
    end
    -- if he did not make full arena 3 he must start from zero
    if getPlayerStorageValue(cid, 42329) < 1 then
        for i = 42320, 42329 do
            setPlayerStorageValue(cid, i, 0)
        end
    end
    if getPlayerStorageValue(cid, 42355) == -1 then
        setPlayerStorageValue(cid, 42355, 0) -- did not arena level
    end
    setPlayerStorageValue(cid, 42350, 0) -- time to kick 0
    setPlayerStorageValue(cid, 42352, 0) -- is not in arena  
	local voc = getPlayerVocation(cid)
	if getPlayerStorageValue(cid,1992) == 1 and getPlayerLevel(cid) >= 8 and voc <= 4 then
		doPlayerSetVocation(cid, voc + 4)
	end
	return true
end 

 

 

 

 

Gambiarra mesmo eim, kkkkk.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...