BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

Problemas con Rush Event

Problemas con Rush Event

#1 Problemas con Rush Event el Lun Oct 27, 2014 9:53 am

fenrearbt


Aprendiz
Hola blacktibia, quisiera saver si has postiado el rush event en blacktibia lo ocupo
y creo que otros le gustaria tenerlo gracias



Última edición por fenrearbt el Miér Oct 29, 2014 10:00 am, editado 1 vez

#2 Re: Problemas con Rush Event el Lun Oct 27, 2014 11:20 am

anormalius


Novato
mediante mod aki lo tienes
Código:

<?xml version="1.0" encoding="UTF-8"?>
<mod name="Rush Event" version="1.0.0" author="VirrageS" enabled="yes">
    <config name="config_rush_event">
      <![CDATA[
         configRushEvent = {
            storages = {
               main = 'rushEventMain', -- set free storage
               player = 'rushEventPlayer', -- set free storage
               joining = 'rushEventJoining', -- set free storage
               b_score = 'rushEventBlueScore', -- set free storage
               r_score = 'rushEventRedScore', -- set free storage
               exhaust = 'rushEventExhaust',
               countEvent = 'rushEventCountEvent'
            },

            position = {
               blue = {x=1696, y=1233, z=6}, -- posiotion to which player is teleporting
               red = {x=1680, y=1286, z=6} -- posiotion to which player is teleporting
            },

            room = {
               from = {x=1642,y=1213,z=6}, -- left top corner of event room
               to = {x=1760,y=1314,z=6} -- right bottom corner of event room
            },

            rewards = {5810, 9969}, -- reward id which player can win (reward is random)
            players = {
               max = 300,
               min = 1,
               minLevel = 5000
            },

            days = {
               ['Monday'] = {'20:00:00'},
                           ['Friday'] = {'20:00:00'},
                           ['Sunday'] = {'20:00:00'}
            },

            fragLimit = 150, -- frag limit
            
            waitTime = 10, -- sekundy [ile gracz ma czekac jak padnie]

            delayTime = 3.0, -- time in which players who joined to event are teleporting to teleport position [miuntes]
            startEvent = 1, -- time from teleport to start event [seconds]
            stopEvent = 600, -- [seconds]
            text = 'Walka przez 10min lub 100 fragow, bez ue.'
         }

      ]]>
   </config>

   <lib name="lib_rush_event">
      <![CDATA[
         domodlib('config_rush_event')

         local conditionBlue = createConditionObject(CONDITION_OUTFIT)
            setConditionParam(conditionBlue, CONDITION_PARAM_TICKS, -1)
            addOutfitCondition(conditionBlue, {lookType = 130, lookHead = 87, lookBody = 87, lookLegs = 87, lookFeet = 87})

         local conditionRed = createConditionObject(CONDITION_OUTFIT)
            setConditionParam(conditionRed, CONDITION_PARAM_TICKS, -1)
            addOutfitCondition(conditionRed, {lookType = 130, lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94})

         function doStartRushEvent()
            doSetStorage(configRushEvent.storages.joining, -1)

            if configRushEvent.players.min <= doCountPlayersRushEvent()[1] then
               for _, cid in ipairs(getPlayersOnline()) do
                  local p = tostring(getCreatureStorage(cid, configRushEvent.storages.player))
                  if p ~= '' then
                     doTeleportThing(cid, p ~= 'blue' and configRushEvent.position.red or configRushEvent.position.blue)
                     doCreatureSetNoMove(cid, false)
                     doRemoveCondition(cid, CONDITION_INFIGHT)
                     doAddCondition(cid, p ~= 'blue' and conditionRed or conditionBlue)
                     doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'Get ready. Rush Event starts in '..configRushEvent.startEvent..' seconds.')
                  end
               end

               addEvent(doSetStorage, configRushEvent.startEvent * 1000, configRushEvent.storages.main, 1)
               addEvent(doStopRushEvent, configRushEvent.stopEvent * 1000)
               doBroadcastMessage('Rush Event has started. LET\'S GO!')
            else
               for _, cid in ipairs(getPlayersOnline()) do
                  if tostring(getCreatureStorage(cid, configRushEvent.storages.player)) ~= '' then
                     doCreatureSetNoMove(cid, false)
                     doRemoveCondition(cid, CONDITION_INFIGHT)
                     doCreatureSetStorage(cid, configRushEvent.storages.player, '')
                  end
               end

               doBroadcastMessage('Rush Event hasn\'t started beacuse there not were enough players.')
            end
         end

         function doStopRushEvent()
            if getStorage(configRushEvent.storages.main) > 0 then
               local team = nil
               if getStorage(configRushEvent.storages.b_score) == configRushEvent.fragLimit then
                  team = 'blue'
               elseif getStorage(configRushEvent.storages.r_score) == configRushEvent.fragLimit then
                  team = 'red'
               else
                  if getStorage(configRushEvent.storages.r_score) >= getStorage(configRushEvent.storages.b_score) then
                     team = 'red'
                  else
                     team = 'blue'
                  end
               end

               local prize = math.random(#configRushEvent.rewards)
               for _, cid in ipairs(getPlayersOnline()) do
                  if isInRange(getThingPos(cid), configRushEvent.room.from, configRushEvent.room.to) then
                     if team == tostring(getCreatureStorage(cid, configRushEvent.storages.player)) then
                        doPlayerAddItem(cid, configRushEvent.rewards[prize], 1)
                        doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'Your team won! You have received '.. getItemNameById(configRushEvent.rewards[prize]) ..' as reward.')
                     end

                     doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid))
                     doCreatureAddMana(cid, getCreatureMaxMana(cid) - getCreatureMana(cid))
                     doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
                     doCreatureSetStorage(cid, configRushEvent.storages.player, '')
                     doRemoveCondition(cid, CONDITION_OUTFIT)
                  end
               end

               doBroadcastMessage('Rush Event has finished. The winner is '..team..' team ('..getStorage(configRushEvent.storages.r_score)..':'..getStorage(configRushEvent.storages.b_score)..'). Congratulations!')
               db.query("INSERT INTO `events` (`event_name`, `winner_name`, `won_item`, `time_win`) VALUES (\"Rush\", \""..team.."\", \""..prize.."\", "..getStorage(configRushEvent.storages.countEvent)..");")
               doSetStorage(configRushEvent.storages.main, -1)
               doSetStorage(configRushEvent.storages.countEvent, getStorage(configRushEvent.storages.countEvent) + 1)
               doSetStorage(configRushEvent.storages.r_score, 0)
               doSetStorage(configRushEvent.storages.b_score, 0)
            end
         end

         function doCountPlayersRushEvent()
            local x, blue, red = 0,0,0
            for _, cid in ipairs(getPlayersOnline()) do
               local p = tostring(getCreatureStorage(cid, configRushEvent.storages.player))
               if p ~= '' then
                  if p ~= 'blue' then
                     red = red + 1
                  else
                     blue = blue + 1
                  end
                  x = x + 1
               end
            end
            return {x, blue, red}
         end

         function doStartCountingRushEvent(x)
            if configRushEvent.delayTime-x > 0 then
               doBroadcastMessage('Rush Event is going to start in '..configRushEvent.delayTime-x..' minutes. You can join to the event by saying "!rush join".')
               addEvent(doStartCountingRushEvent, 60*1000, x+1)
            end
         end
      ]]>
   </lib>

   <talkaction words="!stoprush" access="5" event="script">
      <![CDATA[
         domodlib("lib_rush_event")

         function onSay(cid, words, param)
            if getStorage(configRushEvent.storages.main) < 1 then
               return doPlayerSendCancel(cid, 'You can not do it if Rush Event is not enabled.')
            end
            
            doStopRushEvent()
            return true
         end
      ]]>
   </talkaction>

   <talkaction words="!startrush" access="5" event="script">
      <![CDATA[
         domodlib("lib_rush_event")

         function onSay(cid, words, param)
            if getStorage(configRushEvent.storages.main) > 0 then
               return doPlayerSendCancel(cid, 'Rush Event is already running.')
            end

            for _, pid in ipairs(getPlayersOnline()) do
               if tostring(getCreatureStorage(pid, configRushEvent.storages.player)) ~= '' then
                  doCreatureSetStorage(pid, configRushEvent.storages.player, '')
                  doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)), true)
                  doRemoveCondition(pid, CONDITION_OUTFIT)
               end
            end

            doStartCountingRushEvent(0)
            doSetStorage(configRushEvent.storages.joining, 1)
            addEvent(doStartRushEvent, configRushEvent.delayTime * 60 * 1000)
            return true
         end
      ]]>
   </talkaction>

   <talkaction words="!rush" event="script">
      <![CDATA[
         domodlib("lib_rush_event")

         function onSay(cid, words, param)
            if getStorage(configRushEvent.storages.joining) ~= 1 then
               return doPlayerSendCancel(cid, 'Rush Event hasn\'t started yet.')
            elseif param == '' then
               return doPlayerSendCancel(cid, 'Command param required (say: "!rush join" or "!rush leave.").')
            elseif getPlayerLevel(cid) < configRushEvent.players.minLevel then
               return doPlayerSendCancel(cid, 'You can\'t join to the event if you don\'t have a require '..configRushEvent.players.minLevel..' level.')
            elseif getTileInfo(getThingPos(cid)).protection ~= true then
               return doPlayerSendCancel(cid, 'You can\'t join to the event if you aren\'t in protection zone.')
            elseif exhaustion.check(cid, configRushEvent.storages.exhaust) ~= false then
               return doPlayerSendCancel(cid, 'You must wait '..exhaustion.get(cid, configRushEvent.storages.exhaust)..' seconds to use this command again.')
            end

            if param == 'join' then
               if tostring(getCreatureStorage(cid, configRushEvent.storages.player)) ~= '' then
                  return doPlayerSendCancel(cid, 'You have arleady joined to event. Wait patiently for start.')
               elseif doCountPlayersRushEvent()[1] == configRushEvent.players.max then
                  return doPlayerSendCancel(cid, 'Max players in the event have been reached.')
               end
               
               for _, v in ipairs(getPlayersOnline()) do
                  if tostring(getCreatureStorage(v, configRushEvent.storages.player)) ~= '' then
                     if getPlayerIp(cid) == getPlayerIp(v) then
                        return doPlayerSendCancel(cid, 'In Rush event there is arleady player who have same ip like you.')
                     end
                  end
               end

               doCreatureSetNoMove(cid, true)
               if configRushEvent.text ~= '' then
                  doPlayerPopupFYI(cid, configRushEvent.text)
               end

               doCreatureSetStorage(cid, configRushEvent.storages.player, doCountPlayersRushEvent()[3] >= doCountPlayersRushEvent()[2] and 'blue' or 'red')
               doAddCondition(cid, createConditionObject(CONDITION_INFIGHT, -1))
               doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'You have joined to Rush Event. You can\'t move until event don\'t start. Wait patiently for the event start.')
               doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You have joined to Rush Event.')
            elseif param == 'leave' then
               if tostring(getCreatureStorage(cid, configRushEvent.storages.player)) ~= '' then
                  return doPlayerSendCancel(cid, 'You can\'t leave from the event if you don\'t join.')
               end

               doCreatureSetNoMove(cid, false)
               doRemoveCondition(cid, CONDITION_INFIGHT)
               doCreatureSetStorage(cid, configRushEvent.storages.player, '')               
               doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You have left from the Rush Event.')
            end

            exhaustion.set(cid, configRushEvent.storages.exhaust, 5)
            return true
         end
      ]]>
   </talkaction>


   <globalevent name="Rush_Event_Days" interval="1000" event="script">
      <![CDATA[
         domodlib("lib_rush_event")

         local daysOpen = {}
         for k, v in pairs(configRushEvent.days) do
            table.insert(daysOpen, k)
         end

         function onThink(cid, interval)
            if isInArray(daysOpen, os.date('%A')) then
               if isInArray(configRushEvent.days[os.date('%A')], os.date('%X', os.time())) then
                  if getStorage(configRushEvent.storages.joining) ~= 1 then
                     doStartCountingRushEvent(0)

                     for _, pid in ipairs(getPlayersOnline()) do
                        if tostring(getCreatureStorage(pid, configRushEvent.storages.player)) ~= '' then
                           doCreatureSetStorage(pid, configRushEvent.storages.player, '')
                           doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)), true)
                           doRemoveCondition(pid, CONDITION_OUTFIT)
                        end
                     end

                     doSetStorage(configRushEvent.storages.joining, 1)
                     addEvent(doStartRushEvent, configRushEvent.delayTime * 60 * 1000)
                  end
               end
            end

            return true
         end
      ]]>
   </globalevent>

   <event type="statschange" name="Rush_Event_Dead" event="script">
      <![CDATA[
         domodlib("lib_rush_event")

         function onStatsChange(cid, attacker, type, combat, value)
            if type == 1 and getCreatureHealth(cid) <= value then
               if isInRange(getThingPos(cid), configRushEvent.room.from, configRushEvent.room.to) then
                  if isPlayer(cid) then
                     local p = tostring(getCreatureStorage(cid, configRushEvent.storages.player))
                     doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid))
                     doCreatureAddMana(cid, getCreatureMaxMana(cid) - getCreatureMana(cid))
                     doTeleportThing(cid, p ~= 'blue' and configRushEvent.position.red or configRushEvent.position.blue)
                     doCreatureSetNoMove(cid, true)
                     addEvent(doCreatureSetNoMove, configRushEvent.waitTime * 1000, cid, false)

                     if p ~= 'blue' then
                        doSetStorage(configRushEvent.storages.b_score, math.max(getStorage(configRushEvent.storages.b_score), 0) + 1)
                        if getStorage(configRushEvent.storages.b_score) == configRushEvent.fragLimit then
                           doStopRushEvent()
                        end
                     else
                        doSetStorage(configRushEvent.storages.r_score, math.max(getStorage(configRushEvent.storages.r_score), 0) + 1)
                        if getStorage(configRushEvent.storages.r_score) == configRushEvent.fragLimit then
                           doStopRushEvent()
                        end
                     end
                     return false
                  end
               end
            elseif isInArray({1,3}, type) and isPlayer(attacker) and isPlayer(cid) then
               if isInRange(getThingPos(cid), configRushEvent.room.from, configRushEvent.room.to) then
                  if tostring(getCreatureStorage(cid, configRushEvent.storages.player)) == tostring(getCreatureStorage(attacker, configRushEvent.storages.player)) then
                     return false
                  end
               end
            end
            return true
         end
      ]]>
   </event>

   <event type="login" name="Rush_Event_Login" event="script">
      <![CDATA[
         domodlib("config_rush_event")

         function onLogin(cid)
            if tostring(getCreatureStorage(cid, configRushEvent.storages.player)) ~= '' then
               doCreatureSetStorage(cid, configRushEvent.storages.player, '')
               doRemoveCondition(cid, CONDITION_OUTFIT)
            end

            registerCreatureEvent(cid, 'Rush_Event_Dead')
            return true
         end
      ]]>
   </event>

   <globalevent name="Rush_Event_Start" type="startup" event="script">
      <![CDATA[
         domodlib("config_rush_event")

         function onStartup()
            doSetStorage(configRushEvent.storages.main, -1)
            doSetStorage(configRushEvent.storages.r_score, 0)
            doSetStorage(configRushEvent.storages.b_score, 0)
            doSetStorage(configRushEvent.storages.joining, -1)
            return true
         end
      ]]>
   </globalevent>
