Ir para conteúdo
  • Cadastre-se

(Resolvido)TFS 0.4 Gaz'Haragoth (Heal + Magia + Teleport) ???


Ir para solução Resolvido por Wakon,

Posts Recomendados

TEM COMO ADAPTAR PRA TFS 0.4 ??? POR FAVOR PESSOAL DA UMA AJUDA AI SE TIVER

8.60


Gaz%27Haragoth.gif      HEAL - Se o life dele chega a 50k, ele solta um aviso, e depois de 5 segundos heala 300k.

Crie um arquivo em creaturescripts/scripts/ com o nome heal_gaz.lua e coloque esse código: 

-- <event type="healthchange" name="HealGaz" script="heal_gaz.lua"/>

local config = {
	life_ative = 50000,
	life_add = 300000,
	seconds_ative = 5,
	gStorage = 90702,
}

local function Uheal(cid)
	local gaz = Monster(cid)

	gaz:addHealth(config.life_add)
	gaz:say("Gaz'haragoth HEALS himself!", TALKTYPE_MONSTER_SAY)
	gaz:getPosition():sendMagicEffect(CONST_ME_MAGIC_RED)
	Game.setStorageValue(config.gStorage, 0)
end

function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
	
	if attacker then
		if creature:getHealth() < config.life_ative and Game.getStorageValue(config.gStorage) < 1 then
			creature:say("Gaz'haragoth beginns to draw on the nightmares to HEAL himself!", TALKTYPE_MONSTER_SAY)
			addEvent(Uheal, 1000 * config.seconds_ative, creature.uid)
			Game.setStorageValue(config.gStorage, 1)
		end
	end

	return primaryDamage, primaryType, secondaryDamage, secondaryType
end 

A tag que deve add ao creaturescript.xml esta como comentário no script, é só add.

Depois para funcionar no Gaz, vá até o xml dele em monster e coloque em seu código: 

<script>
	<event name="HealGaz" />
</script>

Gaz%27Haragoth.gif      TELEPORT - Quem passa em cima do corpo dos summons do boss é teleportado para perto dele.

Crie um arquivo em movements/scripts/ com o nome tp_gaz.lua e coloque esse código: 

-- <movevent event="StepIn" itemid="22455" script="teleport_gaz.lua"/>

function onStepIn(creature, item, position, fromPosition)
	local player = creature:getPlayer()
	if player == nil then
		return false
	end

	local monster = Creature("Gaz'Haragoth")
	if monster then
		player:teleportTo(monster:getPosition())
	else
		player:teleportTo(fromPosition)
	end

	return true
end
Editado por ADM Mayk on BaiakME (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@ADM Mayk on BaiakME 



local config = {
    life_ative = 50000,
    life_add = 300000,
    seconds_ative = 5,
    gStorage = 90702,
}

local function Uheal(cid)
    doCreatureAddHealth(cid, config.life_add)
    doCreatureSay(cid, "Gaz'haragoth HEALS himself!", TALKTYPE_MONSTER_SAY)
    doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_RED)
    doSetStorage(config.gStorage, 0)
end

function onStatsChange(cid, attacker, type, combat, value)
    
    if attacker and type == STATSCHANGE_HEALTHLOSS then
        if getCreatureHealth(cid) < config.life_ative and getStorage(config.gStorage) < 1 then
            doCreatureSay(cid, "Gaz'haragoth beginns to draw on the nightmares to HEAL himself!", TALKTYPE_MONSTER_SAY)
            addEvent(Uheal, 1000 * config.seconds_ative, cid)
            doSetStorage(config.gStorage, 1)
        end
    end
    return true
end
-- <movevent event="StepIn" itemid="22455" script="teleport_gaz.lua"/>

function onStepIn(cid, item, position, fromPosition)
    
    local player = cid
    if player == nil then
        return false
    end
    
    local monster = getCreatureByName("Gaz'Haragoth")
    local monster_pos = getCreaturePosition(monster)
    
    if monster then
        doTeleportThing(cid, monster_pos)
    else
        doTeleportThing(cid, fromPosition)
    end
    
    return true
end

 

Link para o post
Compartilhar em outros sites
2 horas atrás, Sttorm disse:

@ADM Mayk on BaiakME 




local config = {
    life_ative = 50000,
    life_add = 300000,
    seconds_ative = 5,
    gStorage = 90702,
}

local function Uheal(cid)
    doCreatureAddHealth(cid, config.life_add)
    doCreatureSay(cid, "Gaz'haragoth HEALS himself!", TALKTYPE_MONSTER_SAY)
    doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_RED)
    doSetStorage(config.gStorage, 0)
end

