Solutions
-
xWhiteWolf's post in (Resolvido)[PEDIDO] Spell que gira em sua volta was marked as the answeragr vai
-
xWhiteWolf's post in (Resolvido)duvida absorver elementos was marked as the answerOlá amigo, primeiramente queria dizer que fico feliz de saber que meus scripts estão sendo úteis. Pro seu problema de healar apenas para danos de fogo: no callback onStatsChange nós temos alguns parametros que nos permite manipular que tipo de dano estamos recebendo:
function onStatsChange(cid, attacker, type, combat, value) cid - uid do player que tem os stats alterados
attacker - uid do player que implica essa mudança de stats
type - tipo de mudança de stats que está ocorrendo
combat - o tipo de combat que está sendo utilizado para fazer a alteração de stats
value - valor da mudança de stats
vide> http://www.tibiaking.com/forum/topic/34420-callbacks-de-creaturescripts/
Como você quer dar heal somente em danos de fogo, estamos procurando um combat do tipo
COMBAT_FIREDAMAGE Apenas faça um if combat == COMBAT_FIREDAMAGE ou if combat == 8 (no lugar desse 8 você bota no numero que aparece lá em data/lib/constant.lua
O meu está COMBAT_FIREDAMAGE = 8 então eu posso usar tanto 8 quanto COMBAT_FIREDAMAGE e aí você aplica o heal dentro dessa condição. Espero ter ajudado em algo
-
xWhiteWolf's post in (Resolvido)Tentativa frustrante de corrigir corpses was marked as the answervocê tem que garantir que tá assim pra todos os corpses que o monstro pode assumir.
Rat tem corpse 2813 mas ele vai decaindo pra vários tipos de corpses, tem que fazer pra todos. Porque a outra solução que você tá pensando vai ficar realmente pesada, ainda mais se seu server tiver vários players, imagina, várias checagens pra cada morte de monstro.. algo que acontece a todo instante.
-
xWhiteWolf's post in (Resolvido)[PEDIDO] Sistema de reset diferenciado(Hero) was marked as the answerem 0.4 não se usa db.executeQuery, se usa db.query.. testa agr:
local time = 10 -- tempo em segundos para permitir o login function onSay(cid, words, param, channel) doSetGameState(GAMESTATE_CLOSED) db.query("UPDATE `players` SET `level` = 8 WHERE `group_id` < 6;") db.query("DELETE FROM `player_depotitems` WHERE `itemtype` NOT IN (11257, 11238, 11237, 11236, 11235, 11115, 10522, 10521, 10520, 10519, 10518, 9775, 9774, 7739, 7738, 7737, 7587, 7343, 7342, 5950, 5949, 5927, 5926, 5801, 3960, 3940, 3939, 2365, 2004, 2003, 2002, 2001, 2000, 1999, 1998, 1997, 1996, 1995, 1994, 1993, 1992, 1991, 1988, 1987, 2663, 2656, 7730, 12607, 8905, 7735, 12610, 8925, 7422, 8858, 7840, 10502, 8981, 9004, 7722, 2218, 1294, 8303, 2157);") db.query("DELETE FROM `player_items` WHERE `itemtype` NOT IN (11257, 11238, 11237, 11236, 11235, 11115, 10522, 10521, 10520, 10519, 10518, 9775, 9774, 7739, 7738, 7737, 7587, 7343, 7342, 5950, 5949, 5927, 5926, 5801, 3960, 3940, 3939, 2365, 2004, 2003, 2002, 2001, 2000, 1999, 1998, 1997, 1996, 1995, 1994, 1993, 1992, 1991, 1988, 1987, 2663, 2656, 7730, 12607, 8905, 7735, 12610, 8925, 7422, 8858, 7840, 10502, 8981, 9004, 7722, 2218, 1294, 8303, 2157);") return addEvent(doSetGameState, 1000 * time, GAMESTATE_NORMAL) end -
xWhiteWolf's post in (Resolvido)setConditionParam was marked as the answertodos os existentes podem ser encontrados em data/lib/constant.lua no seu sv.
ou vc pode simplesmente checar esse tópico aqui http://www.tibiaking.com/forum/topic/49095-lib-000-const/
Não necessariamente todos os parametros que existem lá podem ser colocados na condição que você criou, vai depender mas é só usar o bom senso e fazer testes. Procurar no google pela condição tb me ajudou muito pra ver exemplos práticos de cada utilização. Espero que você consiga aprender todos!
-
xWhiteWolf's post in (Resolvido)Como posso colocar um sistema igual /b a players? was marked as the answerhttp://www.tibiaking.com/forum/topic/35667-broadcast-system-100/
-
xWhiteWolf's post in (Resolvido)Como colocar sistema de dodge quando passar pelo fogo? was marked as the answerse vc usa esse script aqui http://www.tibiaking.com/forum/topic/33545-dodge-system-854/
é só tirar o and isCreature(attacker) do creaturescript.. mas não me responsabilizo por erros que possam vir a dar.
-
xWhiteWolf's post in (Resolvido)[PEDIDO] Spell Ficar invuneravel por 10 segundos was marked as the answerhttp://www.tibiaking.com/forum/topic/39215-spell-para-ficar-intocavel/
-
xWhiteWolf's post in (Resolvido)[AJUDA] Ajuda com script bugado was marked as the answerisItemStackable(lever[item.actionid][2]) and 100 or 1 ele verifica se o item é stackável e caso seja ele dá 100, caso não seja ele adiciona 1.
Se quiser que seja sempre 1 é só mudar o valor 100 ali pra 1. Ou ainda, remover toda essa parte que eu coloquei no code e deixar apenas 1 no lugar
-
xWhiteWolf's post in (Resolvido)[pedido] item ao ser equipado ganhar storage, e quando ser desequipado remover storage was marked as the answerlocal storage = 18371 -- storage function onEquip(cid, item, slot) if getPlayerStorageValue(cid, storage) <= 0 then setPlayerStorageValue(cid, storage, 1) end return true end function onDeEquip(cid, item, slot) if getPlayerStorageValue(cid, storage) > 0 then setPlayerStorageValue(cid, storage, 0) end return true end <movevent type="DeEquip" itemid="8889" slot="armor" event="script" value="set.lua"/> <movevent type="Equip" itemid="8889" slot="armor" event="script" value="set.lua"/> só muda o id do item e o slot que vc quer que ative isso.
-
xWhiteWolf's post in (Resolvido)[PEDIDO] Resetar TODAS storages ao iniciar o server was marked as the answerao invés de fazer if storage(x) > 0 then setstorage(x, 0) end vc pode simplesmente fazer:
for i = 1000, 10000 do setPlayerStorageValue(cid, i, 0) end Dessa forma todas as storages entre 1000 e 10000 vão ser setadas pra 0.
Um jeito melhor de fazer isso é via db, mas aí precisa ter um conhecimento mais avançado, não pode estar online na hr que for fazer isso etc e tal. Daria pra fazer um globalevent onStartup() mas a query ficaria bem pesada pois alteraria todos os values de player_storage:
("UPDATE `player_storage` SET `value` = '0' WHERE `value` > 0;") -
xWhiteWolf's post in (Resolvido)Duvida chance de dropar item was marked as the answerde 0 a 10.000, ele gera um numero aleatorio, se a chance que você botou ali for maior que o numero aleatorio entre [0-10.000] então ele adiciona no corpo.
-
xWhiteWolf's post in (Resolvido)[PEDIDO] Comando para fazer summon falar was marked as the answero resto fica por sua conta :DDD
for _, summon in ipairs (getCreatureSummons(cid)) do if getCreatureName(summon) == "Nome do Bixo Aqui" then doCreatureSay(summon, param[2], TALKTYPE_MONSTER) end end -
xWhiteWolf's post in (Resolvido)[DÚVIDA] Textos coloridos was marked as the answernão tem, essas são as cores que representam os numeros declarados na source pra cada tipo de mensagem;
-
xWhiteWolf's post in (Resolvido)[Erro] Script de !rank was marked as the answeracerto miseravi, sua TFS não foi compilada com a função utilizada no script, use esse sistema aqui que é via db.
http://www.tibiaking.com/forum/topic/51430-suporte-sistema-de-rank-sem-gods/
-
xWhiteWolf's post in (Resolvido)Duvida Sobre a Caixa De Dial was marked as the answer\n é o comando pra pular linha.
Escreva Mensagem A\n Mensagem B
-
xWhiteWolf's post in (Resolvido)[PEDIDO] Provador de roupas was marked as the answerusa esse:
<movevent type="StepIn" actionid="1233" event="script" value="provador.lua"/> <movevent type="StepOut" actionid="1233" event="script" value="provador.lua"/> Só alterar os looktypes, o restante é cor de cada peça de roupa e o ultimo é os addons. Se quiser adicionar ou remover é só copiar as linhas e mudar o numero, deixando sempre em ordem crescente (1, 2, 3, 4, 5) e lembrando de colocar vírgula no final (o último não leva virgula)
-
xWhiteWolf's post in (Resolvido)[Pedido] !Talkaction - "Correr" was marked as the answerhttp://www.tibiaking.com/forum/topic/44601-correr-poketibia/
-
xWhiteWolf's post in (Resolvido)[Duvida]energy wall was marked as the answera source do tibia não segue um padrão quanto aos monstros, até onde eu sei, se uma dessas tá ativada, ele atravessa os fields.
<flag canpushitems="0"/> <flag canpushcreatures="0"/>
só não lembro qual das duas é -
xWhiteWolf's post in (Resolvido)Script Bugada ;/ was marked as the answerlocal s = {5668,5669,5667} local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function x(p, d) local t = {{x=p.x,y=p.y-1,z=p.z},{x=p.x+1,y=p.y,z=p.z},{x=p.x,y=p.y+1,z=p.z},{x=p.x-1,y=p.y,z=p.z}} return t[d+1] end function onCastSpell(cid, var) local position1 = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y+1, z=getPlayerPosition(cid).z} local pos = getCreaturePosition(cid) local itemid = 2335 --id da kunai doCreateItem(itemid, pos) addEvent(function() local item = getTileItemById(pos, itemid) if item.uid > 0 then doRemoveItem(item.uid) end end, 5 * 1000) local mystr = "return {x=xx,y=yy,z=zz}" local mystr = string.gsub(mystr, "xx", pos.x) local mystr = string.gsub(mystr, "yy", pos.y) local mystr = string.gsub(mystr, "zz", pos.z) local position112 = {x=getPlayerPosition(cid).x, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z} setPlayerStorageValue(cid, s[1], mystr) setPlayerStorageValue(cid, s[2], os.time()+0) setPlayerStorageValue(cid, s[3], 1) for i = 1, 5 do end doCombat(cid, combat, var) return true end testa agora
-
xWhiteWolf's post in (Resolvido)Script de colocar restrições em determinados itens was marked as the answercalma calma calma haha vamos primeiro entender quando colocar em itens.xml, qnd colocar em weapons, em movements e por script:
Acredito que vc tenha criado seu item donate pelo items.xml, daí vc coloca assim no movements.xml:
Agora vamos entender oque isso significa:
type="Equip": é o tipo de script que estamos criando, um script do tipo "Equip" (que ativa ao equipar)
itemid="7890": é o id do item que vai ativar o script
slot="necklace": é o slot que o item deverá ser colocado pra ativar o script
event="function" : isso daqui tá indicando que ao ser equipado ele irá ativar a função do item anteriormente definida pelo items.xml e não um script da pasta movements.
value="onEquipItem": é o tipo de função que ele irá ativar, onEquipItem é o callback de movements de equipar os itens.
<vocation id="1"/> <vocation id="5" showInDescription="0"/> <vocation id="2"/> <vocation id="6" showInDescription="0"/>
aqui são as vocações que podem usar e esse showInDescription="0" indica que essa vocação não será mostrada o nome na descrição do item.
Pra não ficar repetitivo: "Esse item pode ser usado por sorceres, master sorceres, druids e elder druids", vai ficar só "Esse item pode ser usado por sorceres e druids",
<movevent type="DeEquip" itemid="7890" slot="necklace" event="function" value="onDeEquipItem"/>
aqui é a mesma coisa que eu já expliquei acima só que agora pra desequipar, isso serve pro cara perder os bonus ao desequipar o item
Se você fizer desse modo, vc não vai precisar colocar nada em items.xml mas vc tem que garantir que só existe uma tag Equip e uma DeEquip pro mesmo itemid, se não vai dar conflito.
Dessa forma o cara ainda vai poder colocar o item na mão e no slot da arrow mas ele não vai receber os bonus, pra impedir que ele coloque no slot é pelo items.xml mesmo.
As weapons vc coloca dano e tudo mais no weapons.xml mas se vc tiver uma arma que dá skill vc tem que declarar no movements.xml. -
xWhiteWolf's post in (Resolvido)[Duvida] Sprite Object Builder was marked as the answerTroca essa linha do script
doSendMagicEffect(getCreaturePosition(cid), 51)
por essas:
local pos = getCreaturePosition(cid) local npos = {x = pos.x + 2, y = pos.y + 1, z = pos.z} -- aqui vc soma e subtrai em x pra enquadrar melhor o efeito doSendMagicEffect(npos, 51) -
xWhiteWolf's post in (Resolvido)Gema System was marked as the answerhttp://www.tibiaking.com/forum/topic/45316-pedido-gema-rep/
-
xWhiteWolf's post in (Resolvido)[Spell] Dash ... Ajuda! was marked as the answerToma cuidado ao usar com o GOD/GM pois pode dar debug nos players em volta.
Pra todo mundo vai mostrar invisivel, pra vc fica como se tivesse de utana vid
edit: descobri que não dá pra ficar invisivel com a condition de GM, leia mais aqui
-- Edited Dash by Night Wolf local damage = 20 -- dano que toma qnd bate em algum obstáculo local distance = 15 -- distancia que anda (em sqm) local speed = 100 -- milisegundos entre cada passo (qnt menor = mais rapido) local invisible = createConditionObject(CONDITION_GAMEMASTER, (speed * distance) + 50, false, GAMEMASTER_INVISIBLE) -- nao mexa local outfit = createConditionObject(CONDITION_INVISIBLE, (speed * distance) + 50, false) -- nao mexa local function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function onWalk(cid) local poslook = getCreatureLookPosition(cid) poslook.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE if isWalkable(poslook, false, false, false) then if not isCreature(getThingfromPos(poslook).uid) then doMoveCreature(cid, getPlayerLookDirection(cid)) doSendMagicEffect(getPlayerPosition(cid), 14) return true else doCreatureAddHealth(cid, -damage) doSendMagicEffect(getPlayerPosition(cid), 31) doSendAnimatedText(getPlayerPosition(cid), "-"..damage , 180) return true end else doCreatureAddHealth(cid, -damage) doSendMagicEffect(getPlayerPosition(cid), 31) doSendAnimatedText(getPlayerPosition(cid), "-"..damage , 180) end end function onCastSpell(cid, var) doAddCondition(cid, invisible) doAddCondition(cid, outfit) for i = 0, distance do addEvent(onWalk, speed * i,cid) end return true end -
xWhiteWolf's post in (Resolvido)Sistema de Magias Dependentes! was marked as the answerele não casta a A? ps: usa os.time() pq assim se ele castar a A uma vez ele vai poder castar a B sempre porque o storage vai permanecer;
A:
B: