-
Total de itens
512 -
Registro em
-
Última visita
-
Dias Ganhos
16
Tudo que brun123 postou
-
sinceramente... quem tem que se virar é você, já tem um monte de server bom pra baixar, PDA, centurion, todos com tópicos aqui no fórum mesmo, com tudo o que você falou e muito mais, o flash está extremamente ultrapassado ninguém vai baixar um servidor cheio de bugs e tentar fazer um sistema de order funional pra um server ultrapassado, é um script que leva um tempinho pra ser desenvolvido
-
pedido Alavanca Que Teletransporta Com Item
pergunta respondeu ao ewertonsilva157 de brun123 em Scripts
esse script fui eu quem fiz também guizitog- 8 respostas
-
- alavanca + item + teleport
- tibia
- (e 2 mais)
-
pedido Alavanca Que Teletransporta Com Item
pergunta respondeu ao ewertonsilva157 de brun123 em Scripts
cara, você tem que configurar o id do item alterando o campo ali ITEM_ID pro id que você quer, o 2700 foi só um nº qualquer que escrevi o ITEM_COUNT só é válido se o item for agrupável, porque se ele não for agrupável, vai remover apenas 1 (óbvio), mas se você quiser que reomva 50 gps por exemplo, se o cara colocar 80, vai remover 50 e vão sobrar 30. não é unique id que passei pra você, falei pra colocar por actionid, também funcionaria por unique id, mas a tag que eu te passei é por action id. no map editor tem como colocar action id e unique id, são 2 coisas diferentes, vê se não dá nenhum erro no console, principalmente na hora de carregar o script, você tem que subir um pouco a barra de rolagem pra ver se não apareceu nenhum erro. edit: acabei de testar aqui e está 100%- 8 respostas
-
- alavanca + item + teleport
- tibia
- (e 2 mais)
-
pedido Alavanca Que Teletransporta Com Item
pergunta respondeu ao ewertonsilva157 de brun123 em Scripts
Testa e veja se agrada:- 8 respostas
-
- alavanca + item + teleport
- tibia
- (e 2 mais)
-
pedido Script Avançado Tomara Que Algum Scripter Saiba Cria-Lo
pergunta respondeu ao juanterresalmeida de brun123 em Scripts
você quer uma talkaction que kicke todos os players online? já existe, só mudar o state do server (fechar ele e abrir logo depois, com o comando /closeserver e /openserver) -
vocations.xml (data/XML)
-
leia os comments, eles ajudam e podem até resolver sua dúvida... não testado
- 28 respostas
-
- rota predestinada
- otserv
-
(e 1 mais)
Tags:
-
essa linha dá errado mesmo, o certo é: setPlayerStorageValue(cid, 7001, getPlayerStorageValue(cid, 7001) + 1)
-
244x244? voc}e recortou uma imagem de quase 8000 por 8000 pixels? mesmo que sua nova sprite seja grande, acho que você se enganou no tamanho... um sprite 244x244 precisa de quase 60.000 sprites, e o limite do tibia é 65.000 não tenho certeza, mas acho que se você marcar top order 1 no dat editor e colocar no otbm também ele fica por baixo... é provável que não dê certo devido à perspectiva em que o tibia foi programado, ai você vai ter que recortar essa sua rua em vários itens 1x1 diferentes e colocar 1 por 1 no mapa
-
Tem que colocar as tags de stepin/stepout
-
você configurou a posição? essa script que o notle postou está diminuindo o "seconds" em 2 a cada segundo, não sei se vocês perceberam... MonsterOt, cara, já te passei 2x em outros tópicos essa script... em vez de ficar pedindo várias vezes a mesma coisa, porque não especifica ao máximo o que você realmente quer? depende do que você quer fazer, talvez nem precisa de onStepOut, talvez precise implementar a função isInRange...
-
Se não pegar vou deixar outro jeito aqui: se quiser que faço uma versão que funciona caso o item seja agrupável
-
do meu método não ia criar vários monstros, seria algo assim: criar um arquivo chamado minhalib.lua em data/lib/ e colocar isso dentro: function doCreateMonsterWithChance() local monster = "Dragon" local pos = {x = 1000, y = 1000, z = 7} local chance = 20 local delay = 2 * 24 * 60 * 60 * 1000 if math.random(100) <= chance then monster = doCreateMonster(monster, pos, false) if not monster then return addEvent(doCreateMonsterWithChance, delay) end return registerCreatureEvent(monster, "TwoDaysRespawn") end addEvent(doCreateMonsterWithChance, delay) end criar um arquivo chamado monsterstart.lua em data/globalevents/scripts e colocar isso dentro: function onStartup() doCreateMonsterWithChance() end e colocar a tag no globalevents.xml: <globalevent name="createmonster" type="start" event="script" value="monsterstart.lua"/> criar um arquivo chamado respawn.lua em data/creaturescripts/scripts e colocar isso dentro: function onDeath(cid) addEvent(doCreateMonsterWithChance, 2 * 24 * 60 * 60 * 1000) return true end e colocar a tag em creaturescripts.xml: <event type="death" name="TwoDaysRespawn" event="script" value="respawn.lua"/>
-
dúvida Player Não Pode Atacar Seu Proprio Summon.
pergunta respondeu ao eduardo190696 de brun123 em Scripts
você tem que registrar essa creature event no summon... -
uui.. do seu jeito é mais simples, mas o que eu pensei em fazer era criar o monstro e deixar lá até alguém matar ele, e depois de matar esperar mais 2 dias pra criar novamente... no seu script, se as pessoas deixarem o monstro quase morto, mas tiverem passado os 10 minutos, ele vai sumir
-
to sem tempo pra fazer a script, mas é bem fácil faz através de globalevent (startup do server) pra ter x% chance de criar um monstro numa determinada pos, se o monstro for criado, registra nele uma creature event onDeath, se não for criado, usa um addEvent que dure 2 dias pra ser executado que tem chance de criar o monstro de novo, mesma ideia, se conseguir criar, registra a creatureevent onDeath, se não, usa um addEvent pra tentar criar de novo... e assim vai a script onDeath iria ser pra quando o monstro morrer, executar novamente a função pra tentar criar o monstro e assim vai scripters iniciantes podem tentar
-
essa parte que você mesmo escreveu sobre o summon do player, está certinho, só precisa colocar acima da outra checagem pra que ele não remova o dinheiro do player antes de ver se ele tem summon. só procurar pela frase "destino alcançado" no script, lá você vai adicionando o que quiser que aconteça quando a viagem acabar
- 28 respostas
-
- rota predestinada
- otserv
-
(e 1 mais)
Tags:
-
é porque tem um conflito no nome de variáveis, no function onStepIn(cid, item, pos) está declarando "pos" por cima da pos que você configurou lá em cima, é só mudar o "pos" do function onStepIn para qualquer outra coisa, aqui 100%: local events ={} local tempo = 30 -- tempo em segundos local pos = {x = 1, y = 1, z = 1} local function doTeleportThingNoError(guid, pos) local cid = getPlayerByGUID(guid) if not isCreature(cid) then return end doTeleportThing(cid, pos) end function onStepIn(cid, item, oldPos) doPlayerSendTextMessage(cid, 27, "Contagem iniciada, daqui " .. tempo .. " segundos você será teleportado") events[getPlayerGUID(cid)] = addEvent(doTeleportThingNoError, tempo * 1000, getPlayerGUID(cid), pos) return true end function onStepOut(cid, item, pos) doPlayerSendTextMessage(cid, 28, "Contagem zerada.") stopEvent(events[getPlayerGUID(cid)]) events[getPlayerGUID(cid)] = nil return true end
-
vamos ao tutorial: primeiro declaramos a tabela addItem e já que é uma action, deixamos a linha function onUse também: local AddItem = { [2650] = {chance = 100, id = 2547, time = 3600*24*5, storage = 8123}, } function onUse(cid, item, frompos, item2, topos) end Primeira coisa: você usou um for pra achar o id do item usado na tabela, não precisa usar repetições para isso, basta fazer assim: local AddItem = { [2650] = {chance = 100, id = 2547, time = 3600*24*5, storage = 8123}, } function onUse(cid, item, frompos, item2, topos) local info = AddItem[item.itemid] end Pronto, já temos informações de chance/id/delay/storage, pois dessa forma já encontra na hora tal index na tabela. Agora verificaremos se o player pode usar novamente o item desde a última vez que executou, usando o método de os.time() em storage: No seu script inicial, não sei se você percebeu, mas essa checagem você fez usando um storage, e depois o player ao receber o item ganha outra storage, portanto o player ia poder usar indefinidamente o item local AddItem = { [2650] = {chance = 100, id = 2547, time = 3600*24*5, storage = 8123}, } function onUse(cid, item, frompos, item2, topos) local info = AddItem[item.itemid] if getPlayerStorageValue(cid, info.storage) - os.time() > 0 then return doPlayerSendCancel(cid, "You have to wait "..(getPlayerStorageValue(cid, info.storage) - os.time()).." seconds to use this item again.") end end Agora, entenda a lógica: se o player passar pela checagem da última vez que ele usou, já adicionamos logo em seguida o storage nele para ter certeza de que ele só usará uma vez, e já tornando tudo mais rápido, o resto do script na parte de adicionar o item. Uma outra coisa que achei curioso, foi o fato de você fazer o random da seguinte maneira: "if math.random(1, 100) == x.chance then", não sei se você percebeu, mas dessa forma, independente do valor que você configurar na tabela AddItem, a chance é de 1%... Eu particularmente gosto do método "if math.random(X) == math.random(X) then", dessa forma vocÇe obtem esse resultado: math.random(1) == math.random(1) -> 100% chance de ocorrer math.random(5) == math.random(5) -> 20% chance de ocorrer math.random(10) == math.random(10) -> 10% chance de ocorrer math.random(100) == math.random(100) -> 1% chance de ocorrer math.random(1000) == math.random(1000) -> 0.1% chance de ocorrer Claro que nesse método você não consegue ter tanta precisão, por exemplo colocar 35% de chance de ocorrer, só se desenvolver uma funçãozinha mais avançada, aqui o script: local AddItem = { [2650] = {chance = 100, id = 2547, time = 3600*24*5, storage = 8123}, } function onUse(cid, item, frompos, item2, topos) local info = AddItem[item.itemid] if getPlayerStorageValue(cid, info.storage) - os.time() > 0 then return doPlayerSendCancel(cid, "You have to wait "..(getPlayerStorageValue(cid, info.storage) - os.time()).." seconds to use this item again.") end setPlayerStorageValue(cid, info.storage, os.time() + info.time) if math.random(info.chance) == math.random(info.chance) then doPlayerAddItem(cid, info.id, 1) end return true end
-
mudar isso: addEvent(doTeleportThing, pos, tempo * 1000, cid) para isso: addEvent(doTeleportThing, tempo * 1000, cid, pos) lembrando que vai dar erro se o player morrer/fizer logout, pois vai tentar teleportar uma creature que não existe mais
-
isso, só escrever essa linha "local pos = ..." e embaixo de function onUse, escreva isso: doTeleportThing(cid, pos)
-
Pra magia aparecer no estilo padrão de fala do tibia, é só ir em config.lua na pasta do seu server e colocar esse campo como false: emoteSpells = false A quantidade healada nessas spells que você falou já têm sua fórmula baseada no level/ml do player, porém a fórmula é bem chatinha de se modificar por ter vários parâmetros. Vou mostrar como tornar mais fácil editar, essa é a spell "exura" original: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1.5, 2) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Agora de um jeito mais fácil de determinar a quantidade healada: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1.5, 2) function getValues(cid, level, magic) local min = level * 1.5 + magic * 7.5 local max = min * math.random(105, 120) / 100 return min, max end setCombatCallBack(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "getValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end Só fiz essa spell como exemplo, você edita a formula como você quiser e faz com as outras spells. O que o SkyDangerous falou não vai dar certo, pois só dá pra editar as características de um combate na hora que vai carregar o script, e na hora que carrega o script não existe nenhum "cid" declarado, e não tem como modificar depois.
-
Assim então: local tempo = 180 * 1000 -- em ms, 180 * 1000 = 3 min local area1 = {x = 126, y = 46, z = 1} -- Ponta de cima na esquerda na area local area2 = {x = 128, y = 50, z = 1} -- Ponta de baixo na direita na area local teleportar_para = {x = 1, y = 1, z = 1} -- onde o player irá após o tempo acabar local scriptTiming = {} -- não modifique local function isInArea(a, b, c) return a.x >= b.x and a.x <= c.x and a.y >= b.y and a.y <= c.y and a.z == b.z and a.z == c.z end local function doMovePlayerBack(cid) scriptTiming[cid] = nil if not isCreature(cid) then return end if not isInArea(getThingPos(cid), area1, area2) then return end doTeleportThing(cid, teleportar_para, false) if getThingPos(cid).x ~= teleportar_para.x or getThingPos(cid).y ~= teleportar_para.y then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) end end function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if scriptTiming[cid] then stopEvent(scriptTiming[cid]) scriptTiming[cid] = nil end scriptTiming[cid] = addEvent(doMovePlayerBack, tempo, cid) end
-
dúvida Player Não Pode Atacar Seu Proprio Summon.
pergunta respondeu ao eduardo190696 de brun123 em Scripts
Beleza amigo, qual sua dúvida? Já leu o post que você fez? Colocou sua script e a função que você fez (que por acaso podia ser 1000x mais simples, rápida e limpa) e não perguntou nada... Se o problema for não funcionar a script, é provavelmente porque você esqueceu de registrar o creature event nos players pelo login.lua -
Muda essa linha no script: if getPlayerStorageValue(cid, 1445) >= 0 then por essa: if getPlayerStorageValue(cid, storage) >= 0 then e muda a configuração la em cima "storage" para uma storage que o seu server não esteja usando sobre essa script de não permitir que players coloquem o item no local da bike, só com as sources do server
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.