function onStatsChange(cid, attacker, type, combat, value)
    
    if attacker and type == STATSCHANGE_HEALTHLOSS then
        if getCreatureHealth(cid) < config.life_ative and getStorage(config.gStorage) < 1 then
            doCreatureSay(cid, "Gaz'haragoth beginns to draw on the nightmares to HEAL himself!", TALKTYPE_MONSTER_SAY)
            addEvent(Uheal, 1000 * config.seconds_ative, cid)
            doSetStorage(config.gStorage, 1)
        end
    end
    return true
end

-- <movevent event="StepIn" itemid="22455" script="teleport_gaz.lua"/>

function onStepIn(cid, item, position, fromPosition)
    
    local player = cid
    if player == nil then
        return false
    end
    
    local monster = getCreatureByName("Gaz'Haragoth")
    local monster_pos = getCreaturePosition(monster)
    
    if monster then
        doTeleportThing(cid, monster_pos)
    else
        doTeleportThing(cid, fromPosition)
    end
    
    return true
end

 

[Error - CreatureEvent::configureEvent] No valid type for creature event.healthchange
[13:59:36.390] [Warning - BaseEvents::loadFromXml] Cannot configure an event

Link para o post
Compartilhar em outros sites
38 minutos atrás, ADM Mayk on BaiakME disse:

[Error - CreatureEvent::configureEvent] No valid type for creature event.healthchange
[13:59:36.390] [Warning - BaseEvents::loadFromXml] Cannot configure an event

troca para statschange em creaturescripts.xml

Link para o post
Compartilhar em outros sites
44 minutos atrás, Lyu disse:

troca para statschange em creaturescripts.xml

[14:50:24.415] [Error - CreatureScript Interface]
[14:50:24.418] In a timer event called from:
[14:50:24.421] data/creaturescripts/scripts/heal_gaz.lua:onStatsChange
[14:50:24.426] Description:
[14:50:24.429] (LuaInterface::luaDoCreatureAddHealth) Creature not found

[14:50:24.435] [Error - CreatureScript Interface]
[14:50:24.439] In a timer event called from:
[14:50:24.442] data/creaturescripts/scripts/heal_gaz.lua:onStatsChange
[14:50:24.446] Description:
[14:50:24.448] (LuaInterface::luaDoCreatureSay) Creature not found

[14:50:24.452] [Error - CreatureScript Interface]
[14:50:24.456] In a timer event called from:
[14:50:24.459] data/creaturescripts/scripts/heal_gaz.lua:onStatsChange
[14:50:24.463] Description:
[14:50:24.466] (LuaInterface::luaGetThingPosition) Thing not found

 

 

agora da DEBUG quando a vida dele chega em x 

 

CONSEGUI ESSE AQUI NÃO DA ERRO NEM NADA !!!

 

    <event type="statschange" name="HealGaz" event="script" value="heal_gaz.lua"/>

Citar

local config = {
    life_ative = 50000,
    life_add = 300000,
    seconds_ative = 5,
    gStorage = 90702,
}

local function getCreatureHealth(cid)
    local gaz = isMonster(cid)

    doCreatureAddHealth(cid, config.life_add)
    doCreatureSay(cid, "Gaz'haragoth HEALS himself!", TALKTYPE_MONSTER_SAY)
    doSendMagicEffect(cid, CONST_ME_MAGIC_RED)
    getPlayerStorageValue(cid, config.gStorage, 0)
end

function onStatsChange(cid, creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
    
    if isMonster(cid) and isPlayer(attacker) then
        if  isCreature(cid) < config.life_ative and getPlayerStorageValue(cid, config.gStorage) < 1 then
            doCreatureSay(cid, "Gaz'haragoth beginns to draw on the nightmares to HEAL himself!", TALKTYPE_MONSTER_SAY)
            addEvent(cid, Uheal, 1000 * config.seconds_ative, creature.uid)
            getPlayerStorageValue(cid, config.gStorage, 1)
        end
    end

    return primaryDamage, primaryType, secondaryDamage, secondaryType
end 

image.thumb.png.4afc6470363ccd604f379b6829cf5245.png

 

POREM NO JOGO FICA ASSIM A MAGIA DO HEAL SAI mais não cura o monstro ....

Editado por ADM Mayk on BaiakME (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

@ADM Mayk on BaiakME, testa assim:

local config = {
    life_ative = 50000,
    life_add = 300000,
    seconds_ative = 5,
    gStorage = 90702,
}

function AddHealth(cid)
    setGlobalStorageValue(config.gStorage, 0)
    if not isCreature(cid) then
        return false
    end
    doCreatureAddHealth(cid, config.life_add)
    doCreatureSay(cid, "Gaz'haragoth HEALS himself!", TALKTYPE_MONSTER)
    doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_RED)
end	

function onStatsChange(cid, attacker, type, combat, value)
    if (getGlobalStorageValue(config.gStorage) < 1 and type == STATSCHANGE_HEALTHLOSS and getCreatureHealth(cid) < config.life_ative) then
        doCreatureSay(cid, "Gaz'haragoth beginns to draw on the nightmares to HEAL himself!", TALKTYPE_MONSTER)
        addEvent(AddHealth, config.seconds_ative * 1000, cid)
        setGlobalStorageValue(config.gStorage, 1)
    end
   return true
end

 

Link para o post
Compartilhar em outros sites
7 minutos atrás, Wakon disse:

@ADM Mayk on BaiakME, testa assim:


local config = {
    life_ative = 50000,
    life_add = 300000,
    seconds_ative = 5,
    gStorage = 90702,
}

function AddHealth(cid)
    setGlobalStorageValue(config.gStorage, 0)
    if not isCreature(cid) then
        return false
    end
    doCreatureAddHealth(cid, config.life_add)
    doCreatureSay(cid, "Gaz'haragoth HEALS himself!", TALKTYPE_MONSTER)
    doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_RED)
