Jump to content

Suporte [CreatureScript] Monstro que vira TP nao esta nascendo ao iniciar o sv!


Go to solution Solved by Kyle Bellini,

Recommended Posts

.Qual servidor ou website você utiliza como base? 

TFS 0.4

Qual o motivo deste tópico? 

ERRO NO SCRIPT

 

Eae rapaziada, preciso de uma ajuda tenho um script em que ao entrar numa sala vc enfrente um monstro, e ao mata-lo ele vira um teleport com tempo que leva pra outra sala, e assim que o teleport fecha o monstro nasce novamente pra outros jogadores poderem realizar a quest de novo, porem o monstro nao esta nascendo no local ao iniciar o sv por algum motivo, se eu faço ele com o gm e mato, ele abre o tp e funciona normal mas ele nao esta se iniciando junto com o sv...

O script aparentemente esta funcionando normal, esse é o unico problema... Nao posso colocar ele pelo RME pq se nao ficam 2 monstros la se alguem matar, alguem poderia me ajudar?

 

Você tem o código disponível? Se tiver publique-o aqui: 

 local tpId = 1387
local tps = {
	["Raditz Saga RB"] = {pos = {x=789, y=175, z=7}, toPos = {x=811, y=181, z=7}, time = 60}, -- Onde o Teleport irá aparecer e onde ele levará o Player. Em 'Time', configurar tempo em segundos para o TP desapecer.
	["Vegeta Saga RB"] = {pos = {x=813, y=178, z=7}, toPos = {x=837, y=176, z=7}, time = 60},
	["Freeza Saga RB"] = {pos = {x=845, y=178, z=7}, toPos = {x=863, y=178, z=7}, time = 60},
	["C19 C20 Saga RB"] = {pos = {x=872, y=177, z=7}, toPos = {x=893, y=177, z=7}, time = 60},
}
 
 
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)
        addEvent(doCreateMonster, tp.time*1001, getCreatureName(cid), tp.pos)
    end
    return TRUE
end

 

 

 

Link to post
Share on other sites

O script está correto, mas não tem nenhum lugar definindo que o monstro precisa nascer. Pra contornar essa questão e não utilizar o RME, você pode criar um script que crie o monstro lá, quando o servidor iniciar.

Link to post
Share on other sites

1 hora atrás, Kyle Bellini disse:

O script está correto, mas não tem nenhum lugar definindo que o monstro precisa nascer. Pra contornar essa questão e não utilizar o RME, você pode criar um script que crie o monstro lá, quando o servidor iniciar.

Pensei nisso, mas n faço ideia de como fazer..

Procurei no forum e tbm n achei, vc tem algo parecido?

Link to post
Share on other sites

  • Solution

É bem simples, fiz um aqui pra ti:

 

local config = {
    bossPos = {x = 1091, y = 920, z = 7}, -- Position que o monstro será criado
    bossName = "Boss Monster" -- Nome do monstro
}

function onStartup()

    doCreateMonster(config.bossName, config.bossPos)
    return true
end

 

No seu globalevents.xml você adiciona essa tag:

<globalevent name="CreateBoss" type = "start" event="script" value="createboss.lua"/>

 

Link to post
Share on other sites

1 hora atrás, Kyle Bellini disse:

É bem simples, fiz um aqui pra ti:

 



local config = {
    bossPos = {x = 1091, y = 920, z = 7}, -- Position que o monstro será criado
    bossName = "Boss Monster" -- Nome do monstro
}

function onStartup()

    doCreateMonster(config.bossName, config.bossPos)
    return true
end

 

No seu globalevents.xml você adiciona essa tag:



<globalevent name="CreateBoss" type = "start" event="script" value="createboss.lua"/>

 

só pra deixar mais compacto 

local config = {
	-- criar monstro ---
	criar = {["GOKUFODASE"] = {pos = {x=789, y=175, z=7}},
			 ["GOKUFODASE"] = {pos = {x=789, y=175, z=7}},
			},
	-- criar teleport quando o monstro morrer -- 
	mortes = {["Raditz Saga RB"] = {pos = {x=789, y=175, z=7}, toPos = {x=811, y=181, z=7}, time = 60}, -- Onde o Teleport irá aparecer e onde ele levará o Player. Em 'Time', configurar tempo em segundos para o TP desapecer.
			  ["Vegeta Saga RB"] = {pos = {x=813, y=178, z=7}, toPos = {x=837, y=176, z=7}, time = 60},
			  ["Freeza Saga RB"] = {pos = {x=845, y=178, z=7}, toPos = {x=863, y=178, z=7}, time = 60},
			  ["C19 C20 Saga RB"] = {pos = {x=872, y=177, z=7}, toPos = {x=893, y=177, z=7}, time = 60},
			 },
}

