Ir para conteúdo
  • Cadastre-se

(Resolvido)Script Error (doPlayerSetStorageValue)


Ir para solução Resolvido por KotZletY,

Posts Recomendados

Quando eu uso o item aparece esse erro no console: 

Citar

Attempt to call global 'doPlayerSetStorageValue' <a nil value>
stack traceback:
[C]: in function 'doPlayerSetStorageValue'

 

Eu uso este script

local a = {
itemid = 26194, -- ID DO ITEM QUE VAI DAR A MOUNT
mountID = 94, -- ID DA MOUNT
storage = 64656, -- STORAGE, SÓ ALTERE SE NECESSARIO
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getPlayerStorageValue(cid, a.storage) == -1 then
		if getPlayerItemCount(cid, a.itemid) >= 1 then
			doPlayerAddMount(cid, a.mountID)
			doPlayerRemoveItem(cid, a.itemid, 1)
			doCreatureSay(cid, 'You receive the permission to ride a sparkion', TALKTYPE_MONSTER_SAY, 2, 2)
			doPlayerSetStorageValue(cid, a.storage, 1)
		else
			doPlayerSendCancel(cid, "You must have the item in the backpack in order to purchase your mount.")
			doSendMagicEffect(getPlayerPosition(cid), 2)
		end
	else
		doPlayerSendCancel(cid, "Sorry, you already have this mount.")
		doSendMagicEffect(getPlayerPosition(cid), 2)
	end
return TRUE
end

Eu queria esse script adicionasse a storage impedindo de ele usar o item de montaria novamente.
TFS 1.2

Desde já agradeço <3

Link para o post
Compartilhar em outros sites

Nunca trabalhei com TFS 1.2 mas tente mudar o "doPlayerSetStorageValue" para "setPlayerStorageValue"

Te ajudei? Clique em  Gostei ! 

²²²d¬¬b²²²

 

 

"She's got a smile that it seems to me...."  ♪♪

Link para o post
Compartilhar em outros sites
Em 10/02/2017 ás 13:44, FlavioHulk disse:

Quando eu uso o item aparece esse erro no console: 

 

Eu uso este script


local a = {
itemid = 26194, -- ID DO ITEM QUE VAI DAR A MOUNT
mountID = 94, -- ID DA MOUNT
storage = 64656, -- STORAGE, SÓ ALTERE SE NECESSARIO
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getPlayerStorageValue(cid, a.storage) == -1 then
		if getPlayerItemCount(cid, a.itemid) >= 1 then
			doPlayerAddMount(cid, a.mountID)
			doPlayerRemoveItem(cid, a.itemid, 1)
			doCreatureSay(cid, 'You receive the permission to ride a sparkion', TALKTYPE_MONSTER_SAY, 2, 2)
			doPlayerSetStorageValue(cid, a.storage, 1)
		else
			doPlayerSendCancel(cid, "You must have the item in the backpack in order to purchase your mount.")
			doSendMagicEffect(getPlayerPosition(cid), 2)
		end
	else
		doPlayerSendCancel(cid, "Sorry, you already have this mount.")
		doSendMagicEffect(getPlayerPosition(cid), 2)
	end
return TRUE
end

Eu queria esse script adicionasse a storage impedindo de ele usar o item de montaria novamente.
TFS 1.2

Desde já agradeço <3


local a = {
itemid = 26194, -- ID DO ITEM QUE VAI DAR A MOUNT
mountID = 94, -- ID DA MOUNT
storage = 64656, -- STORAGE, SÓ ALTERE SE NECESSARIO
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if getPlayerStorageValue(cid, a.storage) == -1 then
        if getPlayerItemCount(cid, a.itemid) >= 1 then
            doPlayerAddMount(cid, a.mountID)
            doPlayerRemoveItem(cid, a.itemid, 1)
            doCreatureSay(cid, 'You receive the permission to ride a sparkion', TALKTYPE_MONSTER_SAY, 2, 2)

            setPlayerStorageValue(cid, a.storage, 1)
        else
            doPlayerSendCancel(cid, "You must have the item in the backpack in order to purchase your mount.")
            doSendMagicEffect(getPlayerPosition(cid), 2)
        end
    else
        doPlayerSendCancel(cid, "Sorry, you already have this mount.")
        doSendMagicEffect(getPlayerPosition(cid), 2)
    end
return TRUE
end

 

Link para o post
Compartilhar em outros sites
  • Solução
local a = {
mountID = 94, -- ID DA MOUNT
storage = 64656, -- STORAGE, SÓ ALTERE SE NECESSARIO
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	if player:getStorageValue(a.storage) == -1 then
		if player:getItemCount(a.itemid) >= 1 then
			player:addMount(a.mountID)
			Item(item.itemid):remove(1)
			player:say("You receive the permission to ride a sparkion", TALKTYPE_MONSTER_SAY) 
			player:setStorageValue(a.storage, 1)
		else
			player:sendCancelMessage("You must have the item in the backpack in order to purchase your mount.")
			player:getPosition():sendMagicEffect(2)
		end
	else
		player:sendCancelMessage("Sorry, you already have this mount.")
		player:getPosition():sendMagicEffect(2)
	end
return TRUE
end

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
Em 11/02/2017 ás 07:54, luangop disse:

Nunca trabalhei com TFS 1.2 mas tente mudar o "doPlayerSetStorageValue" para "setPlayerStorageValue"

Valeu pela força, @luangop! Mas o script tinha que ser atualizado mesmo... Mas valeu pela tentativa <3

19 horas atrás, Gustavo Ntos disse:

 


local a = {
itemid = 26194, -- ID DO ITEM QUE VAI DAR A MOUNT
mountID = 94, -- ID DA MOUNT
storage = 64656, -- STORAGE, SÓ ALTERE SE NECESSARIO
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if getPlayerStorageValue(cid, a.storage) == -1 then
        if getPlayerItemCount(cid, a.itemid) >= 1 then
            doPlayerAddMount(cid, a.mountID)
            doPlayerRemoveItem(cid, a.itemid, 1)
            doCreatureSay(cid, 'You receive the permission to ride a sparkion', TALKTYPE_MONSTER_SAY, 2, 2)

            setPlayerStorageValue(cid, a.storage, 1)
        else
            doPlayerSendCancel(cid, "You must have the item in the backpack in order to purchase your mount.")
            doSendMagicEffect(getPlayerPosition(cid), 2)
        end
    else
        doPlayerSendCancel(cid, "Sorry, you already have this mount.")
        doSendMagicEffect(getPlayerPosition(cid), 2)
    end
return TRUE
end

 

 

Eu tinha tentado fazer isso, mas também dava erro :S, mas valeu pela força!!!!! @Gustavo Ntos

12 horas atrás, KotZletY disse:

local a = {
mountID = 94, -- ID DA MOUNT
storage = 64656, -- STORAGE, SÓ ALTERE SE NECESSARIO
}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
	if player:getStorageValue(a.storage) == -1 then
		if player:getItemCount(a.itemid) >= 1 then
			player:addMount(a.mountID)
			Item(item.uid):remove(1)
			player:say("You receive the permission to ride a sparkion", TALKTYPE_MONSTER_SAY) 
			player:setStorageValue(a.storage, 1)
		else
			player:sendCancelMessage("You must have the item in the backpack in order to purchase your mount.")
			player:getPosition():sendMagicEffect(2)
		end
	else
		player:sendCancelMessage("Sorry, you already have this mount.")
		player:getPosition():sendMagicEffect(2)
	end
return TRUE
end

 

Pô mano, valeu muito! Realmente funcionou, só ficou faltando o item id no local a nas primeiras linhas, mas corrigi isso! @KotZletY, e já te pergunto se posso postar diretamente no tópico de script?!

Link para o post
Compartilhar em outros sites

@FlavioHulk Item(item.uid):remove(1)

 

tirei o id local porque não precisa, ele era usado somente para mostra que ele precisava ser removido depois de ser usado, então essa linha que acabei de mostra, remove 1 do item que você usou, no caso o que você usou para o script funcionar. Não tem necessidade de colocar já que o script remove ele. Não funcionou ?

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
4 minutos atrás, KotZletY disse:

@FlavioHulk Item(item.uid):remove(1)

 

tirei o id local porque não precisa, ele era usado somente para mostra que ele precisava ser removido depois de ser usado, então essa linha que acabei de mostra, remove 1 do item que você usou, no caso o que você usou para o script funcionar. Não tem necessidade de colocar já que o script remove ele. Não funcionou ?

@KotZletY, falo das linhas locais

 

local a = {
itemid = 26387, -- ID DO ITEM QUE VAI DAR A MOUNT
mountID = 103, -- ID DA MOUNT
storage = 64657, -- STORAGE, SÓ ALTERE SE NECESSARIO
}

Se você ver são três linhas, itemid, mountid e storage. Não tinha a linha itemid, e o script não funcionava, mas isso é apenas detalhe, você fez a parte mais complicada, valeu <3

Link para o post
Compartilhar em outros sites

Não cara, não precisa disso, erro meu, apenas altere essa linha:

Item(item.uid):remove(1)

por essa:

Item(item.itemid):remove(1)

 

Pra que declarar variável ? Pra depois colocar uma função que vai remover o item dela ?

 

Precisa disso não cara, com essa linha, o script remove o item que está sendo usado.

 

Você usa o item, ganha a mount, e o item que você usou para ganhar a mount é removido.

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
7 horas atrás, KotZletY disse:

Não cara, não precisa disso, erro meu, apenas altere essa linha:


Item(item.uid):remove(1)

por essa:


Item(item.itemid):remove(1)

 

Pra que declarar variável ? Pra depois colocar uma função que vai remover o item dela ?

 

Precisa disso não cara, com essa linha, o script remove o item que está sendo usado.

 

Você usa o item, ganha a mount, e o item que você usou para ganhar a mount é removido.

 

Saquei, boa explicação! Valeu mano <3

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo