Legal ver o interesse das pessoas por scripting. Vamos seguir com algumas dicas.
Não separe os parâmetros de função com espaço como você fez na linha 2.
if getPlayerLevel (cid) >= 50 then
O correto é:
if getPlayerLevel(cid) >= 50 then
Embora a maioria das pessoas não ligue para isso, os scripts precisam de indentação, pois organiza suas linhas de código, e a leitura não fica pesada, mas sim agradável aos olhos dos programadores. Procure sobre indentação e tente praticar nos próximos scripts.
function onUse(cid, item, fromPosition, itemEx, toPosition)
if getPlayerLevel(cid) >= 50 then
doPlayerAddLevel(cid)
doRemoveItem(item.uid, 1)
else
doPlayerSendCancel(cid, "You need level 50 to use this item.")
end
return true
end
Agora para limitar o uso, durante um período de tempo, existe uma função chamada os.time() que armazena o tempo decorrido em segundos desde 01/01/1970. Para exemplificar, eu dei um print os.time() que retornou isso:
1398690049
Ok, aí você me pergunta, como eu vou fazer para limitar o uso de um item, usando essa função?
Armazene o valor dela acrescido de X segundos em uma storage e depois compare ela com ela mesmo e... não pera...
É isso mesmo.
Seu script ficaria assim:
function onUse(cid, item, fromPosition, itemEx, toPosition)
if getPlayerLevel(cid) >= 50 and os.time() > getCreatureStorage(cid, 33665) then
doPlayerAddLevel(cid)
doRemoveItem(item.uid, 1)
doCreatureSetStorage(cid, 33665, (os.time() + 60))
else
doPlayerSendCancel(cid, "You need level 50 to use this item or need to wait a minute.")
end
return true
end
Veja o que eu fiz, no momento que o jogador usou o item, peguei o tempo em segundos daquele momento, somei mais 60 segundos e armazenei em uma storage.
Na linha 2, faço uma comparação, se o tempo em segundos do momento de uma nova tentativa de uso já passou o tempo armazenado na storage, se já passou, é porque já passou um minuto e por aí vai.
Acho que dá pra entender desse jeito, só acho.
Abraço.