Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <mod name="Rush Event" version="1.0" author="ChaitoSoft.com" contact="[email protected]" enabled="yes">
- <description>
- Configuration tutorial:
- q - message displayed when event starts
- d_1 - red team start position
- d_2 - blue team start position
- x - message displayed when event is not ready
- w - waiting room position
- lvl - minimal level to join event
- v - number of frags team needs to earn to win event
- mn - minimal amount of players to start event
- m - maximal amount of players to start event
- o - message displayed when red team wins
- y - message displayed when blue team wins
- i_1 - reward id (now is crystal coin = 2160)
- i_2 - amount of reward (now it is 10 crystal coins)
- t - time to start event (now it is 5 minutes)
- r - time that results of the battle will be shown to players (now it is 3 minutes)
- Add this to 050-function.lua:
- -------------------------------------------------------------------------------------------------
- function doPlayerRemoveLethalConditions(cid)
- local tmp = {1, 2, 4, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 32768, 65536}
- for i = 1, #tmp do
- if(hasCondition(cid, tmp)) then doRemoveCondition(cid, tmp) end
- end
- return true
- end
- -------------------------------------------------------------------------------------------------
- Add this to login.lua:
- -------------------------------------------------------------------------------------------------
- registerCreatureEvent(cid, "RushCombat")
- registerCreatureEvent(cid, "RushAttack")
- registerCreatureEvent(cid, "RushDead")
- registerCreatureEvent(cid, "RushOutfit")
- -------------------------------------------------------------------------------------------------
- According to tutorial above you may set configuration yourself here(and something about locking knowledge):
- </description>
- <config name="re"><![CDATA[
- t = {
- a = 32145,
- g = 32146,
- l = 32147,
- u = 32148,
- h = 32149,
- wv = 32150,
- c = 0,
- q = "Rush Event has been started! Enjoy and have fun!",
- f = 5447,
- f_1 = 5448,
- f_2 = 5449,
- d_1 = {x = 570, y = 316, z = 10}, -- red temple
- d_2 = {x = 627, y = 284, z = 10}, -- blue temple
- x = "Event won't start bacause too few people were willing to participate",
- w = {x = 600, y = 362, z = 10},
- lvl = 50,
- v = 4,
- mn = 2,
- m = 40,
- o = "Event was completed, RED TEAM has won Rush Event!",
- y = "Event was completed, BLUE TEAM has won Rush Event!",
- i_1 = 2160,
- i_2 = 10,
- t = 1,
- r = 3
- }
- ]]></config>
- <globalevent name="Recognition" interval="150000" event="script"><![CDATA[
- domodlib('re')
- function onThink(interval, lastExecution, thinkInterval)
- if(getGlobalStorageValue(t.a) == 1) then
- for _, pid in ipairs(getPlayersOnline()) do
- if getPlayerStorageValue(pid, t.f) == 1 then
- if(getPlayerStorageValue(pid, t.f_1) == 0) then
- doSendAnimatedText(getCreaturePosition(pid), "RED TEAM", TEXTCOLOR_RED)
- elseif(getPlayerStorageValue(pid, t.f_1) == 1) then
- doSendAnimatedText(getCreaturePosition(pid), "BLUE TEAM", TEXTCOLOR_LIGHTBLUE)
- end
- end
- end
- return true
- end
- return true
- end
- ]]></globalevent>
- <talkaction words="!start" event="script"><![CDATA[
- domodlib('re')
- function onSay(cid, words, param, channel)
- if getPlayerGroupId(cid) > 3 then
- setGlobalStorageValue(t.g, 1)
- setGlobalStorageValue(t.u, 0)
- setGlobalStorageValue(t.l, 0)
- setGlobalStorageValue(t.a, 1)
- setGlobalStorageValue(t.c, 0)
- setGlobalStorageValue(t.wv, 0)
- doBroadcastMessage("Attention! Immediately register to Rush Event, event will start for ".. t.t .." minutes. All players can join to event typing this command: !rush", MESSAGE_STATUS_WARNING)
- addEvent(function()
- doBroadcastMessage("Rush event, started in 2 minutes. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING)
- end, (t.t - 2) * 1000 * 60)
- addEvent(function()
- doBroadcastMessage("Rush event, started in a minute. If you want to join, type this command: !rush", MESSAGE_STATUS_WARNING)
- end, (t.t - 1) * 1000 * 60)
- addEvent(start, t.t * 1000 * 60)
- return true
- end
- return true
- end
- function results()
- if(getGlobalStorageValue(t.a) == 1) then
- local red = getGlobalStorageValue(t.l)
- local blue = getGlobalStorageValue(t.u)
- doBroadcastMessage("Rush Events, results:\nRed Team scored: ".. red .." frags.\nBlue Team scored: ".. blue .." frags.\nMatch is under way to ".. t.v .." frags.", MESSAGE_STATUS_WARNING)
- addEvent(results, t.r * 1000 * 60)
- end
- end
- function start()
- if(getGlobalStorageValue(t.a) == 1 and getGlobalStorageValue(t.c) >= t.mn) then
- doBroadcastMessage(t.q, MESSAGE_STATUS_WARNING)
- setGlobalStorageValue(t.wv, 1)
- addEvent(results, t.r * 1000 * 60)
- for _, pid in ipairs(getPlayersOnline()) do
- local myOutfit = getCreatureOutfit(pid)
- local red = {lookType = myOutfit.lookType, lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = myOutfit.lookAddons}
- local blue = {lookType = myOutfit.lookType, lookHead = 86, lookBody = 86, lookLegs = 86, lookFeet = 86, lookTypeEx = 0, lookAddons = myOutfit.lookAddons}
- if getPlayerStorageValue(pid, t.f) == 1 then
- doCreatureAddHealth(pid, getCreatureMaxHealth(pid))
- doCreatureAddMana(pid, getCreatureMaxMana(pid))
- if((getPlayerStorageValue(pid, t.g) % 2) == 1) then
- doCreatureChangeOutfit(pid, red)
- setPlayerStorageValue(pid, t.h, 0)
- doTeleportThing(pid, t.d_1)
- setPlayerStorageValue(pid, t.f, 1)
- setPlayerStorageValue(pid, t.f_1, 0)
- setPlayerStorageValue(pid, t.f_2, 1)
- doSendMagicEffect(getCreaturePosition(pid), 10)
- doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "You are in RED TEAM!\nThis battle will continue up to ".. t.v .." frags!")
- else
- doCreatureChangeOutfit(pid, blue)
- doTeleportThing(pid, t.d_2)
- setPlayerStorageValue(pid, t.h, 0)
- setPlayerStorageValue(pid, t.f, 1)
- setPlayerStorageValue(pid, t.f_1, 1)
- setPlayerStorageValue(pid, t.f_2, 0)
- doSendMagicEffect(getCreaturePosition(pid), 10)
- doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "You are in BLUE TEAM!\nThis battle will continue up to ".. t.v .." frags!")
- end
- end
- end
- elseif(getGlobalStorageValue(t.c) < t.mn) then
- doBroadcastMessage(t.x, MESSAGE_STATUS_WARNING)
- setGlobalStorageValue(t.a, 0)
- for _, pid in ipairs(getPlayersOnline()) do
- if getPlayerStorageValue(pid, t.f) == 1 then
- setPlayerStorageValue(pid, t.f, -1)
- doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))
- doSendMagicEffect(getCreaturePosition(pid), CONST_ME_TELEPORT)
- end
- end
- end
- end
- ]]></talkaction>
- <globalevent name="RushStart" time="17:34" event="script"><![CDATA[
- domodlib('re')
- function onTime(interval, lastExecution)
- setGlobalStorageValue(t.g, 1)
- setGlobalStorageValue(t.u, 0)
- setGlobalStorageValue(t.l, 0)
- setGlobalStorageValue(t.a, 1)
- setGlobalStorageValue(t.c, 0)
- setGlobalStorageValue(t.wv, 0)
- doBroadcastMessage("Attention! Immediately register to Rush Event, event will start for ".. t.t .." minutes. All players can join to event typing this command: !rush", MESSAGE_STATUS_WARNING)
- addEvent(start, t.t * 1000 * 60)
- end
- function results()
- if(getGlobalStorageValue(t.a) == 1) then
- local red = getGlobalStorageValue(t.l)
- local blue = getGlobalStorageValue(t.u)
- doBroadcastMessage("Rush Events, results:\nRed Team scored: ".. red .." frags.\nBlue Team scored: ".. blue .." frags.\nMatch is under way to ".. t.v .." frags.", MESSAGE_STATUS_WARNING)
- addEvent(results, t.r * 1000 * 60)
- end
- end
- function start()
- if(getGlobalStorageValue(t.a) == 1 and getGlobalStorageValue(t.c) >= t.mn) then
- doBroadcastMessage(t.q, MESSAGE_STATUS_WARNING)
- setGlobalStorageValue(t.wv, 1)
- addEvent(results, t.r * 1000 * 60)
- for _, pid in ipairs(getPlayersOnline()) do
- local myOutfit = getCreatureOutfit(pid)
- local red = {lookType = myOutfit.lookType, lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = myOutfit.lookAddons}
- local blue = {lookType = myOutfit.lookType, lookHead = 86, lookBody = 86, lookLegs = 86, lookFeet = 86, lookTypeEx = 0, lookAddons = myOutfit.lookAddons}
- if getPlayerStorageValue(pid, t.f) == 1 then
- doCreatureAddHealth(pid, getCreatureMaxHealth(pid))
- doCreatureAddMana(pid, getCreatureMaxMana(pid))
- if((getPlayerStorageValue(pid, t.g) % 2) == 1) then
- doCreatureChangeOutfit(pid, red)
- setPlayerStorageValue(pid, t.h, 0)
- doTeleportThing(pid, t.d_1)
- setPlayerStorageValue(pid, t.f, 1)
- setPlayerStorageValue(pid, t.f_1, 0)
- setPlayerStorageValue(pid, t.f_2, 1)
- doSendMagicEffect(getCreaturePosition(pid), 10)
- doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "You are in RED TEAM!\nThis battle will continue up to ".. t.v .." frags!")
- else
- doCreatureChangeOutfit(pid, blue)
- setPlayerStorageValue(pid, t.h, 0)
- doTeleportThing(pid, t.d_2)
- setPlayerStorageValue(pid, t.f, 1)
- setPlayerStorageValue(pid, t.f_1, 1)
- setPlayerStorageValue(pid, t.f_2, 0)
- doSendMagicEffect(getCreaturePosition(pid), 10)
- doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, "You are in BLUE TEAM!\nThis battle will continue up to ".. t.v .." frags!")
- end
- end
- end
- elseif(getGlobalStorageValue(t.c) < t.mn) then
- doBroadcastMessage(t.x, MESSAGE_STATUS_WARNING)
- setGlobalStorageValue(t.a, 0)
- for _, pid in ipairs(getPlayersOnline()) do
- if getPlayerStorageValue(pid, t.f) == 1 then
- setPlayerStorageValue(pid, t.f, -1)
- doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))
- doSendMagicEffect(getCreaturePosition(pid), CONST_ME_TELEPORT)
- end
- end
- end
- end
- ]]></globalevent>
- <talkaction words="!rush" event="script"><![CDATA[
- domodlib('re')
- function onSay(cid, words, param, channel)
- if getGlobalStorageValue(t.a) == 1 and getGlobalStorageValue(t.wv) ~= 1 then
- if getPlayerLevel(cid) >= t.lvl then
- if getPlayerStorageValue(cid, t.f) == -1 then
- if getTilePzInfo(getPlayerPosition(cid)) == true then
- if getGlobalStorageValue(t.c) < t.m then
- setGlobalStorageValue(t.c, getGlobalStorageValue(t.c)+1)
- if getGlobalStorageValue(t.c) == t.m then
- doPlayerSendCancel(cid, "Event is full [" .. getGlobalStorageValue(t.c) .. " players]!")
- else
- doBroadcastMessage("" .. getPlayerName(cid) .. " has joined to Rush Event! Actually we have: " .. getGlobalStorageValue(t.c) .. " players!", 19)
- end
- setPlayerStorageValue(cid, t.f, 1)
- setPlayerStorageValue(cid, t.h, -1)
- doTeleportThing(cid, t.w)
- doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
- setPlayerStorageValue(cid, t.g, getGlobalStorageValue(t.g))
- setGlobalStorageValue(t.g, tonumber(getGlobalStorageValue(t.g))+1)
- else
- doPlayerSendCancel(cid, "Event is full [" .. getGlobalStorageValue(t.c) .. " players]!")
- return true
- end
- else
- doPlayerSendCancel(cid, "You must be in protection zone.")
- return true
- end
- else
- doPlayerSendCancel(cid, "You are already registered in this event.")
- return true
- end
- else
- doPlayerSendCancel(cid, "Your level is too low to participate in this event.")
- return true
- end
- else
- doPlayerSendCancel(cid, "At the moment there are no records for this event.")
- return true
- end
- return true
- end
- ]]></talkaction>
- <event type="combat" name="RushCombat" event="script"><![CDATA[
- domodlib('re')
- function onCombat(cid, target)
- if(getGlobalStorageValue(t.a) == 1) then
- if isPlayer(cid) and isPlayer(target) then
- if getPlayerStorageValue(cid, t.f) == 1 and getPlayerStorageValue(target, t.f) == 1 then
- if getPlayerStorageValue(cid, t.f_1) == getPlayerStorageValue(target, t.f_1) then
- return doPlayerSendCancel(cid, "Sorry, you cannot attack your own team.") and false
- end
- end
- end
- end
- return true
- end
- ]]></event>
- <event type="attack" name="RushAttack" event="script"><![CDATA[
- domodlib('re')
- function onAttack(cid, target)
- if(getGlobalStorageValue(t.a) == 1) then
- if isPlayer(cid) and isPlayer(target) then
- if getPlayerStorageValue(cid, t.f) == 1 and getPlayerStorageValue(target, t.f) == 1 then
- if getPlayerStorageValue(cid, t.f_1) == getPlayerStorageValue(target, t.f_1) then
- return doPlayerSendCancel(cid, "Sorry, you cannot attack your own team.") and false
- end
- end
- end
- end
- return true
- end
- ]]></event>
- <event type="preparedeath" name="RushDead" event="script"><![CDATA[
- domodlib('re')
- function onPrepareDeath(cid, deathList)
- if(not isPlayer(cid)) then
- return true
- end
- if getGlobalStorageValue(t.a) == 1 then
- local strings = {""}
- local j, position, corpse = 1, 1, 0
- for _, pid in ipairs(deathList) do
- if isCreature(pid) == true then
- strings[position] = j == 1 and "" or strings[position] .. ", "
- strings[position] = strings[position] .. getCreatureName(pid) .. ""
- j = j + 1
- else
- strings[position] = j == 1 and "" or strings[position] .. ", "
- strings[position] = strings[position] .."a field item"
- j = j + 1
- end
- end
- for i, str in ipairs(strings) do
- if(str:sub(str:len()) ~= ",") then
- str = str .. "."
- end
- desc = "You recognize "
- desc = desc .. "" .. getCreatureName(cid) .. ". He was killed by " .. str
- end
- if(getPlayerSex(cid) == 1) then
- corpse = doCreateItem(3058, getCreaturePosition(cid))
- else
- corpse = doCreateItem(3065, getCreaturePosition(cid))
- end
- doItemSetAttribute(corpse, "description", desc)
- if((getPlayerStorageValue(cid, t.g) % 2) == 1) then
- setGlobalStorageValue(t.u, getGlobalStorageValue(t.u)+1)
- else
- setGlobalStorageValue(t.l, getGlobalStorageValue(t.l)+1)
- end
- local red = getGlobalStorageValue(t.l)
- local blue = getGlobalStorageValue(t.u)
- if blue < t.v or red < t.v then
- if(isPlayer(cid) == false) then
- return true
- end
- if((getPlayerStorageValue(cid, t.g) % 2) == 1) then
- doTeleportThing(cid, t.d_1)
- doSendMagicEffect(getCreaturePosition(cid), 10)
- doCreatureAddHealth(cid, getCreatureMaxHealth(cid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true)
- doCreatureAddMana(cid, getCreatureMaxMana(cid))
- doPlayerRemoveLethalConditions(cid)
- if getCreatureSkullType(cid) == SKULL_WHITE then
- doCreatureSetSkullType(cid, 0)
- end
- else
- doTeleportThing(cid, t.d_2)
- doSendMagicEffect(getCreaturePosition(cid), 10)
- doCreatureAddHealth(cid, getCreatureMaxHealth(cid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true)
- doCreatureAddMana(cid, getCreatureMaxMana(cid))
- doPlayerRemoveLethalConditions(cid)
- if getCreatureSkullType(cid) == SKULL_WHITE then
- doCreatureSetSkullType(cid, 0)
- end
- end
- end
- if blue >= t.v then
- doBroadcastMessage(t.y, MESSAGE_STATUS_WARNING)
- setGlobalStorageValue(t.h, 1)
- for _, pid in ipairs(getPlayersOnline()) do
- if(getPlayerStorageValue(pid, t.f_1) == 1) then
- db.executeQuery('UPDATE accounts SET premium_points=premium_points+100 WHERE id=' .. getPlayerAccountId(cid))
- end
- end
- elseif red >= t.v then
- doBroadcastMessage(t.o, MESSAGE_STATUS_WARNING)
- setGlobalStorageValue(t.h, 1)
- for _, pid in ipairs(getPlayersOnline()) do
- if(getPlayerStorageValue(pid, t.f_2) == 1) then
- db.executeQuery('UPDATE accounts SET premium_points=premium_points+100 WHERE id=' .. getPlayerAccountId(cid))
- end
- end
- end
- if getGlobalStorageValue(t.h) == 1 then
- setGlobalStorageValue(t.a, 0)
- setGlobalStorageValue(t.h, 0)
- setGlobalStorageValue(t.wv, -1)
- setPlayerStorageValue(cid, t.f, -1)
- setPlayerStorageValue(cid, t.g, 0)
- setPlayerStorageValue(cid, t.l, 0)
- setPlayerStorageValue(cid, t.u, 0)
- setPlayerStorageValue(cid, t.f_1, -1)
- setPlayerStorageValue(cid, t.f_2, -1)
- setPlayerStorageValue(cid, t.h, -1)
- doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), true)
- doSendMagicEffect(getCreaturePosition(cid), 10)
- doCreatureAddHealth(cid, getCreatureMaxHealth(cid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true)
- doCreatureAddMana(cid, getCreatureMaxMana(cid))
- doPlayerRemoveLethalConditions(cid)
- for _, pid in ipairs(getPlayersOnline()) do
- if(getPlayerStorageValue(pid, t.f_1) == 1 or getPlayerStorageValue(pid, t.f_2) == 1) then
- setPlayerStorageValue(pid, t.f, -1)
- doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)))
- doSendMagicEffect(getCreaturePosition(pid), CONST_ME_TELEPORT)
- setPlayerStorageValue(pid, t.g, 0)
- setPlayerStorageValue(pid, t.l, 0)
- setPlayerStorageValue(pid, t.u, 0)
- setPlayerStorageValue(pid, t.f_1, -1)
- setPlayerStorageValue(pid, t.f_2, -1)
- setPlayerStorageValue(pid, t.h, -1)
- doCreatureAddHealth(pid, getCreatureMaxHealth(pid), MAGIC_EFFECT_UNKNOWN, COLOR_UNKNOWN, true)
- doCreatureAddMana(pid, getCreatureMaxMana(pid))
- doPlayerRemoveLethalConditions(pid)
- end
- end
- return false
- end
- return false
- end
- return true
- end
- ]]></event>
- <event type="outfit" name="RushOutfit" event="script"><![CDATA[
- domodlib('re')
- function onOutfit(cid, old, current)
- if(getGlobalStorageValue(t.a) == 1) then
- if getPlayerGroupId(cid) > 3 then
- return true
- end
- if getPlayerStorageValue(cid, t.h) == 0 then
- if getPlayerStorageValue(cid, t.f) > -1 then
- doPlayerSendCancel(cid, "You cannot change your outfit during the event.")
- return false
- end
- end
- end
- return true
- end
- ]]></event>
- </mod>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement