-
Total de itens
1104 -
Registro em
-
Última visita
-
Dias Ganhos
20
Tudo que LuckOake postou
-
Você pode criar uma função, exemplo: function criadaPraRetornarAlgo() return math.random(1, 50) end Acabei de criar uma função que retorna um número aleatório entre 1 e 50. Vejamos assim: a = 3 if a == 3 then return 8 end Você viu que 'a' vale 3. Ai a verificação ficaria: if 3 == 3 then return 8 end E 3 == 3 é verdadeiro, logo ficaria assim: if true then return 8 end Você entendeu agora o princípio de condição. Agora vejamos exemplos de condições com funções booleanas*: if isCreature(cid) then Sempre que houver uma função sem um comparador (<, >, ==, etc), significa == true. Ou seja: if isCreature(cid) == true then Se o player for uma criatura, ficaria assim: if true == true then Ai o script prossegue nesse trecho. Retornar significa o valor que a função possui de acordo com as condições. Ou seja, na condição if isCreature(cid) then, se o player for uma criatura, retornará true, ou seja, o valor da função é true, é verdadeiro. Voltando à dúvida: if a == 3 then -- Se 'a' for igual a 3 Sabemos que true == true, então o script vai prosseguir nessa condição. Exemplo: if 3 == 3 then -- Verdadeiro print("Hello") -- Script printa Hello end -- Fim Agora, vejamos assim: if 4 == 3 then -- Falso print("Hello") -- Script não executa isso porquê a condição é falsa end -- Fim da condição *booleano: Que possui valor true ou false.
-
Estou começando a entender. Não sei o que é recursividade, mas tudo bem kk Quer dizer entao que essa parte serve dessa forma: O script acontece, e essa parte ai, serve pra ele acontecer novamente depois de 5 segundos? É isso? Isso ai mesmo. Não, assim: function onLogin(cid) local tempo = 10 if getPlayerFood(cid) == 0 then doPlayerFeed(cid, 100) end checkFood(cid, tempo) return true end OBS: Postei ali em cima te respondendo. OBS²: Recursividade (Clique)
-
Na verdade, essa função ai foi criada ali no script que te mandei, ela não é uma função padrão do TFS. O que começa o script mesmo é o onLogin(cid). Sim, para o script verificar se o player está online. Se ele estiver offline e o script continuar executando, vai dar erro por tentar executar funções em um objeto não presente. Sempre que tiver um return numa condição verdadeira, o script para nesse ponto e retorna algo. Exemplo: function ba(a) if a == 3 then -- Se 'a' for igual a 3 return 8 -- Retorna 8 end return false -- Retorna false caso nenhuma condição for verdadeira end Se você usar ba(3), vai retornar 8, pois a condição if a == 3 then foi cumprida e tinha um return ali. Mas se você usar ba(5), vai retornar false, pois nenhuma condição que retorna algo foi cumprida.
-
Aqui: return addEvent(checkFood, time*1000, cid, time) -- Inicia a função novamente após 'time' segundos Significa que a função vai executar novamente após 'time' segundos, ou seja, se 'time' é igual a 5, o script vai se iniciar novamente após 5 segundos depois da verificação anterior. Isso ai é tipo recursividade, só que não serve pra achar resultados. Poder pode, mas aconselho a colocar o return true antes do ultimo end. E do jeito que está ai, se o player tiver com food 0, é só relogar que a food volta pra 100. E também é melhor colocar o if getPlayerFood(cid) == 0 then antes do checkFood(cid, tempo) pra alimentar antes de verificar, pois dessa maneira, se o player tiver com 0 food ele vai perder 20 de life quando logar. A ordem das funções altera os acontecimentos.
-
Cara, tenta de novo: function getInfoFromDatabase(table, column, condition, id) local a = db.getResult("SELECT `"..column.."` FROM `"..table.."` WHERE `"..condition.."` = `"..id.."`;") if a:getID() == -1 then return false end local b = a:getDataString(""..column.."") return b, a:free() end
-
Se não entender algo, pode perguntar. function checkFood(cid, time) -- Início da função if not isCreature(cid) then -- Se não achar o player return true -- Retorna true e para o script elseif getPlayerFood(cid) <= 30 then -- Se a food do player for igual ou menor que 30 doCreatureAddHealth(cid, -20) -- Adicionar -20 hp nele doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você está com fome.") -- Mandar a mensagem doSendMagicEffect(getCreaturePosition(cid), 30) -- Mandar efeito end -- Fim return addEvent(checkFood, time*1000, cid, time) -- Inicia a função novamente após 'time' segundos end -- Fim da função function onLogin(cid) -- Ao fazer login local tempo = 10 -- A cada quantos segundos será verificado checkFood(cid, tempo) -- Iniciar a verificação da food return true end -- Fim
-
Cara, não sei se sou eu que tô fazendo alguma bobeira, até porque eu sou meio ruim pra mexer com querys, mas ainda tá me incomodando essa verificação. Olha só como tá, do jeito que você fez: SELECT `id` FROM `players` WHERE `id` = `3`; Selecionar o id de quem tiver id igual a 3? Estranho, não?
-
function getInfoFromDatabase(table, column, condition, id) local a = db.getResult("SELECT `"..column.."` FROM `"..table.."` WHERE `"..condition.."` = `"..id.."`;") local b = a:getDataString(""..column.."") return b, a:free() end Rapaz, você tá perguntando o seguinte pro sistema: Retornar o ID do player que tiver ID igual a 1. Não faz sentido isso, se o player tiver ID 1, vai retornar 1. Vê se você não tá usando a condição errada.
-
Faz o seguinte, usa um addEvent numa função onLogin: function checkFood(cid, time) if getPlayerFood(cid) <= 30 then doCreatureAddHealth(cid, -20) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você está com fome.") doSendMagicEffect(getCreaturePosition(cid), 30) end return addEvent(checkFood, time*1000, cid, time) end function onLogin(cid) local tempo = 10 -- A cada quantos segundos será verificado checkFood(cid, tempo) return true end
-
Try again: function getInfoFromDatabase(table, column, condition, id) local a = db.getResult("SELECT `"..column.."` FROM `"..table.."` WHERE `"..condition.."` = "..id..";") local b = a:getDataString(""..column.."") return b end Se não funcionar, me mostra como você tá usando a função.
-
talkaction Novo system de troca de nome!
tópico respondeu ao XkluivertX de LuckOake em Actions e Talkactions
Cara, esse ai é o sistema básico de troca de nome que já vem na maioria dos servidores pra download. Você simplesmente traduziu (parece que pelo Google Tradutor, pela falta de coerência nas frases) e ainda diz que 100% dos créditos são seus? Qualé, nem 1% de crédito você merece. Reportado pra tirarem esse tópico. Não faz sentido nenhum postar um sistema que você acha em todo lugar e que já vem em quase todos os servers. -
pedido Porque o meu for nao está lendo o restante?
pergunta respondeu ao Tony Araujo de LuckOake em Scripts
Não lia por causa do Return false. Se no primeiro não confirmasse, retornava false e parava o loop. Se confirmar, retorna true e também para o loop. -
dúvida [duvida] MYSQL como remover storages que contenham um dado em uma tabela
pergunta respondeu ao drakylucas de LuckOake em Scripts
Rapaz, nunca vi algo desse tipo, mas acho que dá pra fazer usando a tabela como uma string: local result = db.getResult("SELECT `value` FROM `player_storage` WHERE `key` = 15455") if result:getID() == -1 then return true end while true do local value = result:getDataString("value") if string.match(value, "{xx = (.-),") == "31" then local a = "{xx = "..string.match(value, "{xx = (.-),")..", yy = "..string.match(value, "yy = (.-)}").."}" db.executeQuery("DELETE FROM `player_storage` WHERE `value` = '"..a.."';") end if not result:next() then break end end Fiquei quase 1 hora tentando fazer isso, tomara que funcione .-. OBS: Faz um backup da database antes de executar o script. -
Gente, qualé, ao menos leiam o script todo antes de tentar ajudar alguém, desse jeito vocês não vão conseguir ajudar ninguém. @Topic Refiz o script aqui: local vip = false -- Precisa ser VIP? (true / false) local vip_storage = 37191 -- Storage da VIP local cobrar = false -- Cobrar em dinheiro? (true / false) local price = 10000 -- Preço em gold coins local item = true -- Cobrar algum item? (true / false) local id = 11192 -- ID do item local count = 10 -- Quantidade do item function onSay(cid, words, param) if not param then doPlayerSendCancel(cid, "Você precisa escrever algo.") return true elseif vip and getPlayerStorageValue(cid, vip_storage) - os.time() <= 0 then doPlayerSendCancel(cid, "Você não é vip.") return true elseif cobrar and not doPlayerRemoveMoney(cid, price) then doPlayerSendCancel(cid, "Você não possui gold coins suficientes.") return true elseif item and not doPlayerRemoveItem(cid, id, count) then doPlayerSendCancel(cid, "Você precisa ter "..count.."x "..getItemNameById(id).." para usar o broadcast.") return true end doBroadcastMessage(""..getCreatureName(cid).." ["..getPlayerLevel(cid).."]: "..param.."", MESSAGE_INFO_DESCR) return true end Configurando: local vip = false -- Precisa ser VIP? (true / false) local vip_storage = 37191 -- Storage da VIP local cobrar = false -- Cobrar em dinheiro? (true / false) local price = 10000 -- Preço em gold coins local item = true -- Cobrar algum item? (true / false) local id = 11192 -- ID do item local count = 10 -- Quantidade do item
-
Adiciona em alguma lib: function getInfoFromDatabase(table, column, condition, id) local a = db.getResult("SELECT `"..column.."` FROM `"..table.."` WHERE `"..condition.."`= "..id..";") local b = a:getDataString(""..column.."") return b end Usando a função: getInfoFromDatabase(players, resets, name, Batata) Ela faz isso: db.getResult("SELECT `resets` FROM `players` WHERE `name` = "Batata";") Ai é só usar assim: if getInfoFromDatabase(players, id, id, 1) == 1 then blablabla else doShutdown() end Acho que vai funcionar. Se não, vê se dá algum erro e posta aqui.
-
Vai em data/lib, cria um arquivo.lua lá e coloca isso: function getCooldown(cid, spellname) local storage = tostring(getPlayerStorageValue(cid, 40001)) local spellname = '"' .. spellname .. '"' return string.find(storage, spellname) and tonumber(string.match(storage, "%d+", string.find(storage, spellname) + #spellname)) - os.time() or 0 end function setCooldown(cid, spellname, seconds) local storage = getPlayerStorageValue(cid, 40001) == -1 and "" or tostring(getPlayerStorageValue(cid, 40001)) local spellname = '"' .. spellname .. '"' if string.find(storage, spellname) then local gsub = string.gsub(storage, string.match(storage, "%d+", string.find(storage, spellname) + #spellname), tostring(os.time() + seconds)) setPlayerStorageValue(cid, 40001, gsub) else setPlayerStorageValue(cid, 40001, storage .. spellname .. " " .. tostring(seconds + os.time()) .. " ") end end function isExhausted(cid, spellname) return getCooldown(cid, spellname) > 0 end
-
talkaction Sistema de Mudar o Nome do Player Por Comando
tópico respondeu ao DinoAdmin de LuckOake em Actions e Talkactions
Cara, coloca os créditos, né. Você não tá colocando créditos em nenhum script postado. Se continuar assim você vai acabar levando alerta ou REP- por ripping. ~~ Edit ~~ Não vi que o Gears já tinha postado. -
Êêê, viva a gambiarra. math.pow(n, pot) Ou se quiser uma função própria: function math.pot(n, pot) return n ^ pot end
-
Rapaz, legal o sistema, mesmo já existindo outras versões na net, mas você não acha que tá muito pogado não? OBS: A identação do seu código tá muito errada.
-
por enquanto ele dá storage ou item (item é como uma quest) nos meus testes foi um pouco falho, veja como ficou um script que era pra ser STEP: function onSay(cid, words, param, channel) if getPlayerStorageValue(cid, 3435) == 1 then doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Sorry, not possible.") return true end doPlayerAddItem(cid, 2323, 335) setPlayerStorageValue(cid, 3435, 1) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You obtained "..count.."x "..getItemNameById(2323).."") return true end Bug corrigido! Obrigado.
-
[Pokemon] Spr E Dat [Pokemons 5 Geração]
tópico respondeu ao Stigal de LuckOake em Exposições (Show Off)
Rapaz, vou ser claro. Não divulgue servidores aqui, esse não é o lugar correto. Esse tópico é apenas pra tirar dúvidas ou agradecer a postagem da SPR e DAT do client de Pokemon da 5ª geração. REP- por cometer 3 infrações. Ultima chance sua, na próxima é alerta e suspensão de 48 horas. -
Olá galera, para testar minhas habilidades de programador em Lua resolvi fazer um programa que cria scripts a seu gosto. Atualmente ele tem suporte para Actions, Talkactions e StepIn (Movement). Nada muito complexo, é apenas pra ajudar os iniciantes mesmo. O programa e sua source seguem em anexo na mensagem. Imagem: OBS: Programa feito em Lua. Download aqui em baixo \/ Lua Script Maker.rar
-
Tó: function onSay(cid, words) local player = getPlayerGUID(cid) local cap = 50000 -- Cap que o player ficará if not getTilePzInfo(getCreaturePosition(cid)) then doPlayerSendCancel(cid, "You can not reset your cap until you are not in PZ.") return true end doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `cap` = "..cap.." WHERE `id` = "..player) return true end Usa a tag que quiser.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.