end	

function onStatsChange(cid, attacker, type, combat, value)
    if (getGlobalStorageValue(config.gStorage) < 1 and type == STATSCHANGE_HEALTHLOSS and getCreatureHealth(cid) < config.life_ative) then
        doCreatureSay(cid, "Gaz'haragoth beginns to draw on the nightmares to HEAL himself!", TALKTYPE_MONSTER)
        addEvent(AddHealth, config.seconds_ative * 1000, cid)
        setGlobalStorageValue(config.gStorage, 1)
    end
   return true
end

 

SIMPLESMENTE VOCÊ É FODA D+ NAMORAL LEK muito obrigado até que em fim já tava desistindo .... só falta o tp agora dos minions vlw mesmo .....

Link para o post
Compartilhar em outros sites

@ADM Mayk on BaiakME:

function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then
        return false
    end
    local monster = getCreatureByName("Gaz'Haragoth")
    if monster then
        local pos = getCreaturePosition(monster)
        doTeleportThing(cid, pos)
        doSendMagicEffect(pos, CONST_ME_TELEPORT)
    else
        doTeleportThing(cid, fromPosition)
    end
   return true
end

 

Link para o post
Compartilhar em outros sites

<movevent event="StepIn" itemid="1387" script="tp_gaz.lua"/> esse funcinou todos os TP com o id 1387 quando entra é teleportado direto pro BOSS

<movevent type="StepIn" itemid="1387" script="tp_gaz.lua"/>

Não da erro nem nada mais os montros morre é fica normal não aparece os tps....