function onStartup()
    doCreateMonster(config.criar[name], config.criar[name].pos)
    return true
end
function removeTp(tp)
    local t = getTileItemById(tp.pos, 1387)
    if t then
        doRemoveItem(t.uid, 1)
        doSendMagicEffect(tp.pos, CONST_ME_POFF)
    end
end
function onDeath(cid)
    local tp = config.mortes[getCreatureName(cid)]
    if tp then
        doCreateTeleport(1387, tp.toPos, tp.pos)
        doCreatureSay(cid, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)
        addEvent(removeTp, tp.time*1000, tp)
        addEvent(doCreateMonster, tp.time*1001, getCreatureName(cid), tp.pos)
    end
    return TRUE
end

 

Edited by FlameArcixt (see edit history)

arcixt.png.013e2ae477e2a550a7d99a71e2ca6758.png

Arcixt Mapping Build

Interessado(a) em Freelance de mapping? 5 anos na área trabalhando com todos os versões de otservers

Interested in Freelance mapping? 5 years in the field working with all versions from otservers

91_Discord_logo_logos-512.png.fb621298e5bfd4a911090b3363387c16.png  Discord: Arcixt#1329 

facebook-512.png.890e3fc2724e38221ca419deb6f3416a.png  Facebook Page: www.facebook.com/ArcixtMapping  

 

 

Link to post
Share on other sites

Posted (edited)
12 horas atrás, Kyle Bellini disse:

É bem simples, fiz um aqui pra ti:

 



local config = {
    bossPos = {x = 1091, y = 920, z = 7}, -- Position que o monstro será criado
    bossName = "Boss Monster" -- Nome do monstro
}

function onStartup()

    doCreateMonster(config.bossName, config.bossPos)
    return true
end

 

No seu globalevents.xml você adiciona essa tag:



<globalevent name="CreateBoss" type = "start" event="script" value="createboss.lua"/>

 

Cara funcionou, valeu, só uma duvida tem como adicionar mais monstros nesse msm script ou eu teria de criar um script pra cada?



 

 

11 horas atrás, FlameArcixt disse:

só pra deixar mais compacto 



local config = {
	-- criar monstro ---
	criar = {["GOKUFODASE"] = {pos = {x=789, y=175, z=7}},
			 ["GOKUFODASE"] = {pos = {x=789, y=175, z=7}},
			},
	-- criar teleport quando o monstro morrer -- 
	mortes = {["Raditz Saga RB"] = {pos = {x=789, y=175, z=7}, toPos = {x=811, y=181, z=7}, time = 60}, -- Onde o Teleport irá aparecer e onde ele levará o Player. Em 'Time', configurar tempo em segundos para o TP desapecer.
			  ["Vegeta Saga RB"] = {pos = {x=813, y=178, z=7}, toPos = {x=837, y=176, z=7}, time = 60},
			  ["Freeza Saga RB"] = {pos = {x=845, y=178, z=7}, toPos = {x=863, y=178, z=7}, time = 60},
			  ["C19 C20 Saga RB"] = {pos = {x=872, y=177, z=7}, toPos = {x=893, y=177, z=7}, time = 60},
			 },
}

function onStartup()
    doCreateMonster(config.criar[name], config.criar[name].pos)
    return true
end
function removeTp(tp)
    local t = getTileItemById(tp.pos, 1387)
    if t then
        doRemoveItem(t.uid, 1)
        doSendMagicEffect(tp.pos, CONST_ME_POFF)
    end
end
function onDeath(cid)
    local tp = config.mortes[getCreatureName(cid)]
    if tp then
        doCreateTeleport(1387, tp.toPos, tp.pos)
        doCreatureSay(cid, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)
        addEvent(removeTp, tp.time*1000, tp)
        addEvent(doCreateMonster, tp.time*1001, getCreatureName(cid), tp.pos)
    end
    return TRUE
end

 

Esse eu testei e nao funfou mano, tem que registrar algo?

Edited by iyagod
Edit: Consegui adaptar um script usando do Kyle, Resolvido obrigado. (see edit history)
Link to post
Share on other sites

2 horas atrás, iyagod disse:

