Ir para conteúdo

Featured Replies

Postado

Estou com uma duvida estou estou encabulado com isso >....<

 

No meu script de move ataques do meu pokemon em talkactions eu criei um novo pokemon mas em sua habilidade rest que seta uma outifit no pokemon que no caso seria a do snorlax dormindo.

 

local snorlax = {lookType = 258}
dewgong = {lookType = 545}
bigsnorlax = {lookType = 544}

 

abaixo a parte da spell Rest

 

elseif pokemon.x.spell == "Rest" then


doCreatureSay(getCreatureSummons(cid)[1], ""..string.upper(c[getCreatureOutfit(getCreatureSummons(cid)[1]).lookType].x.spell).."!", TALKTYPE_MONSTER)
doCreatureSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", use "..c[getCreatureOutfit(getCreatureSummons(cid)[1]).lookType].x.spell.."!", TALKTYPE_SAY)
exhaustion.set(cid, pokemon.x.ex, pokemon.x.cd)
if getCreatureName(getCreatureSummons(cid)[1]) == "Snorlax" then
doSetCreatureOutfit(getCreatureSummons(cid)[1], snorlax, 5000)
doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
elseif getCreatureName(getCreatureSummons(cid)[1]) == "Dewgong" then
doSetCreatureOutfit(getCreatureSummons(cid)[1], dewgong, 5000)
doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
elseif getCreatureName(getCreatureSummons(cid)[1]) == "Big Snorlax" then
doSetCreatureOutfit(getCreatureSummons(cid)[1], bigsnorlax, 5000)
doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
end
setPlayerStorageValue(getCreatureSummons(cid)[1], 4, 1)
local function rest(params)
if isCreature(params.cid) then
if isCreature(getCreatureSummons(params.cid)[1]) then
if getCreatureCondition(getCreatureSummons(params.cid)[1], CONDITION_OUTFIT) == true then
doCreatureAddHealth(getCreatureSummons(cid)[1], ((num2)+((getPlayerLevel(cid))*(num3))))
doSendAnimatedText(getThingPos(getCreatureSummons(cid)[1]), "+"..((num2)+((getPlayerLevel(cid))*(num3))).."", 32)
doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
end
end
end
end
for r = 1, 4 do
addEvent(rest, 1000*r, {cid = cid})
end
local function stoprest(params)
if isCreature(params.cid) then
if isCreature(getCreatureSummons(params.cid)[1]) then
doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(cid)[1]))
if getPlayerStorageValue(getCreatureSummons(params.cid)[1], 4) >= 1 then
setPlayerStorageValue(getCreatureSummons(params.cid)[1], 4, 0)
end
end
end
end
addEvent(stoprest, 4300, {cid = cid})
return 0

 

Bem no caso seria quando coloco

 

local snorlax = {lookType = 258}
local dewgong = {lookType = 545}
local bigsnorlax = {lookType = 544}

 

acontece este erro

 

[Error - LuaScriptInterface::loadFile] data/talkactions/scripts/move8.lua:2712: function at line 1726 has more than 60 upvalues
[Warning - Event::loadScript] Cannot load script (data/talkactions/scripts/move8.lua)
data/talkactions/scripts/move8.lua:2712: function at line 1726 has more than 60 upvalues

 

 

fiquei tentando entender o porque por longas horas, mas consegui resolver apenas retirando o local e deixando com global mesmo. Mas fiquei na duvida.

 

Move8 completo http://pastebin.com/7N5NTkUE

Postado

bom, algumas coisas à respeito do local:

- é uma variável que tem seu escopo delimitado pelo bloco, ou seja, se vc fizer:
 

local a = 1
print(a)

vai retornar 1
 

e

local a = 5
if true then
local a = 1
end
print(a)

vai retornar 5.

"Mas lobo, eu setei o a como 1, porque ele printa 5?" bem, o a só vai ser 1 dentro do bloco que você definiu ele, ou seja, apenas dentro do if."

- Ela (a váriavel local) é armazenada de outra forma, consumindo bem menos memória e fazendo o programa à acessar de forma mais rápida doque uma global

- Tem um número máximo de variáveis locais por função, se não me engano é 200, se vc atingir esse numero, vai dar merda.

Aqui tem um link explicando sobre o upvalues, acho que vai tirar sua dúvida (tá em ingles)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Postado
  • Autor

Poxa irei ler quando chegar em casa e consertar meu hd que deu problema. Irei deixar ao menos um rep como agradecimento. Estou tentando aprender a linguagem lua é aprendi mais im pouco co que vc disse. Obrigado.

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo