Ir para conteúdo

Frenesy

Membro
  • Registro em

  • Última visita

Tudo que Frenesy postou

  1. Frenesy postou uma resposta no tópico em Suporte Tibia OTServer
    Manda como base um NPC do seu OT. Não tenho servidores 8.40 aqui =/
  2. Frenesy postou uma resposta no tópico em Suporte Tibia OTServer
    <?xml version="1.0"?> <npc name="NomeDoNPC" script="data/npc/scripts/NomeDoArquivo.lua" walkinterval="2000"> <health now="200" max="200" /> <look type="131" head="38" body="38" legs="38" feet="38" addons="3"/> <parameters> <parameter key="message_greet" value="Olá meu caro joven, você veio blessar seu helmet, certo né?" /> </parameters> </npc> NPC/Script: -- < Script by Frenesy > --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 doCreatureSayWithDelay(cid,text,type,delay,e) if delay<=0 then doCreatureSay(cid,text,type) else local func=function(pars) doCreatureSay(pars.cid,pars.text,pars.type) pars.e.done=TRUE end e.done=FALSE e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e}) end end function cancelNPCTalk(events) local ret=1 for aux=1,table.getn(events) do if events[aux].done==FALSE then stopEvent(events[aux].event) else ret=ret+1 end end events=nil return(ret) end function doNPCTalkALot(msgs,interval) local e={} local ret={} if interval==nil then interval=3000 end --3 seconds is default time between messages for aux=1,table.getn(msgs) do e[aux]={} doCreatureSayWithDelay(getNpcCid(),msgs[aux],TALKTYPE_PRIVATE_NP,(aux-1)*interval,e[aux]) table.insert(ret,e[aux]) end return(ret) 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 if(msgcontains(msg, 'Blessar') or msgcontains(msg, 'blessar')) and getPlayerItemCount(cid, 2342) == 1 then selfSay('Parabens! Você blessou seu helmet, ele tem duração de 4 horas!', cid) doPlayerAddItem(cid,2343, 1) doPlayerRemoveItem(cid, 2342, 1) doSendMagicEffect(getPlayerPosition(cid), 13) elseif(msgcontains(msg, 'Blessar') or msgcontains(msg, 'blessar')) and getPlayerItemCount(cid, 2342) < 1 then selfSay('Voce nao tem o item nescessario.', cid) end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  3. Creaturescripts/Scripts: local tpId = 1387 local tps = { ["NomeDoMonstro"] = {pos = {x=221, y=82, z=15}, toPos = {x=200, y=73, z=15}, time = 30}, -- Onde o Teleport irá aparecer e onde ele levará o Player. Em 'Time', configurar tempo em segundos para o TP desapecer. } function removeTp(tp) local t = getTileItemById(tp.pos, tpId) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(tp.pos, CONST_ME_POFF) end end function onDeath(cid) local tp = tps[getCreatureName(cid)] if tp then doCreateTeleport(tpId, tp.toPos, tp.pos) doCreatureSay(cid, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1) addEvent(removeTp, tp.time*1000, tp) end return TRUE end Creaturescripts.xml <event type="death" name="tp" event="script" value="NomeDoArquivo.lua"/> Monster: No monstro que você quer que abra o portal ao morrer, adicione essa tag nele: <script> <event name="tp"/> </script>
  4. Cara, tecnicamente, como padrão, era pra vim assim - players poderem passar dentro dos outros - pz ou não. È por isso que existe aquele tile laranjado, pra evitar que os players passe dentro do outro e roube o item no DP. Stacking Glowing Switch
  5. Frenesy postou uma resposta no tópico em Suporte Tibia OTServer
    Editado Wands & Rods
  6. Que bom! Precisando, só avisar!
  7. <?xml version="1.0"?> <npc name="NomeDoNPC" script="data/npc/scripts/NomeDoArquivo.lua" walkinterval="2000"> <health now="200" max="200" /> <look type="131" head="38" body="38" legs="38" feet="38" addons="3"/> <parameters> </parameters> </npc> NPC/Script: -- < Script by Frenesy > -- 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 doCreatureSayWithDelay(cid,text,type,delay,e) if delay<=0 then doCreatureSay(cid,text,type) else local func=function(pars) doCreatureSay(pars.cid,pars.text,pars.type) pars.e.done=TRUE end e.done=FALSE e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e}) end end function cancelNPCTalk(events) local ret=1 for aux=1,table.getn(events) do if events[aux].done==FALSE then stopEvent(events[aux].event) else ret=ret+1 end end events=nil return(ret) end function doNPCTalkALot(msgs,interval) local e={} local ret={} if interval==nil then interval=3000 end --3 seconds is default time between messages for aux=1,table.getn(msgs) do e[aux]={} doCreatureSayWithDelay(getNpcCid(),msgs[aux],TALKTYPE_PRIVATE_NP,(aux-1)*interval,e[aux]) table.insert(ret,e[aux]) end return(ret) 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 if(msgcontains(msg, 'Hi') or msgcontains(msg, 'oi')) and getPlayerStorageValue(cid,1001) == -1 then selfSay('Ola, poderia me ajudar recolhendo alguns itens pra minha lojinha?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'Hi') or msgcontains(msg, 'oi')) and getPlayerStorageValue(cid,1003) == 1 then selfSay('Ola, Em que posso ajudar?', cid) elseif((msgcontains(msg, 'No') or msgcontains(msg, 'nao')) and talkState[talkUser] == 1) then selfSay('Ok entao. Bye!', cid) talkState[talkUser] = 0 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1) then selfSay('Ok, recolha para mim {13 pair of leaves} que pode ser encontrada com {snivys} e {13 Sandbags} que pode ser encontradas com {Krokoroks}. Boa Sorte!', cid) talkState[talkUser] = 0 doSendMagicEffect(getPlayerPosition(cid), 13) setPlayerStorageValue(cid, 1001, 1) setPlayerStorageValue(cid, 1002, 1) elseif(msgcontains(msg, 'Hi') or msgcontains(msg, 'oi')) and getPlayerStorageValue(cid,1002) == 1 then selfSay('Conseguiu recolher os itens?', cid) talkState[talkUser] = 2 elseif(msgcontains(msg, 'Yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 2 and getPlayerItemCount(cid, 12155) < 13 and getPlayerItemCount(cid, 12177) < 13 then selfSay('Voce ainda nao tem todos os itens necessarios.', cid) talkState[talkUser] = 0 elseif((msgcontains(msg, 'No') or msgcontains(msg, 'nao')) and talkState[talkUser] == 2) then selfSay('Entao vai la buscar.', cid) talkState[talkUser] = 0 elseif(msgcontains(msg, 'Yes') or msgcontains(msg, 'sim')) and getPlayerStorageValue(cid,1002) == 1 and talkState[talkUser] == 2 and getPlayerItemCount(cid, 12155) == 13 and getPlayerItemCount(cid, 12177) == 13 then selfSay('Muito obrigado, aqui está seu premio!', cid) doSendMagicEffect(getPlayerPosition(cid), 49) doPlayerAddItem(cid,11441, 1) doPlayerAddItem(cid,11451, 1) doPlayerRemoveItem(cid, 12155, 13) doPlayerRemoveItem(cid, 12177, 13) setPlayerStorageValue(cid, 1002, -1) setPlayerStorageValue(cid, 1003, 1) end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  8. Me diga todo o diálogo que você quer que fique - na ordem - que eu arrumo pra você.
  9. Frenesy postou uma resposta no tópico em Suporte Tibia OTServer
    Poste seu sistema vip.
  10. Spells/script: local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_EFFECT, 31) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 31) local function onCastSpell1(parameters) doCombat(parameters.cid, combat1, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2 } local alvo = getCreatureTarget(cid) doPlayerSetNoMove(alvo, true) addEvent(onCastSpell1, 1, parameters) addEvent(doPlayerSetNoMove, 5000, alvo, false) -- Configurar aqui duration do parallyze return true end Spells.xml <instant name="Parallyze" words="Parallyze" lvl="50" mana="100" prem="1" aggressive="0" exhaustion="2500" needlearn="0" range="5" needtarget="1" blockwalls="1" script="NomeDoArquivo.lua"> <vocation name="Knight"/> </instant>
  11. Verifica se ela esta registrada corretamente no Movements.xml
  12. Items.xml <item id="2173" article="an" name="amulet of loss"> <attribute key="weight" value="420"/> <attribute key="slotType" value="necklace"/> <attribute key="preventDrop" value="1"/> <attribute key="charges" value="1"/> </item> Substitui pelo seu que ta infinito.
  13. Como Criar Bau Poke Iniciais
  14. Cara, eu não testei o script, eu fiz no rascunho aqui. Teste apenas em um. Se der certo avisa aqui no tópico que eu configuro ele.
  15. Runas ?!?
  16. Imagine que seu Trainer Room seja igual ao da imagem abaixo. Na parte do Script: ---- local fromPos,toPos = {x = 000, y = 000, z = 00},{x = 000, y = 000, z = 00} --- Começo e Final da Área. ---- Na Position 1 vc coloca as cordenadas do tile superior esquerdo. Na Position 2 vc coloca as cordenadas do tile inferior direito.
  17. local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_STUN) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_SLEEP) local condition1 = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition1, CONDITION_PARAM_TICKS, 15000) setConditionParam(condition1, CONDITION_PARAM_SPEED, -650) setConditionFormula(condition1, -0.9, 0, -0.9, 0) setCombatCondition(combat1, condition1) arr1 = { {0, 3, 0} } arr2 = { {0, 3, 0} } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) setCombatArea(combat1, area1) setCombatArea(combat2, area2) local function onCastSpell1(parameters) doCombat(parameters.cid, parameters.combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, parameters.combat2, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2 } addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 200, parameters) return true end
  18. Pegue garotinho --==-- by Frenesy --==-- function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 0000 then -- ID do Item aqui. if #getCreatureSummons(cid) == 0 then doConvinceCreature(cid, doSummonCreature("Dragon", getPlayerPosition(cid))) -- Configurar monstro aqui. doSendMagicEffect(getPlayerPosition(cid),13) else for _, pid in ipairs(getCreatureSummons(cid)) do doRemoveCreature(pid) doSendMagicEffect(getPlayerPosition(cid),13) end end end end Action.xml <action itemid="0000" event="script" value="NomeDoArquivo.lua"/>
  19. --==-- by Frenesy --==-- function onUse(cid, item, topos) local fromPos,toPos = {x = 000, y = 000, z = 00},{x = 000, y = 000, z = 00} --- Começo e Final da Área. if (item.actionid == 10000) then for x = fromPos.x, toPos.x do for y = fromPos.y, toPos.y do local pos = {x=x, y=y, z=fromPos.z} local m = getTopCreature(pos).uid if m ~= 0 and isPlayer(m) then doTeleportThing(cid,fromPosition) doSendMagicEffect(getPlayerPosition(cid), 2) doPlayerSendCancel(cid, "Full!") end end end end end Action.xml <action actionid="10000" event="script" value="NomeDoArquivo.lua"/> Coloque na Porta ActionID 10000.
  20. #MaXwEllDeN Farei isso Gosto dos meus scripts bem organizados. Qualquer informação que possa facilitar isso é de grande ajuda.
  21. <?xml version="1.0"?> <npc name="NomeDoNPC" script="data/npc/scripts/NomeDoArquivo.lua" walkinterval="2000"> <health now="200" max="200" /> <look type="131" head="38" body="38" legs="38" feet="38" addons="3"/> <parameters> <parameter key="message_greet" value="Ola, |PLAYERNAME|. Em que posso ajuda-lo?" /> </parameters> </npc> NPC/Script: -- < Script by Frenesy > --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 doCreatureSayWithDelay(cid,text,type,delay,e) if delay<=0 then doCreatureSay(cid,text,type) else local func=function(pars) doCreatureSay(pars.cid,pars.text,pars.type) pars.e.done=TRUE end e.done=FALSE e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e}) end end function cancelNPCTalk(events) local ret=1 for aux=1,table.getn(events) do if events[aux].done==FALSE then stopEvent(events[aux].event) else ret=ret+1 end end events=nil return(ret) end function doNPCTalkALot(msgs,interval) local e={} local ret={} if interval==nil then interval=3000 end --3 seconds is default time between messages for aux=1,table.getn(msgs) do e[aux]={} doCreatureSayWithDelay(getNpcCid(),msgs[aux],TALKTYPE_PRIVATE_NP,(aux-1)*interval,e[aux]) table.insert(ret,e[aux]) end return(ret) 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 if(msgcontains(msg, 'Quest') or msgcontains(msg, 'mission')) and getPlayerStorageValue(cid,1001) == -1 then selfSay('Ola, poderia me ajudar recolhendo alguns itens pra minha lojinha?', cid) talkState[talkUser] = 1 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1) then selfSay('Ok, recolha para mim {13 pair of leaves} que pode ser encontrada com {snivys} e {13 Sandbags} que pode ser encontradas com {Krokoroks}. Boa Sorte!', cid) talkState[talkUser] = 0 setPlayerStorageValue(cid, 1001, 1) setPlayerStorageValue(cid, 1002, 1) elseif(msgcontains(msg, 'Quest') or msgcontains(msg, 'mission')) and getPlayerStorageValue(cid,1002) == 1 then selfSay('Conseguiu recolher os itens?', cid) talkState[talkUser] = 2 elseif(msgcontains(msg, 'Yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 2 and getPlayerItemCount(cid, 12155) < 13 and getPlayerItemCount(cid, 12177) < 13 then selfSay('Voce ainda nao tem todos os itens necessarios.', cid) talkState[talkUser] = 0 elseif((msgcontains(msg, 'No') or msgcontains(msg, 'nao')) and talkState[talkUser] == 2) then selfSay('Entao vai la buscar.', cid) talkState[talkUser] = 0 elseif(msgcontains(msg, 'Yes') or msgcontains(msg, 'sim')) and getPlayerStorageValue(cid,1002) == 1 and talkState[talkUser] == 2 and getPlayerItemCount(cid, 12155) == 13 and getPlayerItemCount(cid, 12177) == 13 then selfSay('Muito obrigado, aqui está seu premio!', cid) doPlayerAddItem(cid,11441, 1) doPlayerAddItem(cid,11451, 1) doPlayerRemoveItem(cid, 12155, 13) doPlayerRemoveItem(cid, 12177, 13) setPlayerStorageValue(cid, 1002, -1) end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Diálogo: - hi - Ola, |PLAYERNAME|. Em que posso ajuda-lo? - Quest - Ola, poderia me ajudar recolhendo alguns itens pra minha lojinha? - yes - Ok, recolha para mim {13 pair of leaves} que pode ser encontrada com {snivys} e {13 Sandbags} que pode ser encontradas com {Krokoroks}. Boa Sorte! depois que recolher os itens - Quest - Conseguiu recolher os itens? - yes - Muito obrigado, aqui está seu premio!
  22. function onUse(cid, item, frompos, item2, topos) item1pos = {x=71, y=234, z=15, stackpos=255} --item1pos item2pos = {x=76, y=237, z=15, stackpos=255} --item2pos item3pos = {x=76, y=237, z=15, stackpos=255} --item3pos item4pos = {x=76, y=237, z=15, stackpos=255} --item4pos item5pos = {x=66, y=236, z=15, stackpos=255} --item5pos item6pos = {x=66, y=236, z=15, stackpos=255} --item6pos item7pos = {x=66, y=236, z=15, stackpos=255} --item7pos item8pos = {x=66, y=236, z=15, stackpos=255} -- Local onde o helmet irá aparecer item1 = getThingfromPos(item1pos) item2 = getThingfromPos(item2pos) item3 = getThingfromPos(item3pos) item4 = getThingfromPos(item4pos) item5 = getThingfromPos(item5pos) item6 = getThingfromPos(item6pos) item7 = getThingfromPos(item7pos) item8 = getThingfromPos(item8pos) if item.itemid == 1945 and item1.itemid == 0000 and item2.itemid == 0000 and item3.itemid == 0000 and item4.itemid == 0000 and item5.itemid == 0000 and item6.itemid == 0000 and item7.itemid == 0000 then -- Substitua os 0000 pelos IDs dos items doRemoveItem(item1.uid,1) doSendMagicEffect(item1pos,13) doRemoveItem(item2.uid,1) doSendMagicEffect(item2pos,13) doRemoveItem(item3.uid,1) doSendMagicEffect(item3pos,13) doRemoveItem(item4.uid,1) doSendMagicEffect(item4pos,13) doRemoveItem(item5.uid,1) doSendMagicEffect(item5pos,13) doRemoveItem(item6.uid,1) doSendMagicEffect(item6pos,13) doRemoveItem(item7.uid,1) doSendMagicEffect(item7pos,13) doTransformItem(item.uid,item.itemid+1) doCreateItem(0000,1, item8pos) -- Colocar ID do Helmet Aqui doPlayerSendTextMessage(cid,22,'Sacrifio realizado com sucesso!') elseif item.uid == 9011 and item.itemid == 1946 then doTransformItem(item.uid,item.itemid-1) else return 0 end return 1 end Action.xml <action uniqueid="9011" script="NomeDoArquivo.lua"/> Coloque UniqueID 9011 na Alavanca pelo Map Editor. #MaXwEllDeN Antes que pergunte, NÂO, eu não sei por tudo bem organizadinho meus script iguais ao seu. Eu faço tudo 'brabo' mesmo. Ainda preciso aprender tabelas e essas coisas, pra fazer scripts iguais ao seu. To só me adiantando
  23. Clique em "Melhor Resposta" para poder trancar o tópico. Abraços !!
  24. Eu tenho isso aqui. Sempre que o Player logah, ele recebe todas as benções. Assim, ele não perde items ao morrer. function onLogin(cid) local Name = "Account Manager" local bless = {1, 2, 3, 4, 5} local cost = 0 function onSay(cid, words, param) for i = 1, table.maxn(bless) do return TRUE end end for i = 1, table.maxn(bless) do doPlayerAddBlessing(cid, bless[i]) end doSendAnimatedText(getPlayerPosition(cid), 'Login!', 140) doSendMagicEffect(getPlayerPosition(cid), 49) return TRUE end CreatureScript.xml <event type="login" name="Bless" event="script" value="NomeDoArquivo.lua"/> Não esqueça de registrar no Login.lua
  25. É só colocar a ActionID 10000 no Tile e por a Porta em cima, pois o player precisa passar pelo tile pra passar pela porta ¬¬

Informação Importante

Confirmação de Termo