Ir para conteúdo
  • 0

[Duvida] Script Action


KarlKalvin

Pergunta

Pessoal, esse script funciona normalmente mais tem um problema que quando o player pega o premio lvl 1, ai passa para lvl 2 e não pega o premio ele não consegue pegar mais eu queria que fosse que quando ele for level tal, ele pega o premio do lvl dele, e essa mensagem To open you lvl must be .. eu quero que ela apareça só se ele já tiver pegado o premio, ou se ele não for do lvl, pq nao vai ser 1 2 3 sera 5, 10, etc... " Lembrando pegar só 1 vez o premio.

 

 

 

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

 

local rec = {

[1] = {level=1, id=12222, quantidade=3},

[2] = {level=2, id=12348, quantidade=5},

[3] = {level=3, id=12344, quantidade=1},

[4] = {level=4, id=12347, quantidade=10},

[5] = {level=5, id=12222, quantidade=10},

[6] = {level=6, id=12346, quantidade=2},

[7] = {level=7, id=12344, quantidade=5},

[8] = {level=8, id=12222, quantidade=20},

[9] = {level=9, id=12347, quantidade=10},

[10] = {level=10, id=12348, quantidade=30},

}

 

if getPlayerLevel(cid) == rec[getPlayerLevel(cid)].level and getPlayerStorageValue(cid, 3157) then

doPlayerSendTextMessage(cid,22,"Congratulation, you recevied a "..rec[getPlayerLevel(cid)].quantidade.." "..getItemNameById( rec[getPlayerLevel(cid)].id)..".")

doSendMagicEffect(frompos, 28)

doPlayerAddItem(cid, rec[getPlayerLevel(cid)].id, rec[getPlayerLevel(cid)].quantidade)

setPlayerStorageValue(cid, 3157, (getPlayerLevel(cid)+1))

elseif

getPlayerLevel(cid) == rec[getPlayerLevel(cid)].level and getPlayerStorageValue(cid, 3157) == getPlayerLevel(cid) then

doPlayerSendTextMessage(cid,22,"Congratulation, you recevied a "..rec[getPlayerLevel(cid)].quantidade.." "..getItemNameById( rec[getPlayerLevel(cid)].id)..".")

doSendMagicEffect(frompos, 28)

doPlayerAddItem(cid, rec[getPlayerLevel(cid)].id, rec[getPlayerLevel(cid)].quantidade)

setPlayerStorageValue(cid, 3157, (getPlayerLevel(cid)+1))

else

doPlayerSendCancel(cid, "To open your level must be "..getPlayerStorageValue(cid, 3157)..".")

return true

end

 

 

return true

end

 

 

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Você vai ter q por 1 storage pra cada premio pois com apenas esse storage ele vai ficar como se voce ja tivesse pegado o premio e se vc colocar pra tirar o storage vc pode ficar pegado vários premios sem parar. É a solução, o script vai ficar maior com isso.

 

Ajudei? REP+

não custa nada ;)

Link para o comentário
Compartilhar em outros sites

  • 0

Se for automaticamente coloque:

 

Vá em creaturescripts/scripts crie um arquivo e coloque isso nele:

 

local config = {
[1] = {
	{ 2268, 50 },
},
[2] = {
	{ 2268, 50 },
},
[3] = {
	{ 2268, 50 },  
},
[4] = {
	{ 2268, 50 },  
},
[5] = {
	{ 2268, 50 },	
},
[6] = {
	{ 2268, 50 },	
},
[7] = {
	 { 2268, 50 },  
},
[8] = {
	 { 2268, 50 },
}
}
local storage = 12554
local level = 45

function onAdvance(cid, skill, oldLevel, newLevel)
if newLevel == level and getPlayerStorageValue(cid, storage) < 0 then
	local voc = config[getPlayerVocation(cid)]
	if voc ~= nil then
		for _,a in pairs(voc) do
			doPlayerAddItem(cid, a[1], a[2])
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Parabens voce acaba de ganhar " .. a[2] .. " " .. getItemNameById(a[1]) .. "!")
		end
		setPlayerStorageValue(cid, storage, 1)
	end
end
return true
end

 

Em creaturescripts.xml coloque isso:

 

<event type="advance" name="itembylevel" event="script" value="nome do seu script.lua"/>

 

E para finalizar, no arquivo creaturescripts/scripts/login.lua coloque isso:

 

registerCreatureEvent(cid, "itembylevel")

 

Bom para adicionar um novo item seguindo o modelo do script, adicione na parte da vocação desejada isto:

 

{ item id, quantidade}

 

AJUDEI?! +REP happy.png

 

@EDIT \/

 

Verdade, mais vou deixa o script, pra quem precisar, Flw, e belo script o seu @Slicer, +REP pra vc mdr.gif

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

  • 0

/\ lol? achu q ele quer um bau e n por lvlup... ainda mais q ele quer para varios lvl e n soh pra lvl 45 ;x

 

 

@topic

tenta isso..

 

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

 

local rec = {

{level=1, id=12222, quantidade=3},

{level=2, id=12348, quantidade=5},

{level=3, id=12344, quantidade=1},

{level=4, id=12347, quantidade=10},

{level=5, id=12222, quantidade=10},

{level=6, id=12346, quantidade=2},

{level=7, id=12344, quantidade=5},

{level=8, id=12222, quantidade=20},

{level=9, id=12347, quantidade=10},

{level=10, id=12348, quantidade=30},

}

 

if getPlayerStorageValue(cid, 3157) < 1 then setPlayerStorageValue(cid, 1) end

 

local recebido = false

for lvl, table in ipairs(rec) do

if getPlayerLevel(cid) >= table.level and getPlayerStorageValue(cid, 3157) == table.level then

doPlayerSendTextMessage(cid, 22, "Congratulation, you recevied "..table.quantidade.." ".. getItemNameById(table.id)..".")

doSendMagicEffect(frompos, 28)

doPlayerAddItem(cid, table.id, table.quantidade)

setPlayerStorageValue(cid, 3157, getPlayerStorageValue(cid, 3157)+1)

recebido = true

end

end

 

if not recebido then

doPlayerSendCancel(cid, "To open it, your level must be ".. getPlayerStorageValue(cid, 3157)..".")

end

 

return true

end

 

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

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