</mod>

edita las posiciones e los rewards como el nivel de inicio ya que lo tengo para high exp
rep+

#3 Re: Problemas con Rush Event el Lun Oct 27, 2014 11:23 am

fenrearbt


Aprendiz
up
amigo 1 pregunta este evento se puede activar atraves de un comando de talkaction
ejemplo /rush on?

#4 Re: Problemas con Rush Event el Lun Oct 27, 2014 11:25 am

anormalius


Novato
no
al menos que yo sepa no ya que es mediante mod y se activa a la hora que tu le indicas

#5 Re: Problemas con Rush Event el Lun Oct 27, 2014 11:29 am

fenrearbt


Aprendiz
gracias amigo 1 pregunta me puedes explicar
sobre las posiciones sobre todo en la sala de espera
y los reward y cuando finaliza el evento gracias a +REP

#6 Re: Problemas con Rush Event el Miér Oct 29, 2014 6:49 am

fenrearbt


Aprendiz
Ups el scripts si se ejecuta por comando gracias .!rush join pero no lleva a los player a ningun lugar me sale error en la consola

este es
[Error - TalkAction Interface]
[29/10/2014 09:47:11] buffer:onSay
[29/10/2014 09:47:11] Description:
[29/10/2014 09:47:11] [string "domodlib('config_rush_event')..."]:74: attempt to call field 'query' (a nil value)
[29/10/2014 09:47:11] stack traceback:
[29/10/2014 09:47:11] [string "domodlib('config_rush_event')..."]:74: in function 'doStopRushEvent'
[29/10/2014 09:47:11] [string "loadBuffer"]:8: in function <[string "loadBuffer"]:3>



me puedes pasar las tablas para sql?

#7 Re: Problemas con Rush Event el Jue Oct 30, 2014 12:39 pm

Riikudou(Ns)


Miembro
@up
Deves Editar esas lineas y ejecutarlas en tu sql

INSERT INTO `events` (`event_name`, `winner_name`, `won_item`, `time_win`) VALUES (\"Rush\", \""..team.."\", \""..prize.."\",

https://www.facebook.com/httpstibia?ref=hl

#8 Re: Problemas con Rush Event Hoy a las 12:49 am

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.

 

¿Quién está en línea?

En total hay 0 usuarios en línea: 0 Registrados, 0 Ocultos y 0 Invitado

Usuarios navegando en este foro: Ninguno

Forum Statistics

Nuestros miembros han públicado un total de posts en temas.
Actualmente hay miembros registrados.
Démosle la bienvenida al miembro más reciente,
La mayor cantidad de usuarios en línea ha sido de .