Ir para conteúdo
Banner com Efeitos

lordzetros

Membro
  • Registro em

  • Última visita

Solutions

  1. lordzetros's post in (Resolvido)Talkaction, comando /B (broadcast) não funcionando! was marked as the answer   
    É porque ele tá entrando na primeira condição, do flag. Caso seja tfs 1.3, deixe seu código atualizo com as funções da versão atual, ficando desta forma:
     
    function onSay(player, words, param) if not (player:hasFlag(PlayerFlag_CanBroadcast)) then return true end print("> " .. player:getName() .. " broadcasted: \"" .. param .. "\".") for _, targetPlayer in ipairs(Game.getPlayers()) do targetPlayer:sendPrivateMessage(player, param, TALKTYPE_BROADCAST) end return false end Caso não resolva, verifique se sua conta do player que está utilizando o comando tem acesso necessário, experimente colocar type 5. (sua database -> accounts -> conta_escolhida: type 5), desta forma:


    Caso não queira setar o nível de acesso da conta, pode modificar o script deixando desta forma:
     
    local nivel_acesso = 2 -- ID dos GMs nas novas versoes function onSay(player, words, param) if not (player:getGroup():getId() >= nivel_acesso) then return true end print("> " .. player:getName() .. " broadcasted: \"" .. param .. "\".") for _, targetPlayer in ipairs(Game.getPlayers()) do targetPlayer:sendPrivateMessage(player, param, TALKTYPE_BROADCAST) end return false end Modifique o nível de acesso, no caso tá 2 porque é GM (versão atual 1.3). Caso queira outro ID, modifique ali a variável 'nivel_acesso'.
  2. lordzetros's post in (Resolvido)Tile Multiplos Storages was marked as the answer   
    local config = { storage1 = 25091, storage2 = 25092, storage3 = 25093 } function onStepIn(cid, item, position, fromPosition) if (getPlayerStorageValue(cid, config.storage1) <= 0) then doPlayerSendCancel(cid, "You have not completed the first mission.") doTeleportThing(cid, fromPosition) doSendMagicEffect(position, 12) elseif (getPlayerStorageValue(cid, config.storage2) <= 0) then doPlayerSendCancel(cid, "You have not completed the second mission.") doTeleportThing(cid, fromPosition) doSendMagicEffect(position, 12) elseif (getPlayerStorageValue(cid, config.storage3) <= 0) then doPlayerSendCancel(cid, "You have not completed the third mission.") doTeleportThing(cid, fromPosition) doSendMagicEffect(position, 12) else doPlayerSendCancel(cid, "You accessed the prohibited area.") doSendMagicEffect(position, 13) end return true end Faça o teste, acredito que era só algum erro de codificação (às vezes acontece ao copiar e colar o código de algum fórum/site). 
  3. lordzetros's post in (Resolvido)[Erro] Script deixa você com Pontos negativo was marked as the answer   
    @Phineasz O problema está aí, colega, kkkk. A ideia do script, acredito eu, seja em que o jogador compre o documento por x points, assim ele pode efetuar a troca com algum outro player, no qual, esse documento continuará valendo x points. Veja:
    Quando o jogador digitar 'yes', o script criará o documento e em seguida dará ao jogador, mas ao mesmo tempo, está removendo do jogador o valor dos pontos 'trocados'. 
    doPlayerRemovePoints(cid, Count_Points)

    Entendeu?

    @Phineasz Acabei de ver o script do creaturescripts, e realmente ele tá fazendo o check dos points, então, no caso, remova a linha do código do NPC a qual citei acima... 
    doPlayerRemovePoints(cid, Count_Points)
  4. lordzetros's post in (Resolvido)Colocar mais players em um evento was marked as the answer   
  5. lordzetros's post in (Resolvido)Erro Script Wand - TFS 1.3 was marked as the answer   
    @BilauX 
    local min, max = 5000000,5000000 --Ataque mínimo e ataque máximo local w = { [1] = {ef = 46, sh = 29, dmg = COMBAT_FIREDAMAGE}, } function onUseWeapon(player, variant) local effect = player:getStorageValue(4561) local target = Creature(variant:getNumber()) if target then local wx = w[effect] or w[math.random(#w)] local target_pos = target:getPosition() player:getPosition():sendDistanceEffect(target_pos, wx.sh) addEvent(function() doAreaCombatHealth(player:getId(), wx.dmg, target_pos, 0, -min, -max, wx.ef) end, 100) end return true end  
  6. lordzetros's post in (Resolvido)Loteria - TFS 1.3 was marked as the answer   
    @BilauX Por nada.
     
    Segue script do tópico:
    local rewards = { {9002, 1}, {9004, 1}, {9693, 1}, {2160, 100}, } local function get_players() local t = {} for _, c in ipairs(Game.getPlayers()) do if (c:getGroup():getId() == 1) then table.insert(t, c) end end return t end function onTime(interval) local players = get_players() if (#players > 0 and #rewards > 0) then local uid, n = math.random(1, #players), math.random(1, #rewards) local ganhador = players[uid] local reward, count = rewards[n][1], rewards[n][2] if (ganhador and reward and count) then ganhador:addItem(reward, count) Game.broadcastMessage('O player '.. ganhador:getName()..' recebeu '.. count .. ' '..ItemType(reward):getName()..' na loteria.', MESSAGE_STATUS_WARNING) end end return true end  
  7. lordzetros's post in (Resolvido)AJUDA SCRIPT - TFS 1.3 - ADDON was marked as the answer   
    -- female, male local outfits = { ["citizen"] = {136, 128}, ["hunter"] = {137, 129}, ["mage"] = {138, 130}, ["knight"] = {139, 131}, ["noblewoman"] = {140, 132}, ["summoner"] = {141, 133}, ["warrior"] = {142, 134}, ["barbarian"] = {147, 143}, ["druid"] = {148, 144}, ["wizard"] = {149, 145}, ["oriental"] = {150, 146}, ["pirate"] = {155, 151}, ["assassin"] = {156, 152}, ["beggar"] = {157, 153}, ["shaman"] = {158, 154}, ["norsewoman"] = {252, 251}, ["nightmare"] = {269, 268}, ["jester"] = {270, 273}, ["brotherhood"] = {279, 278}, ["demonhunter"] = {288, 289}, ["yalaharian"] = {324, 325}, ["warmaster"] = {336, 335}, ["wayfarer"] = {366, 367}, ["afflicted"] = {431, 430}, ["elementalist"] = {433, 432}, ["deepling"] = {464, 463}, ["insectoid"] = {466, 465}, ["red baron"] = {471, 472}, ["crystal warlord"] = {513, 512}, ["soil guardian"] = {514, 516}, } local addondoll_id = 9693 function onSay(player, words, param) if player:getItemCount(addondoll_id) < 0 then player:sendCancelMessage("Voce nao tem addon doll!") return false end local split = param:split(",") local addonType = split[1] if not addonType then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Por favor utilize o comando corretamente. !addon first, mage") return false end addonType = addonType:lower() if addonType ~= "first" and addonType ~= "second" or split[2] == nil then player:sendCancelMessage("Por favor use o comando corretamente. Exemplo: !addon first,mage") return false end local outfitName = split[2] local outfit = outfits[outfitName:lower()] if not outfit then player:sendCancelMessage("Não existe nenhuma Outfit com esse nome.") return false end local type = (addonType == "first" and 1) or 2 local ps = (player:getSex() == 1 and 2) or 1 if player:hasOutfit(outfit[ps], type) then player:sendCancelMessage("Voce ja tem este addon") return false end player:removeItem(addondoll_id, 1) player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) player:addOutfitAddon(outfit[1], type) player:addOutfitAddon(outfit[2], type) player:sendTextMessage(MESSAGE_INFO_DESCR, string.format('Você recebeu o %s do Addon %s.', addonType:lower(), outfitName:lower())) return false end  
  8. lordzetros's post in (Resolvido)Colocar dia da semana nesse script was marked as the answer   
    Era erro de script mesmo, testa agora.

    Obs.: Tá configurado todos os dias, só remover os que você não quiser.
  9. lordzetros's post in (Resolvido)Boss heala com x de vida was marked as the answer   
    Cara, acredito que esteja faltando você colocar no arquivo do monstro, aquele .xml
    Procure o arquivo do Azazel e abaixo de uma tag fechada, você coloca isso:
    <script> <event name="azazel"/> </script>  
  10. lordzetros's post in (Resolvido)[Talkactions] [CreatureScripts] Autoloot coletando o dobro de dinheiro was marked as the answer   
    Auto_loot no creature scripts:
     
  11. lordzetros's post in (Resolvido)Ajuda Com Vip System was marked as the answer   
    @Rkkksalgado2 Não entendi direito o que você quer, mas... Se você estiver usando o sistema de vip criado por Kydrai (o qual você postou em anexo), para adicionar um item que dê x dias de vip, crie um arquivo data/actions/scripts/ chamado itemAddVip.lua e cole dentro:
    local config = { removeOnUse = "yes", -- remover quando usar ("yes" or "no") days = 30 -- dias que serão adicionados } function onUse(cid, item, fromPosition, itemEx, toPosition) addVipDays(cid, config.days) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. config.days .." dias de VIP no seu character.") if (config.removeOnUse == "yes") then doRemoveItem(item.uid, 1) end return true end  
    E em data/actions/actions.xml adicione dentro e abaixo de uma semelhante:
    <action itemid="id_do_item" event="script" value="itemAddVip.lua"/> Altere o itemid para o ID do item que você quer que dê Vip Days.
  12. lordzetros's post in (Resolvido)Precisa de x storage pra entra em x area was marked as the answer   
    Em data/actions/scripts/ crie um arquivo chamado setStoragePiso.lua e cole o código abaixo dentro dele:
    local storage = 43352 -- Storage, coloquei o mesmo do post, caso queira mudar, faça isso nos dois scripts. local msg_sucesso = "Opa, parece que voce pode entrar na area sagrada." -- Mensagem quando o usuário usar o item local msg_falha = "Voce ja tem permissao para entrar na area sagrada!" -- Caso o usuário ja tenha usado o item antes e nao saiu da área. local efeito = CONST_ME_HOLYDAMAGE -- Efeito quando player usar o item function onUse(cid, item, fromPos, item2, toPos) if (isPlayer(cid)) then if (getPlayerStorageValue(cid, storage) == -1) then setPlayerStorageValue(cid, storage, 1) doRemoveItem(item.uid, 1) doPlayerSendCancel(cid, msg_sucesso) doSendMagicEffect(getCreaturePosition(cid), efeito) else doPlayerSendCancel(cid, msg_falha) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) end end return true end  
    Em data/actions/actions.xml adicione este código abaixo de um semelhante:
    <action itemid="id_do_item" event="script" value="setStoragePiso.lua"/> OBS.: MUDE ACIMA O ID DO ITEM PARA O QUAL VOCÊ QUER QUE O PLAYER USE PARA SETAR O STORAGE
     
     
     
    Em data/movements/scripts/ crie um arquivo chamado pisoStorage.lua e adicione o código abaixo:
    local storage = 43352 -- Storage, coloquei o mesmo do post, caso queira mudar, faça isso nos dois scripts. local msg_entrar = "Voce entrou na area sagrada." -- Mensagem quando o player entrar na área. local msg_sem_permissao = "Voce nao esta autorizado a passar por aqui!" -- Caso player não tenha o storage ainda local telePosition = {x = 155, y = 54, z = 7} -- Posicao do local que o player será teleportado quando ele pisar na saída local msg_saida = "Voce saiu da area sagrada, agora esta sem permissao para andar por lá." -- Mensagem de quando o player sair da area function onStepIn(cid, item, pos, fromPos) if not (isPlayer(cid)) then return false end if (item.actionid == 45560) then if (getPlayerStorageValue(cid, storage) ~= -1) then doPlayerSendCancel(cid, msg_entrar) doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE) else doPlayerSendCancel(cid, msg_sem_permissao) doTeleportThing(cid, fromPos, true) end elseif (item.actionid == 45561) then setPlayerStorageValue(cid, storage, -1) doTeleportThing(cid, telePosition) doPlayerSendCancel(cid, msg_saida) end return true end  
    Em data/movements/movements.xml adicione este código abaixo de um semelhante:
    <movevent type="StepIn" actionid="45560;45561" event="script" value="pisoStorage.lua"/>  
    1 - Configure no seu editor de mapa no piso de entrada coloque o actionID = 45560
    2 - Ainda no editor de mapa, no piso de saída coloque o actionID = 45561
     
    Não fiz o teste, mas qualquer erro, pode postar aqui novamente que tentarei lhe ajudar. 
  13. lordzetros's post in (Resolvido)packet was marked as the answer   
    Em data/actions/scripts/ adicione um arquivo chamado packetPremiada.lua e cole este código dentro dele:
    local config = { {item = 2160, qntd_max = 100}, -- Segue a ordem: ID do item, quantidade maxima deste item que o player pode ganhar {item = 8303, qntd_max = 8}, {item = 8306, qntd_max = 6}, {item = 8326, qntd_max = 11}, {item = 9059, qntd_max = 1}, {item = 9969, qntd_max = 3}, -- para adicionar um novo, copie esta linha e adicione abaixo desta. } local qntd_max_itens = #config local msg_sucesso = "Opa, que caixa interessante!" -- Mensagem apos o player usar function onUse(cid, item, fromPos, itemEx, toPos) local random_qntd = math.random(1, qntd_max_itens) for i = 1, random_qntd do doPlayerAddItem(cid, config[i].item, math.random(1, config[i].qntd_max)) end doRemoveItem(item.uid,1) doCreatureSay(cid, msg_sucesso, TALKTYPE_ORANGE_1) doSendMagicEffect(getCreaturePosition(cid), 49) return true end  
    E em data/actions/actions.xml adicione este código abaixo de uma linha semelhante:
    <action itemid="id_da_Packet" event="script" value="packetPremiada.lua"/> Não esqueça de mudar acima o ID da Packet (id_da_Packet) que você quer que dê os itens.
     
  14. lordzetros's post in (Resolvido)Box ajudinha e alguem was marked as the answer   
    Em data/actions/scripts/ crie um arquivo chamado boxPremiada.lua
    local config = { {item = 2160, qntd = 100, chance = 65}, -- Segue a ordem: ID_do_item, quantidade_do_item, chance_do_item {item = 7417, qntd = 1, chance = 10}, {item = 9969, qntd = 1, chance = 20}, -- para adicionar um novo, copie esta linha e adicione abaixo desta. } local msg_sucesso = "Parabens! Voce ganhou um item premiado." -- Caso o player ganhe local msg_falha = "Nao foi desta vez, quem sabe na proxima, certo?" -- caso ele perca function onUse(cid, item, fromPos, itemEx, toPos) local c = config[math.random(1, #config)] if (c.chance >= math.random(1,100)) then doSendMagicEffect(fromPos, 49) doPlayerSendCancel(cid, msg_sucesso) doPlayerAddItem(cid, c.item, c.qntd) doRemoveItem(item.uid, 1) else doSendMagicEffect(fromPos, 3) doPlayerSendCancel(cid, msg_falha) doRemoveItem(item.uid, 1) end return true end  
    Em data/actions/actions.xml adicione este código abaixo de uma semelhante:
    <action itemid="2331" event="script" value="boxPremiada.lua"/>  
    Faz o teste e depois me dá um feedback se funcionou ou não, infelizmente ainda não testei.
  15. lordzetros's post in (Resolvido)Adicionando LvL Max Pra usa a talkaction reset was marked as the answer   
    Faz o teste, só alterar abaixo do lvl mínimo de reset, onde tem escrita 'lvl_max = ' (coloquei como 1000).
    --[[ SCRIPTING> MarcelloMkez <scriptING ]] --[[ [supreme Reset System] Autor: rafhael Versión: 1.0 TFS: 0.3.6 Testeado en: 8.60 Fórum: [Características] ~ Versión 1.0 ~ - Resets no Look; - Premium Account ou nao; - Mudar Vocação; - Limite de Resets; - Opções para Abilitar e Desabilitar Condições; [Em Construção] - Stages Free e Premium; - 'Talvez' um novo sistema de mudar Vocação; sem data para postagem. ]] function onSay(cid, words, param) --[Configurações de Condição]__ config = { --[[verdadeiro / Falso]] needPa = false, -- Precisa de Premium Account? [true / false] needPz = true, -- Precisa estar em Protection Zone? [true / false] battle = true, -- Precisa estar sem Batlle para Resetar? [true / false] withe = false, -- Players PK Withe pode Resetar? [true / false] red = false, -- Players PK Red pode Resetar? [true / false] tp = true, -- Teleportar para o Templo após o reset? [true / false] look = true, -- Mostrar Resets no Look do Player? [true / false] addLimite = true, -- Abilitar Limite de Resets? [true / false] setClasse = false, -- Mudar Vocação do player quando resetar? [true / false] storage = 100023, -- Storage [valor] --[Configurações do Reset]__ resetStatus = { player = getPlayerGUID(cid), -- nao Mude. lvl = 796 , -- Level Necessário para Resetar. [valor] lvl_max = 1000, -- Level máximo para usar o comando lvlreset = 100, -- Level que retornará após o Reset. [valor] limite = 1, -- Máximo de resets que um player pode chegar. [valor] newClasse = 0, -- Id da Nova Vocação após o Reset. [valor] tempo= 5 -- Tempo para o Player deslogar para Resetar. Em segundos. [valor] }, } --[Funções]__ function Reseting(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doPlayerSetVocation(cid, config.resetStatus.newClasse) doRemoveCreature(cid) db.query("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) db.query("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function noAll(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doRemoveCreature(cid) db.query("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) db.query("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) return TRUE end function noTeleporting(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doPlayerSetVocation(cid, config.resetStatus.newClasse) doRemoveCreature(cid) db.query("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) db.query("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) return TRUE end function noLook(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doPlayerSetVocation(cid, config.resetStatus.newClasse) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.query("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) db.query("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) return TRUE end function noClasse(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.query("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) db.query("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function setClasse(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doRemoveCreature(cid) db.query("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) db.query("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function look(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doRemoveCreature(cid) db.query("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) db.query("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function teleporting(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.query("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) db.query("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function getResets(cid) resets = getPlayerStorageValue(cid,config.storage) if resets < 0 then resets = 0 end return resets end local resets = getResets(cid) local needLvl ="voce precisa de "..config.resetStatus.lvl-getPlayerLevel(cid).." level's para resetar." local lvlMax = string.format("voce ja passou do level maximo [%s] de reset!", config.resetStatus.lvl_max) local msg ="~~[Reset: "..getResets(cid).."]~~ 'Sucesso ao Resetar! voce sera deslogado em "..config.resetStatus.tempo.." Segundos." --[Condiçoes]__ if(config.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerSendTextMessage(cid,22,"voce Precisa estar em Protection Zone Para Resetar.") return TRUE elseif(config.addLimite == true) and (getResets(cid) == config.resetStatus.limite) then doPlayerSendTextMessage(cid, 22, "voce ja e Reset!.") return TRUE elseif(config.withe == false) and (getCreatureSkullType(cid) == 3) then doPlayerSendTextMessage(cid,22,"voce ta PK White, por isso nao pode resetar.") return TRUE elseif(config.red == false) and (getCreatureSkullType(cid) == 4) then doPlayerSendTextMessage(cid,22,"voce ta PK Red, por isso nao pode resetar.") return TRUE elseif(config.needPa == true) and not isPremium(cid) then doPlayerSendTextMessage(cid,22,"voce Precisa ser Premium Account para Resetar.") return TRUE elseif(config.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerSendTextMessage(cid,22,"voce Precisa estar sem Battle para Resetar.") return TRUE elseif (getPlayerLevel(cid) >= config.resetStatus.lvl and getPlayerLevel(cid) <= config.resetStatus.lvl_max) and (config.tp == true) and (config.look == true) and (config.setClasse == true) then addEvent(Reseting, config.resetStatus.tempo* 1000, cid) elseif (getPlayerLevel(cid) >= config.resetStatus.lvl and getPlayerLevel(cid) <= config.resetStatus.lvl_max) and (config.tp == false) and (config.look == false) and (config.setClasse == false) then addEvent(noAll, config.resetStatus.tempo* 1000, cid) elseif (getPlayerLevel(cid) >= config.resetStatus.lvl and getPlayerLevel(cid) <= config.resetStatus.lvl_max) and (config.tp == false) and (config.look == true) and (config.setClasse == true) then addEvent(noTeleporting, config.resetStatus.tempo* 1000, cid) elseif (getPlayerLevel(cid) >= config.resetStatus.lvl and getPlayerLevel(cid) <= config.resetStatus.lvl_max) and (config.tp == true) and (config.look == false) and (config.setClasse == true) then addEvent(noLook, config.resetStatus.tempo* 1000, cid) elseif (getPlayerLevel(cid) >= config.resetStatus.lvl and getPlayerLevel(cid) <= config.resetStatus.lvl_max) and (config.tp == true) and (config.look == true) and (config.setClasse == false) then addEvent(noClasse, config.resetStatus.tempo* 1000, cid) elseif (getPlayerLevel(cid) >= config.resetStatus.lvl and getPlayerLevel(cid) <= config.resetStatus.lvl_max) and (config.tp == false) and (config.look == false) and (config.setClasse == true) then addEvent(setClasse, config.resetStatus.tempo* 1000, cid) elseif (getPlayerLevel(cid) >= config.resetStatus.lvl and getPlayerLevel(cid) <= config.resetStatus.lvl_max) and (config.tp == false) and (config.look == true) and (config.setClasse == false) then addEvent(look, config.resetStatus.tempo* 1000, cid) elseif (getPlayerLevel(cid) >= config.resetStatus.lvl and getPlayerLevel(cid) <= config.resetStatus.lvl_max) and (config.tp == true) and (config.look == false) and (config.setClasse == false) then addEvent(teleporting, config.resetStatus.tempo* 1000, cid) elseif (getPlayerLevel(cid) < config.resetStatus.lvl) then doPlayerSendCancel(cid, needLvl) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) elseif (getPlayerLevel(cid) > config.resetStatus.lvl_max) then doPlayerSendCancel(cid, lvlMax) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return TRUE end if doPlayerPopupFYI(cid, msg) then end return TRUE end  
  16. lordzetros's post in (Resolvido)(Summon) Não se atacar e nem o dono, dono não atacar sumon was marked as the answer   
    Em data/creaturescripts/scripts/ adicione no arquivo chamado SummonAntKillSummon 
    function onCombat(cid, target) if (isMonster(cid) and isMonster(target)) then if ((getCreatureMaster(cid)) == getCreatureMaster(target)) then return false end end return true end  
    Em data/creaturescripts/creaturescripts.xml adicione esta linha abaixo de uma semelhante:
    <event type="combat" name="AntiSummon" event="script" value="SummonAntKillSummon.lua"/> E no login.lua localizado em data/creaturescripts/scripts/
    registerCreatureEvent(cid, "AntiSummon")  
    Não cheguei a testar, qualquer coisa manda o retorno pra gente, \o.
  17. lordzetros's post in (Resolvido)Quest Com Storage Libera Acesso Para Uma Sala was marked as the answer   
    Em data/movements/scripts/ crie um arquivo chamado tileBau.lua, adicione dentro:
    local config = { storage = 88888, -- storage, coloquei o mesmo do post msgFalha = "Voce nao tem acesso ao VIP IV!", -- Caso o usuário não tenha o storage, esta mensagem será enviada para ele. } function onStepIn(cid, item, position, fromPosition) if not (isPlayer(cid)) then return false end if (item.actionid == 31531) then if (getPlayerStorageValue(cid,config.storage) == -1) then doPlayerSendCancel(cid,config.msgFalha) doTeleportThing(cid, fromPosition, true) doSendMagicEffect(fromPosition, CONST_ME_POFF) else doSendMagicEffect(position, CONST_ME_MAGIC_BLUE) end end return true end  
    Em data/movements/movements.xml adicione esta linha de código abaixo de uma semelhante:
    <movevent type="StepIn" actionid="31531" event="script" value="tileBau.lua"/>  
    Obs.: Não esqueça de colocar no mapa o actionid (31531) no piso que quer bloquear a passagem! Segue imagem de exemplo:

     
  18. lordzetros's post in (Resolvido)verificar storage pra usar comando de afk was marked as the answer   
    local FRASES = {"Ja Volto!", "Saindo!", "Afk!", "Ja Volto!", "AFK!"} -- Auto-Mensagens. local TEMPO = 2 -- Intervalo de Tempo em segundos. local storage = 123456 -- Storage para verificar do player local function doSendAutoMessage(cid, pos) if (isCreature(cid)) then npos = getThingPos(cid) if (pos.x == npos.x) and (pos.y == npos.y) and (pos.z == npos.z) then doSendAnimatedText(pos, FRASES[math.random(#FRASES)], math.random(255)) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) addEvent(doSendAutoMessage, TEMPO*1000, cid, npos) end end end function onSay(cid, words, param) if (getPlayerStorageValue(cid, storage) == -1) then return doPlayerSendCancelMessage(cid, "Voce nao pode utilizar este comando!") end pos = getThingPos(cid) doSendAnimatedText(pos, FRASES[math.random(#FRASES)], math.random(255)) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) doCreatureSay(cid, "Vo Ficar Afk, Perae Beleza ?!.", TALKTYPE_ORANGE_1) doPlayerPopupFYI(cid, "Voce ficou AFK, Para sair do AFK, Ande.") addEvent(doSendAutoMessage, TEMPO*1000, cid, pos) return true end Olá,
    Não cheguei a testar, mas basicamente ele vai checar se o player tem o storage, se tiver, ele vai executar o código, caso contrário, vai devolver a mensagem 'Voce nao pode utilizar este comando!'.
  19. lordzetros's post in (Resolvido)Ajustar Script ! #pls was marked as the answer   
    @leozincorsair Vish, é mesmo, nem prestei atenção quando alterei do invited (estava fazendo testes). 
    Pega aê:
    local a = { remove = 2596, -- Item que vai ser removido. add = 1476 -- Item que vai ser adicionado. } function onUse(cid, item, frompos, item2, topos) if (getPlayerItemCount(cid, a.remove) >= 1) then local house = getHouseByPlayerGUID(getPlayerGUID(cid)) if (not house or not getTileHouseInfo(getPlayerPosition(cid))) then doPlayerSendCancel(cid, "Voce precisa esta dentro de sua house!") doSendMagicEffect(frompos, 2) return 1 end doPlayerRemoveItem(cid, a.remove, 1) doPlayerAddItem(cid, a.add, 1) doSendMagicEffect(frompos, 28) doPlayerSendCancel(cid, "Você transformou sua "..getItemNameById(a.remove).." em uma "..getItemNameById(a.add).."!") else doPlayerSendCancel(cid, "Sua "..getItemNameById(a.remove).." deve estar dentro da backpack para transformala!") doSendMagicEffect(frompos, 2) end return 1 end  
  20. lordzetros's post in (Resolvido)Stones Pedindo Mais Do Que Precisa was marked as the answer   
    Critical:
    local config = { effectonuse = 28, -- efeito que sai levelscrit = 100, --- leveis que terão storagecrit = 48903 -- storage que será verificado } function onUse(cid, item, frompos, item2, topos) if (getPlayerStorageValue(cid, config.storagecrit) < config.levelscrit) then doRemoveItem(item.uid, 1) doSendMagicEffect(topos,config.effectonuse) if (getPlayerStorageValue(cid, config.storagecrit) == -1) then setPlayerStorageValue(cid, config.storagecrit, 0) end doPlayerSendTextMessage(cid,22,"Voce elevou seu critical para ["..(getPlayerStorageValue(cid, config.storagecrit)+1).."/100].") setPlayerStorageValue(cid, config.storagecrit, getPlayerStorageValue(cid, config.storagecrit)+1) elseif getPlayerStorageValue(cid, config.storagecrit) >= config.levelscrit then doPlayerSendTextMessage(cid,22,"Voce ja chegou no nivel Maximo de Critical.\nParabéns.") return 0 end return 1 end  
    Dodge:
    local config = { effectonuse = 29, -- efeito que sai levelscrit = 100, --- leveis que terão storagecrit = 98798644 -- storage que será verificado } function onUse(cid, item, frompos, item2, topos) if (getPlayerStorageValue(cid, config.storagecrit) < config.levelscrit) then doRemoveItem(item.uid, 1) doSendMagicEffect(topos,config.effectonuse) if (getPlayerStorageValue(cid, config.storagecrit) == -1) then setPlayerStorageValue(cid, config.storagecrit, 0) end doPlayerSendTextMessage(cid,22,"Voce elevou seus dodges para ["..(getPlayerStorageValue(cid, config.storagecrit)+1).."/100].") setPlayerStorageValue(cid, config.storagecrit, getPlayerStorageValue(cid, config.storagecrit)+1) elseif getPlayerStorageValue(cid, config.storagecrit) >= config.levelscrit then doPlayerSendTextMessage(cid,22,"Voce ja chegou no nivel Maximo de Dodges.\nParabéns.") return 0 end return 1 end  
  21. lordzetros's post in (Resolvido)Tiler que diminuem dano was marked as the answer   
    Em data/creaturescripts/scripts/ crie um arquivo chamado castleDano.lua e adicione o seguinte código dentro:
    local posicoes_castle = { [1] = {supEsquerdo = {x = 1014, y = 1036, z = 7}, infDireito = {x = 1032, y = 1042, z = 7}}, [2] = {supEsquerdo = {x = 1014, y = 1036, z = 7}, infDireito = {x = 1032, y = 1042, z = 6}}, [3] = {supEsquerdo = {x = 1014, y = 1036, z = 7}, infDireito = {x = 1032, y = 1042, z = 5}}, [4] = {supEsquerdo = {x = 1014, y = 1036, z = 7}, infDireito = {x = 1032, y = 1042, z = 4}}, } local porcento = 0.2 -- 0.2 = 20% function players_area(fromPosition, toPosition) local players = {} for _, pid in ipairs(getPlayersOnline()) do local f = {x = fromPosition.x, y = fromPosition.y, z = fromPosition.z} local t = {x = toPosition.x, y = toPosition.y, z = toPosition.z} local min = (fromPosition.z > toPosition.z and toPosition.z or fromPosition.z) for index = 0, math.abs(toPosition.z - fromPosition.z) do f.z = min + index t.z = min + index if (isInRange(getPlayerPosition(pid), f, t)) then table.insert(players, pid) end end end return players end function onStatsChange(cid, attacker, type, combat, value) if (type == STATSCHANGE_HEALTHLOSS and isPlayer(attacker) and isPlayer(cid) and getGlobalStorageValue(25580) == 2) then local total = {} for k = 1, #posicoes_castle do table.insert(total, players_area(posicoes_castle[k].supEsquerdo, posicoes_castle[k].infDireito)) end if (isInArray(total, getPlayerPosition(cid)) and isInArray(total, getPlayerPosition(attacker))) then local valor_m = porcento * value doTargetCombatHealth(attacker, cid, combat, valor_m, valor_m, COLOR_NONE) end end return true end  
    Em data/creaturescripts/creaturescripts.xml adicione a seguinte linha abaixo de uma semelhante:
    <event type="statschange" name="reduzCastle" event="script" value="castleDano.lua"/>  
    Em data/creaturescripts/scripts/login.lua adicione isto abaixo de outro semelhante (registerCreatureEvent):
    registerCreatureEvent(cid, "reduzCastle")  
     
    Agora modificando seu script, no Teleport.lua
    local configuration = { day = "tuesday", to_pos = {x = 3186, y = 568, z = 3}, --Para onde o teleport levará. pos = {x = 3186, y = 574, z = 3}, --Onde o teleport será criado. teleport_id = 1387, --ID do teleport. aid = 3434, --Action ID do teleport. } function onTime() if os.date("%A") == configuration.day then local item = getTileItemById(configuration.pos, configuration.teleport_id).uid if item < 1 then local tp = doCreateTeleport(configuration.teleport_id, configuration.to_pos, configuration.pos) doItemSetAttribute(tp, "aid", configuration.aid) broadcastMessage("Suba no trono e termine o castle", MESSAGE_STATUS_WARNING) setGlobalStorageValue(25580, 2) end end return true end  
    E no close1.lua - close1 é igual open1, certo? Se for, adicione isto no close1 mesmo (poderiam ter feito 1 script para as duas coisas, mas tudo bem):
    local day = "tuesday" --Mude o dia que o evento será executado aqui. EM INGLÊS. local id = 1547 local posis = { {x = 3084, y = 569, z = 6}, -- posição da barreira {x = 3085, y = 569, z = 6}, -- posição da barreira {x = 3086, y = 569, z = 6}, -- posição da barreira {x = 3087, y = 569, z = 6}, -- posição da barreira {x = 3088, y = 569, z = 6}, -- posição da barreira {x = 3084, y = 567, z = 6}, -- posição da barreira {x = 3085, y = 567, z = 6}, -- posição da barreira {x = 3086, y = 567, z = 6}, -- posição da barreira {x = 3087, y = 567, z = 6}, -- posição da barreira {x = 3088, y = 567, z = 6}, -- posição da barreira } function onTime() if os.date("%A") == day then for i = 1, #posis do local item = getTileItemById(posis, id).uid if item > 0 then doRemoveItem(item, 1) else doCreateItem(id, 1, posis) end end setGlobalStorageValue(25580, 1) end return true end  
    EXPLICAÇÃO:
    A ideia é fazer com que o player que sofreu o ataque ganhe 20% do dano total que recebeu.
    Na parte das posicoes_castle do script que fiz, tu vai configurar o canto superior esquerdo e inferior direito da área total de cada andar 
    Segue imagem para demonstração:

  22. lordzetros's post in (Resolvido)Spawn de monstro raro was marked as the answer   
    local positions = { {x = 1135, y = 1253, z = 7} } local m = {"Wyvern Rare"} function onThink(interval, lastExecution, thinkInterval) if(math.random(1, 100) < 15) then if not (isCreature(n_monster)) then local pos = positions[math.random(1, #positions)] local monster = m[math.random(1,#m)] n_monster = doSummonCreature(monster, pos) end end return true end ?
  23. lordzetros's post in (Resolvido)Area que não pega frag como fazer? was marked as the answer   
    @pablobion Graças a você refrescar minha memória, consegui terminar o script que tinha feito e não estava 100%...
    Nesse que fiz você configura os tipos de skulls que você quer que não conte a frag do player, caso queira que um player de black skull conte frag para ele, basta apenas remover da tabela, fiz isso porque você disse que era para evitar o player pegar black ou red, certo? Então se o player já estiver com a skull, não vejo problema contar como frag, mas tá tudo configurado aê. 
     
    data/creaturescripts/scripts/ crie e adicione no arquivo semPK.lua
    local config = { supEsquerdo = {x = 1020, y = 1036, z = 7}, infDireito = {x = 1025, y = 1041, z = 7}, skulls = {SKULL_YELLOW, SKULL_GREEN, SKULL_BLACK, SKULL_WHITE, SKULL_RED} } function remove_frag_players(dl) for _, pid in pairs(dl) do if (isInArray(config.skulls, getCreatureSkullType(pid))) then doRemoveCondition(pid, CONDITION_INFIGHT) doCreatureSay(pid, "Esta frag nao foi registrada", TALKTYPE_ORANGE_1) end end return true end function calcula_posicoes(sup,inf) pos_t = {} for l = sup.y, inf.y do for j = sup.x, inf.x do table.insert(pos_t, {x = j, y = l, z = sup.z}) end end return pos_t end function onPrepareDeath(cid, deathlist) if (not isPlayer(deathlist[1]) and not isPlayer(cid)) then return true end local area = calcula_posicoes(config.supEsquerdo, config.infDireito) if (isInArray(area, getCreaturePosition(cid)) and isInArray(area, getCreaturePosition(deathlist[1]))) then remove_frag_players(deathlist) end return true end  
    Em data/creaturescripts/creaturescripts.xml adicione este código abaixo de outra semelhante: 
    <event type="preparedeath" name="semPk" event="script" value="semPK.lua"/>  
    E para finalizar, no data/creaturescripts/scripts/login.lua  abaixo de um semelhante também, adicione:
    registerCreatureEvent(cid, "semPk")  
    Cara, aqui no servidor que fiz o teste, não contou como frag e parece está tudo 100%, caso dê bronca aê, a gente quebra a cabeça para resolver, :].
    Aguardo o resultado.
     



     
  24. lordzetros's post in (Resolvido)Criar box's em uma área determinada. was marked as the answer   
    Em data/globalevents/scripts/backEvent.lua  adicione:
    --[[ Script - Lordzetros Pedido por: tetheuscunha Fórum TibiaKing ]] local config = { pos = {x = 1020, y = 1021, z = 7, stackpos = 1}, -- Posição que o Protal abrirá toPos = {x = 961, y = 937, z = 6}, -- Posição que os players serão teleportados após entrarem no portal tempo = 10, -- tempo para o fim do evento (duração do evento) msgAbrir = "O evento BackPack acabou de iniciar!", -- Mensagem de quando o evento abrir msgFechar = "O evento BackPack encerrou!", -- mensagem quando o evento fechar idBackpack = 12661, -- id da Backpack actionID = 8049 -- ActionID da backpack } local backspacks = { [1] = {pos = {x = 955, y = 935, z = 6, stackpos = 1}}, -- Posição que a backpack irá será criada / Para colocar uma nova, siga o padrão, [numAnterior + 1] = {pos = {x = Valor, y = Valor, z = Valor}}, [2] = {pos = {x = 955, y = 936, z = 6, stackpos = 1}}, [3] = {pos = {x = 955, y = 937, z = 6, stackpos = 1}}, [4] = {pos = {x = 955, y = 938, z = 6, stackpos = 1}}, [5] = {pos = {x = 955, y = 939, z = 6, stackpos = 1}}, [6] = {pos = {x = 955, y = 940, z = 6, stackpos = 1}}, } function onTime() doBroadcastMessage(config.msgAbrir, 25) doCreateTeleport(1387, config.toPos, config.pos) for _, b in pairs(backspacks) do local i = doCreateItem(config.idBackpack, 1, b.pos) doItemSetAttribute(i, "aid", 8049) end addEvent(function() local portal = getTileItemById(config.pos, 1387) if portal then doRemoveItem(portal.uid, 1) end doBroadcastMessage(config.msgFechar, 25) for _, r in pairs(backspacks) do local bk = getTileItemById(r.pos, config.idBackpack) if (bk) then doRemoveItem(bk.uid, 1) end end end, config.tempo * 60 * 1000) return true end  
    Em data/globalevents/globalevents.xml adicione essa linha de código abaixo de uma outra semelhante:
    <globalevent name="EventoBack" time="10:00;15:00;20:00;00:00" event="script" value="backEvent.lua"/>  
  25. lordzetros's post in (Resolvido)[PEDIDO] Raid de aparecer uma Porta! was marked as the answer   
    Opa, vou dá uma olhada, daqui a pouco edito aqui.
    Edit1: @Yamborghini Testado e funcionando:
    Em data/globalevents/scripts/criaPorta.lua
     
    function onTime() local day = {"Tuesday", "Thursday","Saturday", "Wednesday"} -- em ingles / ADICIONEI Wednesday para teste, porque hoje é quarta-feira, caso n queira, só remover local itemid = 3456 -- item que sera criado local pos = {x=94, y=126, z=7, stackpos= 1} -- pos onde será criado local min = 1 -- minutos de duração do evento local newitem = 2768 -- Id do novo item if isInArray(day, os.date("%A")) then if (getTileItemById(pos, newitem).uid > 0) then doRemoveItem(getTileThingByPos(pos).uid, newitem) end addEvent(doCreateItem, 100, itemid, 1, pos) doBroadcastMessage("O evento abriu", 25) addEvent(function() doRemoveItem(getTileThingByPos(pos).uid, itemid) doBroadcastMessage("O evento encerrou", 25) doCreateItem(newitem,1,pos) end, min * 60 * 1000) end return true end Em data/globalevents/globalevents.xml
     
    <globalevent name="CriaPorta" time="13:29" event="script" value="criaPorta.lua"/> Repare que tem time="13:29", isso é o horário que irá funcionar o evento.

    OBS.: Se quiser que ele rode em DETERMINADOS INTERVALOS, como por exemplo, de 30 em 30 min, precisa ser feito algumas outras modificações.

    Vai no globalevents.xml, deixe:
     
    <globalevent name="criaPorta" interval="1800000" event="script" value="criaPorta.lua"/> E em criaPorta.lua, deixe:
     
    function onThink(interval, lastExecution) local day = {"Tuesday", "Thursday","Saturday", "Wednesday"} -- em ingles local itemid = 3456 -- item que sera criado local pos = {x=94, y=126, z=7, stackpos= 1} -- pos onde será criado local min = 1 -- minutos de duração do evento local newitem = 2768 -- Id do novo item if isInArray(day, os.date("%A")) then if (getTileItemById(pos, newitem).uid > 0) then doRemoveItem(getTileThingByPos(pos).uid, newitem) end addEvent(doCreateItem, 1000, itemid, 1, pos) doBroadcastMessage("O evento abriu", 25) addEvent(function() doRemoveItem(getTileThingByPos(pos).uid, itemid) doBroadcastMessage("O evento encerrou", 25) doCreateItem(newitem,1,pos) end, min * 60 * 1000) end return true end
    Aí funcionará de 30 em 30 min.

    Valeu! 

Informação Importante

Confirmação de Termo