Simples...
local controle = 25471setPlayerStorageValue(cid, controle, 1)
if getPlayerStorageValue(cid, controle) >= 1 then doPlayerSendCancel(cid, "Você só pode escanear uma vez.") return trueend
info
Grupo: Marquês
Registrado: 03/02/13
Posts: 1.2k
Reputação: +254
Gênero: Masculino
Char no Tibia: Partiu Baladinha

Simples...
local controle = 25471setPlayerStorageValue(cid, controle, 1)
if getPlayerStorageValue(cid, controle) >= 1 then doPlayerSendCancel(cid, "Você só pode escanear uma vez.") return trueend
Editado Agosto 23 por Lumus
info
Grupo: Visconde
Registrado: 07/02/12
Posts: 427
Reputação: +112

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 Agosto 23 por KarlKalvin
info
Grupo: Barão
Registrado: 04/07/16
Posts: 242
Reputação: +100
Gênero: Masculino

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 Agosto 23 por Gabriel Netto
info
Grupo: Marquês
Registrado: 03/02/13
Posts: 1.2k
Reputação: +254
Gênero: Masculino
Char no Tibia: Partiu Baladinha

A ah entendi, desculpe kkkk
Então, não pode ser igual o sistema de skinning do global?
info
Grupo: Barão
Registrado: 04/07/16
Posts: 242
Reputação: +100
Gênero: Masculino

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
info
Grupo: Visconde
Registrado: 07/02/12
Posts: 427
Reputação: +112

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.
info
Grupo: Barão
Registrado: 04/07/16
Posts: 242
Reputação: +100
Gênero: Masculino

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 Agosto 23 por Gabriel Netto
info
Grupo: Visconde
Registrado: 07/02/12
Posts: 427
Reputação: +112

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 Agosto 23 por KarlKalvin
info
Grupo: Barão
Registrado: 04/07/16
Posts: 242
Reputação: +100
Gênero: Masculino

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:
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 Agosto 23 por Gabriel Netto
info
Grupo: Visconde
Registrado: 07/02/12
Posts: 427
Reputação: +112

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
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Por que simplesmente não atribui actionid ao corpo escaneado?
info
Grupo: Barão
Registrado: 04/07/16
Posts: 242
Reputação: +100
Gênero: Masculino

Agora, Poccnn disse:Por que simplesmente não atribui actionid ao corpo escaneado?
É isso que eu vou fazer HSUAHUSASHAU, não tinha me tocado.
Como faz pra eu verificar o action id do item? ![]()
info
Grupo: Visconde
Registrado: 07/02/12
Posts: 427
Reputação: +112

4 minutos atrás, Poccnn disse:Por que simplesmente não atribui actionid ao corpo escaneado?
Já não faço minima ideia de como faça isso!
info
Grupo: Marquês
Registrado: 03/02/13
Posts: 1.2k
Reputação: +254
Gênero: Masculino
Char no Tibia: Partiu Baladinha

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?
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 Agosto 23 por Lumus
info
Grupo: Visconde
Registrado: 07/02/12
Posts: 427
Reputação: +112
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 Agosto 23 por KarlKalvin