malyfanek 0 Postado Março 9, 2020 Share Postado Março 9, 2020 (editado) Hello, as the title sais im trying to do monster hunt event which should work like that, if i kill monster1, i get + 1 point, monster2 +2 points, monster 3 + 3points etc. For now all i have made is: <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Bad Saiyans Hunt Event" version="8.6" author="Vodkart" contact="" enabled="yes"> <config name="hunt_config"><![CDATA[ Hunt = { storages = {171421, 181921}, -- storage Count players = {min = 1, max = 50}, -- min, max players no evento minLevel = 20, -- level minimo para entrar no event rewards = {{2160,10},{2494,1}}, -- premios que vai receber timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- time to check event teleport = {{x=646, y=391, z=7}, {x=1020 , y=1041, z=7}}, --teleport position, position the player goes to arena = {{x=988,y=1011,z=7},{x=1053,y=1057,z=7}} -- start and end position of the area } Hunt_Days = { ["Monday"] = {"09:00","21:00"}, ["Tuesday"] = {"09:00","21:00"}, ["Wednesday"] = {"09:00","21:00"}, ["Thursday"] = {"09:00","21:00"}, ["Friday"] = {"09:00","21:00"}, ["Saturday"] = {"09:00",'21:00'}, ["Sunday"] = {"09:00","15:00"} } function removeHuntTp() local t = getTileItemById(Hunt.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(Hunt.teleport[1], CONST_ME_POFF) end function ZerarStorHunt() setGlobalStorageValue(Hunt.storages[1], 0) setGlobalStorageValue(Hunt.storages[2], 0) end function getPlayersInHuntEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), Hunt.arena[1], Hunt.arena[2]) then t[#t+1] = pid end end return t end function getHuntRewards(cid, items) local backpack = doPlayerAddItem(cid, 1999, 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 winMonsterEvent() local max_sto, winner = 0, 0 local monster = getGlobalStorageValue(1819211) for _, pid in pairs(getPlayersOnline()) do local sto = getGlobalStorageValue(pid, 1714210) if sto > max_sto then max_sto = sto winner = cid end end if isPlayer(winner) then temple = getPlayerMasterPos(cid) local artigo = getPlayerSex(winner) == 0 and "The player" or "The player" doBroadcastMessage(artigo.." "..getCreatureName(winner).." gained "..getGlobalStorageValue(winner, 1714210).." points and won the event!") for _, prize in pairs(premios) do doPlayerAddItem(winner, prize[1], prize[2]) end doPlayerAddMoney(winner, gold) for _, cid in pairs(getPlayersInHuntEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end else doBroadcastMessage("[Monster Hunter Event] The event ended and there was no winner.") setGlobalStorageValue(1819211, 0) for _, cid in pairs(getPlayersInHuntEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end ZerarStorHunt() end end function CheckHuntEvent(delay) local time = 5 if getGlobalStorageValue(Hunt.storages[1]) ~= (Hunt.players.max+1) then if delay > 0 and getGlobalStorageValue(Hunt.storages[1]) < Hunt.players.max then doBroadcastMessage("[Bad Saiyans Hunt Event] Starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(Hunt.storages[1]) < Hunt.players.min then for _, cid in pairs(getPlayersInHuntEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end removeHuntTp() doBroadcastMessage("The Bad Saiyans Hunt event could not start because of to few players participating.\n At least " .. Hunt.players.min .. " players is needed!", MESSAGE_STATUS_WARNING) ZerarStorHunt() elseif delay == 0 and getGlobalStorageValue(Hunt.storages[1]) >= Hunt.players.min then removeHuntTp() doBroadcastMessage("Good Lucky! The event will start on "..Hunt.timeToStartEvent.." seconds. get ready!") addEvent(winMonsterEvent, time*1000*60) end addEvent(CheckHuntEvent, 60000, delay-1) end end ]]></config> <globalevent name="Hunt_Start" interval="60000" event="script"><![CDATA[ domodlib('hunt_config') function onThink(interval, lastExecution) if Hunt_Days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(Hunt_Days[os.date("%A")], hrs) and getGlobalStorageValue(Hunt.storages[2]) <= 0 then local tp = doCreateItem(1387, 1, Hunt.teleport[1]) doItemSetAttribute(tp, "aid", 46111) CheckHuntEvent(Hunt.CheckTime) setGlobalStorageValue(Hunt.storages[1], 0) end end return true end]]></globalevent> <event type="login" name="Hunt_Login" event="script"><![CDATA[ domodlib('hunt_config') function onLogin(cid) registerCreatureEvent(cid, "HuntBatle") if isInRange(getPlayerPosition(cid), Hunt.arena[1], Hunt.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end]]></event> <event type="combat" name="HuntBatle" event="script"><![CDATA[ domodlib('hunt_config') if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), Hunt.arena[1], Hunt.arena[2]) then doPlayerSendCancel(cid, "You may not attack this player.") return false end return true ]]></event> <movevent type="StepIn" actionid ="46111" event="script"><![CDATA[ domodlib('hunt_config') function onStepIn(cid, item, position, fromPosition) local time = 5 if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, Hunt.teleport[2]) end if getPlayerLevel(cid) < Hunt.minLevel then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "You need to be at least level " .. Hunt.minLevel .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(Hunt.storages[1]) <= Hunt.players.max then doTeleportThing(cid, Hunt.teleport[2]) setGlobalStorageValue(Hunt.storages[1], getGlobalStorageValue(Hunt.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entered the Bad Saiyans Hunt Event! Currently " .. getGlobalStorageValue(Hunt.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(Hunt.storages[1]) == Hunt.players.max then setGlobalStorageValue(Hunt.storages[1], getGlobalStorageValue(Hunt.storages[1])+1) removeHuntTp() doBroadcastMessage("The event will start on "..Hunt.timeToStartEvent.." seconds. get ready!") addEvent(winMonsterEvent, time*1000*60) end end return true end]]></movevent> <talkaction words="/huntstart;!huntstart" access="5" event="buffer"><![CDATA[ domodlib('hunt_config') if getGlobalStorageValue(Hunt.storages[2]) > 0 then doPlayerSendCancel(cid, "The event is already starting.") 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, Hunt.teleport[1]) doItemSetAttribute(tp, "aid", 46111) CheckHuntEvent(tonumber(param)) setGlobalStorageValue(Hunt.storages[1], 0) setGlobalStorageValue(Hunt.storages[2], 1) ]]></talkaction> <globalevent name="HuntDebug-Start" type="start" event="buffer"><![CDATA[ domodlib('hunt_config') ZerarStorHunt() return true]]></globalevent> </mod> And its all works fine, it runs on days, talkaction works too but the problem is with function winMonsterEvent() Because it always give a winner to the admin even if he got storage -1 or no winner ; / I also added monster with script: function onKill(cid, target, lastHit) if isMonster ( target ) and getCreatureName ( target ) == 'Bad Raditz [EVENT]' and getGlobalStorageValue ( cid ,1714210) > 0 then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE, 'You have killd 1 of event monster.') setGlobalStorageValue(cid,1714210, getGlobalStorageValue(cid, 1714210) + 1) end return true end wanned to add later more monsters that give more than +1 stor value but ... first need to finish this, what am i doing wrong? no error in console, nothing, any tips / help or maybe better ideas? And the 2nd thing, how to make it 3 winners? / edit I try to compare the event with this one (not sure can i add link if not please delete this edit) but atleast it might be helpfull Its edited fire storm event + this one from link if it might help Im using tibia 8.6 tfs 0,4 rev 3777 Editado Março 9, 2020 por malyfanek Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados