Ir para conteúdo

Samuel Maia

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Samuel Maia deu reputação a Kemmlly em Verificar andar do player (z)   
    @Baned 
    if getCreaturePosition(cid).z == 10 then  
  2. Gostei
    Samuel Maia deu reputação a Kemmlly em Nome [VIP] Gesior   
    Vi alguns tópicos antigos com a seguinte dúvida; "Quando um jogador fica vip e adicionar o nome [VIP] na frente, outros jogadores conseguem criar um cha com o mesmo nome que o dele, assim, quando acaba a VIP e o nome vai voltar ao normal da erro na distro, como corrigir isso?" e não achei solução, então, criei uma, para quem precisa está aqui:
     
    accountmanagement.php, procure por:
    $newchar_errors[] .= 'You have too many characters on your account <b>('.$number_of_players_on_account.'/'.$config['site']['max_players_per_account'].')</b>!'; Adicione embaixo:
    $check_name_in_database->find("[vip] $newchar_name"); if($check_name_in_database->isLoaded()) $newchar_errors[] .= 'Esse nome ja esta sendo usado, por favor, escolha outro!'; Em:
    ("[vip] $newchar_name") Se sua abreviação do vip for difetene como (vip) ou só VIP você altera.
  3. Gostei
    Samuel Maia deu reputação a Kemmlly em [NÃO EXCLUIR] LIMITE DE ITENS SQM [1.2]   
    Não olhei as sources ainda, mas acredito que script seja mais fácil, se for possível .
  4. Gostei
    Samuel Maia deu reputação a Kemmlly em [PEDIDO]Como Colocar As Letras Brancas No Website   
    <li><a href="{$path}"><font color="white">Novidades</font></a></li>
  5. Gostei
    Samuel Maia deu reputação a Kemmlly em DUVIDA , PISO , TILE , É ETC..   
    Se for um andavel em cima de outro não , as vezes da bug adicionar um piso wakable em um q não pode andar, aí no mapa fica inacessível pelo player, pelo menos no meu ficou as vezes que testei.
  6. Gostei
    Samuel Maia deu reputação a Kemmlly em remover speed da criatura e depois retornar   
    Não entendi porque esse return false está aí, essa é a condição que o player poderia atacar, porque tem o storage necessário e a speed retorna, troque por um return true
  7. Gostei
    Samuel Maia deu reputação a Kemmlly em Retirar premium account [FREE]   
    Não entendi muito bem o que você quer, poderia explicar melhor?
  8. Gostei
    Samuel Maia deu reputação a Kemmlly em [AJUDA] Erro Mysql Query para salvar char   
    Crie um chá pelo site, escolha uma vocação mas n entre no jogo, vá no banco de dados e procure o player e olhe sua vocação se está definido corretamente, se sim, acredito que n seja quey e sim algum script, se não, vá na página create character procure a função vocations e mande pra mim q edito pra você .
  9. Gostei
    Samuel Maia deu reputação a Kemmlly em (Resolvido)[Pedido] NPC Task System   
    @Xaraziinho
    ["cyclops"] = {monster_race={"cyclops","cyclops smith","cyclops drone"}, storage_start = 200204, storage = 91004,count = 500,exp = 50000,money = 30000},
     
    800 era o dinheiro q iria receber
  10. Gostei
    Samuel Maia deu reputação a Kemmlly em [Ajuda] Ganhar storage quando mata monstro   
    Tente um onDeath:
    function onDeath(cid, corpse, deathList, target) local storage = 656565 if getPlayerStorageValue(deathList[1], storage) < 1 then if isPlayer(deathList[1]) then setPlayerStorageValue(deathList[1], storage, 1) doSendMagicEffect(getPlayerPosition(deathList[1]), 12) end else return true end return true end Lembre de mudar de KILL para DEATH no creaturescripts.xml
  11. Gostei
    Samuel Maia deu reputação a Kemmlly em Script Pontuação   
    Show, no math.floor q eu tinha empacado, abraços.
  12. Gostei
    Samuel Maia deu reputação a Kemmlly em Bug Potions REP +   
    local config = { removeOnUse = "no", usableOnTarget = "yes", -- can be used on target? (fe. healing friend) splashable = "no", realAnimation = "no", -- make text effect visible only for players in range 1x1 healthMultiplier = 1.0, manaMultiplier = 1.0 } config.removeOnUse = getBooleanFromString(config.removeOnUse) config.usableOnTarget = getBooleanFromString(config.usableOnTarget) config.splashable = getBooleanFromString(config.splashable) config.realAnimation = getBooleanFromString(config.realAnimation) local POTIONS = { [8704] = {empty = 7636, splash = 2, health = {100, 200}}, -- small health potion [7618] = {empty = 7636, splash = 2, health = {150, 200}}, -- health potion [7588] = {empty = 7634, splash = 2, health = {300, 350}, level = 50, vocations = {3, 4, 7, 8}, vocStr = "knights and paladins"}, -- strong health potion [7591] = {empty = 7635, splash = 2, health = {800, 900}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion [8473] = {empty = 7635, splash = 2, health = {1100, 1200}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion [7620] = {empty = 7636, splash = 7, mana = {200, 250}}, -- mana potion [7589] = {empty = 7634, splash = 7, mana = {300, 300}, level = 50, vocations = {1, 2, 3, 5, 6, 7}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion [7590] = {empty = 7635, splash = 7, mana = {650, 750}, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion [8472] = {empty = 7635, splash = 3, health = {350, 400}, mana = {300, 350}, level = 80, vocations = {3, 7}, vocStr = "paladins"}, -- great spirit potion } local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100)) function onUse(cid, item, fromPosition, itemEx, toPosition) local potion = POTIONS[item.itemid] if(not potion) then return false end if(not isPlayer(itemEx.uid) or (not config.usableOnTarget and cid ~= itemEx.uid)) then if(not config.splashable) then return false end if(toPosition.x == CONTAINER_POSITION) then toPosition = getThingPos(item.uid) end doDecayItem(doCreateItem(2016, potion.splash, toPosition)) doTransformItem(item.uid, potion.empty) return TRUE end if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) return TRUE end if(((potion.level and getPlayerLevel(cid) < potion.level) or (getPlayerVocation(cid) ~= potion.vocations))) and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1) return TRUE end local health = potion.health if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then return false end local mana = potion.mana if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then return false end doSendMagicEffect(getThingPos(itemEx.uid), 66) if(not realAnimation) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1) else for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do if(isPlayer(tid)) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid) end end end doAddCondition(cid, exhaust) if(not potion.empty or config.removeOnUse) then doRemoveItem(item.uid, 1) return TRUE end doRemoveItem(item.uid, 0) doPlayerAddItem(cid, potion.empty, 0) doPlayerRemoveItem(cid, potion.empty, getPlayerItemCount(cid, potion.empty)) doPlayerAddItem(cid, potion.empty, getPlayerItemCount(cid, potion.empty)) return TRUE end Tenta assim...
  13. Gostei
    Samuel Maia deu reputação a Kemmlly em Erro No Config.lua TSF 1.2 GLOBAL 10.95   
    Troque o 127.0.0.1 por "localhost", ou deixe em branco "", ou o ip do seu computador na rede, acredito que um desses irá resolver o problema.
  14. Gostei
    Samuel Maia deu reputação a Kemmlly em ERRO NO SCRIPT - AJUDA   
    doPlayerSetLossPercent(cid, experience, 0)
     
    Remove isso do script, porém, ele n vai perder o loot mas vai perder xp quando morrer.
  15. Gostei
    Samuel Maia deu reputação a Kemmlly em [TALKACTION] Caixa Postal   
    Bem, procurei aqui no Tibia King e não achei nada relacionado, então, criei um script de Caixa Postal, ou, Mensagem Offline, como preferirem.
     
    Versão: TFS 0.4
    Autor: Kemmlly
     
    Como funciona: 
    Enviar: O jogador usa o comando: !caixa "nome do jogador" - "Mensagem", sem as aspas. Se o jogador estiver Off, a mensagem ficará guardada na Caixa Postal dele, se não, o jogo te indicará a falar pelo PV.
    Receber: O jogador que recebeu a mensagem usa o comando: !recados ler, para ler as mensagens que tem disponíveis na caixa, ou, !recados apagar, para limpar a caixa postal se estiver muito cheia, pois acumula mensagens, segue exemplo:
     
    !recados ler

     
     
    !recados apagar

     
     
    Instalação:
    data/talkactions/scripts/caixapostal.lua
    function onSay(cid, words, param, channel) local t = string.explode(param, "-") if t[1] == '' or t[1] == nil then doPlayerSendTextMessage(cid, 19, "Comando invalido, use !caixa 'NOME DO JOGADOR' - 'MENSAGEM' sem as aspas.") return true else local player = db.getResult("SELECT `id` FROM `players` WHERE `name` = '"..t[1].."';"):getDataInt("id") if player == nil then doPlayerSendTextMessage(cid, 19, "Esse jogador nao existe!") return true elseif player ~= nil and t[2] == '' then doPlayerSendTextMessage(cid, 19, "A mensagem nao pode ser vazia!") return true elseif player ~= nil and t[2] ~= '' then if getPlayerByNameWildcard(t[1]) ~= nil then doPlayerSendTextMessage(cid, 19, "Esse jogador esta online, fale pelo PV!") return true else local origem = getCreatureName(cid) local caixa = getGlobalStorageValue(player) local data = os.date("%d/%b as %X") if caixa == -1 or caixa == "Voce nao tem nenhum recado!" then caixa = "\n" end doPlayerSendTextMessage(cid, 19, "A mensagem foi enviada com sucesso!") setGlobalStorageValue(player, "["..data.."] - "..origem..": "..t[2].." \n\n"..caixa.."") return true end end end end  
    data/talkactions/scripts/recados.lua
    function onSay(cid, words, param, channel) local t = string.explode(param, ",") local player = db.getResult("SELECT `id` FROM `players` WHERE `name` = '"..getCreatureName(cid).."';"):getDataInt("id") local mensagens = getGlobalStorageValue(player) if t[1] == '' or t[1] == nil then doPlayerSendTextMessage(cid, 19, 'Comando invalido.') elseif t[1] == 'ler' then if mensagens == -1 then mensagens = "Voce nao tem nenhum recado!" doShowTextDialog(cid, words, '-- Recados --\n\n'..mensagens..'') else doShowTextDialog(cid, words, '-- Recados --\n\n'..mensagens..'') end elseif t[1] == 'apagar' then doPlayerSendTextMessage(cid, 19, 'Mensagens apagadas com sucesso!') setGlobalStorageValue(player, "Voce nao tem nenhum recado!") end return true end  
    data/talkactions/talkactions.xml
    <talkaction words="!caixa" event="script" value="caixapostal.lua"/> <talkaction words="!recados" event="script" value="recados.lua"/>  
    Ultimo passo, porém, importante;
     
    em data/lib/004-database.lua vá até a linha 60 e mude:
    error("[Result:getDataInt] Result not set!") para:
    return nil  
    Se no seu não for exatamente na linha 60, procure a função:
    function Result:getDataInt(s) if(self:getID() == -1) then error("[Result:getDataInt] Result not set!") end E faça a alteração. Isso é para não dar erro na hora de procurar um player pelo nome quando o jogador escrever um nome de player inválido.
     
    Espero que gostem, abraços.
  16. Gostei
    Samuel Maia deu reputação a Kemmlly em Ajuda com vocação   
    Adiciona um:
    doPlayerSave(cid, true)  Em baixo de:
    doPlayerSetVocation(cid, voc[2]) E vê se funciona, se n funcionar me fala que mudo aq o script pra vc.
  17. Gostei
    Samuel Maia deu reputação a Kemmlly em (Resolvido)Npc Quest   
    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) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid --[[ REMEMBER TO SET YOUR STORAGE AS YOURSTORAGE! ]]-- local storage = 100010 local tab = { item = {5920, 1}, -- {id do item que ele precia receber, quantidade} item2 = {5920, 1} -- {id do item que ele vai dar, quantidade} } if(msgcontains(msg, 'quest') or msgcontains(msg, 'slug')) then if(getPlayerStorageValue(cid, storage) < 1) then npcHandler:say("Hey, Eu perdi as minhas miniaturas no sub-solo.. voce poderia buscar para min? eu preciso de {5 dragon miniature}.", cid) setPlayerStorageValue(cid, storage, 1) elseif(getPlayerStorageValue(cid, storage) == 1) then npcHandler:say("Voce recuperou as 5 dragon miniature?", cid) talkState[talkUser] = 1 elseif(getPlayerStorageValue(cid, storage) > 1) then npcHandler:say("Desculpe voce ja fez essa quest.", cid) end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if getPlayerItemCount(cid, tab.item[1]) >= tab.item[2] then doPlayerRemoveItem(cid, tab.item[1], tab.item[2]) npcHandler:say("Wow! Muito obrigado! tenho algo aqui de muito valor, e acredito que Katum gostaria de falar com voce!", cid) doPlayerAddItem(cid, tab.item2[1], tab.item2[2]) setPlayerStorageValue(cid, storage, 2) talkState[talkUser] = 0 else npcHandler:say("Voce nao tem meus items, sinto muito.", cid) talkState[talkUser] = 0 end elseif(msgcontains(msg, 'no') and talkState[talkUser] > 0) then npcHandler:say("entao ta..", cid) talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())  
    Coloca isso em um npc, no outro voce inverte os ids dos itens de item para item2.
     
    Obs: Não testei, só terei tempo de fazer com mais calma mais tarde, vê se funciona e me fala.
  18. Gostei
    Samuel Maia deu reputação a Kemmlly em [Monster] - Dar Storage   
    Pelo que vi, esse script pega o GUILDID do cara que deu o ultimo hit e joga no GlobalStorage, só que acredito que seja necessário outro script para comparar se o GUILDID do player é igual ao GUILDID jogado no global storage, se sim, setPlayerStorageValue(GRANTOWER.SAVEWINNERGUILID, guild id dele), acredito que um script no global event verificando isso constatemente resolva o caso. Alguém sabe outra maneira sem precisar de outro script? Se souber se pronunciem.
  19. Gostei
    Samuel Maia deu reputação a Kemmlly em (Resolvido)Erro na Task Magnus   
    Primeiro vê se o script ta com o nome zezeniaa.lua mesmo ou tem alguma letra ou espaço a mais, vê se ele está realmente em data/npc/scripts, depois verifica se a extensão está .lua mesmo ou vc salvou em outra sem querer. Esse erro é quando o XML do NPC não  acha o arquivo que você declarou em script="", acredito q um desse motivos seja o causador do problema.
  20. Gostei
    Samuel Maia deu reputação a Kemmlly em [TALKACTION] !bc para players   
    local storage = 6557 -- Storage eu registra os 10 minutos entre as mensagens local storage2 = 6558 -- Storage que proibe o player de falar fora do prazo local tempo = 600 -- Tempo em segundo entre uma mensagem e outra function onSay(cid, words, param, channel) if getPlayerStorageValue(cid, storage2) < 1 and getPlayerGuildRank(cid) == "Leader" then if(param == '') then doPlayerSendTextMessage(cid, 19, "A mensagem nao pode ser vazia.") return true else doBroadcastMessage(""..getCreatureName(cid)..": "..param.."") setPlayerStorageValue(cid, storage, os.time() + tempo) setPlayerStorageValue(cid, storage2, 1) return true end elseif getPlayerStorageValue(cid, storage2) >= 1 then doPlayerSendTextMessage(cid, 19, "Voce tem que aguardar 10 minutos entre uma mensagem e outa!") return true else doPlayerSendTextMessage(cid, 19, "Somente lideres de guild podem usar esse comando!") return true end end  
  21. Gostei
    Samuel Maia deu reputação a Kemmlly em [TALKACTION] !bc para players   
    data/talkactions/scripts/bcplayer.lua
    local storage = 6557 -- Storage eu registra os 10 minutos entre as mensagens local storage2 = 6558 -- Storage que proibe o player de falar fora do prazo local tempo = 600 -- Tempo em segundo entre uma mensagem e outra function onSay(cid, words, param, channel) if getPlayerStorageValue(cid, storage2) < 1 and getPlayerGuildRank(cid) == "Leader" then if(param == '') then doPlayerSendTextMessage(cid, 19, "A mensagem nao pode ser vazia.") return true else doBroadcastMessage(param) setPlayerStorageValue(cid, storage, os.time() + tempo) setPlayerStorageValue(cid, storage2, 1) return true end elseif getPlayerStorageValue(cid, storage2) >= 1 then doPlayerSendTextMessage(cid, 19, "Voce tem que aguardar 10 minutos entre uma mensagem e outa!") return true else doPlayerSendTextMessage(cid, 19, "Somente lideres de guild podem usar esse comando!") return true end end  
    data/talkactions/talkactions.xml
    <talkaction words="!bc" event="script" value="bcplayer.lua"/>  
    data/globalevents/scripts/bccheck.lua
    local storage = 6557 -- Storage eu registra os 10 minutos entre as mensagens local storage2 = 6558 -- Storage que proibe o player de falar fora do prazo function onThink(interval, lastExecution, thinkInterval) if #getPlayersOnline() > 0 then for _, cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid, storage2) == 1 and getPlayerStorageValue(cid, storage) - os.time() < 1 then setPlayerStorageValue(cid, storage2, 0) end end end return true end  
    data/globalevents/globalevents.xml
    <globalevent name="bcplayer" interval="1000" event="script" value="bccheck.lua"/> 1000 == 1 segundo (tempo que executa o script para chegar o tempo entre uma mensagem e outra, se seu server for em segundos, use 1 para 1 segundo)
     
    Aguardo um retorno.
  22. Gostei
    Samuel Maia deu reputação a Kemmlly em (Resolvido)Npc - Task e Teleport   
    Bom, se você quiser, só alterar no script pra ficar exatamente como pediu, acredito que saiba como, mas, fiz de uma forma diferente.
    Se mandar um sendcancel vai sumir rapidamente depois de um hit de outro monstro ou spell e o jogador não vai acompanhar, fiz de uma forma que ele registra no default em laranja, assim o player vê quantos ja matou a hora que quiser pois fica registrado, e quando finalizar aparece um popup na tela com a mensagem que voce pediu, mas só no monstro de numero 300, o 301 ja nao aparece mais, para o caso de o player estiver no meio da cave e ter q sair matando e nao ficar aparecendo toda hora.
    function onKill(cid, target, lastHit) local storageinicio = 8887 -- Storage que inicia a quest local storagequest = 8888 -- Storage da quest local storagemonstro = 8889 -- Storage que faz a contagem do monstro local monstro = "cyclops" -- Nome do monstro if(isMonster(target) == true) then local n = string.lower(getCreatureName(target)) if getPlayerStorageValue(cid, storageinicio) >= 1 and n == monstro then local contagem = getPlayerStorageValue(cid, storagemonstro) if contagem == -1 then contagem = 1 end setPlayerStorageValue(cid, storagemonstro, contagem+1) if n == monstro then doPlayerSendTextMessage(cid, 19, 'Voce matou '..contagem..' Blazings.') end if contagem == 300 then setPlayerStorageValue(cid, storagequest, 1) doPlayerPopupFYI(cid,'Voce acaba de matar os 300 Blazing va ate o Blazar e ganhe sua recompensa') end end end return true end Testa aí e me fala.
  23. Gostei
    Samuel Maia deu reputação a Kemmlly em (Resolvido)Npc - Task e Teleport   
    npc.lua
    local destino = {x = 1004, y = 1021, z = 7} -- Coordenadas do destino 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) local storageinicio = 8887 -- Storage que inicia a quest local storagequest = 8888 -- Storage da quest local storagemonstro = 8889 -- Storage que faz a contagem do monstro local monstro = "cyclops" -- Nome do monstro local quantidade = 300 -- Quantidade de monstros para terminar a task if (not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if (msgcontains(msg, 'the volcano')) and getPlayerStorageValue(cid, storageinicio) == 1 and getPlayerStorageValue(cid, storagequest) ~= 1 then local contagem = getPlayerStorageValue(cid, storagemonstro) if contagem == -1 then contagem = 1 end selfSay('Voce nao terminou sua tarefa ainda, falta matar '..string.sub((contagem)-(quantidade), 2)..' '..monstro..'. Complete sua tarefa e retorne aqui.', cid) elseif (msgcontains(msg, 'the volcano')) and getPlayerStorageValue(cid, storageinicio) ~= 1 then talkState[talkUser] = 1 selfSay('Nasci e vivia em The Volcano, porem fui traido por aqueles malditos isqueiros! Me expulsaram so porque eu utilizava um {tunel proibido} para acessar o continente..', cid) elseif msgcontains(msg, 'the volcano') and getPlayerStorageValue(cid, storagequest) == 1 then selfSay('Voce ja completou sua missao, serei eternamente grato, siga seu caminho em paz!', cid) elseif msgcontains(msg, 'tunel proibido') and talkState[talkUser] == 1 then talkState[talkUser] = 2 selfSay('Existe uma maneira de acessar nossa ilha por dentro do mar, um tunel interliga a ilha ao continente. Tenho uma proposta pra voce e posso te levar ate a ilha. Quer {saber mais} ?', cid) elseif msgcontains(msg, 'saber mais') and talkState[talkUser] == 2 then selfSay('Quero que elimine, mate, extermine, o maximo de Blazing Spirits possivel, quero ver essa raca cair e nao me importo com sua extincao. Se apagar 300 da minha especie, MENOS EU, ensinarei voce a acessar a montanha dentro da ilha, aumentando seu respaw e melhorando suas hunts. {aceita} ?', cid) talkState[talkUser] = 3 elseif msgcontains(msg, 'aceita') and talkState[talkUser] == 3 then talkState[talkUser] = 4 setPlayerStorageValue(cid, storageinicio, 1) setPlayerStorageValue(cid, storagemonstro, 0) selfSay('Acordo fechado! Volte aqui com as cinzas daqueles miseraveis. Se quiser ir agora para o The Volcano, sa falar {travel} ou {blazing}.', cid) elseif msgcontains(msg, 'travel') then doTeleportThing(cid, destino) selfSay('Boa viagem.', cid) else return false end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) npc.xml
    <npc name="NOME DO NPC" script="data/npc/scripts/NORME DO ARQUIVO.lua" access="5" lookdir="1"> <health now="1000" max="1000"/> <look type="54" head="45" body="67" legs="79" feet="10" addons="1"/> <parameters> <parameter key="message_greet" value="Hmmm... sinto a sua vontade de mostrar sua força. Vim do {The Volcano} buscando pessoas como você." /> </parameters> </npc>  
    em creaturescripts/scripts, crie um arquivo taskblazing.lua
    function onKill(cid, target, lastHit) local storageinicio = 8887 -- Storage que inicia a quest local storagequest = 8888 -- Storage da quest local storagemonstro = 8889 -- Storage que faz a contagem do monstro local monstro = "cyclops" -- Nome do monstro if(isMonster(target) == true) then local n = string.lower(getCreatureName(target)) if getPlayerStorageValue(cid, storageinicio) >= 1 and n == monstro then local contagem = getPlayerStorageValue(cid, storagemonstro) setPlayerStorageValue(cid, storagemonstro, contagem+1) if contagem >= 300 then setPlayerStorageValue(cid, storagequest, 1) end end end return true end em login.lua adicione a tag
    registerCreatureEvent(cid, "taskblazing") creaturescripts.xml
    <event type="kill" name="taskblazing" event="script" value="taskblazing.lua"/>  
    Se os storages que eu escolhi não estiverem sendo usado no seu ot, deixe eles no script, se quiser mudar, mude com atenção nos dois scripts para não haver erro.
    Lembre-se de mudar o nome do bixo no local correto e de escrever o nome corretamente para a contagem ser feita. Altere também as coordenadas do local que você quer teleportar o player.

Informação Importante

Confirmação de Termo