Ir para conteúdo

M i s s

Visconde
  • Total de itens

    264
  • Registro em

  • Última visita

Histórico de Reputação

  1. Upvote
    M i s s deu reputação a zipter98 em Efeito no Chao Que Tira HP   
    Globalevent:
     
    local config = { effect = xxx, --Efeito. hp = xxx, --HP tirada. pos = { {x = x, y = y, z = z}, {x = x, y = y, z = z}, {x = x, y = y, z = z}, --etc }, } function onThink() for _, pos in pairs(config.pos) do local c = getTopCreature(pos).uid doSendMagicEffect(pos, config.effect) if c > 0 and isPlayer(c) then doCreatureAddHealth(c, -config.hp) end end return true end
  2. Upvote
    M i s s deu reputação a GamerGoiano em Sacrificar itens em determinadas posições teleporta player   
    https://xtibia.com/forum/topic/209121-urgente-dúvida-em-alavancaitem-teleport/
    Se precisar de ajuda pra modificar só falar
  3. Upvote
    M i s s deu reputação a lSainty em Sacrificar itens em determinadas posições teleporta player   
    Conversei por DM para não spammar o tópico e acabou que o TFS era 0.3.6 e não 1.0, por isso os scripts anteriores não funcionaram. Para quem busca a solução:
    local config = { item1 = { id = 18759, pos = {x = 1200, y = 830, z = 9, stackpos = 255} }, item2 = { id = 18758, pos = {x = 1216, y = 829, z = 9, stackpos = 255} }, item3 = { id = 18760, pos = {x = 1210, y = 817, z = 9, stackpos = 255} }, teleportTo = {x = 1000, y = 1000, z = 7} } function onUse(cid, item, frompos, item2, topos) local tileItem1 = getTileItemById(config.item1.pos, config.item1.id).uid local tileItem2 = getTileItemById(config.item2.pos, config.item2.id).uid local tileItem3 = getTileItemById(config.item3.pos, config.item3.id).uid if tileItem1 > 0 and tileItem2 > 0 and tileItem3 > 0 then doRemoveItem(tileItem1, 1) doSendMagicEffect(config.item1.pos, CONST_ME_POFF) doRemoveItem(tileItem2, 1) doSendMagicEffect(config.item2.pos, CONST_ME_POFF) doRemoveItem(tileItem3, 1) doSendMagicEffect(config.item3.pos, CONST_ME_POFF) doTeleportThing(cid, config.teleportTo) doSendMagicEffect(getCreaturePosition, CONST_ME_TELEPORT) return true end doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Coloque os itens nos altares.") return true end  
  4. Upvote
    M i s s deu reputação a Vodkart em Bau que venha itens aleatorios? REP+   
    faltou usar o 'return' nas mensagens
     
     
    function onUse(cid, item, fromPosition, itemEx, toPosition) local config = { s = 11128, -- storage level = 50, -- level minimo time = 60, -- tempo em minutos para voltar a abrir a chest item = {{2160, 1},{2152, 25},{2148, 50} } -- items sortiados(pode adicionar mais) } if getPlayerLevel(cid) < config.level then return doPlayerSendCancel(cid, "Você deve ter pelo menos level ".. config.level .." para abrir a Chest.") elseif getPlayerStorageValue(cid, config.s) >= os.time() then local minutos = math.floor((getPlayerStorageValue(cid, config.s) - os.time())/(60)) return doPlayerSendCancel(cid, "Você deve esperar ".. (minutos < 0 and 0 or minutos) .." minutos para voltar a abrir o Bau.") end local r = math.random(1, #config.item) doPlayerAddItem(cid, config.item[r][1], config.item[r][2]) setPlayerStorageValue(cid, config.s, os.time()+config.time*60) return true end
  5. Upvote
    M i s s deu reputação a zipter98 em [Encerrado] [Pedido] Parede Que Abre   
    local posis = { {x = x, y = y, z = z}, --Posição onde o jogador deve ficar. {x = x, y = y, z = z}, {x = x, y = y, z = z}, {x = x, y = y, z = z}, {x = x, y = y, z = z}, {x = x, y = y, z = z}, {x = x, y = y, z = z}, {x = x, y = y, z = z}, {x = x, y = y, z = z}, } local wall_pos = {x = x, y = y, z = z} --Coordenadas da posição da parede. local wall = x --ID da parede. local time = 5 --Tempo, em minutos, para a parede reaparecer. local check = 0 function onUse(cid, item, frompos, item2, topos) for a, b in pairs(posis) do if not isPlayer(getThingFromPos(b)) then return doPlayerSendCancel(cid, "Um ou mais jogadores não estão nas posições corretas.") else check = check + 1 end end if check == #posis and getTileItemById(wall_pos, wall).uid > 0 then doRemoveItem(getTileItemById(wall_pos, wall).uid, 1) addEvent(function() doCreateItem(wall, 1, wall_pos) end, time * 60 * 1000) end return true end
  6. Upvote
    M i s s deu reputação a zipter98 em passa pela porta so com o item!   
    Tenta:
     
    function onUse(cid, item, fromPosition, itemEx, toPosition) local tppos = {x = xxx, y = yyy, z = zzz} --Para onde será teleportado. if getPlayerItemCount(cid, 7409) >= 1 then doTeleportThing(cid, tppos) doPlayerSendTextMessage(cid, 22, "Você passou pela porta.") else doPlayerSendCancel(cid, "Você não tem o item especificado.") end return true end
  7. Thanks
    M i s s deu reputação a Roksas em Tournament PVP V2.0   
    Sistema de Torneio V2.0


     



    Saudações galera, tudo de bão e do mió?
    Recebi alguns pedidos e vim trazer hoje para vocês o V2.0 do meu sistema de Torneio.
     
    Changelog:
     

    V2.0: Arrumado alguns BUGS. V2.0: Agora temos sala de espera. V2.0: Funciona também em Naruto, Pokemon & seus derivados!
     

    Instalação:


     



    Siga para data/lib, nessa mesma pasta crie um arquivo chamado tournament.lua e adicione dentro:
     
     
     
     
    Em data/npc/ crie um arquivo chamado Tournament.xml e adicione dentro:
     
     
     
     
    Entre na pasta scripts dentro de data/npc/ e crie um arquivo chamado tournament.lua e adicione dentro:
     
     
     
     
    Agora vá para a pasta data/globalevents/scripts, dentro dela crie um arquivo chamado tournament.lua e adicione dentro:
     
     
     
     
    Em globalevents.xml adicione essa tag:
     

    <globalevent name="TournamentStart" time="17:47" event="script" value="tournament.lua"/>
     
    Em data/actions/scripts, crie um arquivo chamado tournament.lua e adicione dentro:
     
     
     
     
    Abra com o bloco de notas o arquivo actions.xml e adicione a seguinte tag:
     

    <action uniqueid="18279" event="script" value="tournament.lua"/>
     
     
     
     
     
     
     
     
     

    Configuração:


     



    O arquivo que instalamos na pasta data/lib (tournament.lua), abra-o com o bloco de notas e vamos configurar esta parte:
     
    torneio = { awardTournament = 2148, awardAmount = 2, playerTemple = {x = 1008, y = 1018, z = 7}, tournamentFight = {x = 1017, y = 1026, z = 7}, area = {fromx = 1008, fromy = 1018, fromz = 7, tox = 1024, toy = 1033, toz= 7}, area2 = {x = 1008, y = 1018, z = 7}, {x = 1024, y = 1033, z = 7}, waitPlace = {x = 1017, y = 1044, z = 7}, waitArea = {fromx = 1010, fromy = 1040, fromz = 7, tox = 1024, toy = 1050, toz= 7}, startHour = "17:40:00", endHour = "17:50:00", price = 10000, revivePoke = 2494, }
    awardTournament colocamos o ItemID da recompensa do vencedor do torneio, awardAmount a quantidade.

    playerTemple colocamos as coordenadas do templo de alguma cidade, é para lá que ele vai ser teleportado ao vencer. tournamentFight colocamos as coordenadas do CENTRO da Arena de Torneios.

    Em area colocamos: (fromx, fromy e fromz) as coordenadas do canto superior esquerdo da Arena, (tox, toy e toz) colocamos as coordenadas do canto inferior direito da Arena.

    Em waitPlace colocamos as coordenadas do CENTRO, da Sala de Espera para começar o Torneio! Já o waitArea é a mesma coisa do "area" só que nesse é os cantos superior esquerdo e inferior direito da Sala de Espera.

    startHour colocamos a hora em que o NPC começa a vender entradas para o Torneio, é a hora do dia, com hora/minutos/e segundos, no formato "00:00:00", lá tem que ficar entre aspas! Já o endHour é a hora que ele para de vender as entradas e que começa o Torneio pra valer!

    Galera, o revivePoke, se seu OTServer for de Tibia, não MEXAM! Agora, se for Pokétibia, você muda o valor do revivePoke para o Item ID dos revives, isso serve para o player não levar revives pro Torneio.

    Em globalevents.xml na tag:

    <globalevent name="TournamentStart" time="17:47" event="script" value="tournament.lua"/> Aqui time="17:47" coloque o horário TERMINA as inscrições para o Torneio, é o mesmo do que endHour do lib. Mas aqui você só pode por em formato horas:minutos (00:00)

    Prontinho, agora é só ir no RME Map Editor e colocar UNIQUE ID 18279 em uma alavanca ou item dentro da Arena, isso serve para o player que ganhar ir embora com seu prêmio
     
     
     
     
     
     
     

    Finalizações:


     




     

    Bom galera, é isso por hoje, espero que façam um bom e ótimo uso. Estou disposto a aceitar DICAS/SUGESTÕES/CRÍTICAS & BUGS! Muito obrigado pela atenção!


     
     
     
     




     



     
     


    Download Tournament MAP (8.54)



    Download Sistema de Torneio V2.0

  8. Upvote
    M i s s deu reputação a Leoxtibia em Npc Teleporter   
    ===NPC===
     
    Crie um arquivo.lua em data/npcs/scripts e cole isto dentro:
     

    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local t = { --- posições para level menor que 40 ["cyclops"] = {pos = {x=1,y=1,z=1}}, ["templo"] = {pos = {x=100,y=40,z=7}}, ["troll"] = {pos = {x=1,y=1,z=1}}, ["dwarf"] = {pos = {x=1,y=1,z=1}}, ["elf"] = {pos = {x=1,y=1,z=1}}, ["amazon"] = {pos = {x=1,y=1,z=1}}, ["orc"] = {pos = {x=1,y=1,z=1}} } local x = { -- posições para level maior que 40 ["templo"] = {go = {x=100,y=40,z=7}}, ["dragon"] = {go = {x=1,y=1,z=1}}, ["scarab"] = {go = {x=1,y=1,z=1}}, ["vampire"] = {go = {x=1,y=1,z=1}}, ["giant spider"] = {go = {x=1,y=1,z=1}}, ["hydra"] = {go = {x=1,y=1,z=1}}, ["dragon lord"] = {go = {x=1,y=1,z=1}} } local min = "Escolha para onde quer ser teleportado: {cyclops}, {templo}, {troll}, {dwarf}, {orc}, {elf}, {amazon}." --- msg para lvl menor q 40 local max = "Escolha para onde quer ser teleportado: {templo}, {dragon}, {scarab}, {vampire}, {giant spider}, {hydra}, {dragon lord}." -- msg para lvl maior que 40 if msgcontains(msg, "travel") or msgcontains(msg, "Travel") then if getPlayerLevel(cid) <= 40 then selfSay(min, cid) talkState[talkUser] = 1 elseif getPlayerLevel(cid) > 40 and getPlayerLevel(cid) <= 80 then selfSay(max, cid) talkState[talkUser] = 2 end elseif talkState[talkUser] == 1 then if t[msg] then doTeleportThing(cid, t[msg].pos) doSendMagicEffect(getCreaturePosition(cid), 10) selfSay("Boa viagem.", cid) talkState[talkUser] = 0 end elseif talkState[talkUser] == 2 then if x[msg] then doTeleportThing(cid, x[msg].go) doSendMagicEffect(getCreaturePosition(cid), 10) selfSay("Boa viagem.", cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
     
    Em data/npcs, crie um arquivo.xml e cole isto dentro:
     

    <npc name="NOMEDOSEUNPC" script="data/npc/scripts/NOMEDOSEUARQUIVO.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="134" head="78" body="88" legs="0" feet="88" addons="3"/> <parameters> <parameter key="message_greet" value="Ola. Para mais informacoes de meus servicos diga {travel}." /> <parameter key="message_farewell" value="Tchau." /> <parameter key="message_walkaway" value="Tchau." /> </parameters> </npc>
     
    ===TALKACTION===
     
    Em data/talkactions/scripts crie um arquivo.lua e cole isto dentro:
     

    local maxlevel = 80 -- abaixo desse level os players poderão ir local npc = {x=1, y=1, z=1} --- local que o npc estará function onSay(cid, words, param) if getPlayerLevel(cid) < 80 then doTeleportThing(cid, npc) doSendMagicEffect(npc, 10) else doPlayerSendTextMessage(cid, 22, "Apenas players com level abaixo de ".. maxlevel .." tem acesso ao npc.") end return true end
     
    Em talkactions.xml cole a tag: <talkaction words="!teleport" script="NOMEDOSEUARQUIVO.lua"/>
     
    ===CREATURESCRIPTS===
     
    Em data/creaturescripts/scripts crie um arquivo.lua e cole isto dentro:
     

    function onAdvance(cid, skill, oldLevel, newLevel) if getPlayerLevel(cid) >= 70 and getPlayerLevel(cid) <= 80 then doPlayerSendTextMessage(cid, 18, "Lembre-se que depois do level 80 você não poderá usar o comando !teleport") end return true end
     
    Em creaturescripts/scripts/login.lua cole antes do return true: registerCreatureEvent(cid, "Notice")
     
    Em creaturescripts.xml cole a tag: <event type="advance" name="Notice" event="script" value=NOMEDOSEUARQUIVO.lua"/>
     
    Vlw, espero ter ajudado, abraços.
     
    @edit
    Percebi que level 80+ podiam se teleportar com o npc,agora já resolvi isso.
  9. Upvote
    M i s s deu reputação a zipter98 em Fly/Surf proíbidos em áreas.   
    Abaixo de:
    if getPlayerStorageValue(cid, 17000) >= 1 then
    coloque:
    local fly_areas, canFly = {
    --{fromPos = {posição_superior_esquerda_da_área}, toPos = {posição_inferior_direita_da_área}},
    {fromPos = {x = x, y = y, z = z}, toPos = {x = x, y = y, z = z}},
    {fromPos = {x = x, y = y, z = z}, toPos = {x = x, y = y, z = z}},
    --etc
    }

    for _, coordinates in pairs(fly_areas) do
    if isInRange(getThingPos(cid), coordinates.fromPos, coordinates.toPos) then
    canFly = true
    break
    end
    end

    if not canFly then
    doPlayerSendCancel(cid, "You can't fly here.")
    doTeleportThing(cid, frompos)
    return true
    end
  10. Upvote
    M i s s deu reputação a zipter98 em (resolvido) alguém pode criar uma spell a partir dessa action por favor?   
    elseif spell == "Transform" then local config = { forms = {"Castform", "Fire Castform", "Water Castform", "Ice Castform"}, --Formas, na ordem de transformação. effects = { ["water"] = xxx, --["elemento_primário_da_nova_forma"] = efeito_na_transformação, ["ice"] = xxx, ["fire"] = xxx, } } local function fakeEvolution(cid, newPoke, pokeball) local owner = getCreatureMaster(cid) if not owner then return true end local description = "Contains a "..newPoke.."." local pct = getCreatureHealth(cid) / getCreatureMaxHealth(cid) doItemSetAttribute(pokeball, "hp", pct) doItemSetAttribute(pokeball, "poke", newPoke) doItemSetAttribute(pokeball, "morta", "no") doItemSetAttribute(pokeball, "Icone", "yes") doItemSetAttribute(pokeball, "description", "Contains a "..newPoke..".") doTransformItem(pokeball, icons[getItemAttribute(pokeball, "poke")].use) doTransformItem(getPlayerSlotItem(owner, 7).uid, fotos[newPoke]) local oldpos, oldlod = getThingPos(cid), getCreatureLookDir(cid) doRemoveCreature(cid) doSummonMonster(owner, newPoke) local pk = getCreatureSummons(owner)[1] doTeleportThing(pk, oldpos, false) doCreatureSetLookDir(pk, oldlod) adjustStatus(pk, pokeball, true, false) if useKpdoDlls then doUpdateMoves(owner) end end table.find = function (table, value) for i, v in pairs(table) do if(v == value) then return i end end return nil end if not isInArray(config.forms, getCreatureName(cid)) then return true end local next_form = config.forms[table.find(config.forms, getCreatureName(cid)) + 1] if not next_form then next_form = config.forms[1] end doSendMagicEffect(getThingPos(cid), config.effects[pokes[next_form].type] or 18) if not isSummon(cid) then local pos, dir, health_lost = getThingPos(cid), getCreatureLookDir(cid), getCreatureHealth(cid) / getCreatureMaxHealth(cid) doRemoveCreature(cid) local newMonster = doCreateMonster(next_form, pos) setPlayerStorageValue(newMonster, 94831, health_lost) doCreatureSetLookDir(newMonster, dir) else local p = getPlayerSlotItem(getCreatureMaster(cid), 8) if not p then return true end fakeEvolution(cid, next_form, p.uid) end  
    Depois, em data/lib/level system.lua, no código da função adjustWildPoke:
    Abaixo de:
    doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) coloque:
    if tonumber(getPlayerStorageValue(cid, 94831)) > -1 then local ratio = 1 - tonumber(getPlayerStorageValue(cid, 94831)) doCreatureAddHealth(cid, -(getCreatureMaxHealth(cid) * ratio))end  
  11. Upvote
    M i s s deu reputação a zipter98 em (resolvido) points premium in game   
    Supondo que, de fato, todas as funções tenham sido copiadas exatamente iguais (o código de box que você postou está incompleto, então me baseei no do PDA):
    local pokemon = { ["nome_do_pokémon"] = {price = xxx, boost = xxx}, --etc}function doCorrectString(str) --Slicer local name = str:explode(" ") local final = {} for _, s in ipairs(name) do table.insert(final, s:sub(1, 1):upper()..s:sub(2, #s):lower()) end return table.concat(final, (name[2] and " " or ""))endfunction onSay(cid, words, param) local p = param:lower() if p == "list" then local str = "******** You can buy: ********" for p_name, info in pairs(pokemon) do str = str.."\n-"..p_name.." [+"..info.boost.."] for "..info.price.." premium point(s)." end doPlayerPopupFYI(cid, str) elseif pokemon[doCorrectString(p)] then local poke = pokemon[doCorrectString(p)] if getAccountPoints(cid) < poke.price then doPlayerSendCancel(cid, "Sorry, you do not have enough points. ["..poke.price.." premium points]") return true end doPlayerSendTextMessage(cid, 27, "You successfully bought a "..doCorrectString(p).." [+"..poke.boost.."] for "..poke.price.." premium point(s).") doAccountRemovePoints(cid, poke.price) addPokeToPlayer(cid, doCorrectString(p), poke.boost, nil, "normal") else doPlayerSendCancel(cid, "Invalid parameter. Type 'list' to see a list of pokemon you can buy, or type the name of the wished pokemon.") end return trueend Algumas observações:
    Optei por deixar o código mais configurável. Você pode escolher os pokémon que podem ser comprados, junto com boost e preço específico. Essas informações são mostradas num parâmetro que incluí (/comando list).
    Logo, as opções de fala são:
    /comando nome_do_pokémon --Para comprar um pokémon./comando list --Para mostrar uma lista com os pokémon compráveis.  
    Também, devo informar que os premium points não são compartilhados por outros personagens da conta. Para que isso aconteça, recomendaria instalar a função setAccountStorageValue, encontrada por aí na internet (acho que aqui no XTibia tem).
  12. Upvote
    M i s s deu reputação a ZombiTR em DELETE   
    Detete
  13. Thanks
    M i s s deu reputação a Vodkart em Matar Monstro Abrir Tp, Remover Parede, Ganhar Storage   
    Creditos:
    Vodkart
    Kydrai
     
    fala galerinha resolvi posta alguns script que acontece quando o player mata algum monstro ...
     
    o primeiro é o script que acontece quando voce mata um Monstro abre o teleport.
    o segundo é matar o monstro e sumir a parede por algum tempo.
     
    Obs: o Nome do monstro deve ser colocado com Letra Maiuscula.
     
     
    [ Matar monstro e abrir Teleport ]
    creaturescript\script
     
     
     
     
     
     
    [ Matar Monstro e parede sumir por determinado tempo ]
     
    creaturescript\script
     
     
     
    [ Matar Monstro e ser teleportado ]
     
     
     
     
     
    [ Matar Monstro e Ganhar Storage ]
     
     
  14. Thanks
    M i s s deu reputação a RigBy em Erro quando criatura passa sobre tile   
    só adicionar um:
    if not isPlayer(cid) then return false end
  15. Upvote
    M i s s deu reputação a Roksas em Como funciona o "Interval"   
    Certo, a cada 1000 seria 1 segundo. Os números do interval são milesegundos!
    Se quiser 2 horas, então 120 mins*1000. "120000" Está correto! Mas em alguns servidores não precisa ser milesegundos, são segundos normais. Então o certo seria colocar "7200". Teste das duas formas para saber como funciona seu OT. Volte aqui e poste resultados.
  16. Upvote
    M i s s deu reputação a Lordfire em Porta Com Level   
    Coloque um action id na porta, qualquer um que não esteja sendo usado
     
    data\actions\scripts, crie um script com a extensão .lua
     

    function onUse(cid, item, fromPosition, itemEx, toPosition) local tpos = { x = 190 y = 75 z = 7 } level = 250000 if getPlayerLevel(cid) >= level then doTeleportThing(cid, fromPosition, tpos) end else doPlayerSendTextMessage(cid, 22, "Voce precisa ser level "..level.." para passar pela porta") end return TRUE end
     
    em actions\actions.xml
     

    <action actionid="<action id>" event="script" value="<nome do script>.lua"/>
  17. Upvote
    M i s s deu reputação a Yan Liima em [Resolvido] Verificar se player tem tal item...   
    Você não está especificando a função... Tente assim:
    function onUse(cid, item, frompos, item2, topos) local itemid = 2670 if getPlayerItemCount(cid, itemid) >= 1 then doPlayerRemoveItem(cid, itemid,1) else doPlayerSendTextMessage(cid, "Você não tem o item.") return true end  
  18. Upvote
    M i s s deu reputação a gonorreiaswat em Piso que só passa com storage   
    Não testei...
     
    @Editado
    Testado e funcionou perfeitamente comigo.
     
    Cria um arquivo chamado "piso_storage.lua" na pasta data/movements/scripts e adicione a tag abaixo:

    local pos1 = {x=895, y=989, z=7} -- Posiçao se o player tiver Storage local pos2 = {x=895, y=987, z=7} -- Posiçao se o player NÃO tiver a storage local storage = 3426 -- edite os número colocando a storage desejada function onStepIn(cid, item, pos) if getPlayerStorageValue(cid, storage) == 1 then doTeleportThing(cid, pos1) doPlayerSendTextMessage(cid, 27, "Mensagem se tudo OK.") else doTeleportThing(cid, pos2) doPlayerSendTextMessage(cid, 27, "Mensagem se NAO tiver storage.") return true end end
     
    Agora abra seu movements.xml e adicione a tag abaixo:

    <movevent type="StepIn" actionid="12122" event="script" value="piso_storage.lua"/>
     
     
    Lembre-se de adicionar a ActionID no piso desejado pelo MapEditor.
     
     
    Boa sorte, caso dê erro avise'
  19. Thanks
    M i s s deu reputação a Kuro o Shiniga em [Resolvido] Sacrificio por alavanca cria um item no mapa   
    Usando um item no altar, deixei comentado as configurações do codigo, dai tu so configura ai
     
    <action itemid="2033" script="other/abc.lua"/>  
     
    local mConfig = { mTime = 5000, -- tempo que vai sumir o item e o altar mAltar = {1485, 1484}, -- IDS do altar mItemID = 2160, -- ID do item que vai aparecer na posicao X mQTDE = 100, -- quantidade de item que vai aparecer na posição X mItem = 2033, -- item que vai usar em cima do altar mPoss = {{x = 77, y = 38, z = 7}, {x = 78, y = 38, z = 7}}, -- Primeira posição é a do altar e a segunda a do item que vai aparecer } function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == mConfig.mItem and itemEx.itemid == mConfig.mAltar[1] then doRemoveItem(item.uid, 1) doTransformItem(itemEx.uid, mConfig.mAltar[2]) doSendMagicEffect(getThingPos(itemEx.uid), 3) doCreateItem(mConfig.mItemID, mConfig.mQTDE, mConfig.mPoss[2]) doSendMagicEffect(mConfig.mPoss[2], 10) addEvent(function() mItem = getTileItemById(mConfig.mPoss[1],mConfig.mAltar[2]).uid mItemTwo = getTileItemById(mConfig.mPoss[2],mConfig.mItemID).uid if mItem > 0 then doTransformItem(mItem, mConfig.mAltar[1]) doSendMagicEffect(getThingPos(mItem), 2) if mItemTwo > 0 then doRemoveItem(mItemTwo, mConfig.mQTDE) end end end, mConfig.mTime) else doSendMagicEffect(getThingPos(cid), 2) end end  
  20. Upvote
    M i s s deu reputação a zipter98 em NPC que teleporta se apenas estiver tal storage   
    Em data/npc/scripts, crie um arquivo com extensão .lua, nomeie-o travelnpc, e coloque nele o seguinte conteúdo:
    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local cfg = { storage = 13500, --Storage. pos = {x = x, y = y, z = z}, --Para onde o jogador será teleportado. } if msgcontains(msg, "travel") or msgcontains(msg, "viajar") then selfSay("Você gostaria de viajar? Para isso, você precisa ser VIP.", cid) talkState[talkUser] = 1 return true elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, cfg.storage) >= 1 then selfSay("Boa viajem!", cid) doTeleportThing(cid, cfg.pos) talkState[talkUser] = 0 return true else selfSay("Desculpe, você não é VIP.", cid) talkState[talkUser] = 0 return true end elseif msgcontains(msg, "no") and talkState[talkUser] == 1 then selfSay("Tudo bem, então...", cid) talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Depois, em data/npc, crie um arquivo com extensão .xml, e adicione neste o seguinte conteúdo:
    <?xml version="1.0" encoding="UTF-8"?> <npc name="Nome do NPC" script="travelnpc.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="523" head="114" body="119" legs="114" feet="114" corpse="2212"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|, would you like to {travel}?"/> </parameters> </npc> OBS: Não se esqueça de alterar o nome e a outfit do NPC no arquivo acima.
  21. Upvote
    M i s s deu reputação a Eskylo em Remover Storage?   
    cada outfit vai ter q ter 1 storage diferente
     
    <outfit id="22" quest="100">
     
    /\ ali vc pois 100 entao pra dar a storage 100, só usar :
     
    setPlayerStorageValue(cid, 100, 1)
     
    pra tirar a storage
     
    setPlayerStorageValue(cid, 100, -1)
     
    pra outro outfit vc muda a storage se usar uma q ja ta sendo usada, vai entrar em conflito
  22. Upvote
    M i s s deu reputação a Roksas em Piso que Teleporta 1 paso a frente   
    Vá em data/movements/scripts, crie um arquivo chamado tileup.lua e adicione isso dentro:
     
     
     
     
    Agora vá em data/movements, abra o arquivo movements.xml com o bloco de notas e adicione essa tag em qualquer lugar:
    OBS: (SE EXISTIR APENAS UM UNICO PISO NO MAPA, QUE TELEPORTE 1 PASSO A FRENTE USE ESSE:
     

    <movevent type="StepIn" uniqueid="9979" event="script" value="tileup.lua"/>
     
    AGORA, EXEMPLO, SE TODOS PISOS COM ID 108, FIZESSE O TELEPORT 1 PASSO A FRENTE, USASSE ESSE
     

    <movevent type="StepIn" itemid="108" event="script" value="trap.lua"/>
     
    Aonde está 108 coloque o ID do Piso ) boa sorte
  23. Upvote
    M i s s deu reputação a Yan Oliveira em Event Boss   
    Olá, vá na pasta Data/Globalevents/Scripts e crie um arquivo lua chamado boss e adicione o código dentro:
    ----------------------------------- EVENTO SUMMON BOSS FEITO POR YAN18 ----------------------------------------- local minutos = 20 ---- COLOCA OS MINUTOS AQUI PARA OS BOSS SUMIREM CASO NINGUÉM OS MATE ---- NOME DOS MONTROS ---- local monsters = { [1] = "Magmar" , [2] = "Electabuzz", [3] = "Scizor", } ---- POSIÇÃO DA ARENA ONDE APARECERÁ OS MONSTROS ---- local position_arena = { from_pos = {x= 964, y = 993, z= 7}, -- VARIÁVEL QUE TEM A COORDENADA INICIAL DO LUGAR ONDE VAI APARECER OS MONSTROS to_pos = {x= 978, y = 1009, z= 7}, -- VARIÁVEL QUE TEM A COORDENADA FINAL DO LUGAR ONDE VAI APARECER OS MONSTROS } ---------------------------------- CÓDIGO ---------------------------------------------- function onThink(cid, words, interval, lastExecution) ----- CRIA OS BOSS ----- for i, j in ipairs(monsters) do ----- VARIÁVEL RANDOM_POSITION GERA O SPAWN ALEATÓRIO DOS BOSS ----- local random_position = {x= math.random(position_arena.from_pos.x, position_arena.to_pos.x), y= math.random(position_arena.from_pos.y, position_arena.to_pos.y), z= math.random(position_arena.from_pos.z, position_arena.to_pos.z)} doSummonCreature(j, random_position) end doBroadcastMessage(#monsters == 1 and "A monster have been arrived in this world. Don't arrive near!" or "Some monsters have been arrived in this world. Don't arrive near by them!", 22) ---- VERIFICAÇÃO SE TEM MONSTROS NA ARENA PARA REMOVER ---- addEvent(function() local position = {} for i = position_arena.from_pos.x, position_arena.to_pos.x do for j = position_arena.from_pos.y, position_arena.to_pos.y do position[#position+1] = {x= i, y = j, z= position_arena.from_pos.z, stackpos = 0} end end for i= 1, #position do for j = 0, 255 do position[i].stackpos = j local monster = getTileThingByPos(position[i]) if isMonster(monster.uid) then for d, n in ipairs(monsters) do if getCreatureName(monster.uid) == n then doRemoveCreature(monster.uid) if d == #monsters then doBroadcastMessage(#monsters == 1 and "The monster left this world. But it will return soon...." or "The monsters left this world. But they will return soon....", 22) end end end end end end end, minutos * 60 * 1000) return true end Agora em Data/Globalevents abra o globalevents.xml e adicione a tag:
    <globalevent name="boss" interval="3600" event="script" value="boss.lua"/> <!-- TEMPO EM SEGUNDOS, JÁ DEIXEI 1 HORA --> Explicação: No código, eu criei 3 monstros genéricos para testar, só adicionar o nome deles igual está na tabela, e se quiser só 1 monstro, apague os outros dois e insira o desejado (lembrando de colocar a vírgula no final igual como está).
     
    Na variável minutos já deixei 20 como pediu, mas caso queira trocar, só alterar o valor dela (lembrando que o valor dela tem que ser menor que o intervalo do evento no xml).
     
    E na tabela position_arena, precisa colocar as coordenadas iniciais e finais da arena, já deixei pronto ali também e é só substituir.
     
    Deixei para eles nascerem em posições aleatórias dentro das coordenadas da arena, caso queira spawns fixos, só ir na variável random_position e colocar x, y e z desejados.
     
    Agora na parte do Xml como deixei o comentário na tag, já deixei 1 hora como pediu (3600 segundos), caso queira outro valor só alterar lá, lembrando que ali é em segundos.
     
    Deixei tudo comentado e explicadinho, mas qualquer dúvida só falar. Eu testei muito aqui e deu certo, mas qualquer problema só me dizer.
  24. Upvote
    M i s s deu reputação a Yan Oliveira em [Resolvido] [PEDIDO] Scripts de spawn no mapa   
    Foi erro meu, bobiei.
     
    Arrumei o código e agora está funcionando normal:
     

     
    Substitua o código por esse:
     
    local pokemon_derrotar = "Charizard" -- NOME DO POKÉMON QUE PRECISA DERROTAR NA TASK local total = 50 -- TOTAL DE POKEMON QUE PRECISA DERROTAR local random_porcentagem = 50 -- PORCENTAGEM QUE TEM DO POKEMON SPAWNAR AO TERMINAR A TASK -- TABELA COM OS POKEMONS QUE APARECERÃO AO DERROTAR A QUANTIDADE DO POKÉMON QUE COLOCOU NA VARIÁVEL pokemon_derrotar -- local pokemons_spawn = { {pokemon = "Mewtwo", position = {x= 1000, y= 1000, z= 7}}, {pokemon = "Mew", position = {x= 1000, y= 1000, z= 7}}, {pokemon = "Articuno", position = {x= 1000, y= 1000, z= 7}}, {pokemon = "Zapdos", position = {x= 1000, y= 1000, z= 7}}, {pokemon = "Moltres", position = {x= 1000, y= 1000, z= 7}}, } ------------------------------- CÓDIGO ----------------------------- function onKill(cid, target) local random_chance = math.random(100) -- VARIÁVEL QUE GERA VALOR ALEATÓRIO local storage_contador = 336699 -- STORAGE QUE ARMAZENA QUANTAS VEZES O POKEMON FOI DERROTADOS local restante = total - getGlobalStorageValue(storage_contador) -- VARIÁVEL QUE GERA A DIFERENÇA ENTRE O TOTAL E O CONTADOR DOS POKEMONS DERROTADOS if getCreatureName(target) == pokemon_derrotar then if getGlobalStorageValue(storage_contador) < 1 then setGlobalStorageValue(storage_contador, 1) end setGlobalStorageValue(storage_contador, getGlobalStorageValue(storage_contador) + 1) if restante == 0 then if (random_chance >= random_porcentagem) then for _, pokes in pairs(pokemons_spawn) do doCreateMonster(pokes.pokemon, pokes.position) end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você despertou a fúria de alguns pokémons, fuja para sobreviver!") setGlobalStorageValue(storage_contador, 1) return true else setGlobalStorageValue(storage_contador, 1) return true end else return true end else return true end end  
    Mesmo esquema das outras vezes, só alterar os valores das variáveis, mas para te facilitar, recomendo copiar o código somente a partir da linha function onKill(cid, target).
     
    Conforme a imagem acima, está funcionando normal, mas qualquer problema só me avisar.
  25. Upvote
    M i s s deu reputação a Pluzetti2104 em Doação surpresa   
    Olá boa tarde, bom eu recebi de um colega um mini pack de sprites retiradas de um servidor, nao sei qual foi o servidor, porem elas nao me interessam, entao vim compartilhar com voces.
     

     
    No pack que está para download conté isso ai...bom proveito.
    doacao.rar
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...