Tudo que FeeTads postou
-
Liberar Personagem No Site Após Missões
Se tu quiser, a gente pode testar e tentar fazer kkkk se quiser add Discord, é FeeTads#0246 aí da pra ir Call e testar em tempo real
-
Ajuda com spell de paralyze
eu uso esse script pra runa de paralyze local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 5000) setConditionFormula(condition, -1.0, 0, -0.99, 0) setCombatCondition(combat, condition) function onCastSpell(cid, var) if(not doCombat(cid, combat, var)) then return false end doSendMagicEffect(getThingPosition(cid), CONST_ME_MAGIC_GREEN) return true end e uso essa TAG no spells.xml data > spells > scripts > paralyze rune.lua <rune name="Paralyze" id="2278" allowfaruse="1" charges="1" lvl="54" maglv="18" exhaustion="2000" exhaustedGroup="support" icon="54" mana="50000" needtarget="1" blocktype="solid" event="script" value="support/paralyze rune.lua"> <vocation id="1"/> <vocation id="2"/> </rune> vi que vc usa como spell, no caso Falar a magia certo? procura pela tua magia de paralyze, vai ter isso: needweapon="1" dentro da tag se tiver isso na tag, só apagar e dar reload spells no OT, que ja funciona sem arma na mão
-
Item que heala e da buff
fiz aqui meu bom, mas creio que será necessário você testar antes de por em prática kkkkkk, caso tenha algum bug, manda print do erro no console que aparecer PF. colocar em qualquer arquivo action.lua ex: data > actions > scripts > foodBuff.lua colocar no actions.xml data > actions > actions.xml <action itemid="9998 script="foodBuff.lua"/> TROCAR O 9998 PELO ID DO SEU FOOD/ITEM local itemID = 9998 -- id do item local tempoDeBuff = 60 -- em segundos local porcentagemDeCura = 2 -- vai curar 2% por [tempo entre curas] durante [tempo de buff] local qtdDeSkill = 10 -- quantidade de skill que dará local efeito = 4 -- efeito que sairá do player local removerItem = true -- remover o item? true = remove, false = não remove local tempoEntreCuras = 1 * 1000 -- tempo entre o efeito da cura, 1 * 1000 = 1000ms logo //1 segundo local need_vocation = {1,2,3,4,5} -- IDs da vocações QUE PODEM usar o food local buff = SKILL_FISHING -- qual skill vai aumentar //pra saber qual skill vc quer aumentar procure por "skill" em "lib/000-constant.lua" local storage = 5474767 -- pode ser qualquer numero //não pode repetir numero de outra storage existente local storage_buff_ativo = 5474768 local function CuraFoodBuff(cid, flag) if isCreature(cid) then --se estiver logado entra, se não termina o loop, ou seja, se deslogar/morrer perde o efeito do food if flag > 0 then doCreatureAddHealth(cid, (getCreatureMaxHealth(cid) * (porcentagemDeCura/100))) -- n mexer :P doSendMagicEffect(getThingPos(cid), efeito) -- efeito que vai sair do player flag = getPlayerStorageValue(cid, storage) - os.time() addEvent(CuraFoodBuff, tempoEntreCuras, cid, flag) -- chama de novo a função passando -1 segundo pro tempo else doPlayerAddSkill(cid, buff, -qtdDeSkill, true) -- quando acabar o efeito seta o fishing pro normal setPlayerStorageValue(cid, storage_buff_ativo, -1) return true end else return true end end function onUse(cid, item, frompos, item2, topos) local msg_no_vocation = "Sua Vocação não pode usar esse item!" -- mensagem caso não tenha a voc necessária local msg_sucess = "Você usou o Heal Food, o efeito irá durar"..tempoDeBuff.." segundos" -- mensagem de sucesso local no_have_voc = true if item.itemid == itemID then local tempo = getPlayerStorageValue(cid, storage) - os.time() -- tempo recebe o tempo restante pra usar a potion de novo if tempo > 0 then -- se tempo for maior que 0, significa que está em uso if tempo > 60 then -- só pra mostrar bonitinho doPlayerSendCancel(cid,"Você precisa esperar "..math.floor(tempo/60).." minutos e "..(tempo%60).." segundos.") else doPlayerSendCancel(cid,"Você precisa esperar "..(tempo%60).." segundos.") end return true end for i=1, #need_vocation do -- checa as vocações que podem usar o food //setadas no cabeçalho if getPlayerVocation(cid) == need_vocation[i] then -- se for, aparece msg de sucesso na tela doPlayerSendTextMessage(cid, 22, msg_sucess) no_have_voc = false -- seta a variavel de não ter voc pra false, ou seja tem a voc necessaria break -- quebra o for depois disso //necessario deixar o BREAK end end if no_have_voc then doPlayerSendTextMessage(cid, 22, msg_no_vocation) -- se não tiver a vocação necessaria, manda msg avisando return true -- e sai da função end setPlayerStorageValue(cid, storage, os.time() + tempoDeBuff) -- storage pra salvar o tempo de buff, apenas pra tirar o skill de fishing caso o player deslogue/morra doPlayerAddSkill(cid, buff, qtdDeSkill, true) -- aumenta o skill setado no cabeçalho setPlayerStorageValue(cid, storage_buff_ativo, 1) if removerItem then -- se removerItem no cabeçalho for true REMOVE O ITEM, se não, não remove doRemoveItem(item.uid, 1) -- função de remover o item, não precisa mexer end CuraFoodBuff(cid, tempoDeBuff) -- chama a função end return true end coloquei como exemplo no script > 2% de cura por segundo, durante 60 segundos, OU SEJA, o player vai curar 100% (na vdd ele irá curar 120%) de life (PORÉM não irá bugar pq caso o tibia reconheça que o player está com 100% de vida, ele não extrapola esse limite de 100%, só ignora a cura). obviamente vc pode alterar como quiser no script tempoDebuff = 30 (durante 30 segundos) tempoEntreCuras = 1 * 500 (a cada meio segundo) e o MAIS IMPORTANTE, itemID = 9998 (trocar o 9998 pro id do item) PS: caso o player morra/deslogue, irá perder o buff de cura da potion, PORÉM não perderá o skill **OBRIGATÓRIAMENTE** você precisará checar isso em algum creaturescript de login ex: data > creaturescripts > scripts > login.lua (login.lua é um arquivo padrão que existe em todo ot) procura por: function onLogin(cid) e logo abaixo adicione isso: if getPlayerStorageValue(cid, 5474768) == 1 then local buff = SKILL_FISHING -- PRECISA SER O MESMO do colocado no script do actions local qtdDeSkill = 10 -- PRECISA SER O MESMO do colocado no script do actions local liberar_food_pra_uso_apos_morte = true --Liberar o uso do food após o player morrer com ele ativo? true = libera o uso / false = o player tem que esperar o cooldown do uso acabar if liberar_food_pra_uso_apos_morte then setPlayerStorageValue(cid, 5474767, 0) end doPlayerAddSkill(cid, buff, -qtdDeSkill, true) setPlayerStorageValue(cid, 5474768, -1) end assim que ele logar, após ter deslogado/morrido com o food la ativo, irá tirar o buff de skill que foi adicionado. CASO queira mudar o EFEITO que sai do player, vai no teu GOD, e digita /z e o numero ex: /z 5 vai sair no GOD um efeito existem 69 efeitos (em tibia normal) ai vc procura um legal, e coloca no lugar de local efeito = 10
-
Liberar Personagem No Site Após Missões
da pra fazer, mas teria que modificar o createCharacters.php fazendo uma busca na DB, teria que criar uma nova coluna no accounts, e quando o personagem fizesse tal quest, task etc.. tal npc/recompensa, daria um update nessa Account mudando o valor, e então quando ele fosse criar, ai na criação, faria a busca por esse valor da DB, e mostraria tal personagem pra poder criar. daria pra fazer até por storage, o que acho até melhor, pq caso necessite resetar o ot, não ficaria salvo na conta (nada que um comando com update não resolva, mas como eu sou preguiçoso gosto de fazer da maneira as vezes mais simples ?) é chato e precisaria de testes, porém não impossivel de fazer alguns ja fazem isso, porem libera a vocação ou "skin" pro char ja existente, também acho o mais pratico...
-
Adicionar skills no personagem
eu uso um talk, mas creio que todo OT ja tenha. data > talkactions > scripts > skill.lua function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local t = string.explode(param, ",") if(not t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Not enough params.") return true end local pid = getPlayerByNameWildcard(t[1]) if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[1] .. " not found.") return true end t[2] = t[2]:lower() local skill = SKILL_IDS[t[2]] if(not skill) then local tmp = t[2]:sub(1, 1) if(tmp == 'l' or tmp == 'e') then skill = SKILL__LEVEL elseif(tmp == 'm') then skill = SKILL__MAGLEVEL else skill = tonumber(t[2]) if(not skill or skill < SKILL_FIRST or SKILL > SKILL__PRE_LAST) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Such skill does not exists.") return true end end end local amount = tonumber(t[3]) if(not amount or amount == 0) then amount = 1 end doPlayerAddSkill(pid, skill, amount, true) return true end ai registrar no xml data > talkactions > talkactions.xml <talkaction log="yes" access="5" words="/skill;/addskill" event="script" value="skill.lua"/> ai usar o comando /addskill nome, skill, quantidade ex: /addskill tester, axe, 10 skills são todas as existentes: axe, sword, level, fishing, magic etc..
-
(Resolvido)Premmy no nick
tmj meu bom, se ajudei deixa o REP+ marotinho kkkkkkk, qualquer coisa se houver bug só responder, se puder, aki embaixo na esquerda tem "mark as solution" pra marcar o código como solucionado, isso ajuda caso alguém queira encontrar, se vc puder marcar como solucionado ali
-
(Resolvido)Premmy no nick
function Split(s, delimiter) result = {}; for match in (s..delimiter):gmatch("(.-)"..delimiter) do table.insert(result, match); end return result; end function onLogin(cid) if getPlayerAccess(cid) > 2 then -- ignora GM+ return true end local func = db.query or db.executeQuery local namePlayer = getPlayerName(cid) local checkPremmy = Split(namePlayer, " ") if isPremium(cid) and checkPremmy[1] ~= "[P]" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você será desconectado pra mudança de nome!") --Msg em vermelho na tela do player addEvent(function() if isCreature(cid) then --verifica se o player ainda ta on e executa doRemoveCreature(cid) --desloga o char func('UPDATE `players` SET `name` = "[P] '..namePlayer..'" WHERE `name` = "'..namePlayer..'"') --executa a função na DB end end, 6000) -- 2000 = 2s pra deslogar o player elseif not isPremium(cid) and checkPremmy[1] == "[P]" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você será desconectado pra mudança de nome!") addEvent(function() if isCreature(cid) then --verifica se o player ainda ta on e executa -- não mexer em nada daqui pra baixo ****** local split = Split(getPlayerName(cid), " ") -- função pra tirar o [P] local nomeAntigo = '' local space = " " for i=2, #split do nomeAntigo = nomeAntigo..split[i] if i+1 <= #split then --se ainda tiver mais nomes nomeAntigo = nomeAntigo..space -- caso seja nome composto add espaço ex: Pedro Mauro end end -- não mexer em nada pra cima ****** doRemoveCreature(cid) --desloga o char func('UPDATE `players` SET `name` = "'..nomeAntigo..'" WHERE `name` = "'..namePlayer..'"') --executa a função na DB end end, 6000) -- 2000 = 2s pra deslogar o player end return true end coloca esse código todo no lugar. e testa em OUTRO boneco qualquer pra ver
-
(Resolvido)Premmy no nick
esqueci de por as aspas da func da DB kkkk segue o código atualizado: function Split(s, delimiter) result = {}; for match in (s..delimiter):gmatch("(.-)"..delimiter) do table.insert(result, match); end return result; end function onLogin(cid) if getPlayerAccess(cid) > 2 then -- ignora GM+ return true end local func = db.query or db.executeQuery local namePlayer = getPlayerName(cid) if isPremium(cid) and getPlayerStorageValue(cid, 25425466) == -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você será desconectado pra mudança de nome!") --Msg em vermelho na tela do player addEvent(function() if isCreature(cid) then --verifica se o player ainda ta on e executa setPlayerStorageValue(cid, 25425466, 1) --seta storage da mudança pra 1, pode mudar pra qualquer numero o "25415466" doRemoveCreature(cid) --desloga o char func('UPDATE `players` SET `name` = "[P] '..namePlayer..'" WHERE `name` = "'..namePlayer..'"') --executa a função na DB end end, 6000) -- 2000 = 2s pra deslogar o player elseif not isPremium(cid) and getPlayerStorageValue(cid, 25425466) == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você será desconectado pra mudança de nome!") addEvent(function() if isCreature(cid) then --verifica se o player ainda ta on e executa setPlayerStorageValue(cid, 25425466, -1) --seta a storage pra -1 -- não mexer em nada daqui pra baixo ****** local split = Split(getPlayerName(cid), " ") -- função pra tirar o [P] local nomeAntigo = '' local space = " " for i=2, #split do nomeAntigo = nomeAntigo..split[i] if i+1 <= #split then --se ainda tiver mais nomes nomeAntigo = nomeAntigo..space -- caso seja nome composto add espaço ex: Pedro Mauro end end -- não mexer em nada pra cima ****** doRemoveCreature(cid) --desloga o char func('UPDATE `players` SET `name` = "'..nomeAntigo..'" WHERE `name` = "'..namePlayer..'"') --executa a função na DB end end, 6000) -- 2000 = 2s pra deslogar o player end return true end copia esse e cola, pq mexi da func de update, esse é pra ta 100% acabei mexendo um pouco mais, kkkk vou colocar outra verificação mano, pra checar se ja tem [p] no nome na hora de tirar
-
(Resolvido)Premmy no nick
cria um arquivo com o nome que quiser tipo no scripts do creaturescripts data > creaturescripts > scripts > nomePremmy.lua ai vai no creaturescripts.xml data > creaturescripts > creaturescripts.xml e coloca isso em qualquer lugar: <event type="login" name="nomePremmy" event="script" value="nomePremmy.lua"/> que no caso, o script que eu te mandei ai, vai escrito dentro desse nomePremmy, cria o arquivo .lua e cola o script dentro
-
Erro autoloot
ele ta puxando alguma condição de outro arquivo, teria que ver qual outro arquivo ele puxa, pq não consegui nem achar qual eh a função, mas ta dentro do function onDeath talvez algum arquivo da lib tenha essa função doUpdatePokemonsBar tenta procurar pra ver
-
Erro autoloot
posta esse script goback.lua
-
(Resolvido)[ERROR] onThink no console
não faz o menor sentido ele dar erro, só se você não tiver a função de getPlayerOnline na tua source tlg?
-
(Resolvido)[Resolvido] existe função pra checar se algum item é ring ou colar?
function getItemType(itemid) local slottypes = {"head", "body", "legs", "feet", "ring", "necklace"} local consts = { ["head"] = CONST_SLOT_HEAD, ["armor"] = CONST_SLOT_ARMOR, ["legs"] = CONST_SLOT_LEGS, ["feet"] = CONST_SLOT_FEET, ["ring"] = CONST_SLOT_RING, ["necklace"] = CONST_SLOT_NECKLACE } local arq = io.open("data/items/items.xml", "r"):read("*all") local attributes = arq:match('<item id="' .. itemid .. '".+name="' .. getItemNameById(itemid) ..'">(.-)</item>') local slot = "" for i,x in pairs(slottypes) do if attributes:find(x) then slot = x break end end if slot == "body" then slot = "armor" end return consts[slot] end a solução foi essa kkkkk, achei algumas funções de como pegar no items.xml e arrumei a função, ela retorna exatamente o slot que o item vai, porém items sem slot definido bugam kkkkk ex: usar pedra de refine na armor > print(getItemType(itemEx.itemid)) a saida do console será: 4 e então você pode escolher se o player pode ou não usar o refine na armor ex: if getItemType(itemEx.itemid) == 4 then doPlayerSendTexTMessage(cid, 22, "não pode usar refina na armor") return true end ex: getItemType(2160) --id do crystal coin vai bugar pq o gold não tem slotType, porém pra evitar bugs desse estilo, nos scripts junto com getItemType eu uso " not isStackable(itemid) " pq ai se o item não for stackavel ele não buga kkkkkk tmj esse script não sei quem começou ele pois tava banido do forum que peguei, e como arrumei uns 30% dele vou disponibilizar sem créditos **não sei quem é o dono desse script e se tem 100% funcional, mas tmj <3**
-
[AJUDA] CRYSTAL NAO GANHA SPELL DA VOCAÇÃO
coloca um print(gem) pra ver oq mostra no console e manda uma print. e o action ID das estatuas está certo? estatua1 = action id: 8635 estatua2 = action id: 8636 estatua3 = action id: 8633 ....
-
Erro autoloot
parece que tu pode ta com item bugado dropando do bixo, tipo piso, algum ID que dropa que não eh item pickable
-
(Resolvido)Premmy no nick
esse eh o isPremium(cid) da source ja, pra pegar todo o script eh chatinho kkkkk, vou fazer o script pra ele, mas caso ele não tenha na source n vai funfar tbm function Split(s, delimiter) result = {}; for match in (s..delimiter):gmatch("(.-)"..delimiter) do table.insert(result, match); end return result; end function onLogin(cid) if getPlayerAccess(cid) > 2 then -- ignora GM+ return true end local func = db.query or db.executeQuery local namePlayer = getPlayerName(cid) if isPremium(cid) and getPlayerStorageValue(cid, 25425466) == -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você será desconectado pra mudança de nome!") --Msg em vermelho na tela do player addEvent(function() if isCreature(cid) then --verifica se o player ainda ta on e executa setPlayerStorageValue(cid, 25425466, 1) --seta storage da mudança pra 1, pode mudar pra qualquer numero o "25415466" doRemoveCreature(cid) --desloga o char func("UPDATE `players` SET `name` = [P] "..namePlayer.." WHERE `name` = "..namePlayer..";") --executa a função na DB end end, 2000) -- 2000 = 2s pra deslogar o player elseif not isPremium(cid) and getPlayerStorageValue(cid, 25425466) == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você será desconectado pra mudança de nome!") addEvent(function() if isCreature(cid) then --verifica se o player ainda ta on e executa setPlayerStorageValue(cid, 25425466, -1) --seta a storage pra -1 -- não mexer em nada daqui pra baixo ****** local split = Split(getPlayerName(cid), " ") -- função pra tirar o [P] local nomeAntigo = '' for i=2, #split do nomeAntigo = nomeAntigo + split[i] if i+1 <= #split then --se ainda tiver mais nomes nomeAntigo = nomeAntigo + ' ' -- caso seja nome composto add espaço ex: Pedro Mauro end end -- não mexer em nada pra cima ****** doRemoveCreature(cid) --desloga o char func("UPDATE `players` SET `name` = "..nomeAntigo.." WHERE `name` = "..namePlayer..";") --executa a função na DB end end, 2000) -- 2000 = 2s pra deslogar o player end return true end @lolksky ta na mão, PORÉM sugiro **FORTEMENTE** tu testar isso antes de por em pratica no teu OT kkk, não cheguei testar pra ver se ta 100%
-
(Resolvido)Premmy no nick
-
(Resolvido)Usar um item em outro e ganhar stg
local config = { itemY = 2160, -- Id do item Y message = 'A mensagem que ira aparecer quando usar o item X no item Y.', storage = 412311 } function onUse(cid, item, fromPosition, itemEx, toPosition) -- esse if o player só usa 1x e nunca mais if getPlayerStorageValue(cid, config.storage) == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já usou esse item no item Y.") return true end if (itemEx.itemid == config.itemY) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.message) doRemoveItem(item.uid, 1) -- storage de usar apenas 1x setPlayerStorageValue(cid, config.storage, 1) end return true end ta na mão meu querido
-
(Resolvido)[Resolvido] existe função pra checar se algum item é ring ou colar?
sim, existe as 4 condições, porém não manjo usar as CONDITIONID_NECKLACE = 2 CONDITIONID_RING = 9
-
(Resolvido)[Resolvido] existe função pra checar se algum item é ring ou colar?
.Qual servidor ou website você utiliza como base? OTX2 - mattyx Qual o motivo deste tópico? existe alguma função pra checar se algum item é ring? exemplo: isRing(item) ? Salve rapaziada. alguém sabe se existe alguma função pra checar se algum item é ring ou necklace? atualmente tenho uma "gambiarra" itemEx.itemid == getPlayerSlotItem(cid, 9).itemid isso é redundante pq checa se o itemID que estou tentando usar a pedra, é o mesmo ID do slot em uso do ring, porém se ele estiver na BP não vai retornar um true pra isso alguém manja como faz pra checar o value do slotType do item? não achei nada que me de essa mão
-
(Resolvido)[ERROR] onThink no console
bota o código assim: local config = { lottery_hour = "2 hours", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message) rewards_id = {2494, 2472, 2514, 2160}, -- ID dos Itens Sorteados na Loteria crystal_counts = 10, -- Usado somente se a rewards_id for crystal coin (ID: 2160). website = "yes", -- Only if you have php scripts and table `lottery` in your database! days = { "Monday-08:00", "Monday-13:00", "Monday-19:30", "Tuesday-08:00", "Tuesday-13:00", "Tuesday-19:30", "Wednesday-08:00", "Wednesday-13:00", "Wednesday-19:30", "Thursday-08:00", "Thursday-13:00", "Thursday-19:30", "Friday-01:22", "Friday-13:00", "Friday-18:15", "Saturday-21:27", "Saturday-21:28", "Saturday-21:29", "Sunday-08:00", "Sunday-13:00", "Sunday-19:30" } } local function getPlayerWorldId(cid) if not(isPlayer(cid)) then return false end local pid = getPlayerGUID(cid) local worldPlayer = 0 local result_plr = db.getResult("SELECT * FROM `players` WHERE `id` = "..pid..";") if(result_plr:getID() ~= -1) then worldPlayer = tonumber(result_plr:getDataInt("world_id")) result_plr:free() return worldPlayer end return false end local function getOnlineParticipants() local players = {} for _, pid in pairs(getPlayersOnline()) do if getPlayerAccess(pid) <= 2 and getPlayerStorageValue(pid, 281821) <= os.time() then table.insert(players, pid) end end if #players > 0 then return players end return false end function onThink(cid, interval) if table.find(config.days, os.date("%A-%H:%M")) then -- checando se há players online local onlines = {} for _, pid in pairs (getPlayersOnline()) do table.insert(onlines, pid) end if #onlines < 1 then return true end local query = db.query or db.executeQuery local random_item = config.rewards_id[math.random(1, #config.rewards_id)] local item_name = getItemNameById(random_item) local data = os.date("%d/%m/%Y - %H:%M:%S") local online = getOnlineParticipants() if online then local winner = online[math.random(1, #online)] local world = tonumber(getPlayerWorldId(winner)) if(random_item == 2160) then doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24) doPlayerAddItem(winner, random_item, config.crystal_counts) doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .." " .. getItemNameById(random_item) .. "s! Congratulations! (Next lottery in " .. config.lottery_hour .. ")") else doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24) doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " ..getItemNameById(random_item) .. "! Congratulations! (Next lottery in " .. config.lottery_hour .. ")") doPlayerAddItem(winner, random_item, 1) end if(config.website == "yes") then query("INSERT INTO `lottery` (`name`, `item`, `world_id`, `item_name`, `date`) VALUES ('".. getCreatureName(winner).."', '".. random_item .."', '".. world .."', '".. item_name .."', '".. data .."');") end else print("Ninguem OnLine pra ganhar na loteria") end end return true end
-
Erro autoloot
posta essa função da tua lib data > lib > 050-function.lua
-
(Resolvido)[ERROR] onThink no console
acima de players = getPlayersOnline() if #players < 1 then return true end coloca assim: local players = {} players = getPlayersOnline() if #players < 1 then return true end
-
Função level
TMJ meu bom, se puder deixar o REP+ tbm na respostar kkkkkkk agradeceria, qualquer coisa pode me marcar aki no forum que tento responder, ou pode chamar discord que tento ajudar tbm
-
Função level
então é só colocar o getplayer level no começo do on say, assim: local config = { --vocation id = {storage, nova voc, looktype, efeito} ------------ NARUTO ------------- [215] = {30023, 630, 971, 252}, need_level = 500 } local from,to = {x=1001, y=705, z=7},{x=1031, y=737, z=7} -- começo e final do mapa local from2,to2 = {x=1011, y=705, z=6},{x=1031, y=738, z=6} -- começo e final do mapa local from3,to3 = {x=1012, y=706, z=5},{x=1032, y=739, z=5} -- começo e final do mapa local from4,to4 = {x=985, y=598, z=7},{x=1044, y=652, z=7} -- começo e final do mapa local from5,to5 = {x=986, y=615, z=6},{x=1039, y=647, z=7} -- começo e final do mapa local from6,to6 = {x=990, y=616, z=5},{x=1040, y=647, z=5} -- começo e final do mapa local from7,to7 = {x=1475, y=856, z=7},{x=1484, y=867, z=7} -- começo e final do mapa local from8,to8 = {x=984, y=578, z=7},{x=1044, y=652, z=7} -- shinobi war function onSay(cid, words, param, channel) if getPlayerLevel(cid) < config.need_level then doPlayerSendCancel(cid, "Você precisa ser level".. config.need_level .."ou mais!") return true end local voc = config[getPlayerVocation(cid)] local posPlayer = getCreaturePosition(cid) if isInRange(posPlayer, from, to) or isInRange(posPlayer, from2, to2) or isInRange(posPlayer, from3, to3) or isInRange(posPlayer, from4, to4) or isInRange(posPlayer, from5, to5) or isInRange(posPlayer, from6, to6) or isInRange(posPlayer, from7, to7) or isInRange(posPlayer, from8, to8) then doPlayerSendCancel(cid, "Você não pode se transformar nesta área!") return true end if voc then if getPlayerStorageValue(cid, voc[1]) > 1 then doCreatureSay(cid, "Transformar!", TALKTYPE_MONSTER) doPlayerSetVocation(cid, voc[2]) doCreatureChangeOutfit(cid, {lookType = voc[3]}) doSendMagicEffect(posPlayer, voc[4]) else doPlayerSendCancel(cid, "Você não fez a quest para usar essa transformação!") end else doPlayerSendCancel(cid, "Você já está na transformação máxima!") end return true end "need_level" = level minimo necessário. **LEMBRANDO** level 500 assim que pegar 500, ja pode usar a function ai dentro do onSay, quando o player der talkaction e for 500 ou menos, retorna true e sai da function sem transformar caso queira uma tabela e talz, me manda no discord a ideia que tento fazer pra vc, e dei uma "arrumadinha" no código pra deixar mais clean kkkkk