Ir para conteúdo
  • 0

AJUDEM A IMPEDIR A SEGUNDA ACTION


wevertonvrb

Pergunta

BOA NOITE GENTE EU FIZ UMA ACTION 
function on use item 1 no item 2
e ele esta funcionando perfeitamente
mas eu gostaria de adicionar algo nele para que essa função funcione apenas uma vez em cada item
algo que faça o item2 já ficar usado mas sem que altere seu id
talvez adicionar um atributo no item2 quando usar o item1 nele a primeira vez que faça com que a action seja recusada se tentar usar novamente
obg desde ja
@Poccnn

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

Posts Recomendados

  • 0
Em 2017-5-3 at 21:06, Poccnn disse:

Acho que vou dar uma adiantada nas aulas porque seriamente tu estás a precisar a aprender sobre tabelas.

 

Usa itemEx.uid e itemEx.aid

então consegui resolver 

o problema era nesse .aid 

eu tava colocando desse mesmo jeito q tu me falou e eu pensei q iria dar certo

if itemEx.aid == xxxx then -- isso por algum motivo n estava dando certo então fiz assim

if itemEx.actionid == xxxx -- dessa forma o script funcionou

 

uma ultima duvida***

é possivel dar valor a uma actionid igual se faz com storage?

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

  • 0
11 horas atrás, Poccnn disse:

doItemSetAttribute(uid,"aid",number)

ai to com duvida

o script tava assim

if itemEx then

doPlayerAddItem(cid, 15500, rand)

doRemoveItem(itemEx.uid,1)

end

deixei assim

if itemEx then

doPlayerAddItem(cid, 15500, rand)

doItemSetAttribute(uid,"aid",9633852)

end

 

como eu deixo pra impedir o script? tentei coisas assim e n deu

 

if itemEx aid = 9633852 then

return doPlayerSendCancel(cid, "voce ja coletou deste pokemon.")

end

 

if getItemAttribute(uid,"aid",9633852) then

return doPlayerSendCancel(cid, "voce ja coletou deste pokemon.")

end

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que vou dar uma adiantada nas aulas porque seriamente tu estás a precisar a aprender sobre tabelas.

 

Usa itemEx.uid e itemEx.aid

Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, Poccnn disse:

Acho que vou dar uma adiantada nas aulas porque seriamente tu estás a precisar a aprender sobre tabelas.

 

Usa itemEx.uid e itemEx.aid

oque fiz de errado agr?

 

if itemEx.aid == 9633852 then

return doPlayerSendCancel(cid, "voce ja coletou deste pokemon.")

end

 

if itemEx then

doPlayerAddItem(cid, 15500, rand)

doItemSetAttribute(itemEx.uid,"aid",9633852)

end

Link para o comentário
Compartilhar em outros sites

  • 0
9 horas atrás, wevertonvrb disse:

oque fiz de errado agr?

Deixa eu ser sincero contig em uma coisa. Pra quem está de fora como eu que nunca vi seu script e nem consigo imaginar a metodologia empregada ao mesmo se torna extremamente difícil saber qual é o problema. 

Eu sugiro que tu estude para entender como funciona o sistema de ot server, então tu saberás o que estás a fazer de errado.

 

Bem... eu acredito que seu sistema retorne para a função onuse algum valor diferente de nil ou false para cada argumento, portanto o parâmetro itemEx seria um valor válido, logo se tu por isso como condição,  ela sempre será verdadeira.

 

Link para o comentário
Compartilhar em outros sites

  • 0
Em 2017-5-4 at 08:22, Poccnn disse:

Deixa eu ser sincero contig em uma coisa. Pra quem está de fora como eu que nunca vi seu script e nem consigo imaginar a metodologia empregada ao mesmo se torna extremamente difícil saber qual é o problema. 

Eu sugiro que tu estude para entender como funciona o sistema de ot server, então tu saberás o que estás a fazer de errado.

 

Bem... eu acredito que seu sistema retorne para a função onuse algum valor diferente de nil ou false para cada argumento, portanto o parâmetro itemEx seria um valor válido, logo se tu por isso como condição,  ela sempre será verdadeira.

 

man eu ainda sou iniciante suas aulas ainda n ensinaram a empregar essas coisas

 

OBS: quando sai a aula 6??

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

  • 0

Acho que tu não aprendeu nada com minhas aulas, pois não faria isso.

Citar

if not isPremium(cid) then
doPlayerSendCancel(cid, "Voce precisa ser VIP!")
return true
end
if getTopCorpse(topos) == null then 
return true
end
if getPlayerStorageValue (cid, 123123) ~= 1 then 
doPlayerSendCancel(cid, "Voce precisa ser coletor!")
return true
end

 

Eu ensinei como é a sintaxe completa do if.

Dá uma re-lida na aula sobre if e tenta refazer isso.

 

Tu auterou o objeto da variável, logo qualquer mudança não será feito no devido lugar.

Citar

local itemEx = getTopCorpse(topos)

 

Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, Poccnn disse:

Acho que tu não aprendeu nada com minhas aulas, pois não faria isso.

 

Eu ensinei como é a sintaxe completa do if.

Dá uma re-lida na aula sobre if e tenta refazer isso.

 

Tu auterou o objeto da variável, logo qualquer mudança não será feito no devido lugar.

 

esse script é antigo proff, por isso tantos if sei q deveria colocar elseif depois atualizo o script

mas como faço para que ele funcione do jeito que esta?

 

 

 

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

  • 0

Eu, se eu fosse tu, re-faria esse script do zero.

 

Se tu prestar atenção e tivesse aprendido que lua e sensível a maiúsculas e minúsculas tu saberia que essa função não está encontrando a variável correta.

 

local itemEx = getTopCorpse(topos)

Link para o comentário
Compartilhar em outros sites

  • 0
14 horas atrás, Poccnn disse:

Eu, se eu fosse tu, re-faria esse script do zero.

 

Se tu prestar atenção e tivesse aprendido que lua e sensível a maiúsculas e minúsculas tu saberia que essa função não está encontrando a variável correta.

 

local itemEx = getTopCorpse(topos)

realmente descuido meu e como eu disse script antigo rsrsrs esse script é da época do outro forum proff

eu deixei queto pois estava funcionando

ele funciona se eu deixar para remover o item ou por decay no item 

arrumei e continua sem funcionar

olha essa função

 

Spoiler

function getTopCorpse(position)

local pos = position

for n = 1, 255 do

    pos.stackpos = n

    local item = getTileThingByPos(pos)

    if item.itemid >= 2 and (string.find(getItemNameById(item.itemid), "fainted ") or string.find(getItemNameById(item.itemid), "defeated ")) then

       return getTileThingByPos(pos)

    end

end

return null

end

 

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

  • 0
4 horas atrás, Poccnn disse:

Tu já revisou se não há mais erro de digitação no script?

aparentemente esta sem erro, falta apenas remover tantos if mas isso vo fazer qd o script tiver funfando

ajuda aee proff?

 

vai sair nova aula tb n?

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

×
×
  • Criar Novo...