Editado por ADM Mayk on BaiakME (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@Wakon

 

quando passa em cima aparece esse erro ! é não e teleportado

 

[17:22:21.831] [Error - CreatureScript Interface]
[17:22:21.834] In a timer event called from:
[17:22:21.837] domodlib('Loot_func')
[17:22:21.840] function onKill(cid, target, lastHit)
[17:22:21.844]  if isPlayer(cid) and getPlayerStorageValue(cid, info.Storages[3]) <= 0 and isMonster(target) and not isInArray(info.BlockMonsters, getCreatureName(target):lower()) then
[17:22:21.860]          addEvent(corpseRetireItems, 0, cid ,getThingPos(target))
[17:22:21.866]  end
[17:22:21.869]  return true
[17:22:21.872] end:onKill
[17:22:21.874] Description:
[17:22:21.878] [string "info = {..."]:152: bad argument #1 to 'pairs' (table expected, got boolean)
[17:22:21.884] stack traceback:
[17:22:21.889]  [C]: in function 'pairs'
[17:22:21.893]  [string "info = {..."]:152: in function <[string "info = {..."]:141>

Editado por ADM Mayk on BaiakME (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@ADM Mayk on BaiakME, isso ai é erro no auto loot, não sei pq está dando esse erro, até abri um server e testei com o auto loot instalado e funcionou de boas.

@Vodkart, sabe oq pode ser?

Link para o post
Compartilhar em outros sites
56 minutos atrás, Wakon disse:

@ADM Mayk on BaiakME, isso ai é erro no auto loot, não sei pq está dando esse erro, até abri um server e testei com o auto loot instalado e funcionou de boas.

@Vodkart, sabe oq pode ser?

wtf É o autoloot que tenho é o do Vodkart não entedi o por que do conflito 

Link para o post
Compartilhar em outros sites

é que como o corpse é removido ou criado um teleport, não acha o corpse para "pegar o itens", tem que ir na lib e bloquear esse monstro.

BlockMonsters = {"Gaz'Haragoth"},

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
7 horas atrás, Vodkart disse:

é que como o corpse é removido ou criado um teleport, não acha o corpse para "pegar o itens", tem que ir na lib e bloquear esse monstro.

BlockMonsters = {"Gaz'Haragoth"},

certo então no caso são 2 monstros como eu coloco os 2?

7 horas atrás, Vodkart disse:

é que como o corpse é removido ou criado um teleport, não acha o corpse para "pegar o itens", tem que ir na lib e bloquear esse monstro.

BlockMonsters = {"Gaz'Haragoth"},

image.thumb.png.10187b87788f304fc2b0d72a1dafb109.pngmesmo colocando ainda fica assim o bixo n morre é fica em 0 de HP é muitos ERRO NA DTB

 

 

@Wakon  mesmo retirando o systema autoloot não funciona não da erro na database nem nada mais não aparece o tp só aparece o corpo morto....

image.thumb.png.b0e480cfff5e2b57eacf309d3c4430ef.png

Editado por ADM Mayk on BaiakME (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@ADM Mayk on BaiakME, na real não é pra criar um teleport e sim teleportar ao passar em cima do corpo, isso que o script que você pediu para adaptar faz.

Colocou a tag no arquivo movements.xml com o corpo do bixo?

<movevent type="StepIn" itemid="22455" event="script" value="teleport_gaz.lua"/>

 

Link para o post
Compartilhar em outros sites
55 minutos atrás, Wakon disse:

@ADM Mayk on BaiakME, na real não é pra criar um teleport e sim teleportar ao passar em cima do corpo, isso que o script que você pediu para adaptar faz.

Colocou a tag no arquivo movements.xml com o corpo do bixo?


<movevent type="StepIn" itemid="22455" event="script" value="teleport_gaz.lua"/>

 

na real não entedi muito bem esse sistema ai não pois no tibia wiki ta assim....

 

Tem a mesma aparência de um Demon Outcast. Esta criatura é invocada pelo boss Gaz'Haragoth. Assim que um é morto o boss, instantaneamente, invoca outro podendo chegar a ter até 7 deles. Após morrer, seu corpo se transforma em um portal que lhe leva ao "Nightmare of Gaz'Haragoth".

 

 

Tem a mesma aparência de um Terrorsleep. Estas criaturas são encontradas nos pesadelos de Gaz'Haragoth, acessível pelo portal criado ao derrotar um Minion of Gaz'Haragoth. Após ser derrotada, está criatura renasce.

Link para o post
Compartilhar em outros sites

@ADM Mayk on BaiakME, é assim que funciona, achei que você quisesse fazer algo diferente.

Pra fazer parecido com o global, você pode configurar o strange vortex no items.xml para sumir após um tempo, exemplo(irá sumir em 5 segundos):

<item id="id_do_vortex" article="a" name="strange vortex">
    <attribute key="decayTo" value="0" />
    <attribute key="duration" value="5" />
</item>

Colocar ele como corpse do minion e usar esse movement:

<movevent type="StepIn" itemid="id_do_vortex" event="script" value="script.lua"/>
local room_pos = {x = 0, y = 0, z = 0} -- posição do nightmare room

function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then
	    return false
    end
    
	doTeleportThing(cid, room_pos)
	doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
   return true
end

Ai no nightmare room, você coloca um portal para voltar próximo ao local do Gaz'haragoth, isso pode ser feito pelo RME mesmo.

Link para o post
Compartilhar em outros sites
46 minutos atrás, Wakon disse:

@ADM Mayk on BaiakME, é assim que funciona, achei que você quisesse fazer algo diferente.

Pra fazer parecido com o global, você pode configurar o strange vortex no items.xml para sumir após um tempo, exemplo(irá sumir em 5 segundos):


<item id="id_do_vortex" article="a" name="strange vortex">
    <attribute key="decayTo" value="0" />
    <attribute key="duration" value="5" />
</item>

Colocar ele como corpse do minion e usar esse movement:


<movevent type="StepIn" itemid="id_do_vortex" event="script" value="script.lua"/>

local room_pos = {x = 0, y = 0, z = 0} -- posição do nightmare room

function onStepIn(cid, item, position, fromPosition)
    if not isPlayer(cid) then
	    return false
    end
    
	doTeleportThing(cid, room_pos)
	doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
   return true
end

Ai no nightmare room, você coloca um portal para voltar próximo ao local do Gaz'haragoth, isso pode ser feito pelo RME mesmo.

funcionou mais ele só entra em cima do tp se o GOD usar /a 

image.png

Link para o post
Compartilhar em outros sites

@ADM Mayk on BaiakME, isso provavelmente é na configuração do item no items.otb, faz muito tempo mesmo que eu não abro um editor de items, então não sei qual opção marcar/desmarcar pra arrumar isso, você pode tentar alterar ele para as opções de outro piso do seu items.otb.

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo