Ir para conteúdo

Leoxtibia

Visconde
  • Total de itens

    489
  • Registro em

  • Última visita

  • Dias Ganhos

    15

Tudo que Leoxtibia postou

  1. function onUse(cid, item, frompos, item2, topos) playerpos = {x=topos.x, y=topos.y, z=topos.z, stackpos=2} player = getThingfromPos(playerpos) ml = getPlayerMagLevel(cid) lvl = getPlayerLevel(cid) formula = 800 if item2.itemid == 1 and ml >= 1 then doSendMagicEffect(playerpos,12) doCreatureAddHealth(cid ,formula) doCreatureAddMana(cid ,formula) if item.type > 1 then doChangeTypeItem(item.uid,item.type-9) else end end if item2.itemid == 1 and ml <= 1 then doSendMagicEffect(frompos,2) doPlayerSendCancel(cid,"You dont Have Magic Level to use this rune.") end if item2.itemid >= 2 then doPlayerSendCancel(cid,"You can only use this rune in you or in players.") doSendMagicEffect(frompos,2) end return 1 end
  2. Pra que dois tópicos com o mesmo pedido? Dificultou até pra você porque eu já tinha respondido no outro. http://www.xtibia.com/forum/topic/189554-pedidoteleport-diferente/ Vlw, espero ter ajudado.
  3. Leoxtibia

    Npc Broadcast

    Em data/npcs/scripts, coloque no arquivo.lua do seu npc o seguinte: local focus = 0 local talk_start = 0 local target = 0 local following = false local attacking = false stime = 60 -- Tempo entre as falas do npc (em segundos) time = os.clock() function onThink() if (time + stime) < os.clock() then time = os.clock() local mensagens = {"Uma msg aqui", "Outra Msg aqui"} doBroadcastMessage(mensagens[math.random(1,table.maxn(mensagens))], 22) end end É só editar as msgs e o tempo entre uma e outra. Vlw, espero ter ajudado.
  4. Em data/actions/scripts crie um arquivo.lua e cole isto dentro: local cfg = { stg = 7231, -- storage que vai ganhar corpse = 1111, -- id do corpo do monstro time = 10, --- tempo em segundos para o teleport sumir tppos = {x=1,y=1,z=1,stackpos=1}, --- posição que o tp aparecerá // n mexa no stackpos newpos = {x=1,y=1,z=1} -- posição que o tp levará } function onUse(cid, item, itemEx, position, fromPosition, toPosition) if itemEx.itemid == corpse then doSendMagicEffect(cfg.tppos, 10) doCreatureSay(cid, "O teleport sumirá em ".. cfg.time .." segundos", TALKTYPE_ORANGE_1) pid = doCreateTeleport(1387, cfg.newpos, cfg.tppos) addEvent(deleteTp, cfg.time*1000, pid) setPlayerStorageValue(cid, cfg.stg, 1) end return true end function deleteTp() doRemoveItem(getThingfromPos(cfg.tppos).uid,1) end O script é autoexplicativo, é só trocar pelos dados que você quer. Em actions.xml adicione a tag: <action itemid="XXXX" event="script" value="NOMEDOSEUARQUIVO.lua"/> Em XXXX você coloca o item que dará use no corpo do monstro. Depois, em data/movements/scripts, crie um arquivo.lua e cole isto dentro: function onStepIn(cid, item, position, fromPosition, toPosition) local cfg = { newpos = {x=1, y=1, z=1}, -- local que o teleport vai levar stg = 4128 -- storage que o player precisará ter } if getPlayerStorageValue(cid, cfg.stg) >= 0 then local fromPosition,toPosition = {x = 1, y = 1, z = 1},{x = 2, y = 2, z = 2} -- começo e final da área for x = fromPosition.x, toPosition.x do for y = fromPosition.y, toPosition.y do local pos = {x=x, y=y, z=fromPosition.z} local m = getTopCreature(pos).uid if m ~= 0 and isPlayer(m) then return doPlayerSendCancel(cid, "Alguém está fazendo a quest") end end end doTeleportThing(cid,cfg.newpos) doSendMagicEffect(cfg.newpos,10) else doTeleportThing(cid,fromPosition) doPlayerSendCancel(cid, "Você não tem permissão para entrar aqui.") end end Nessa linha: local fromPosition,toPosition = {x = 1, y = 1, z = 1},{x = 2, y = 2, z = 2} -- começo e final da área A primeira posição refere-se a posição do canto superior esquerdo da sala na qual o monstro estará e a segunda, a posição do canto inferior direito. Depois, em movements.xml cole a tag: <movevent type="StepIn" actionid="ACTION_ID_DO_TELEPORT" event="script" value="NOMEDOSEUARQUIVO.lua"/> É só colocar na tag o actionid do teleport que levará para a sala do monstro. Vlw, espero ter ajudado.
  5. Tentei baixar e não estou conseguindo. Posta o script aí, fica mais fácil pra ajudar.
  6. Leoxtibia

    Pegar Item Na Pedra

    Em actions/scripts crie um arquivo.lua e cole isto dentro: local cfg = { storage = 3256, -- n mexa idpedra = 1111, -- id da pedra idkey = 2222, --- id da chave que vai dar time = 5 *60 --- tempo para poder usar o item na pedra novamente [Ali está 5 minutos] } function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, cfg.storage) > os.time() then doPlayerSendTextMessage(cid, 22, "Você deve esperar ".. cfg.time .." segundos para fazer isso de novo.") return false end if itemEx.itemid == cfg.idpedra and itemEx.actionid == 3241 then doPlayerAddItem(cid, cfg.idkey, 1) doCreatureSay(cid, "Voce conseguiu uma ".. getItemNameById(cfg.idkey) ..".", TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, cfg.storage, os.time() + cfg.time) end return true end O script já explica como editar. Para que o player não pudesse usar o item em todas as pedras desse id no seu servidor, coloquei um actionid. Então, a pedra que você quiser que o player possa pegar a chave, coloque actionid 3241. Se quiser que funcione em todas, retire essa parte: and itemEx.actionid == 3241. Depois, em actions.xml cole a tag: <action itemid="XXXX" event="script" value="NOMEDOSEUARQUIVO.lua"/> Em XXXX coloque o id do item que dará use na pedra. Vlw, espero ter ajudado.
  7. Vá em actions.xml dê um cntrl+f e coloque 10000 para ver a qual arquivo se refere o seu baú e veja se o erro está nele.
  8. Dúvida Sanada. Tópico reportado! Para você dar Rep a ele, é só clicar nessa setinha verde pra cima /\ no post dele.
  9. Verdade, devo ter apagado sem querer ^^. Tópico reportado para moverem.
  10. Crie um arquivo.lua em data/creaturescripts/scripts e cole isto dentro: function onAdvance(cid, skill, oldLevel, newLevel) local config = { [50] = {item = 2160, count = 50}, } if skill == 8 then for level, info in pairs(config) do if newLevel >= level and (getPlayerStorageValue(cid, 30700) == -1 or not (string.find(getPlayerStorageValue(cid, 30700), "'" .. level .. "'"))) then doPlayerAddItem(cid, info.item, info.count) doPlayerSendTextMessage(cid, 27, "Parabéns Guerreiro você atingiu o level "..newLevel.." e ganhou "..info.count.." "..getItemNameById(info.item)..".") local sat = getPlayerStorageValue(cid, 30700) == -1 and "Values: '" .. level .. "'" or getPlayerStorageValue(cid, 30700) .. ",'" .. level .. "'" setPlayerStorageValue(cid, 30700, sat) end end end return TRUE end Em creaturescripts/scripts procure o arquivo login.lua e cole isto antes do ultimo return true: registerCreatureEvent(cid, "LevelItem") Em creaturescripts.xml adicione a tag: <event type="advance" name="LevelItem" event="script" value="NOMEDOSEUARQUIVO.lua"/> Para configurar, é só editar essa linha: [50] = {item = 2160, count = 50}, => [LEVEL QUE IRA GANHAR O ITEM] = {item = ID_DO_ITEM, count = QUANTIDADE} Vlw, espero ter ajudado.
  11. Assim: function onUse(cid, item, fromPosition, itemEx, toPosition) local monstros ={ {{x = 9168, y = 8572, z = 7}, "Dragon"}, {{x = 9175, y = 8558, z = 7}, "Dragon"}, {{x = 9169, y = 8575, z = 7}, "Dragon"}, {{x = 9172, y = 8556, z = 7}, "Dragon"}, {{x = 9173, y = 8567, z = 7}, "Dragon"}, {{x = 9161, y = 8566, z = 7}, "Dragon"}, {{x = 9165, y = 8567, z = 7}, "Dragon"}, {{x = 9163, y = 8557, z = 7}, "Dragon"}, {{x = 9183, y = 8560, z = 7}, "Dragon"}, {{x = 9181, y = 8566, z = 7}, "Dragon"}, {{x = 9165, y = 8560, z = 7}, "Dragon"}, {{x = 9171, y = 8575, z = 7}, "Dragon Lord"}, {{x = 9184, y = 8557, z = 7}, "Dragon Lord"}, {{x = 9184, y = 8565, z = 7}, "Dragon Lord"}, {{x = 9177, y = 8556, z = 7}, "Dragon Lord"}, {{x = 9168, y = 8558, z = 7}, "Dragon Lord"}, {{x = 9165, y = 8555, z = 7}, "Dragon Lord"}, {{x = 9162, y = 8563, z = 7}, "Dragon Lord"}, {{x = 9175, y = 8575, z = 7}, "Dragon Lord"}, {{x = 9170, y = 8565, z = 7}, "Dragon Lord"}, {{x = 9169, y = 8562, z = 7}, "Dragon Lord"}, {{x = 9177, y = 8567, z = 7}, "Dragon Lord"}, {{x = 9169, y = 8568, z = 7}, "Dragon Lord Hatchling"}, {{x = 9178, y = 8573, z = 7}, "Dragon Lord Hatchling"}, {{x = 9182, y = 8570, z = 7}, "Dragon Lord Hatchling"}, {{x = 9178, y = 8563, z = 7}, "Dragon Lord Hatchling"} } if SevenFloor() == false then return doPlayerSendCancel(cid, "sorry already have monster.") end for _, summon in pairs(monstros) do doCreateMonster(summon[2], summon[1]) end doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) local walls = {{x=9166, y=8574, z=7, stackpos=1},{x=9173, y=8569, z=7, stackpos=1},{x=9180, y=8581, z=7, stackpos=1}} local doors = {9166, 5278, 9165} for i=1, 3 do if getTileItemById(walls[i], doors[i]).uid > 0 then return false else doCreateItem(doors[i],1,walls[i]) end end function SevenFloor() local fromPosition,toPosition = {x = 9155, y = 8552, z = 7},{x = 9191, y = 8589, z = 7} -- começo e final da ára for x = fromPosition.x, toPosition.x do for y = fromPosition.y, toPosition.y do local pos = {x=x, y=y, z=fromPosition.z} local m = getTopCreature(pos).uid if m ~= 0 and isMonster(m) then return false end doCleanTile(pos) end end return true end
  12. Qual o erro dos baús? Não abrem? Dá algum erro no distro? Dê look em um desses baús e manda aqui pra q agente possa te ajudar melhor.
  13. Leoxtibia

    Alavanca Da Anihi

    O script da anihi você pode encontrar neste tópico: http://www.xtibia.com/forum/topic/184621-algumas-levers-reformuladas/
  14. Em creaturescripts/scripts crie um arquivo.lua e cole isto dentro: local item = getPlayerSlotItem(cid, ID_SLOT).itemid == ID_DO_ITEM function onDeath(cid, lastHitKiller, mostDamageKiller) if getPlayerSkullType(cid) >= 4 then doCreatureSetDropLoot(item, false) else doCreatureSetDropLoot(item, false) end return true end Em creaturescripts/scripts/login.lua cole, antes do return true: registerCreatureEvent(cid, "noDrop") Em creaturescripts.xml, cole a tag: <event type="death" name="noDrop" event="script" value="NOMEDOSEUARQUIVO.lua"/> É só editar o ID_SLOT e o ID_DO_ITEM. Em alguns servers, a depender do distro, não funciona com red skull... deve ser algum problema no distro mesmo. Vlw, espero ter ajudado aí.
  15. Ok, tópico reportado para moverem.
  16. function onSay(cid, words, param) if getTilePzInfo(getPlayerPosition(cid)) == FALSE then doPlayerSendCancel(cid,"você não esta em protection zone.") elseif getPlayerSkullType(cid) == 3 then doCreatureSetSkullType(cid, 0) doRemoveCreature(cid) else doRemoveCreature(cid) end return TRUE end
  17. Sobre o dos skulls: redSkullLength = 48 * 60 * 60 blackSkullLength = 48 * 60 * 60 Sobre o do trap, você pode achar nesse tópico: http://www.xtibia.com/forum/topic/186630-system-anti-trap-low-level/ Espero ter ajudado, abraços.
  18. Cara, explica isso direito aí. Você quer que só possa o usar o comando em pz não é? Como que um pk vai tá dentro do pz? Você quer que tire o pk dele se ele estiver fora?
  19. Em talkaction/script, crie um arquivo.lua e cole isto dentro: function onSay(cid, words, param, channel) doPlayerSendChannelMessage(cid, false, '[Kawrl]SnOR: Este channel e so para tirar dúvidas sobre o modo de jogo e não sobre spoilers de quests e etc..',TALKTYPE_CHANNEL_O,7) end Em talkactions.xml cole a tag: <talkaction words="/help" script="NOMEDOSEUARQUIVO.lua"/> Ali coloquei o id do Help Channel como 7, que nem você falou. Em alguns o id é 9, se for 9 mesmo, é só colocá-lo no lugar do 7. Vlw, espero ter ajudado.
  20. Leoxtibia

    Tasks

    Então cara, é só você colocar só os monstros que quiser, siga o script desse link: http://www.xtibia.com/forum/topic/151636-simple-task-20/ Mas, em vez de colocar o data/lib que tem lá, você coloca esse: tasktabble = { ["minotaur"] = {storage_start = 200201, storage = 9100,count = 12,exp = 1000,reward = {{2656,1},{7730,1},{2152,20}}}, ["dragon"] = {storage_start = 200202, storage = 9101,count = 14,exp = 2000,reward = {{2152,50}}}, ["necromancer"] = {storage_start = 200203, storage = 9102,count = 25,exp = 4000,reward = {{2462,1},{2648,1},{2152,35}}} } function CheckTask(cid) for k, v in pairs(tasktabble) do if getPlayerStorageValue(cid,v.storage_start) >= 1 then return true end end return false end function finisheAllTask(cid) local x = true for k, v in pairs(tasktabble) do if tonumber(getPlayerStorageValue(cid,v.storage)) then x = false end end if x == true then local b = getGlobalStorageValue(63004) if b == -1 then b = 1 end if b < 11 then setGlobalStorageValue(63004,b+1) doBroadcastMessage('[Task Mission Complete] '..getCreatureName(cid)..' was the '..b..'° to finish the task!.') doPlayerAddPremiumDays(cid, 10) doItemSetAttribute(doPlayerAddItem(cid, 7369), "name", "trophy of the 10 firsts finish all task") end end end function getItemsInContainerById(container, itemid) -- Function By Kydrai local items = {} if isContainer(container) and getContainerSize(container) > 0 then for slot=0, (getContainerSize(container)-1) do local item = getContainerItem(container, slot) if isContainer(item.uid) then local itemsbag = getItemsInContainerById(item.uid, itemid) for i=0, #itemsbag do table.insert(items, itemsbag[i]) end else if itemid == item.itemid then table.insert(items, item.uid) end end end end return items end function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid) local piles = 0 if #item > 0 then for i,x in pairs(item) do if getThing(x).type < 100 then local it = getThing(x) doTransformItem(it.uid, itemid, it.type+quant) if it.type+quant > 100 then doPlayerAddItem(cid, itemid, it.type+quant-100) end else piles = piles+1 end end else return doPlayerAddItem(cid, itemid, quant) end if piles == #item then doPlayerAddItem(cid, itemid, quant) end end function getItemsFromList(items) -- by vodka local str = '' if table.maxn(items) > 0 then for i = 1, table.maxn(items) do str = str .. items[i][2] .. ' ' .. getItemNameById(items[i][1]) if i ~= table.maxn(items) then str = str .. ', ' end end end return str end function doAddItemsFromList(cid,items) -- by vodka if table.maxn(items) > 0 then for i = 1, table.maxn(items) do local count = items[i][2] while count > 0 do if isItemStackable(items[i][1]) then doPlayerAddItemStacking(cid, items[i][1], 1) else doPlayerAddItem(cid, items[i][1],1) end count = count - 1 end end end end function pairsByKeys(t, f) local a = {} for n in pairs(t) do table.insert(a, n) end table.sort(a, f) local i = 0 local iter = function () i = i + 1 if a[i] == nil then return nil else return a[i], t[a[i]] end end return iter end Daí só precisa editar a seu gosto: count = 12,exp = 1000,reward = {{2656,1},{7730,1},{2152,20}}}, ===> count = quantidade de monstros, exp = Experiência que o player ganhará ao terminar a task e falar com o npc, reward = Items que o player ganhará do NPC. Depois, é só você colocar um tile com a actionid na frente do teleport, para que só passe aqueles players que tiverem o storage da task. Actionid para teleport do Minotaur = 9000 / Actionid para dragon = 9101 / Actionid para necro = 9102
  21. Leoxtibia

    Tasks

    Talvez esses tópicos te ajude: http://www.xtibia.com/forum/topic/185160-simple-task-system-do-vodkart/ http://www.xtibia.com/forum/topic/151636-simple-task-20/ http://www.xtibia.com/forum/topic/173420-advanced-task-system-task-system-gesior-php/ Vlw, espero ter te ajudado, abraços.
  22. Sim, eu sei. Você pode dar uma olhada nesse script pra ter uma base: http://www.xtibia.com/forum/topic/170485-spell-change-corpse/
  23. Sobre o doTeleportThing você pode seguir esse exemplo mais ou menos: local function doSend(pos1, pos2, num) doSendDistanceShoot(getCreaturePosition(pos1), getCreaturePosition(pos2), 4) doSendDistanceShoot(getCreaturePosition(pos2), getCreaturePosition(pos1), 4) if type(num) == "number" and num == 1 then if math.random(1, 100) <= config.chance then local pp1 = getCreaturePosition(pos1) local pp2 = getCreaturePosition(pos2) doTeleportThing(pos2, pp1) doTeleportThing(pos1, pp2) else doPlayerSendCancel(cid, "Try again.") end end return true end E sobre só usar enquanto tiver atacando é isso: local target = getCreatureTarget(cid) if type(target) ~= "number" or target == 0 then doPlayerSendCancel(cid, "Selecione alguma criatura para usar o comando.") return false end
  • Quem Está Navegando   0 membros estão online

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