galera criticas bem vindas eu estarei tentando melhorar é meu primeiro script fico muito feliz em ter conseguido faze-lo
Parabéns haha, ficou legal.
é assim que se começa 
Obrigado por me mencionar no vídeo :lolz:, a escolinha tá demorando mesmo, mas não tem o que eu possa fazer
, depois quando for possível disponibilizar ela, vou explicar o porque...
Sobre o script:
if exhaustion.check(cid, 40501) == false then
essa verificação é inútil, pois se é == false, quer dizer que é false, então não precisa por comparação ==
você pode simplesmente deixar assim:
if exhaustion.check(cid, 40501) then
Eu vi esse erro:
actions/scripts/testando.lua:11 attempt to concatenate a boolean value
por isso que eu indiquei o benefício de aprender o inglês no meu tópico do anúncio da escolinha, na hora de programar Lua!
Esse erro mostra exatamente em que arquivo e linha o erro acontece, e que tipo de erro.
actions/scripts/testando.lua:11 -> Linha 11 do arquivo testando.lua
attempt to concatenate a boolean value -> Tentativa de concatenar um valor booleano
Sinais de concatenação no lua são " . . " dois pontos finais (Em outras linguagens são como " + " ou " . " e etc... ) , eles ficam entre dois pedaços strings é usado para transformar um valor não string em string, ou uma variável string.
no seu caso, exhaustion.check está dando true e pula pro else, e mesmo o check dando true, o get dá false, não sei porque, pois você alterou o script, talvez tava fazendo o script com um God, ou player sem flag de exhaustion (permite não ter exhaust)
Nessa parte e em outras que você usa a função: getPlayerPosition(cid)
pos = getCreaturePosition(cid)
local position1 = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y+1, z=getPlayerPosition(cid).z}
local position2 = {x=getPlayerPosition(cid).x, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z}
você pode usar a variável para economizar:
pos = getCreaturePosition(cid)
local position1, position2 = {x=pos.x+1, y=pos.y+1, z=pos.z}, {x=pos.x, y=pos.y, z=pos.z}
Veja também como declarei as duas variáveis e a vírgula na linha 2 acima.
em todos os lugares que você precisa da posição do cid, você pode usar a variável pos.x, pos.y, pos.z ou pos.stackpos
Agora sobre as chances, me corrija se estiver errado, você não conseguiu sumonar o Gamakichi né?
isso acontece porque math.random(1) vai gerar um número entre 1 e 1, por isso nunca vai ser menor que a chance, e nunca vai sumonar.
Gamaguren = 20%
Gamakichi = 0%
Gamatatsu = 20%
Gamatatsu é 20% porque math.random que não é entre 0 e 1 , dá número inteiro...
você podia multiplicar por 10 e dividir por 10 , assim:
math.random(0, 50) / 10 = math.random(0, 5) só que com números com vírgulas
veja alguns resultados:
2.9
2.6
2.3
4.9
3.7
3.7
3.9
4.4
2.3
0.3
Eu fiz o script aqui para te mostrar, fiz ele dar 50% para cada monstro, assim:
function onUse(cid, item, fromPos, item2, toPos)
local config = {chance = {6, 12, "Gamaguren", -2000},
chance2 = {25, 50, "Gamakichi", -4000},
chance3 = {50, 100, "Gamatatsu", -6000},
}
local storage = 40501
local MaximoSummon = 10
local summons = getCreatureSummons(cid)
if exhaustion.check(cid, storage) == false then
exhaustion.set(cid, storage, 5) -- 5 é o segundo que voce quer que fique
else
doPlayerSendTextMessage(cid,22, "Espere[" ..exhaustion.get(cid, storage).."]")
return false
end
local pos = getCreaturePosition(cid)
local position1, position2 = {x=pos.x+1, y=pos.y+1, z=pos.z}, {x=pos.x, y=pos.y, z=pos.z}
if(table.maxn(summons) < MaximoSummon) then
for k, v in pairs(config) do
if v[1] >= math.random(0, v[2]) then
local monster1 = doSummonCreature(v[3], pos)
doPlayerAddMana(cid,v[4])
doConvinceCreature(cid, monster1)
doPlayerSendTextMessage(cid,22,"Kuchyose "..v[3]..".")
doSendMagicEffect(pos, 4)
return true
end
end
else
doPlayerSendTextMessage(cid,22,"Voce ja tem muitas summons.")
end
end
Uma pergunta, é opção o jutsu não funcionar? porque se não funcionar ele vai dar exhaust sem sumonar...
Aaaa quase esqueci, existem valores que não podem ser concatenados, como boolean, table, nil...
@@Dbko, Tente identar o código, não use o auto indent ainda, tente aprender a identar para depois usar ele...