Ir para conteúdo

L3K0T

Membro
  • Registro em

  • Última visita

Tudo que L3K0T postou

  1. function onSay(cid, words, param, channel) if param == '' then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.") return true end local t = string.explode(param, ";") if not t[2] then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "No destination specified.") return true end local pid = getPlayerByName(t[1]) if not pid or (isPlayerGhost(pid) and getPlayerAccess(pid) > getPlayerAccess(cid)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. t[1] .. " not found.") return true end local creature = getCreatureByName(t[2]) local player = getPlayerByName(t[2]) local waypoint = getWaypointPosition(t[2]) local tile = string.explode(t[2], ",") local pos = {x = 0, y = 0, z = 0} if player and (not isPlayerGhost(player) or getPlayerAccess(player) <= getPlayerAccess(cid)) then pos = getCreaturePosition(player) elseif creature and (not isPlayer(creature) or (not isPlayerGhost(creature) or getPlayerAccess(creature) <= getPlayerAccess(cid))) then pos = getCreaturePosition(creature) elseif type(waypoint) == 'table' and waypoint.x ~= 0 and waypoint.y ~= 0 then pos = waypoint elseif tile[2] and tile[3] then pos = {x = tonumber(tile[1]), y = tonumber(tile[2]), z = tonumber(tile[3])} else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid destination specified.") return true end if not pos or isInArray({pos.x, pos.y}, 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Destination not reachable.") return true end pos = getClosestFreeTile(cid, pos) if not pos or isInArray({pos.x, pos.y}, 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cannot perform action.") return true end local tmp = getCreaturePosition(pid) if doTeleportThing(pid, pos, true) and not isPlayerGhost(pid) then doSendMagicEffect(tmp, CONST_ME_POFF) doSendMagicEffect(pos, CONST_ME_TELEPORT) end return true end
  2. local storageValue = 123 -- Valor da storage específica que indica se o efeito deve ser ativado ou não function ariseText(cid) if not isPlayer(cid) then -- Verifica se o jogador ainda é válido return true end local texts = {"' . ,", ". ' ,", "' . ,", ", ' ."} local storage = getPlayerStorageValue(cid, storageValue) if storage > 1 then doSendAnimatedText(getCreaturePosition(cid), texts[math.random(1, #texts)], math.random(1, 255)) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN) -- Efeito mágico adicionado addEvent(ariseText, 1000, cid) end return true end function onLogin(cid) local storage = getPlayerStorageValue(cid, storageValue) if storage > 1 then ariseText(cid) else setPlayerStorageValue(cid, storageValue, 0) -- Remove a storage quando o efeito expirar end return true end
  3. @moleza Galera, começo usar a BOX está funcionando 100% porém está dando esse erro na distro: OBS: Mudei a box antes era a chance de math.random(1,100) e agora está (1,1000) antes a box não era agrupavel, agora é agrupavel até 100 unidades Notei que abro 20 box, quando vou abrir a 21 ele da o erro e não abre e também não conta Notei também que as box sempre vem mesma coisa não está realmente aleatorio ERRO: [14:47:38.600] [Error - Action Interface] [14:47:38.609] data/actions/scripts/pandora chest box.lua:onUse [14:47:38.613] Description: [14:47:38.615] data/actions/scripts/pandora chest box.lua:27: attempt to index local 'info' (a boolean value) [14:47:38.616] stack traceback: [14:47:38.617] data/actions/scripts/pandora chest box.lua:27: in function <data/actions/scripts/pandora chest box.lua:1 Script: function onUse(cid, item, fromPosition, itemEx, toPosition) local rewarditems = { {id = 13684, chance = 663, count = 1}, {id = 8760, chance = 150, count = 1}, {id = 8300, chance = 20, count = 1}, {id = 13613, chance = 40, count = 1}, {id = 13617, chance = 70, count = 2}, {id = 13975, chance = 50, count = 2}, {id = 13549, chance = 1, count = 1}, {id = 13550, chance = 1, count = 1}, {id = 13551, chance = 1, count = 1}, {id = 13552, chance = 1, count = 1}, {id = 13553, chance = 1, count = 1}, {id = 13554, chance = 1, count = 1}, {id = 13555, chance = 1, count = 1} } local box = 1990 --ID da box. local chance = math.random(1,1000) for i = 1, #rewarditems, 1 do if(chance < rewarditems[i].chance) then local info = getItemInfo(rewarditems[i].id) if(rewarditems[i].count > 1) then text = rewarditems[i].count .. " " .. info.plural else text = info.article .. " " .. info.name end if item.itemid == box then doPlayerAddItem(cid, rewarditems[i].id, rewarditems[i].count) doRemoveItem(item.uid, 1) doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) text = "You have received " .. text .. "." else text = "You have failed to open your mystery box. The item is to heavy or you have not enough space to take it." end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, text) return true else chance = chance - rewarditems[i].chance end end end
  4. Coloque a solução para ajudar outras pessoas?
  5. Coloque a solução para ajudar outras pessoas se for possível
  6. Duração de 10 minutos pode alterar o tempo, ao acabar o tempo o efeito para de sair e o player perde a storage, ela só poderá ser ganha novamente com algum sistema que vc deve ta fazebdo. local storageValue = 123 -- Valor da storage específica que indica se o efeito deve ser ativado ou não local effectDuration = 10 * 60 -- Duração do efeito em segundos (10 minutos) function ariseText(cid) if not isPlayer(cid) then -- Verifica se o jogador ainda é válido return true end local texts = {"' . ,", ". ' ,", "' . ,", ", ' ."} local storageEnd = getPlayerStorageValue(cid, storageValue) if storageEnd > os.time() then doSendAnimatedText(getCreaturePosition(cid), texts[math.random(1, #texts)], math.random(1, 255)) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN) -- Efeito mágico adicionado addEvent(ariseText, 1000, cid) else setPlayerStorageValue(cid, storageValue, 0) -- Remove a storage quando o efeito expirar end return true end function onLogin(cid) local storageEnd = getPlayerStorageValue(cid, storageValue) if storageEnd > os.time() then ariseText(cid) else setPlayerStorageValue(cid, storageValue, os.time() + effectDuration) -- Define o tempo de término do efeito ariseText(cid) end return true end
  7. L3K0T postou uma resposta no tópico em Suporte Tibia OTServer
    local items = { {pos = {x = 102, y = 184, z = 7}, itemid = 7382}, } local monster = {pos = {x = 102, y = 182, z = 7}, name = "Ancestral Guardian"} local config = { onSpawnMonster = CONST_ME_TELEPORT, -- efeito lançado quando monstro é criado onRemoveItem = CONST_ME_BLOCKHIT, -- efeito lançado quando item é removido missingItem = CONST_ME_POFF, -- efeito lançado quando não encontrou o item para remover } -- 255 faz com que não lance efeito algum local currentMonster = nil function onUse(cid, item, frompos, item2, topos) if currentMonster then -- Já há um monstro presente na sala return doPlayerSendCancel(cid, "Já existe um monstro na sala.") end local missingItems, removeItems = false, {} for _, itemcheck in pairs(items) do local i = getTileItemById(itemcheck.pos, itemcheck.itemid).uid if i < 1 then missingItems = true if tonumber(config.missingItem) and config.missingItem ~= 255 then doSendMagicEffect(itemcheck.pos, config.missingItem) end else table.insert(removeItems, i) end end if missingItems then return doPlayerSendCancel(cid, "Está faltando algum item.") else for _, iuid in pairs(removeItems) do if tonumber(config.onRemoveItem) and config.onRemoveItem ~= 255 then doSendMagicEffect(getThingPos(iuid), config.onRemoveItem) end doRemoveItem(iuid) end local newMonster = doCreateMonster(monster.name, monster.pos, false) if isCreature(newMonster) then currentMonster = newMonster if tonumber(config.onSpawnMonster) and config.onSpawnMonster ~= 255 then doSendMagicEffect(getThingPos(newMonster), config.onSpawnMonster) end end end return true end function onCreatureDeath(cid, corpse, killer) if currentMonster and corpse == currentMonster then currentMonster = nil end return true end
  8. Troque e adicione oque não tem em Spawn.cpp bool Spawn::findPlayer(const Position& pos) { SpectatorHashSet spectators; g_game.map.getSpectators(spectators, pos, false, true); for (Creature* spectator : spectators) { if (!spectator->getPlayer()->hasFlag(PlayerFlag_IgnoredByMonsters)) { return true; } } return false; } void Spawn::checkSpawn() { checkSpawnEvent = 0; cleanup(); uint32_t spawnCount = 0; for (auto& it : spawnMap) { uint32_t spawnId = it.first; if (spawnedMap.find(spawnId) != spawnedMap.end()) { continue; } spawnBlock_t& sb = it.second; if (!sb.mType->canSpawn(sb.pos)) { sb.lastSpawn = OTSYS_TIME(); continue; } if (OTSYS_TIME() >= sb.lastSpawn + sb.interval) { if (sb.mType->info.isBlockable && findPlayer(sb.pos)) { sb.lastSpawn = OTSYS_TIME(); continue; } if (sb.mType->info.isBlockable) { spawnMonster(spawnId, sb.mType, sb.pos, sb.direction); } else { scheduleSpawn(spawnId, sb, 3 * NONBLOCKABLE_SPAWN_INTERVAL); } if (++spawnCount >= static_cast<uint32_t>(g_config.getNumber(ConfigManager::RATE_SPAWN))) { break; } } } if (spawnedMap.size() < spawnMap.size()) { checkSpawnEvent = g_scheduler.addEvent(createSchedulerTask(getInterval(), std::bind(&Spawn::checkSpawn, this))); } }
  9. 123 é a storage que o player deverá ter local storageValue = 123 -- Valor da storage específica que indica se o efeito deve ser ativado ou não function ariseText(cid) if not isPlayer(cid) then -- Verifica se o jogador ainda é válido return true end local texts = {"' . ,", ". ' ,", "' . ,", ", ' ."} if getPlayerStorageValue(cid, storageValue) > 0 then doSendAnimatedText(getCreaturePosition(cid), texts[math.random(1, #texts)], math.random(1, 255)) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN) -- Efeito mágico adicionado end addEvent(ariseText, 1000, cid) return true end function onLogin(cid) if getPlayerStorageValue(cid, storageValue) > 0 then ariseText(cid) end return true end
  10. void Player::onTarget(Creature* target) { Creature::onTarget(target); if(target == this) { addInFightTicks(false); return; } if(hasFlag(PlayerFlag_NotGainInFight)) return; Player* targetPlayer = target->getPlayer(); if(targetPlayer && !isPartner(targetPlayer) && !isAlly(targetPlayer)) { if(!pzLocked && g_game.getWorldType() == WORLDTYPE_HARDCORE) { pzLocked = true; sendIcons(); } if(getSkull() == SKULL_NONE && getSkullType(targetPlayer) == SKULL_YELLOW) { addAttacked(targetPlayer); targetPlayer->sendCreatureSkull(this); } else if(!targetPlayer->hasAttacked(this)) { if(!pzLocked) { pzLocked = true; sendIcons(); } // Adicione a seguinte condição para receber o PZ lock no primeiro ataque if(getSkull() == SKULL_NONE) { addAttacked(targetPlayer); setSkull(SKULL_WHITE); g_game.updateCreatureSkull(this); targetPlayer->sendCreatureSkull(this); } else if(!Combat::isInPvpZone(this, targetPlayer) && !isEnemy(this)) { addAttacked(targetPlayer); if(getSkull() == SKULL_NONE && (!guildId || !targetPlayer->getGuildId())) { setSkull(SKULL_WHITE); g_game.updateCreatureSkull(this); } if(getSkull() == SKULL_NONE) targetPlayer->sendCreatureSkull(this); } } } addInFightTicks(false); }
  11. Agora só pega se o player tiver apenas 1 storage, se for 0 ou 2 superior não vai ter o bônus, aquele deixei MAIOR QUE... USE OUTRA STORAGE PRA EVITAR ERROS DO BÔNUS, RESETA AS STORAGES E VERIFIQUE NO BANCO DE DADOS SE ELAS REALMENTE FORAM APAGADAS -- Configurações local bonusStorage = 1000 -- Valor da storage para ativar o bônus local bonusHP = 500 -- Quantidade de HP do bônus function onLogin(cid) print("Player Login: " .. getPlayerName(cid)) local storageValue = getPlayerStorageValue(cid, bonusStorage) if storageValue == 1 then -- Verifica se o valor da storage é igual a 1 local previousHP = getCreatureHealth(cid) doCreatureAddHealth(cid, bonusHP) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ganhou um bônus de " .. bonusHP .. " HP!") print("Bônus de HP aplicado para " .. getPlayerName(cid) .. ". Vida anterior: " .. previousHP) end return true end
  12. --Hi! --Buy Runes, Buy Potions e Buy Rings local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local options = { ['potions'] = { {name = 'ultimate mana potion', id = 26029, buy = 438}, {name = 'ultimate health potion', id = 8473, buy = 310}, {name = 'strong health potion', id = 7588, buy = 100}, {name = 'strong mana potion', id = 7589, buy = 80}, }, ['runes'] = { {name = "avalanche rune", id = 2274, buy = 25}, {name = "chameleon rune", id = 2291, buy = 210}, }, ['rings'] = { {name = "ring of healing", id = 2214, buy = 100}, {name = "ring of the sky", id = 2123, buy = 200}, } } local function greetCallback(cid) npcHandler:setMessage(MESSAGE_GREET, "Bem-vindo! O que você gostaria de comprar hoje?") return true end local function creatureSayCallback(cid, type, msg) local player = Player(cid) if not npcHandler:isFocused(cid) then return false end if msgcontains(msg, "potions") then local optionText = "Aqui estão as poções disponíveis para compra:\n" for i, potion in ipairs(options['potions']) do optionText = optionText .. "\n[" .. i .. "] " .. potion.name .. " (" .. potion.buy .. " gold coins)" end npcHandler:say(optionText, cid) elseif msgcontains(msg, "runes") then local optionText = "Aqui estão as runas disponíveis para compra:\n" for i, rune in ipairs(options['runes']) do optionText = optionText .. "\n[" .. i .. "] " .. rune.name .. " (" .. rune.buy .. " gold coins)" end npcHandler:say(optionText, cid) elseif msgcontains(msg, "rings") then local optionText = "Aqui estão os anéis disponíveis para compra:\n" for i, ring in ipairs(options['rings']) do optionText = optionText .. "\n[" .. i .. "] " .. ring.name .. " (" .. ring.buy .. " gold coins)" end npcHandler:say(optionText, cid) elseif msgcontains(msg, "buy") or msgcontains(msg, "comprar") then local parameters = string.explode(msg, ' ') local category = parameters[2] local itemIndex = tonumber(parameters[3]) if category and itemIndex then local itemList = options[category] if itemList then local item = itemList[itemIndex] if item then local itemId = item.id local itemPrice = item.buy if player:getMoney() >= itemPrice then player:addItem(itemId, 1) player:removeMoney(itemPrice) npcHandler:say("Aqui está o seu " .. item.name .. ". Obrigado pela compra!", cid) else npcHandler:say("Desculpe, você não possui dinheiro suficiente para comprar este item.", cid) end else npcHandler:say("Desculpe, esse não é um item válido.", cid) end else npcHandler:say("Desculpe, essa não é uma categoria válida.", cid) end else npcHandler:say("Desculpe, comando inválido. Use 'buy category itemNumber'.", cid) end else return false end return true end npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  13. Tente assim -- Configurações local bonusStorage = 1000 -- Valor da storage para ativar o bônus local bonusHP = 500 -- Quantidade de HP do bônus function onLogin(cid) print("Player Login: " .. getPlayerName(cid)) local storageValue = getPlayerStorageValue(cid, bonusStorage) if storageValue >= 1 then local previousHP = getCreatureHealth(cid) doCreatureAddHealth(cid, bonusHP) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ganhou um bônus de " .. bonusHP .. " HP!") print("Bônus de HP aplicado para " .. getPlayerName(cid) .. ". Vida anterior: " .. previousHP) end return true end
  14. return true no final -- Configurações local bonusStorage = 1000 -- Valor do storage para ativar o bônus local bonusHP = 500 -- Quantidade de HP do bônus function onLogin(cid) if getPlayerStorageValue(cid, bonusStorage) == 1 then doCreatureAddHealth(cid, bonusHP) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ganhou um bônus de " .. bonusHP .. " HP!") end return true end
  15. Storage 1000 coloca a q vc for usar no seu sistema, coloquei print screen pra identificar onde está puxando primeiro ao logar. -- Configurações local bonusStorage = 1000 -- Valor do storage para ativar o bônus local bonusHP = 500 -- Quantidade de HP do bônus function onLogin(cid) print("Player Login: " .. getPlayerName(cid)) if getPlayerStorageValue(cid, bonusStorage) == 1 then doCreatureAddHealth(cid, bonusHP) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ganhou um bônus de " .. bonusHP .. " HP!") print("Bônus de HP aplicado para " .. getPlayerName(cid)) end end
  16. -- Configurações local bonusStorage = 1000 -- Valor do storage para ativar o bônus function onLogin(cid) local bonusActive = getPlayerStorageValue(cid, bonusStorage) == 1 if bonusActive then doCreatureAddHealth(cid, 500) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ganhou um bônus de 500 HP!") end end
  17. Esse erro no item editor do OTServ 8.54, uma possível solução seria compilar o cliente com a mesma versão, porém utilizando uma signature diferente. Às vezes, existem clientes com as mesmas versões que possuem signatures diferentes. Por exemplo, você pode ter o cliente 8.54v1 e o cliente 8.54v2. Ao compilar o cliente com uma signature diferente, você pode resolver o problema com o item editor. Certifique-se de usar a versão correta do cliente para corresponder à signature usada durante a compilação.
  18. A cada 1 hora local config = { hourly = "yes", -- allow only one enter per hour? level = 100, storage = 30015, entry = { {x = 247, y = 659, z = 13}, {x = 247, y = 660, z = 13}, {x = 247, y = 661, z = 13}, {x = 247, y = 662, z = 13} }, destination = { {x = 189, y = 650, z = 13}, {x = 189, y = 651, z = 13}, {x = 189, y = 652, z = 13}, {x = 189, y = 653, z = 13} } } config.hourly = getBooleanFromString(config.hourly) function onUse(cid, item, fromPosition, itemEx, toPosition) if(item.itemid == 1946) then if(config.hourly) then local lastEnter = getPlayerStorageValue(cid, config.storage) if lastEnter ~= -1 and os.time() - lastEnter < 3600 then -- 3600 seconds = 1 hour doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You can only enter once per hour.") return true else setPlayerStorageValue(cid, config.storage, os.time()) end end doTransformItem(item.uid, item.itemid - 1) return true end if(item.itemid ~= 1945) then return true end local players = {} for _, position in ipairs(config.entry) do local pid = getTopCreature(position).uid if(pid == 0 or not isPlayer(pid) or getCreatureStorage(pid, config.storage) > 0 or getPlayerLevel(pid) < config.level) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) return true end table.insert(players, pid) end for i, pid in ipairs(players) do doSendMagicEffect(config.entry[i], CONST_ME_POFF) doTeleportThing(pid, config.destination[i], false) doSendMagicEffect(config.destination[i], CONST_ME_ENERGYAREA) end doTransformItem(item.uid, item.itemid + 1) return true end
  19. Cadê o arquivo script data/creaturescripts/scripts/custom/check_premium.lua ? Posta ai o código
  20. É possível que o problema esteja relacionado a uma má configuração da sprite de um item. Por exemplo, se a sprite estiver configurada de uma maneira no item editor e de outra maneira no cliente, podem ocorrer erros. É importante garantir que as configurações sejam consistentes e correspondentes.Uma sugestão para solucionar o problema é testar a abertura de um corpo sem loot. Isso significa verificar se é possível abrir um corpo de um monstro ou contêiner no jogo que não tenha itens dentro. Ao realizar esse teste, é possível identificar se o problema está relacionado especificamente à configuração das sprites dos itens ou se existem outros fatores envolvidos. Caso os corpos sem loot possam ser abertos sem erros, será necessário revisar as configurações das sprites de itens, garantindo que elas estejam corretas tanto no item editor quanto no cliente. Certifique-se de que as sprites estejam nomeadas corretamente e que os caminhos das sprites estejam configurados de forma consistente em ambas as partes.
  21. -- Configurações local bonusStorage = 1000 -- Valor do storage para ativar o bônus function onLogin(cid) local bonusActive = getPlayerStorageValue(cid, bonusStorage) == 1 if not bonusActive then doPlayerAddHealth(cid, 500) setPlayerStorageValue(cid, bonusStorage, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ganhou um bônus de 500 HP!") end end
  22. -- Configurações local bonusStorage = 1000 -- Valor do storage para ativar o bônus local bonusDuration = 3600 -- Duração do bônus em segundos (3600 = 1 hora) function onLogin(cid) local bonusActive = getPlayerStorageValue(cid, bonusStorage) == 1 if bonusActive then doPlayerAddHealth(cid, 500) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ganhou um bônus de 500 HP!") end local bonusEndTime = getPlayerStorageValue(cid, bonusStorage + 1) if bonusEndTime > 0 and bonusEndTime <= os.time() then setPlayerStorageValue(cid, bonusStorage, 0) setPlayerStorageValue(cid, bonusStorage + 1, 0) doPlayerAddHealth(cid, -500) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Seu bônus de 500 HP acabou!") end end <event type="login" name="bonus_hp" script="bonus_hp.lua"/>
  23. local tab = { [4] = 10, -- [vocationID] = número da cor do texto animado [5] = 30, [6] = 50, [7] = 70 } function ariseText(cid) if not isPlayer(cid) then -- Verifica se o jogador ainda é válido return true end local texts = {"' . ,", ". ' ,", "' . ,", ", ' ."} local playerVocation = getPlayerVocation(cid) if playerVocation and tab[playerVocation] then doSendAnimatedText(getCreaturePosition(cid), texts[math.random(1, #texts)], tab[playerVocation]) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN) -- Efeito mágico adicionado end addEvent(ariseText, 1000, cid) return true end function onLogin(cid) if tab[getPlayerVocation(cid)] then ariseText(cid) end return true end
  24. agora testa os pontos pelo MySQL se for nulo n vai aparecercnada
  25. local tab = { [4] = 10, -- [vocationID] = número da cor do texto animado [5] = 30, [6] = 50, [7] = 70 } function ariseText(cid) local texts = {"' . ,", ". ' ,", "' . ,", ", ' ."} local playerVocation = getPlayerVocation(cid) if playerVocation and tab[playerVocation] then doSendAnimatedText(getCreaturePosition(cid), texts[math.random(1, #texts)], tab[playerVocation]) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN) -- Efeito mágico adicionado end if isPlayer(cid) then addEvent(ariseText, 1000, cid) end return true end function onLogin(cid) if tab[getPlayerVocation(cid)] then ariseText(cid) end return true end

Informação Importante

Confirmação de Termo