Ir para conteúdo

MatteusDeli

Membro
  • Registro em

  • Última visita

Tudo que MatteusDeli postou

  1. Boa tarde, acho que esses 2 scripts já existem aqui no fórum mais vou postar eles aqui mesmo assim data/talkactions crie um arquivo chamado aol.lua : local price = 5 -- preço em crystal coins do aol local aol_id = 2173 -- id do aol function onSay(cid, words, param) if doPlayerRemoveItem(cid,2160,price) then doPlayerAddItem(cid,aol_id,1) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MORTAREA) doCreatureSay(cid, "!aol", TALKTYPE_ORANGE_1) else doPlayerSendCancel(cid, "You do not have "..price.." crystal coin(s).") doSendMagicEffect(getPlayerPosition(cid), 2) end return true end Na mesma pasta crie outro arquivo chamado bless.lua: local bless_price = 15 -- preço do bless em crystal coin function onSay(cid, words, param) if getPlayerBlessing(cid, 1) or getPlayerBlessing(cid, 2) or getPlayerBlessing(cid, 3) or getPlayerBlessing(cid, 4) or getPlayerBlessing(cid, 5) then doPlayerSendCancel(cid,'You have already got one or more blessings!') else if doPlayerRemoveItem(cid, 2160, bless_price) == TRUE then doPlayerAddBlessing(cid, 1) doPlayerAddBlessing(cid, 2) doPlayerAddBlessing(cid, 3) doPlayerAddBlessing(cid, 4) doPlayerAddBlessing(cid, 5) doSendMagicEffect(getPlayerPosition(cid), 28) doPlayerSendTextMessage(cid,MESSAGE_EVENT_ADVANCE, 'You have been blessed!') else doPlayerSendCancel(cid, "You need "..bless_price.." crystal coin(s) to get blessed!") doSendMagicEffect(getPlayerPosition(cid), 2) end end return TRUE end XMLs: <talkaction words="!aol;/aol" event="script" value="aol.lua"/> <talkaction words="!bless;/bless" event="script" value="bless.lua"/>
  2. @juvelino Altere o codigo a cima pra esse, foi erro meu esqueci de mudar o andar, a variavel newPos esta com a posicao 7 e tem que ser 10, acredito que agora vai funcionar. local monsters_in_lobby = {} for posX=position_lobby.x1.x, position_lobby.x2.x do for posY=position_lobby.x1.y, position_lobby.x2.y do local newPos = {x=posX,y=posY,z=position_lobby.x1.z, stackpos=253} local monsters = getTopCreature(newPos).uid if (isMonster(monsters)) then if (monsters > 0) then table.insert(monsters_in_lobby, monsters) end end end end
  3. @juvelino Opa, estranho eu testei aqui e funcionou, tenta setar a área da sala denovo pegando as duas posições como ta na imagem e testa pra ver se vai. O erro na distro é pq acumulou muitos monstros na mesma posicao ai o quando voce puxa a alavanca ele nao consegue criar outro demon.
  4. @juvelino position_lobby = { -- Posição da sala no formato quadrado x1 = {x=174,y=61,z=7}, x2 = {x=180,y=67,z=7} } summons = { [1] = { monster= "Demon", pos= {x = 174 ,y = 61,z = 7}}, [2] = { monster= "Demon", pos={x = 180,y = 67,z = 7}}, --[3] = {monster = "Morgaroth", pos = {x= 181, y= 55, z= 7}}, } mensagemBroadcast = "Tem um time upando nas ruínas" function onUse(cid, item, fromPosition, itemEx, toPosition) local monsters_in_lobby = {} for posX=position_lobby.x1.x, position_lobby.x2.x do for posY=position_lobby.x1.y, position_lobby.x2.y do local newPos = {x=posX,y=posY,z=7, stackpos=253} local monsters = getTopCreature(newPos).uid if (isMonster(monsters)) then if (monsters > 0) then table.insert(monsters_in_lobby, monsters) end end end end if (#monsters_in_lobby == 0) then for i=1, #summons do doCreateMonster(summons[i].monster, summons[i].pos) end SetSwitch(item) doBroadcastMessage(mensagemBroadcast) else doPlayerSendCancel(cid, "Voce tem que matar todos os demons.") end return true end function SetSwitch(item) if (item.itemid == 1945) then doTransformItem(item.uid, item.itemid+1) end if (item.itemid == 1946) then doTransformItem(item.uid, item.itemid-1) end end
  5. @gleandro97 Caso não ache alguém que faça e ainda estiver precisando, eu posso fazer, só mandar mensagem inbox aqui mesmo.
  6. @poko360 sim, mais se o player sair da area que voce definiu no script ele já vai setar o storage pra -1, entao eu acho que nem precisa fazer outro script de movements, é só colocar um tp normal mesmo.
  7. @poko360 Acredito que agora vai funcionar 1 - Apague o script do globalevent/scripts e exclua a linha do globalevents.XML 2 - Vá em creatureevents/scripts e crie um arquivo chamado teleportSala.lua e cole isso: 2.1 - Registre o evento no creatureevents.XML e no Login.lua em creatureevents/scripts: 3 - Altere o script que esta em movements/scripts para este:
  8. @poko360 Veja se eu entendi o que voce quer, testa ai: Em globalevents altere o script para este No globalevent.xml altere para essa linha: Altere seu script em moveevents para este:
  9. @poko360 Veja se é isso que você quer. 1 - Vá em data/globalevents crie um arquivo chamado salaTempo.lua e adicione isso dentro: x_inicial = 158 -- Posição X inicial da sala x_final = 161 -- Posição X final da sala y_inicial = 52 -- Posição Y inicial da sala y_final = 55 -- Posição Y final da sala z_andar = 7 -- Andar da sala (Posição Z) teleport_effect = 10 -- Efeito do teleport position_teleport = {x=164,y=54,z=7}-- Posição aonde o player será teleportado depois dos 10 minutos. function onThink(interval, lastExecution) for i = x_inicial, x_final do for j = y_inicial, y_final do local position = {x=i,y=j,z=z_andar,stackpos=STACKPOS_TOP_CREATURE} local player = getTopCreature(position) if (isPlayer(player.uid)) then local newPos = doTeleportThing(player.uid, position_teleport) doSendMagicEffect(getThingPos(player.uid), teleport_effect) break end end end return true end 2 - Vá em data/globalevents e abra o arquivo globalevents.xml e cole essa linha dentro dele: <globalevent name="tempoSala" interval="600" script="tempoSala.lua" /> Configurando: (Pense em um retângulo, o retângulo seria a sala) x_inicial é o começo do retângulo. x_final é o final do retângulo. y_inicial é o ponto em cima do retângulo. y_final é o ponto em baixo do retângulo. z_andar é o andar que esta a sala.
  10. @Margela Só alterar na lista: local pokePrice = {["Bulbasaur"] = 3000, ["Ivysaur"] = 4500, --alterado v1.6["Venusaur"] = 12000,} Se voce quiser que o npc pague 20 dls pelo bulbasaur, é só voce alterar o 3000 para 30. Exemplo: 30 = 30 dls 300 = 300 dls 3.000 = 3k 30.000 = 30k 300.000 = 300k 3.000.000 = 3kk E assim por diante...
  11. @Margela posta o script do npc que vende pokemon pra nós ver
  12. @leozincorsair Sim
  13. @usoparagames Veja se é isso que você quer. 1 - INSTALANDO O SCRIPT NA LIB DO SERVIDOR 2 - CRIANDO O NPC DAILY 3 - CONFIGURANDO O CREATURESCRIPTS 4 - CONFIGURANDO UM NOVO POKEMON
  14. @ASSAFSAF Veja se é assim que você quer: 1 - data/scripts/actions crie um arquivo chamado questDaily.lua: local storageBlock = 451112 -- Não alterar este Storage local storage = 44541 local hour = 1 -- Tempo em horas que o player poderá pegar a recompensa novamente local effectChest = 10 -- Efeito Bau local itemRewardID = 2160 -- ItemID que será enviado para o depot local count = 1 -- Quantidade do Item local time = 60 * 60 * hour local messageSucess = "Voce recebeu uma recompensa do bau, ela foi enviada para o seu depot." -- mensagem que irá aparecer quando o player pegar a recompensa local messageFail = "Voce tem que esperar para poder pegar a quest novamente." -- mensagem que irá aparecer quando o player já pegou a recompensa function onUse(cid, item, fromPosition, itemEx, toPosition) local playerName = getCreatureName(cid) if (getPlayerStorageValue(cid, storage) - os.time() < storage) then local timeLeft = getPlayerStorageValue(cid, storage) - os.time() local time = { hour = math.floor(timeLeft/3600), minutes = math.ceil((timeLeft % 3600)/60) } doPlayerSendCancel(cid, messageFail) end if (getPlayerStorageValue(cid, storage) <= os.time()) then doPlayerSendMailByName(playerName, doCreateItemEx(itemRewardID, count), getPlayerTown(cid)) doSendMagicEffect(getThingPos(cid), effectChest) doPlayerSendCancel(cid,messageSucess) setPlayerStorageValue(cid, storage, os.time() + time) setPlayerStorageValue(cid, storageBlock, 1) end end Agora vamos registrar a ActionID do baú que fará a action no arquivo actions.XML. 2 - Vá em data/actions e abra o arquivo actions.xml e cole esta tag: <action actionid="9991" script="questDaily.lua"/> Agora vamos configurar a mensagem que vai ser enviada para o player quando ele tiver a permissão de pegar a recompensa outra vez. 3 - Vá em data/creaturescripts/scripts, crie um arquivo lua chamado questDaily.lua: local storage = 44541 -- Mesmo Storage que você colocou no Script do Bau (data/actions/scripts/dailyQuest.lua) local storageBlock = 451112 -- Não alterar este Storage local message = "Voce ja pode pegar a recompensa novamente." -- mensagem que será enviada quando o player tiver a permissao para pegar a recompensa novamente. function onThink(cid, interval) if(not isCreature(cid)) then return end if (os.time() == getPlayerStorageValue(cid, storage) and getPlayerStorageValue(cid, storageBlock) >= 1) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, message) setPlayerStorageValue(cid, storageBlock, -1) end return true end Agora vamos registrar o evento no Creaturescripts.XML 4 - Vá em data/creaturescripts e abra o arquivo creaturescripts.xml e cole está linha: <event type="think" name="questDaily" interval="10" event="script" value="questDaily.lua"/> Agora vamos registrar o evento no Login.lua 5 - Vá em data/creaturescripts/login.lua e cole esta linha la dentro: registerCreatureEvent(cid, "questDaily")
  15. @alexpaimel Posta o script walkback.lua que está em data/movements/scripts/ pra nós dar uma olhada
  16. @DouGlaS Mapper Substitua o script data/talkactions/createitem.lua do seu server por este: (aconselho a fazer um backup do antigo script caso queira voltar a usar o script antigo) -- Configurations -- local CONSOLE_COLOR = MESSAGE_STATUS_CONSOLE_BLUE -- Cor da mensagem que irá aparecer no Default local MESSAGE = "Voce nao tem permissao para criar este item." -- A mensagem que irá parecer caso ele não possa criar o item local stages = { -- [GroupId] = {Os Id's dos itens que serão bloqueados seguidos por virgula EX: 2160,2554,5564} [5] = {2160, 2454, 5777}, [6] = {3977, 3976, 5777}, } ------------------- function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local t = string.explode(param, ",") local ret = RETURNVALUE_NOERROR local pos = getCreaturePosition(cid) local id = tonumber(t[1]) for k,v in pairs(stages) do if (getPlayerGroupId(cid) == k) then for i=1, #v do if (id == v[i]) then doPlayerSendTextMessage(cid, CONSOLE_COLOR, MESSAGE) return true end end end end local amount = 100 if(t[2]) then amount = t[2] end local item = doCreateItemEx(id, amount) if(t[3] and getBooleanFromString(t[3])) then if(t[4] and getBooleanFromString(t[4])) then pos = getCreatureLookPosition(cid) end ret = doTileAddItemEx(pos, item) else ret = doPlayerAddItemEx(cid, item, true) end if(ret ~= RETURNVALUE_NOERROR) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Couldn't add item: " .. t[1]) return true end doDecayItem(item) if(not isPlayerGhost(cid)) then doSendMagicEffect(pos, CONST_ME_MAGIC_RED) end return true end
  17. @Vitorelias Testa ai Crie um arquivo em data/actions/scripts chamado wallUseKey.lua function onUse(cid, item, fromPosition, itemEx, toPosition) local position_enter = {x=138,y=52,z=7} -- posicao que o player ira ao clicar para entrar local position_exit = {x=138,y=54,z=7} -- posicao que o player vai ir quando clicar para sair local key_id = 2087 -- Id da Key para passar a parede local wall_id = 3047 -- Id da parede que o player tera que usar a key local storage_save = 56442 -- Não alterar if (itemEx.itemid == wall_id and getPlayerItemCount(cid, key_id) >= 1) then if (getPlayerStorageValue(cid, storage_save) >= 1) then doTeleportThing(cid, position_exit) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doPlayerRemoveItem(cid, key_id, 1) setPlayerStorageValue(cid, storage_save, -1) return true end doTeleportThing(cid, position_enter) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) setPlayerStorageValue(cid, storage_save, 1) end end XML: Em itemid coloque o id da key que será usada para acionar o script <action itemid="2087" script="wallUseKey.lua"/>
  18. @Vitorelias Crie um arquivo lua na pasta data/actions/scripts com o nome de wallUse.lua Aonde ta storage_player, você coloca a storage que o player tem que ter para dar use na parede. E aonde ta storage_set_player a storage que o player irá ganhar quando clicar na parede. function onUse(cid, item, fromPosition, itemEx, toPosition) local storage_player = 5555 -- Storage que o player vai ter para dar USE na parede local storage_set_player = 7777 -- Storage que o player irá ganhar clicando na parede if isPlayer(cid) then if getPlayerStorageValue(cid, storage_player) >= 1 then setPlayerStorageValue(cid, storage_set_player, 1) setPlayerStorageValue(cid, storage_player, 0) else return false end end return true end XML: <action actionid="XXXX" script="wallUse.lua"/> Aonde ta XXXX é a actionid que irá disparar o script.
  19. @Edirinacio Tenta isso Altere a variável playerWinPos para a posição que você quer que o player seja teleportado CONFIGURAÇÃO QUE FICA NA LIB --[[ Capture The Flag System Author: Maxwell Denisson(MaXwEllDeN) Version: 2.0 Contact: [email protected] ]] CTF_LIB = { playerWinPos = {x=,y=,z=}, -- Posição que o player vencedor vai ser teleportado waitpos = {x = 1009, y = 1019, z =7}, -- Posição da sala de espera tppos = {x = 1012, y = 1022, z =7}, -- Onde o TP vai aparecer days = {1, 2, 3, 4, 5, 6, 7}, -- Dias que o evento vai abrir xp_percent = 5.0, -- Porcentagem de exp que o player vai ganhar timeclose = 1, -- Tempo, em minutos, para iniciar o CTF winp = 10, -- Quantos pontos uma equipe precisa marcar para vencer teams = { ["Vermelho"] = { temple = 1, -- TownID da equipe vermelha outfit = {lookHead = 0, lookBody = 132, lookLegs = 113, lookFeet = 94}, flag = { id = 1435, flag_pos = {x = 1011, y = 1027, z =7}, -- Posição onde a bandeira vermelha vai ser criada gnd_pos = {x = 1012, y = 1027, z =7}, -- Onde os players da equipe vermelha entregarão a bandeira. }, }, ["Verde"] = { temple = 2, -- TownID da equipe verde outfit = {lookHead = 0, lookBody = 121, lookLegs = 101, lookFeet = 101}, flag = { id = 1437, flag_pos = {x = 1022, y = 1027, z =7}, -- Posição onde a bandeira verde vai ser criada gnd_pos = {x = 1022, y = 1027, z =7}, -- Onde os players da equipe verde entregarão a bandeira. }, }, }, } local CTF = CTF_LIB function CTF.getMembers() local members = {} for _, cid in pairs(getPlayersOnline()) do if getPlayerStorageValue(cid, 16700) ~= -1 then table.insert(members, cid) end end return members end function CTF.getTeamMembers(team) local members = {} for _, cid in pairs(CTF.getMembers()) do if getPlayerStorageValue(cid, 16700) == team then table.insert(members, cid) end end return members end function CTF.removePlayer(uid) setPlayerStorageValue(uid, 16700, -1) doPlayerSetTown(uid, getPlayerStorageValue(uid, 16701)) doTeleportThing(uid, getTownTemplePosition(getPlayerStorageValue(uid, 16701))) setPlayerStorageValue(uid, 16701, -1) doRemoveCondition(uid, CONDITION_OUTFIT) doCreatureAddHealth(uid, getCreatureMaxHealth(uid)) doCreatureAddMana(uid, getCreatureMaxMana(uid)) return true end function CTF.playerWinner(uid, playerWinPos) setPlayerStorageValue(uid, 16700, -1) setPlayerStorageValue(uid, 16701, -1) doTeleportThing(cid, playerWinPos) doRemoveCondition(uid, CONDITION_OUTFIT) doCreatureAddHealth(uid, getCreatureMaxHealth(uid)) doCreatureAddMana(uid, getCreatureMaxMana(uid)) return true end function CTF.addPlayer(uid) local team = CTF.getTeamLivre() local n_team = CTF.teams[team] setPlayerStorageValue(uid, 16700, team) setPlayerStorageValue(uid, 16701, getPlayerTown(uid)) doPlayerSetTown(uid, n_team.temple) doTeleportThing(uid, CTF.waitpos) doPlayerSendTextMessage(uid, 22, "Você agora faz parte do time ".. team .. ".") local outfit = getCreatureOutfit(uid) for i, v in pairs(n_team.outfit) do outfit[i] = v end registerCreatureEvent(uid, "CTFLogout") registerCreatureEvent(uid, "CTFAttack") registerCreatureEvent(uid, "CTFCombat") registerCreatureEvent(uid, "CTFDeath") doSetCreatureOutfit(uid, outfit, -1) return true end function CTF.getTeamLivre() local teams = {} for i, _ in pairs(CTF.teams) do table.insert(teams, {i, #CTF.getTeamMembers(i)}) end if (teams[1][2] < teams[2][2]) then return teams[1][1] elseif (teams[1][2] > teams[2][2]) then return teams[2][1] end return teams[math.random(2)][1] end function CTF.broadCast(msg, class) for _, uid in pairs(CTF.getMembers()) do doPlayerSendTextMessage(uid, class or 20, msg) end return true end function CTF.getFlagTeam(flag) for i, v in pairs(CTF.teams) do if v.flag.id == flag then return i end end return "" end local score_sto = {} local a = 0 for i, _ in pairs(CTF.teams) do score_sto[i] = 42314 + a a = a + 1 end function CTF.createFlags() for i, v in pairs(CTF.teams) do local flag = doCreateItem(v.flag.id, 1, v.flag.flag_pos) doItemSetAttribute(flag, "aid", 63218) v.flag.gnd_pos.stackpos = 0 local gnd = getThingFromPos(v.flag.gnd_pos).uid doItemSetAttribute(gnd, "aid", 63200) doItemSetAttribute(gnd, "team", i) setGlobalStorageValue(score_sto[i], 0) end return true end function CTF.removeFlags() for i, v in pairs(CTF.teams) do local flag = doFindItemInPos({v.flag.id}, v.flag.flag_pos)[1] if flag then doRemoveItem(flag.uid, 1) end v.flag.gnd_pos.stackpos = 0 local gnd = getThingFromPos(v.flag.gnd_pos).uid doItemSetAttribute(gnd, "aid", 0) end return true end function CTF.start() doRemoveItem(doFindItemInPos({1387}, CTF.tppos)[1].uid, 1) setGlobalStorageValue(16705, -1) if #CTF.getMembers() < 2 then doBroadcastMessage("O CTF não pôde ser iniciado por falta de players.") for _, cid in pairs(CTF.getMembers()) do CTF.removePlayer(cid) end return false end CTF.broadCast("O CTF foi iniciado. Bom jogo!") for _, uid in pairs(CTF.getMembers()) do doTeleportThing(uid, getTownTemplePosition(getPlayerTown(uid))) end CTF.createFlags() return true end function CTF.returnFlag(uid, status) local team = getPlayerStorageValue(uid, 16702) if status then local msg = "O player ".. getCreatureName(uid) .. ", estava com a bandeira do time ".. team .. " " if status == 1 then msg = msg .. "e foi eliminado. " elseif status == 2 then msg = "e foi removido do evento. " end msg = msg .. "Portanto a bandeira do time ".. team .. " foi devolvida." CTF.broadCast(msg) end if CTF.teams[team] then local flag = doCreateItem(CTF.teams[team].flag.id, 1, CTF.teams[team].flag.flag_pos) doItemSetAttribute(flag, "aid", 63218) setPlayerStorageValue(uid, 16702, -1) end return true end function CTF.addPoint(uid) local finish local msg = "Capture The Flag:" setGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)], getGlobalStorageValue(score_sto[getPlayerStorageValue(uid, 16700)]) + 1) for i, _ in pairs(CTF.teams) do msg = msg .. "\nTime ".. i .. ": ".. getGlobalStorageValue(score_sto[i]) if getGlobalStorageValue(score_sto[i]) >= CTF.winp then finish = i end end CTF.broadCast(getCreatureName(uid) .. " marcou um ponto para o time ".. getPlayerStorageValue(uid, 16700) .. ".", 22) CTF.broadCast(msg) if finish then CTF.close(finish) end return true end function CTF.close(win) for i, _ in pairs(CTF.teams) do setGlobalStorageValue(score_sto[i], 0) end if not win then doBroadcastMessage("O CTF acabou sem vencedores.") else CTF.broadCast("O time ".. win .. " marcou ".. CTF.winp .. " ponto(s) e venceu o evento.") end for _, cid in pairs(CTF.getMembers()) do if getPlayerStorageValue(cid, 16700) == win then local xp = math.ceil(getPlayerExperience(cid) * (CTF.xp_percent / 100), 215) doPlayerSendTextMessage(cid, 22, "Parabéns! Você ganhou o evento e obteve ".. CTF.xp_percent .."% de sua experiência total(".. xp ..").") doSendAnimatedText(getThingPos(cid), xp, 215) CTF.playerWinner(cid, CTF.playerWinPos) doPlayerAddExperience(cid, xp) end if getPlayerStorageValue(cid, 16702) ~= -1 then CTF.returnFlag(cid) end if getPlayerStorageValue(cid, 16700) ~= win then CTF.removePlayer(cid) end end CTF.removeFlags() CTF.start() return true end local function Alert(uid) if (isCreature(uid)) then if getPlayerStorageValue(uid, 16702) == -1 or getPlayerStorageValue(uid, 16700) == -1 then return false end doSendAnimatedText(getThingPos(uid), "Flag!", math.random(50, 200)) local bla = {18, 19, 21, 22, 23, 24} doSendMagicEffect(getThingPos(uid), bla[math.random(#bla)]) if (os.time() - getPlayerStorageValue(uid, 16703) >= 60) then CTF.returnFlag(uid) return setPlayerStorageValue(uid, 16703, -1) end addEvent(Alert, 500, uid) return true end return false end function CTF.stealFlag(uid, team) setPlayerStorageValue(uid, 16702, team) setPlayerStorageValue(uid, 16703, os.time()) CTF.broadCast(getCreatureName(uid) .. " roubou a bandeira do time ".. team .. "!") Alert(uid) return true end function doFindItemInPos(ids, pos) -- By Undead Slayer local results = {} for _ = 0, 255 do local findPos = {x = pos.x, y = pos.y, z = pos.z, stackpos = _} if isInArray(ids, getThingFromPos(findPos).itemid) then table.insert(results, getThingFromPos(findPos)) end end return results end
  20. @MatCollier Tenta assim, acho que faltou fechar o bloco do while
  21. É isso que tu quer? Eu configurei só 3 armas 1 Axe, 1 Sword e 1 Club com os 4 elementos Para transformar só falar !axe fire.. ou !sword fire ... ou !club fire ... Crie um arquivo chamado EnchantedWeapon.lua function onSay(cid, words, param) local normal_weapons = { axe = 7380, -- ID do AXE NORMAL sword = 7406, -- ID do SWORD NORMAL club = 7415, -- ID do CLUB NORMAL } local enchanted_weapons = { axe = { ["fire"] = 7752, -- ID dos AXES ENCANTADOS ["ice"] = 7771, ["earth"] = 7862, ["energy"] = 7877, }, sword = { ["fire"] = 7747, -- ID dos SWORDS ENCANTADOS ["ice"] = 7766, ["earth"] = 7857, ["energy"] = 7872, }, club = { ["fire"] = 7756, -- ID dos CLUBS ENCANTADOS ["ice"] = 7775, ["earth"] = 7866, ["energy"] = 7881, }, } if (words == "!axe") then if (param == "fire") then TransformWeapon(cid, normal_weapons.axe, enchanted_weapons.axe[param]) return true end if (param == "ice") then TransformWeapon(cid, normal_weapons.axe, enchanted_weapons.axe[param]) return true end if (param == "earth") then TransformWeapon(cid, normal_weapons.axe, enchanted_weapons.axe[param]) return true end if (param == "energy") then TransformWeapon(cid, normal_weapons.axe, enchanted_weapons.axe[param]) return true end end if (words == "!sword") then if (param == "fire") then TransformWeapon(cid, normal_weapons.sword, enchanted_weapons.sword[param]) return true end if (param == "ice") then TransformWeapon(cid, normal_weapons.sword, enchanted_weapons.sword[param]) return true end if (param == "earth") then TransformWeapon(cid, normal_weapons.sword, enchanted_weapons.sword[param]) return true end if (param == "energy") then TransformWeapon(cid, normal_weapons.sword, enchanted_weapons.sword[param]) return true end end if (words == "!club") then if (param == "fire") then TransformWeapon(cid, normal_weapons.club, enchanted_weapons.club[param]) return true end if (param == "ice") then TransformWeapon(cid, normal_weapons.club, enchanted_weapons.club[param]) return true end if (param == "earth") then TransformWeapon(cid, normal_weapons.club, enchanted_weapons.club[param]) return true end if (param == "energy") then TransformWeapon(cid, normal_weapons.club, enchanted_weapons.club[param]) return true end end end function TransformWeapon(cid, normal_weapons, enchanted_weapons) if not (getPlayerVocation(cid) == 4) then doPlayerSendCancel(cid, "You dont is a Elite Knight.") return false end if (getPlayerItemCount(cid, normal_weapons) >= 1) then doPlayerRemoveItem(cid, normal_weapons, 1) doPlayerAddItem(cid, enchanted_weapons, 1) doPlayerSendCancel(cid, "You item been enchanted.") else doPlayerSendCancel(cid, "You dont have item.") return false end end XML no Talkactions: <talkaction words="!axe" event="script" value="EnchantedWeapon.lua"/> <talkaction words="!club" event="script" value="EnchantedWeapon.lua"/> <talkaction words="!sword" event="script" value="EnchantedWeapon.lua"/>
  22. @Matheuus Boa tarde, o !cleandepot ele limpa o que está em cima do depot ou tudo que está dentro?
  23. @Zazeros Veja se é isso que você quer local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local quest_storage = 22542 -- Storage para checar se o player já pegou a quest local config_reward = { --["Nome vocação"] = Id Item Recompensa ["Sorcerer"] = 2160, ["Druid"] = 2160, ["Paladin"] = 2160, ["Knight"] = 2160, ["Master Sorcerer"] = 2160, ["Elder Druid"] = 2160, ["Royal Paladin"] = 2160, ["Elite Knight"] = 2160, } 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) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, "reward") then if (getPlayerStorageValue(cid, quest_storage) >= 1) then npcHandler:say("Voce ja pegou a sua recompensa.", cid) return false else talkState[talkUser] = 1 end end if msgcontains(msg, "yes") and talkState[talkUser] == 1 then for k,v in pairs (config_reward) do if (getPlayerVocationName(cid) == k) then doPlayerAddItem(cid, v, 1) npcHandler:say("Aqui esta a sua recompensa.", cid) talkState[talkUser] = 0 break end end setPlayerStorageValue(cid, quest_storage, 1) end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) 1- Para criar outro Npc é só trocar o valor do quest_storage para um numero diferente, local quest_storage = 22542 2- Colocar o ID do Item que o player vai ganhar do lado de cada vocação! ["Sorcerer"] = 2160, ["Druid"] = 2160, ["Paladin"] = 2160, ["Knight"] = 2160,
  24. Olá, eu gostaria de saber se tem como remover pokemon de uma player, por exemplo como é feita a dungeon da pxg em que o player entra e ganha 6 pokes e ai sair e retirado esses pokemons.
  25. Olá Tibianos do Tibia King. (Vou direto para o script) Vamos lá: Vá até a pasta data/npc copie e cole algum arquivo XML renomeie para stoned.xml e substitua por isto: (OBS esse é o NPC 1, vocações Paladin, Druid e Sorcerer) Em Roxo você pode alterar o looktype dele e o nome (Entre aspas). -- Não é obrigatório alterar isso-- Agora volte para a pasta data/npc e copie e cole outro arquivo XML e renomeie para stonedkina.xml e substitua por isto: (--Mesma coisa do anterior --) Em Roxo você pode alterar o looktype dele e o nome (Entre aspas). -- Não é obrigatório alterar isso-- ----SCRIPT DO NPC DE PALADIN, SORCERER E DRUID---- Vá na pasta data/npc/scripts copie e cole algum arquivo, renomeie para stoned.lua e cole isso dentro: Em Verde é o ID dos itens que o player vai precisar para ganhar a quantidade de skill. Em Azul são os efeitos que vai aparecer embaixo do Player. Se quiser deixe com esses efeitos mesmo :D ---(Os efeitos vão de 1 a 68, caso queira vê-los apenas digite /z 1.. 68 com o GOD) Em Laranja é a quantidade de EXP de skill o Player vai ganhar ao entregar o ITEM. (Eu aconselho não colocar numero exorbitante como 9999999, pode acontecer de o script travar pela quantidade de skill adicionada). Em Vermelho é a quantidade do ITEM que ele vai precisar ter. (Caso for itens como Armors, Legs, Swords, Axes etc... Deixe 1 se for itens agrupáveis como TALONS, SCARAB COINS etc... Você pode colocar de 1 até 100). -----SCRIPT DO NPC DE KNIGHT------ Vá na pasta data/npc/scripts copie e cole algum arquivo, renomeie para stonedkina.lua e cole isso dentro: <-> As Configurações são as mesmas <-> Em Verde é o ID dos itens que o player vai precisar para ganhar a quantidade de skill. Em Azul é o efeito que vai aparecer embaixo do Player. Se quiser deixe com esses efeitos mesmo :D ---(Os efeitos vão de 1 a 68, caso queira vê-los apenas digite /z 1.. 68 com o GOD) Em Laranja é a quantidade de EXP de skill o Player vai ganhar ao entregar o ITEM. (Eu aconselho não colocar numero exorbitante como 9999999, pode acontecer de o script travar pela quantidade de skill adicionada). Em Vermelho é a quantidade do ITEM que ele vai precisar ter. (Caso for itens como Armors, Legs, Swords, Axes etc... Deixe 1 se for itens agrupáveis como TALONS, SCARAB COINS etc... Você pode colocar de 1 até 100). Por fim é só Importar os NPC'S pelo mapa Editor e adicionar! :D Obrigado e Bom uso do script!!!

Informação Importante

Confirmação de Termo