Ir para conteúdo
  • 0

[Script] StorageValue


KarlKalvin

Pergunta

To com esse script aqui...

 

 

 


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

local chance = 10 -- chance de cortar
local madeiras = {17180, 17081, 17182, 17183} -- item que o player irá ganhar
local premio = madeiras[math.random(1, #madeiras)]
local transformItem = 0
local texts = {"Coletando Informações..."}  -- texto que irá aparecer quando usar o item
local randoms = texts[math.random(1,#texts)]
local time = 2 -- Minutos para crescer novamente
local tempo = 1
local outfit = 38                   -- ID da Outfit Male.
local outfit2 = 31                  -- ID da Outfit Female.

if isRiderOrFlyOrSurf(cid) then
   return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
end

   local name = getItemNameById(item2.itemid)
    if not name:find("fainted") then
 doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
 return true
end
 
if getPlayerStorageValue(cid, 12015) ~= 1 then
doPlayerSendCancel(cid, "Nao pode.")
return true
end

   if getPlayerSex(cid) == 1 then
      doSetCreatureOutfit(cid, {lookType = outfit, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000)  --  Tempo em que a outfit estará trocada.
   else
       doSetCreatureOutfit(cid, {lookType = outfit2, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000)  --  Tempo em que a outfit estará trocada.
end
doCreatureSetNoMove(cid, true)
addEvent(function()
    if not isPlayer(cid) then return true end
    doCreatureSetNoMove(cid, false)
end, 1000)


    local name = getItemNameById(item2.itemid)
    if name:find("fainted") then
                    if math.random(1,100) >= chance then
                        doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN)
                        item = doCreateItemEx(premio, math.random(2,5))
                        doItemSetAttribute(item, "unique", getCreatureName(cid))
                        doPlayerAddItemEx(cid, item)
                        addEvent(doCreatureSetNoMove, cid, false)
                        addEvent(doPlayerSendTextMessage, cid, 22, "Você coletou informações e ganhou pontos.")
    else
                        doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN)
                        addEvent(doCreatureSetNoMove, cid, false)
                        addEvent(doPlayerSendTextMessage, cid,22,"Você não conseguiu coletar.")
                end
            end
    return true
end

 

 

Está funcionando perfeitamente só que ele tá podendo escanear o mesmo corpo 1x,2x,3x várias vezes e eu quero que o player só possa escanear o corpo 1 vez.

Alguém pode me ajudar? Obrigado!

 

POSTEI NA ÁREA ERRADA, DESCULPE. MOVA POR FAVOR.

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

Posts Recomendados

  • 0

Simples...

local controle = 25471setPlayerStorageValue(cid, controle, 1)

 

if getPlayerStorageValue(cid, controle) >= 1 then   doPlayerSendCancel(cid, "Você só pode escanear uma vez.")   return trueend

 

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

  • 0

Simples...

local controle = 25471setPlayerStorageValue(cid, controle, 1)

 

if getPlayerStorageValue(cid, controle) >= 1 then   doPlayerSendCancel(cid, "Você só pode escanear uma vez.")   return trueend

 

Nem tão simples eu creio, do jeito que você mandou ele vai setar a storage e eu não poderei escanear nunca mais...

Oque eu quero é que tipo matei x poke ai cai x corpse eu escaneio e depois não posso escanear mais aquele x corpse mas se eu matar outro x corpse eu poderei escanear entendeu?

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

  • 0
17 minutos atrás, Lumus disse:

Simples...

local controle = 25471setPlayerStorageValue(cid, controle, 1)

 

if getPlayerStorageValue(cid, controle) >= 1 then   doPlayerSendCancel(cid, "Você só pode escanear uma vez.")   return trueend

 

O que ele quer é o sistema de coleta da pokeXgames, setar a storage assim não daria certo. Ele quer q de para escanear o mesmo corpo só uma vez, mas se for outro corpo pode escanear novamente.

A solução mais simples que eu vejo pra isso seria botar pra mudar o nome do corpo pós escaneado, já que ele verifica o nome do item pra scannear, assim:

 

 

doItemSetAttribute(item2.uid, "name", "scanned Pokémon corpse")

 

Aí não daria pra scannear o mesmo mais de uma vez, mas não sei se daria pra pegar o loot dps de scannear, tenta aí e me diz como ficou.

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

  • 0
Agora, Lumus disse:

A ah entendi, desculpe kkkk

Então, não pode ser igual o sistema de skinning do global?

Não, porque os corpos no Pokémon não tem aqls "estagios de decomposição", eles só somem :/

 

Daria pra fazer por tempo tmb, de só dar pra scannear de 1min e 1min, e por o tempo pro corpo desaparecer de 1min.

 

Ou fazer por id, aí ficaria mais bonito, ficaria sem mudar o nome. Teria que adicionar todo corpse 2x. Aí o primeiro daria pra scannear, e viraria o segundo corpse pós escanear (e o segundo não daria pra scannear), mas com o mesmo sprite e nome.

Aí pra não sumir o loot teria que fazer umas gambiarra, mas nada impossível ehauehuehau

Link para o comentário
Compartilhar em outros sites

  • 0
16 minutos atrás, Gabriel Netto disse:

O que ele quer é o sistema de coleta da pokeXgames, setar a storage assim não daria certo. Ele quer q de para escanear o mesmo corpo só uma vez, mas se for outro corpo pode escanear novamente.

A solução mais simples que eu vejo pra isso seria botar pra mudar o nome do corpo pós escaneado, já que ele verifica o nome do item pra scannear, assim:

 

 

doItemSetAttribute(item2.uid, "name", "scanned Pokémon corpse")

 

Aí não daria pra scannear o mesmo mais de uma vez, mas não sei se daria pra pegar o loot dps de scannear, tenta aí e me diz como ficou.

 

Você pode colocar no script pra mim, ou explicar como fazer direito porque eu não entendi muito bem... eu teria que fazer oque? o script tá logo acima no tópico.

Link para o comentário
Compartilhar em outros sites

  • 0
9 minutos atrás, KarlKalvin disse:

 

Você pode colocar no script pra mim, ou explicar como fazer direito porque eu não entendi muito bem... eu teria que fazer oque? o script tá logo acima no tópico.

 

 

Here (bugou a identação, ignora ela pls ehauehahu):

function onUse(cid, item, frompos, item2, topos)local chance = 10 -- chance de cortarlocal madeiras = {17180, 17081, 17182, 17183} -- item que o player irá ganharlocal premio = madeiras[math.random(1, #madeiras)]local scanningFailCanRepeat = false --ponha true se quiser que de para escanear novamente se o escaneamento falhar. Se botar false, só vai dar pra escanear o mesmo corpse 1x, independente da falha ou sucessolocal transformItem = 0local texts = {"Coletando Informações..."}  -- texto que irá aparecer quando usar o itemlocal randoms = texts[math.random(1,#texts)]local time = 2 -- Minutos para crescer novamentelocal tempo = 1local outfit = 38                   -- ID da Outfit Male.local outfit2 = 31                  -- ID da Outfit Female.if isRiderOrFlyOrSurf(cid) then   return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)end   local name = getItemNameById(item2.itemid)    if not name:find("fainted") then doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL) return trueend if getPlayerStorageValue(cid, 12015) ~= 1 thendoPlayerSendCancel(cid, "Nao pode.")return trueend   if getPlayerSex(cid) == 1 then      doSetCreatureOutfit(cid, {lookType = outfit, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000)  --  Tempo em que a outfit estará trocada.   else       doSetCreatureOutfit(cid, {lookType = outfit2, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000)  --  Tempo em que a outfit estará trocada.enddoCreatureSetNoMove(cid, true)addEvent(function()    if not isPlayer(cid) then return true end    doCreatureSetNoMove(cid, false)end, 1000)    local name = getItemNameById(item2.itemid)    if name:find("fainted") then                    if math.random(1,100) >= chance then                        doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN)      					doItemSetAttribute(item2.uid, "name", "scanned Pokémon corpse") --modifica aqui o nome que o corpse do Pokémon vai ficar pós escaneado                        item = doCreateItemEx(premio, math.random(2,5))                        doItemSetAttribute(item, "unique", getCreatureName(cid))                        doPlayerAddItemEx(cid, item)                        addEvent(doCreatureSetNoMove, cid, false)                        addEvent(doPlayerSendTextMessage, cid, 22, "Você coletou informações e ganhou pontos.")    else      						if scanningFailCanRepeat == false then      						doItemSetAttribute(item2.uid, "name", "scanned Pokémon corpse") --modifica aqui o nome que o corpse do Pokémon vai ficar pós escaneado      						end                        doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN)                        addEvent(doCreatureSetNoMove, cid, false)                        addEvent(doPlayerSendTextMessage, cid,22,"Você não conseguiu coletar.")                end            end    return trueend

 

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

  • 0

Quase isso @Gabriel Netto preciso de um check para poder finalizar: if getItemAttribrute bla bla bla com o atributo "scanned..."

o script ficou assim:

 

 


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

local chance = 10 -- chance de cortar
local madeiras = {17180, 17081, 17182, 17183} -- item que o player irá ganhar
local premio = madeiras[math.random(1, #madeiras)]
local scanningFailCanRepeat = false --ponha true se quiser que de para escanear novamente se o escaneamento falhar. Se botar false, só vai dar pra escanear o mesmo corpse 1x, independente da falha ou sucesso
local transformItem = 0
local texts = {"Coletando Informações..."}  -- texto que irá aparecer quando usar o item
local randoms = texts[math.random(1,#texts)]
local time = 2 -- Minutos para crescer novamente
local tempo = 1
local outfit = 38                   -- ID da Outfit Male.
local outfit2 = 31                  -- ID da Outfit Female.

if isRiderOrFlyOrSurf(cid) then
   return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
end

if scanningFailCanRepeat == false then
  return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
end
                            
   local name = getItemNameById(item2.itemid)
    if not name:find("fainted") then
 doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
 return true
end
 
if getPlayerStorageValue(cid, 12015) ~= 1 then
doPlayerSendCancel(cid, "Nao pode.")
return true
end

   if getPlayerSex(cid) == 1 then
      doSetCreatureOutfit(cid, {lookType = outfit, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000)  --  Tempo em que a outfit estará trocada.
   else
       doSetCreatureOutfit(cid, {lookType = outfit2, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000)  --  Tempo em que a outfit estará trocada.
end
doCreatureSetNoMove(cid, true)
addEvent(function()
    if not isPlayer(cid) then return true end
    doCreatureSetNoMove(cid, false)
end, 1000)


    local name = getItemNameById(item2.itemid)
    if name:find("fainted") then
                    if math.random(1,100) >= chance then
                        doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN)
                          doItemSetAttribute(item2.uid, "name", "scanned Pokémon corpse") --modifica aqui o nome que o corpse do Pokémon vai ficar pós escaneado
                        item = doCreateItemEx(premio, math.random(2,5))
                        doItemSetAttribute(item, "unique", getCreatureName(cid))
                        doPlayerAddItemEx(cid, item)
                        addEvent(doCreatureSetNoMove, cid, false)
                        addEvent(doPlayerSendTextMessage, cid, 22, "Você coletou informações e ganhou pontos.")
    else
                        doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN)
                        addEvent(doCreatureSetNoMove, cid, false)
                        addEvent(doPlayerSendTextMessage, cid,22,"Você não conseguiu coletar.")
                end
            end
    return true
end
 

 

 

Preciso alterar  aqui: if scanningFailCanRepeat == false then

 

tem que ser o if que te falei ( IF GETATTRIBUTEITEM (NAME BLA BLA BLA) eu não sei como que é, então espero que me respondam '-'

 

 

EDIT: Preciso disso porque esssa função : 

scanningFailCanRepeat 

não existe no meu server então ela da como "FALSE" como tá na tabela lá em cima!

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

  • 0
1 minuto atrás, KarlKalvin disse:

Quase isso @Gabriel Netto preciso de um check para poder finalizar: if getItemAttribrute bla bla bla com o atributo "scanned..."

o script ficou assim:

 

  Ocultar conteúdo

 

 


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

local chance = 10 -- chance de cortar
local madeiras = {17180, 17081, 17182, 17183} -- item que o player irá ganhar
local premio = madeiras[math.random(1, #madeiras)]
local scanningFailCanRepeat = false --ponha true se quiser que de para escanear novamente se o escaneamento falhar. Se botar false, só vai dar pra escanear o mesmo corpse 1x, independente da falha ou sucesso
local transformItem = 0
local texts = {"Coletando Informações..."}  -- texto que irá aparecer quando usar o item
local randoms = texts[math.random(1,#texts)]
local time = 2 -- Minutos para crescer novamente
local tempo = 1
local outfit = 38                   -- ID da Outfit Male.
local outfit2 = 31                  -- ID da Outfit Female.

if isRiderOrFlyOrSurf(cid) then
   return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
end

if scanningFailCanRepeat == false then
  return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
end
                            
   local name = getItemNameById(item2.itemid)
    if not name:find("fainted") then
 doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
 return true
end
 
if getPlayerStorageValue(cid, 12015) ~= 1 then
doPlayerSendCancel(cid, "Nao pode.")
return true
end

   if getPlayerSex(cid) == 1 then
      doSetCreatureOutfit(cid, {lookType = outfit, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000)  --  Tempo em que a outfit estará trocada.
   else
       doSetCreatureOutfit(cid, {lookType = outfit2, lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, time*1*1000)  --  Tempo em que a outfit estará trocada.
end
doCreatureSetNoMove(cid, true)
addEvent(function()
    if not isPlayer(cid) then return true end
    doCreatureSetNoMove(cid, false)
end, 1000)


    local name = getItemNameById(item2.itemid)
    if name:find("fainted") then
                    if math.random(1,100) >= chance then
                        doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN)
                          doItemSetAttribute(item2.uid, "name", "scanned Pokémon corpse") --modifica aqui o nome que o corpse do Pokémon vai ficar pós escaneado
                        item = doCreateItemEx(premio, math.random(2,5))
                        doItemSetAttribute(item, "unique", getCreatureName(cid))
                        doPlayerAddItemEx(cid, item)
                        addEvent(doCreatureSetNoMove, cid, false)
                        addEvent(doPlayerSendTextMessage, cid, 22, "Você coletou informações e ganhou pontos.")
    else
                        doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN)
                        addEvent(doCreatureSetNoMove, cid, false)
                        addEvent(doPlayerSendTextMessage, cid,22,"Você não conseguiu coletar.")
                end
            end
    return true
end
 

 

 

 

Preciso alterar  aqui: if scanningFailCanRepeat == false then

 

tem que ser o if que te falei ( IF GETATTRIBUTEITEM (NAME BLA BLA BLA) eu não sei como que é, então espero que me respondam '-'

Tive uma ideia melhor, perae

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

  • 0
Agora, Gabriel Netto disse:

Nossa, nem tinha pensado em usar attributes SHAUSHUAHSUAUH, já edito meu coment perae

 é exatamente como você me explicou fiz umas alterações mas preciso de uma função que eu não sei como se faz... que eu já detalhei como é 

 

 

 

if CHECARATRIBUTO DO CORPO DE: "scanned Pokémon corpse" == VERDADEIDO then

  return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)

end

        

Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, Gabriel Netto disse:

É isso que eu vou fazer HSUAHUSASHAU, não tinha me tocado.

Como faz pra eu verificar o action id do item? :X:

item.X == Y

onde está X substitua por aid para action e uid para unique.

onde está Y substitua pela action ou pelo unique.

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

  • 0
58 minutos atrás, KarlKalvin disse:

 

Já não faço minima ideia de como faça isso!

 

Apaga tudo dps do if name:find e adiciona isso:

	if name:find("fainted") and item2.aid ~= 4432 then                    if math.random(1,100) >= chance then						doSetItemActionId(aid, 4432)                        doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN)                        item = doCreateItemEx(premio, math.random(2,5))                        doItemSetAttribute(item, "unique", getCreatureName(cid))                        doPlayerAddItemEx(cid, item)                        addEvent(doCreatureSetNoMove, cid, false)                        addEvent(doPlayerSendTextMessage, cid, 22, "Você coletou informações e ganhou pontos.")    else						doSetItemActionId(aid, 4432)                        doSendAnimatedText(topos, ""..randoms.."", TEXTCOLOR_GREEN)                        addEvent(doCreatureSetNoMove, cid, false)                        addEvent(doPlayerSendTextMessage, cid,22,"Você não conseguiu coletar.")                	end	end    return trueend

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...