Ir para conteúdo

elton123

Membro
  • Registro em

  • Última visita

Tudo que elton123 postou

  1. local templo = {x=x, y=y, z=z} -- só editar aqui function onStepIn(cid, item, pos, fromPos) doTeleportThing(cid,templo) return true end e editar com map editor
  2. oi local pos = { {x = 33313, y = 31852, z = 9}, {x = 33313, y = 31865, z = 9}, {x = 33313, y = 31881, z = 9}, {x = 33328, y = 31860, z = 9}, {x = 33328, y = 31873, z = 9}, {x = 33328, y = 31885, z = 9}, {x = 33308, y = 31873, z = 9}, {x = 33320, y = 31873, z = 9}, {x = 33335, y = 31873, z = 9}, {x = 33360, y = 31873, z = 9}, {x = 33336, y = 31914, z = 9}, {x = 33343, y = 31914, z = 9}, {x = 33353, y = 31914, z = 9}, {x = 33361, y = 31914, z = 9}, {x = 33345, y = 31900, z = 9}, {x = 33352, y = 31900, z = 9}, {x = 33355, y = 31854, z = 9}, {x = 33355, y = 31861, z = 9}, {x = 33355, y = 31885, z = 9}, {x = 33345, y = 31864, z = 9}, {x = 33345, y = 31881, z = 9}, {x = 33309, y = 31867, z = 9}, {x = 33317, y = 31879, z = 9}, {x = 33311, y = 31854, z = 9}, {x = 33334, y = 31889, z = 9}, {x = 33340, y = 31890, z = 9}, {x = 33347, y = 31889, z = 9}, } local creatures = { "iron servant", "golden servant", "diamond servant" } local function getFungusInArea(fromPos, toPos) for x = fromPos.x, toPos.x do for y = fromPos.y, toPos.y do for i = 13585, 13589 do if(getTileItemById({x = x, y = y, z = 9}, i).uid > 1) then return true end end end end return false end function onUse(cid, item, fromPosition, itemEx, toPosition) if(item.itemid == 13601) then if(isInArray({13585, 13586, 13587, 13588, 13589}, itemEx.itemid)) then if(getPlayerStorageValue(cid, 984) + 1 --[[* 1000]] < os.time()) then doTransformItem(itemEx.uid, 13590, 1) setPlayerStorageValue(cid, 984, os.time()) doSendMagicEffect(toPosition, CONST_ME_POFF) if(getFungusInArea({x = 33306, y = 31847}, {x = 33369, y = 31919}) == false) then for i = 1, #pos do addEvent(doSummonCreature, 5 * 1000, creatures[math.random(1, 3)], pos[i]) addEvent(doSendMagicEffect, 5 * 1000, pos[i], CONST_ME_TELEPORT) end doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FIREWORK_RED) doCreatureSay(cid, "COME! My servants! RISE!", TALKTYPE_ORANGE_1) setGlobalStorageValue(985, 0) setGlobalStorageValue(984, 0) else doCreatureSay(cid, "The slime gobbler gobbles large chunks of the slime fungus with great satisfaction.", TALKTYPE_ORANGE_1) doPlayerAddExp(cid, 20, true, true) end end end end return true end
  3. cara só testando mais provavelmente não pq tem umas functions que não são compatíveis
  4. trocar mapa só em data\world colar la tem que ser da mesma versão dps vai em config.lua procure por mapName deixa assim mapName = "nomedoseumapanovo.otbm" agora adicionar vocation chatinho tem que ir em data\XML\vocations.xml adiciona aqui suas novas vocations e tem que editar spells.xml movements.xml colocando sua nova id da vocation em todas spells que você quer q a nova vocation use colocar sua nova id da vocation em todas movements que você quer q a nova vocation use tal arma dica spells.xml movements.xml só você seguir padrão dos outros id
  5. +ou- assim? function onStepIn(cid, item, pos, fromPos) local a = getCreaturePosition(cid) doTeleportThing(cid,{x=a.x+2,y=a.y,z=a.z}) return true end ou assim function onStepIn(cid, item, pos, fromPos) doTeleportThing(cid, fromPos, true) return true end explique melhor se não for nenhum dos dois
  6. não é só ir em data\XML\vocations.xml editar attack speed
  7. elton123 postou uma resposta no tópico em OTServer Derivados
    vou baixar aqui para verificar os bugs rep+
  8. legal vou dar uma olhada no tópico que você postou
  9. cara eu acho que esse vai funciona ai -- config elton123 local velocidade = 0.9 local life = 0.5 local periodo = 15 -- tempo em segundos -- config elton123 local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, periodo*1000) setConditionFormula(condition, -velocidade, 0, -velocidade, 0) function onStepIn(cid, item, pos, fromPos) if isPlayer (cid) then doAddCondition(cid,condition) doCreatureAddHealth(cid,-(getCreatureHealth(cid)*life)) end return true end
  10. seria assim? -- config elton123 local velocidade = 0.9 local life = 0.5 local periodo = 10 -- tempo em segundos -- config elton123 function onStepIn(cid, item, pos, fromPos) if isPlayer (cid) then doChangeSpeed(cid,-(getCreatureSpeed(cid)*velocidade)) doCreatureAddHealth(cid,-(getCreatureHealth(cid)*life)) addEvent(velocidadeNormal,periodo*1000,cid) end return true end function velocidadeNormal(cid) if isPlayer (cid) then doChangeSpeed(cid,getCreatureBaseSpeed(cid)) end return true end
  11. tem um monte de códigos de task para otserver e pega no poketibia só dar uma pesquisada
  12. bom galera gostaria de saber qual melhor poketibia atualmente para usar como base com source é só isso mesmo espero que alguém que tenha poketibia com source possa me indicar...
  13. eu achei legal mais ele só check primeira letra do player e as tabelas não ta em ordem e tem que digitar com letras minusculas é isso mesmo ou eu vi errado eu não testei só dei uma olhada no código n:sub(1, 1):lower() rep+ obg por compartilhar quem quiser deixa em ordem adiciona essa linha table.sort (pnames)
  14. veja assim
  15. config.lua procure por experienceStages deixa assim experienceStages = true dps vai em data\XML procure por stages.xml só editar o stages.xml
  16. criei um simples mais vai ser fácil para entender como funciona storage só criar na pasta talkactions e usar comando com god e ler os comentários --[[ a final oq é uma storage resume é uma função que funciona como uma chave q leva um valor (Numero ou Letras) ]] local chave = 12345 -- aqui nome da chame pode ser nome de numeros function onSay(cid, words, param, channel) --getCreatureStorage(cid,chave) aqui vai olhar valor que ta no nome nomalmente vai ser -1 doPlayerSendTextMessage(cid,19,"chave "..getCreatureStorage(cid,chave).."") -- aqui um modo de test vai aparecer msg para player if getCreatureStorage(cid,chave) == -1 then -- se valor da chave for -1 então vai ler doPlayerSendTextMessage(cid,19,"sim minha chave com nome "..chave.." tem valor "..getCreatureStorage(cid,chave).."" ) doCreatureSetStorage(cid,chave,1) -- aqui que vai alterar os valor das chaves vai ser um agora else -- ser usar comando denovo vai cair no else pq alter chave lembra doPlayerSendTextMessage(cid,19,"você não tem a chave -1") end return true end aqui achei um tutor falando de storage tbm http://www.tibiaking.com/forum/topic/18198-o-que-sao-storages/
  17. já fico melhor ideal no final fica tipo uma escadinha if na mesma linha vertical do end em escadinha mais eu não sou mestre em indentação eu aprendi olhando os código dos cara kkk olha do @Caronte ​o seu mesmo código já ta com indentação... indentação facilita leitura do código todo mundo gosta de ver nos codigo o seu mesmo código eu usei 4 de espaço --REDBULL SYSTEM by: Gabriel Stocco-- local limite = 2500 -- Limite para o player ficar de estômago cheio(deixe igual seu food.lua encontrado em data/actions/scripts) local food = {[2672] = {120}} -- [ID] do item usável(igual na tag acrescentada no actions.xml) = {Quantia que vai satisfazer o player} local speedup = 550 -- Valor que aumentará a speed do player(se sua speed base for 300, ao usar o item ficará 850) local time = 4 -- Tempo que vai ficar com a velocidade alterada, após o tempo volta ao normal function onUse(cid, item, fromPosition, itemEx, toPosition) if exhaustion.check(cid, 23007) == false then exhaustion.set(cid, 23007, 10) else return doPlayerSendCancel(cid, "Beba outro em: " ..exhaustion.get(cid, 23007).."segundos.") end if(food[item.itemid] ~= nil) then if(getPlayerFood(cid) + food[item.itemid][1]) >= limite then doPlayerSendCancel(cid, "Você está cheio.") else doPlayerFeed(cid, food[item.itemid][1] /2.7) doRemoveItem(item.uid, 1) doSendMagicEffect(getCreaturePosition(cid), 25) doSendAnimatedText(getCreaturePosition(cid), "REDBUUUULL", TEXTCOLOR_BLUE) doCreatureAddHealth(cid, 0+ food[item.itemid][1]) doChangeSpeed(cid, speedup) addEvent(doChangeSpeed, time*1000,cid, -speedup) end end end
  18. cara tem um bug que só ta olhando area de uma sala eu arrumei nesse -- config elton123 local npc_destino = { msg = "vc quer que eu escolha o seu destino", -- frase do npc tempo = 60, --em segundos destino_final = {x=160, y=54, z=8}, salas = { { {x=160, y=54, z=7},sala_msg ="espere eu vou teletransportar você para sala 1", area = { x = {152,164}, -- posição x as duas pontas horizontal a direita e a esquerda y = {47,54}, -- posição y as duas pontas vertical de cima e de baixo z = {7}, frase = "volte para sala 1 que sera teletransportado", }, }, { {x=160, y=54, z=8},sala_msg ="espere eu vou teletransportar você para sala 2", area = { x = {152,164}, -- posição x as duas pontas horizontal a direita e a esquerda y = {47,54}, -- posição y as duas pontas vertical de cima e de baixo z = {8}, frase = "volte para sala 2 que sera teletransportado", }, }, }, } -- config elton123 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 if msgcontains(msg, 'destino') then selfSay(npc_destino.msg, cid) talkState[talkUser] = 1 elseif (msgcontains(msg,'no') and talkState[talkUser] == 1) then selfSay("bye", cid) talkState[talkUser] = 0 elseif (msgcontains(msg,'yes') and talkState[talkUser] == 1) then local do_destino = math.random(1,#npc_destino.salas) selfSay(npc_destino.salas[do_destino].sala_msg, cid) doCreatureSetNoMove(cid,true) addEvent(doTeleportThing,5000,cid,npc_destino.salas[do_destino][1]) addEvent(doCreatureSetNoMove,4999,cid,false) addEvent(msgPlay,(npc_destino.tempo-10)*1000,cid,22,npc_destino.salas[do_destino].area.frase) addEvent(destinoFinal,npc_destino.tempo*1000,cid,npc_destino.destino_final,do_destino) talkState[talkUser] = 0 end end function destinoFinal (cid,fim,s) for xx = npc_destino.salas[s].area.x[1],npc_destino.salas[s].area.x[2] do for yy = npc_destino.salas[s].area.y[1] , npc_destino.salas[s].area.y[2] do local floor1 = getTopCreature({x=xx,y=yy,z=npc_destino.salas[s].area.z[1]}).uid if floor1 > 0 and isPlayer(floor1) then doTeleportThing(cid,fim) end end end return true end function msgPlay (cid,cor,m) if isPlayer(cid) then doPlayerSendTextMessage(cid,cor,m) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) { {x=160, y=54, z=8}, -- posição que play vai cair na sala sala_msg ="espere eu vou teletransportar você para sala 2", -- frase do npc area = { x = {152,164}, -- posição x as duas pontas horizontal a direita e a esquerda y = {47,54}, -- posição y as duas pontas vertical de cima e de baixo z = {8}, frase = "volte para sala 2 que sera teletransportado", -- frase que vai falar 10 segundos antes }, },
  19. o seu código esta bom só tem que deixar seu código identado exemplo -- exemplo você escolhe quantos espaços quer da no seu codigo aqui vou usar 6 espaços function a(b) if x == x then -- aqui ta 0 espaço como é if ganha 6 de espaço ficando 6 if x == x then -- aqui ta 6 como é if ganha +6 ficando 12 if x == x then -- aqui ta 12 como é if ganha +6 ficando 18 elseif y==y then -- como aqui elseif fica no mesmo rumo do ultimo if else tbm é assim end -- como aqui é end retire 6 end -- como aqui é end retire 6 end -- como aqui é end retire 6 end -- resume é só deixa uns espaços if fica na mesma reta do end e doo else ou elseif na linha vertical -- agora uso de pular linha só uso quando uso end na functions e pulo linha no começo antes da function cara é assim mesmo que aprende pegando código de um script e tentando usar em outro eu garanto que você vai aprender muito mais praticando do que lendo quando fica lendo você vai pensa que é uma coisa do outro mundo tudo estranho mais quando você começa praticar você aprende muito mais com os seus erros e dps quando for ler vai achar tão simples que você vai ate rir atoa kkkkkkkk
  20. tem que usar essas functions para storage getCreatureStorage(de quem vai verificar, e numero) -- para verificar doCreatureSetStorage(de quem vai verificar, e numero, alteração) -- para alterar e na storage pode coloca numero ou string e tem um limite de caracteres para poder ser armazenado na database
  21. script não vai funciona do jeito que queria pq as funções onTarget, onAttack, onCombat e onFollow foram desenvolvidas para serem funcionais com players apenas, com monstros elas não funcionam exatamente como esperado. Pode retornar false em todas elas que o monstro vai sempre seguir o player. em lua era pra ser assim não tem nada de errado no código data\creaturescripts\scripts\nomedoarquivo.lua function onTarget(cid, target) local sto = 12345 -- storage if isMonster(cid) and isPlayer(target) and getPlayerStorageValue(target, sto) < 1 then return false end return true end creaturescripts.xml <event type="target" name="sto" event="script" value="arquivo.lua"/> login.lua registerCreatureEvent(cid, "nomedoarquivo") monster <script> <event name="nomedoarquivo"/> </script> no momento eu não sei fazer essas alterações na source to fraquinho em c++
  22. elton123 postou uma resposta no tópico em Suporte Tibia OTServer
    sim mais quero saber versão do seu servidor para mim testa em um parecido pq aqui no meu ta pegando do jeito q postei ai
  23. elton123 postou uma resposta no tópico em Suporte Tibia OTServer
    qual seu tfs? "The Forgotten Server" testei no 0.4 pego de boa
  24. eu tinha imaginado que as salas seria fechadas sem poder desloga dps eles seria tele... seria assim -- config elton123 local npc_destino = { msg = "vc quer que eu escolha o seu destino", -- frase do npc tempo = 10, --em segundos destino_final = {x=160, y=54, z=8}, area = { x = {152,164}, -- posição x as duas pontas horizontal a direita e a esquerda y = {47,54}, -- posição y as duas pontas vertical de cima e de baixo z = {7}, }, salas = { {{x=160, y=54, z=7},sala_msg ="espere eu vou teletransportar você para sala 1"}, {{x=160, y=55, z=7},sala_msg ="espere eu vou teletransportar você para sala 2"}, }, } -- config elton123 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 if msgcontains(msg, 'destino') then selfSay(npc_destino.msg, cid) talkState[talkUser] = 1 elseif (msgcontains(msg,'no') and talkState[talkUser] == 1) then selfSay("bye", cid) talkState[talkUser] = 0 elseif (msgcontains(msg,'yes') and talkState[talkUser] == 1) then local do_destino = math.random(1,#npc_destino.salas) selfSay(npc_destino.salas[do_destino].sala_msg, cid) doCreatureSetNoMove(cid,true) addEvent(doTeleportThing,5000,cid,npc_destino.salas[do_destino][1]) addEvent(doCreatureSetNoMove,4999,cid,false) addEvent(destinoFinal,npc_destino.tempo*1000,cid,npc_destino.destino_final) talkState[talkUser] = 0 end end function destinoFinal (cid,fim) for xx = npc_destino.area.x[1] , npc_destino.area.x[2] do for yy = npc_destino.area.y[1] , npc_destino.area.y[2] do local floor1 = getTopCreature({x=xx,y=yy,z=npc_destino.area.z[1]}).uid if floor1 > 0 and isPlayer(floor1) then doTeleportThing(cid,fim) end end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) só editar essa parte area = { x = {152,164}, -- posição x as duas pontas horizontal a direita e a esquerda y = {47,54}, -- posição y as duas pontas vertical de cima e de baixo z = {7}, },
  25. cara no meu ot não tem mount pede pros cara que entende melhor de mount para não deixa cara deslogar sem tirar mount primeiro e pra quando cara for logar e tiver com mount pra ele logar com roupa normal dos players doCreatureChangeOutfit(cid, outfit)

Informação Importante

Confirmação de Termo