Cara funcionou, valeu, só uma duvida tem como adicionar mais monstros nesse msm script ou eu teria de criar um script pra cada?



 

 

Esse eu testei e nao funfou mano, tem que registrar algo?

sim teria que registrar o mesmo que o outro cara comentou, 

<globalevent name="CreateBoss" type = "start" event="script" value="createboss.lua"/>

arcixt.png.013e2ae477e2a550a7d99a71e2ca6758.png

Arcixt Mapping Build

Interessado(a) em Freelance de mapping? 5 anos na área trabalhando com todos os versões de otservers

Interested in Freelance mapping? 5 years in the field working with all versions from otservers

91_Discord_logo_logos-512.png.fb621298e5bfd4a911090b3363387c16.png  Discord: Arcixt#1329 

facebook-512.png.890e3fc2724e38221ca419deb6f3416a.png  Facebook Page: www.facebook.com/ArcixtMapping  

 

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By Khallmyr
      .Qual servidor ou website você utiliza como base? 
       
      Qual o motivo deste tópico? 
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       




    • By elielder
      .Qual servidor ou website você utiliza como base? 
      rev 3777 0.4 8.60
      Qual o motivo deste tópico? 
      galera estou com problema nesse evento, ele esta enviando para a posição x=0 y=0 z=0. em vez de ir para a correta, não sei mais oq fazer.
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
       <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Fire Storm Event" version="8.6" author="Vodkart" contact="" enabled="yes"> <config name="fire_config"><![CDATA[ Fire = { storages = {172354, 172355}, -- storage Count players = {min = 2, max = 50}, -- min, max players no evento minLevel = 20, -- level minimo para entrar no event rewards = {{2160,10},{12504,1}}, -- premios que vai receber timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- time to check event teleport = {{x = 1027, y = 891, z = 7}, {x = 1030, y = 568, z = 7}}, -- posição do teleport, posição para onde o jogador vai arena = {{x = 1004, y = 540, z = 7},{x = 1066, y = 594, z = 7}} -- posição começo e final da area } Fire_Days = { ["Monday"] = {"13:00","18:00","20:00","22:00"}, ["Tuesday"] = {"09:26","14:29","20:00","22:00"}, ["Wednesday"] = {"14:29","18:00","20:00","22:00"}, ["Thursday"] = {"13:00","18:00","20:00","22:00"}, ["Friday"] = {"13:00","18:00","20:00","22:00"}, ["Saturday"] = {"13:00","18:00","20:00","22:00"}, ["Sunday"] = {"13:00","18:00","20:00","22:00"} } function removeFireTp() local t = getTileItemById(Fire.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(Fire.teleport[1], CONST_ME_POFF) end function ZerarStorFire() setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 0) end function getPlayersInFireEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), Fire.arena[1], Fire.arena[2]) then t[#t+1] = pid end end return t end function getFireRewards(cid, items) local backpack = doPlayerAddItem(cid, 1995, 1) -- backpackID for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end end function doFireInArea(n) if #getPlayersInFireEvent() > 1 then for i = 1, n do local pos = {x=math.random(Fire.arena[1].x, Fire.arena[2].x), y=math.random(Fire.arena[1].y,Fire.arena[2].y), z=Fire.arena[1].z} local m = getTopCreature(pos).uid doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) if m ~= 0 and isPlayer(m) then doSendMagicEffect(getCreaturePosition(m), CONST_ME_FIREAREA) doCreatureSay(m, "Ooh Burn Burn", TALKTYPE_ORANGE_1) local corpse = doCreateItem(3058, 1, getPlayerPosition(m)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(m) .. ". He was killed by Fire Field.") doSendMagicEffect(getPlayerPosition(m), CONST_ME_POFF) doTeleportThing(m, getTownTemplePosition(getPlayerTown(m))) doPlayerSendTextMessage(m, MESSAGE_EVENT_ADVANCE, "[Fire Storm Event] You died burned out.") end end local x = 2700-(200*n) addEvent(doFireInArea, x <= 0 and 500 or x, n+1) elseif #getPlayersInFireEvent() == 1 then local cid = getPlayersInFireEvent()[1] doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) getFireRewards(cid, Fire.rewards) doBroadcastMessage("Fire Storm Event terminou. O vencedor é ".. getCreatureName(cid).. ". Parabéns.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() else doBroadcastMessage("Ninguém ganhou o evento Fire Storm.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() end end function CheckFireEvent(delay) if getGlobalStorageValue(Fire.storages[1]) ~= (Fire.players.max+1) then if delay > 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.max then doBroadcastMessage("[Fire Stortm Event] Começando em " .. delay .. " minuto! O teleporte será fechado quando o evento começar!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.min then for _, cid in pairs(getPlayersInFireEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end removeFireTp() doBroadcastMessage("O evento Fire Storm não pôde começar devido a poucos jogadores participantes.\n Pelo menos " .. Fire.players.min .. " jogadores é necessário!", MESSAGE_STATUS_WARNING) ZerarStorFire() elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) >= Fire.players.min then removeFireTp() doBroadcastMessage("Boa sorte! O evento começará em "..Fire.timeToStartEvent.." segundos. prepare-se!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end addEvent(CheckFireEvent, 60000, delay-1) end end ]]></config> <globalevent name="Storm_Fire_Start" interval="60000" event="script"><![CDATA[ domodlib('fire_config') function onThink(interval, lastExecution) if Fire_Days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(Fire_Days[os.date("%A")], hrs) and getGlobalStorageValue(Fire.storages[2]) <= 0 then local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(Fire.CheckTime) setGlobalStorageValue(Fire.storages[1], 0) end end return true end]]></globalevent> <event type="login" name="Storm_Fire_Login" event="script"><![CDATA[ domodlib('fire_config') function onLogin(cid) registerCreatureEvent(cid, "FireStormBatle") if isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end]]></event> <event type="combat" name="FireStormBatle" event="script"><![CDATA[ domodlib('fire_config') if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doPlayerSendCancel(cid, "Você não pode atacar este jogador.") return false end return true ]]></event> <movevent type="StepIn" actionid ="45111" event="script"><![CDATA[ domodlib('fire_config') function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, Fire.teleport[2]) end if getPlayerLevel(cid) < Fire.minLevel then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "Você precisa estar pelo menos nivel " .. Fire.minLevel .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(Fire.storages[1]) <= Fire.players.max then doTeleportThing(cid, Fire.teleport[2]) setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entrou no evento Fire Storm! Atualmente" .. getGlobalStorageValue(Fire.storages[1]) .. " jogadores se juntaram!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(Fire.storages[1]) == Fire.players.max then setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) removeFireTp() doBroadcastMessage("O evento começará em "..Fire.timeToStartEvent.." segundos. prepare-se!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end end return true end]]></movevent> <talkaction words="/firestart;!firestart" access="5" event="buffer"><![CDATA[ domodlib('fire_config') if getGlobalStorageValue(Fire.storages[2]) > 0 then doPlayerSendCancel(cid, "O evento já está começando.") return true elseif not param or not tonumber(param) then doPlayerSendCancel(cid, "Use only numbers.") return true end local param = tonumber(param) <= 0 and 1 or tonumber(param) local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(tonumber(param)) setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 1) ]]></talkaction> <globalevent name="FireDebug-Start" type="start" event="buffer"><![CDATA[ domodlib('fire_config') ZerarStorFire() return true]]></globalevent> </mod>  
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • By amoxicilina
      Estou usando o servidor Pokemasterx
       Estou criando este tópico no intuito de uma ajuda "tutorial" de como fazer pra compilar as  soucer do servidor "pokemasterx"
       No Visual studio, versão TFS 0.3.6 o erro e não saber como prosseguir.  Link das soucer espero que a comunidade possa me ajudar, sei que muitas pessoas aqui na comunidade tbm estão querendo saber como compilar elas.
       
      Agradeço a atenção de todos.
    • By elielder
      .Qual servidor ou website você utiliza como base? 
      rev 3996 8.60 0.4
      Qual o motivo deste tópico? 
      Estou com um bug no meu servidor, ao entrar em tiles criados por eventos (1387) com actionid, os players em vez de ir pra posição correta eles estao indo pra posição x=0 y=0 z=0. e isso ocorre em todos eventos. me ajuda por favor. uso rev 3996 8.60 0.4

      Pelo oque eu entendi, ao ser criado o teleporte ele não ganha as posições setadas pelo evento e acaba sendo criado com as posições 0.

      https://prnt.sc/11n2whu
    • By elielder
      .Qual servidor ou website você utiliza como base? 
      Rev 3996 8.60 0.4
      Qual o motivo deste tópico? 
      Eu estou tentando usar o Event Rush event . mod , mas ele não teleporta após termino do evento.
      Não aparece nenhum erro na distro.
       
      Você tem o código disponível? Se tiver publique-o aqui:
       
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo