Ir para conteúdo

Posts Recomendados

Hail galera do Xtibia, estava com este evento Rush WAR, mas ele não está funcionando corretamente, ele funciona da seguinte forma com uma Talk action ele ativado !start, e os players podem registra nele também usando o seguinte comando !rush, mas no fim do evento o time vencedor não está recebendo a recompensa, e a primeira morte após o evento não perde nada;

nem level e nem items, e também quando um player que não está registrado morre na hora em que está ocorrendo o evento ele é teleportado até a arena....mas quando termina o evento este mesmo player fica preso nela pois ele não usou o comando para se registrar...bom é isso que está acontecendo....

 

SEGUE O SCRIPT!!

 

 

<?xml version="1.0" encoding="UTF-8"?>

<mod name="Rush Event" version="1.0" author="Tibia Hosting por disponibilizar" contact="eduardo.yhago@hotmail.com" enabled="yes">

<description>

TUTORIAL DE COMO CONFIGURAR O evento ACOMPANHE POR AQUI:

q - mensagem que vai ser exibida quando o evento começar

d_1 - posição do tempo vermelho ao começar evento

d_2 - posição do tempo azul ao começar evento

x - mensagem que vai ser exibida quando o evento não começar

w - posição da sala de espera, onde os players vão ficar antes de começar

lvl - level minimo para participar do evento

v - a quantidade de frags que será necessária para o time ganhar

mn - quantidade minima de players para começar o evento

m - maximo de players dentro do evento

o - mensagem exibida quando o time vermelho ganhar

y - mensagem exibida quando o time azul ganhar

i_1 - id do premio (agora é crystal coin = 2160)

i_2 - quantidade do premio (agora esta 10 crystal coins)

t - tempo para começar o evento (agora esta is 5 minutos)

r - tempo em que os resultados da batalha serão mostrados aos players (agora esta 3 minutos)

Adicione isto em 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

-------------------------------------------------------------------------------------------------

Adicione isto em login.lua:

-------------------------------------------------------------------------------------------------

registerCreatureEvent(cid, "RushCombat")

registerCreatureEvent(cid, "RushAttack")

registerCreatureEvent(cid, "RushDead")

registerCreatureEvent(cid, "RushOutfit")

-------------------------------------------------------------------------------------------------

Agora daqui pra baixo você vai configurar de acordo com o tutorial acima, o resto se não tiver

conhecimento não mecha em nada pois poderá bugar o evento e não daremos suporte:

</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 = 26598, y = 26758, z = 7}, -- red temple

d_2 = {x = 26655, y = 26726, z = 7}, -- blue temple

x = "Event won't start bacause too few people were willing to participate",

w = {x = 26628, y = 26804, z = 7},

lvl = 80,

v = 2,

mn = 1,

m = 3,

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="1500" 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, cid)

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(cid)

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="00:09" 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(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, cid)

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(cid)

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

doPlayerAddItem(cid, 2160, 30)

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

doPlayerAddItem(cid, 2160, 30)

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>

 

 

 

No entanto estive procurando este mesmo evento em LUA, e encontrei um, mas estou tendo o seguinte erro também, segue abaixo o script e o erro...

 

 

OBS.: USO 8.6 [The Forgotten Server 0.4_SVN]

 

 

talkaction script

 

rushEvent.lua

 

--------Death limit------------

local deathLimit = 250

---------Winners--------------

local items = {2557} -- you can make this as many items you want, it will math.radom the items. --

---------Can Start Events?-----

local Allowed_To_Start_Events = 4 --They must have this access to start events--

----------EVENTS---------------

local RUSH = rushEvent

---------------------------------------------RUSH-----Red vs. Blue-----------------------

-----------------------------------------------------CONFIG--------------------------

local myOutfit = getCreatureOutfit(cid)

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}

 

------------EVENT POSITION---------------

local eventTop.xyz = {x = 1000, y = 1000, z = 7, stackpos = 253}

local eventBottom.xyz = {x = 1000, y = 1000, z = 7, stackpos = 253}

local eventPosition = eventTop.xyz, eventBottom.xyz

 

------------Red Team Position------------

local redTopleft.xyz = {x = 1000, y = 1000, z = 7}

local redBottomright.xyz = {x = 1000, y = 1000, z = 7}

local redPosition = redTopleft.xyz, redBottomRight.xyz

 

---------Blue Team Position---------------

local blueTopleft.xyz = {x = 1000, y = 1000, z = 7}

local blueBottomleft.xyz = {x = 1000, y = 1000, z = 7}

local bluePosition = blueTopleft.xyz, blueBottomRight.xyz

 

------------DOORS------------

local bdoor = {x = 1000, y = 1000, z = 7}

local blueDoor = getItemFromPos(bdoor)

local bdoorItem = 5712 -- Set this to the door item id you want for blue team. --

local rdoor = {x = 1000, y = 1000, z = 7}

local blueDoor = getItemFromPos(rdoor)

local rdoorItem = 5713 -- Set this to the door item id you want for red team. --

------------TEAMS------------------------

local redStorage = redteamstorage

local blueStorage = blueteamstorage

 

-----------Max Players Per Team----------

local full_event = 30

 

--------Ignore----------

local t = string.explode(param, ",")

 

-------------EDIT THIS-----------

local fullMSG = "The event is full!"

local redMSG = "You have joined the red team!"

local blueMSG = "You have joined the blue team!"

local openMSG = "RUSH IS NOW OPEN! Type !rush to enter the event!"

local typeMSG = MESSAGE_STATUS_CONSOLE_RED

local redME = 10 -- red team magic effect--

local blueME = 11 -- blue team magic effect--

 

--------------MISC-------------------

local outOfEvent = {x = 1000, y = 1000, z = 7} -- Keep in mind you can make this getPlayerTown(cid) --

local players = getThingFromPos(eventPosition)

 

----------------WORDS------------------

local wordsToOpen = "!open"

local wordsToStart = "!start"

local wordsToEnd = "!end"

local joinRush = "!rush"

 

local function setPlayerRushStatus()

if getPlayerStorageValue(players) ~= rushPlayer then

doPlayerSetLossPercent(cid, 1, 0)

setPlayerStorageValue(cid, rushPlayer, 1)

end

end

 

function onSay(cid, word, param)

if (param == wordsToOpen) then

if getPlayerAccess(cid) >= Allowed_To_Start_Events then

if getGlobalStorageValue(RUSH) ~= 1 then

doBroadcastMessage(openMSG, 1)

setGlobalStorageValue(RUSH, 1)

setGlobalStorageValue(blueDeaths, deathLimit)

setGlobalStorageValue(redDeaths, deathLimit)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "You have started the event Red Vs. Blue!")

else

doPlayerSendCancel(cid, "The event is already started.")

return false

end

else

doPlayerSendCancel(cid, "You cannot use this command.")

return false

end

elseif (param == joinRush) then

if getGlobalStorageValue(RUSH) == 1 then

if getGlobalStorageValue(redStorage) and getGlobalStorageValue(blueStorage) == full_event then

doPlayerSendCancel(cid, fullMSG)

return false

end

if getGlobalStorageValue(redStorage) > getGlobalStorageValue(blueStorage) then

doTeleportThing(cid, bluePosition)

setGlobalStorage(blueStorage) + 1

doPlayerSendTextMessage(cid, typeMSG, blueMSG)

doSendMagicEffect(getPlayerPosition(cid), blueME)

setPlayerRushStatus()

setPlayerStorageValue(cid, rushTeam, 2)

doCreatureChangeOutfit(cid, blue)

else

doTeleportThing(cid, redPosition)

setGlobalStorage(redStorage) + 1

doPlayerSendTextMessage(cid, typeMSG, redMSG)

doSendMagicEffect(getPlayerPosition(cid), redME)

setPlayerRushStatus()

setPlayerStorageValue(cid, rushTeam, 1)

doCreatureChangeOutfit(cid, red)

end

else

doPlayerSendCancel(cid, "This event is not open!")

return false

end

elseif (param == wordToEnd) then

if getPlayerAccess(cid) >= Access_To_Start_Events then

if getGlobalStorageValue(RUSH) == 1 then

setGlobalStorageValue(RUSH, 0)

doTransformItem(bdoor, bdoorItem)

doTransformItem(rdoor, rdoorItem)

if (isPlayer(players)) then

for i, pid in ipairs(players) do

setPlayerStorageValue(pid, rushPlayer, 0)

doTeleportThing(pid, outOfEvent)

doPlayerSetLossPercent(pid, 1, 100)

if getPlayerStorageValue(pid, rushTeam) == 1 or 2 then

setPlayerStorageValue(pid, rushTeam, 0)

end

if getPlayerStorageValue(pid, rushPlayer) == 1 or 2 then

setPlayerStorageValue(pid, rushPlayer, 0)

end

if getPlayerStorageValue(pid, rushWinner) then

setPlayerStorageValue(pid, rushWinner, 0)

doPlayerAddItem(pid, math.random(items), 1)

if math.random(item) == 1 then

doPlayerAddItem(pid, items[1], 1)

end

end

else

return false

end

else

doPlayerSendCancel(cid, "There is no event running!")

return false

end

else

doPlayerSendCancel(cid, "You cannot use this command.")

return false

end

elseif (param == wordToStart) then

if getPlayerAccess(cid) >= Access_To_Start_Events then

if getGlobalStorageValue(RUSH) == 1 then

if getGlobalStorage(blueStorage) and getGlobalStorage(redStorage) == full_event then

doTransformItem(bdoorItem, bdoorOpen)

doTransformItem(rdoorItem, rdoorOpen)

else

doPlayerSendCancel(cid, "The event is not full!")

return false

end

else

doPlayerSendCancel(cid, "The event is not open!")

return false

end

else

doPlayerSendCancel(cid, "You cannot use this command.")

return false

end

end

return true

end

 

 

creaturescripts

 

rushDeath.lua

 

 

------------Red Team Position------------

local redTopleft.xyz = {x = 1000, y = 1000, z = 7}

local redBottomright.xyz = {x = 1000, y = 1000, z = 7}

local redPosition = redTopleft.xyz, redBottomRight.xyz

 

---------Blue Team Position---------------

local blueTopleft.xyz = {x = 1000, y = 1000, z = 7}

local blueBottomleft.xyz = {x = 1000, y = 1000, z = 7}

local bluePosition = {x = 1000, y = 1000, z = 7}

 

local msgDeath = "You have died during the rush event. You have been teleported back to your teams side!"

 

 

function onDeath(cid)

if getPlayerStorageValue(cid, rushPlayer) == 1 then

if getPlayerStorageValue(cid, blueRusher) == 1 then

doTeleportThing(cid, bluePosition)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, msgDeath)

else

doTeleportThing(cid, redPosition)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, msgDeath)

end

end

end

 

 

 

antiTeamKill.lua

 

function onAttack(cid, target)

if(getGlobalStorageValue(RUSH) == 1) then

if isPlayer(cid) and isPlayer(target) then

if getPlayerStorageValue(cid, rushTeam) == getPlayerStorageValue(target, rushTeam) then

doPlayerSendCancel(cid, "Sorry, you cannot attack your own team.")

end

end

end

return true

end

 

 

 

antiSkull.lua

 

function onAttack(cid, target)

if(getGlobalStorageValue(RUSH) == 1) then

if isPlayer(cid) and isPlayer(target) then

if getPlayerStorageValue(cid, rushTeam) == getPlayerStorageValue(target, rushTeam) then

doPlayerSendCancel(cid, "Sorry, you cannot attack your own team.")

end

end

end

return true

end

 

 

killedPlayer.lua

 

function onKill(cid, target)

if (isPlayer(cid) then

if getPlayerStorageValue(cid, rushTeam, 1) and getPlayerStorageValue(target, rushTeam, 2) then

setGlobalStorageValue(redDeaths) - 1

elseif getPlayerStorageValue(cid, rushTeam, 2) and getPlayerStorageValue(target, rushTeam, 1) then

setGlobalStorageValue(blueDeaths) - 1

end

end

end

 

 

Tags

 

<event type="death" name="rushDeath" event="script" value="rushDeath.lua"/>

<event type="kill" name="antiSkull" event="script" value="antiSkull.lua"/>

<event type="target" name="antiTeamKill" event="script" value="antiTeamKill.lua"/>

 

 

login.lua

 

registerCreatureEvent(cid, "rushDeath")

registerCreatureEvent(cid, "antiTeamKill")

registerCreatureEvent(cid, "antiSkull")

registerCreatureEvent(cid, "killedPlayer")

 

globalevents

 

checkDeaths.lua

 

local items = {2557}

 

local eventTop.xyz = {x = 1000, y = 1000, z = 7, stackpos = 253}

local eventBottom.xyz = {x = 1000, y = 1000, z = 7, stackpos = 253}

local eventPosition = eventTop.xyz, eventBottom.xyz

 

local outOfEvent = {x = 1000, y = 1000, z = 7}

local players = getThingfromPos(eventPosition)

 

function onThink(intravel)

if getGlobalStorageValue(cid, rushEvent) == 1 then

if getGlobalStorageValue(cid, redDeaths) == 0 or getGlobalStorageValue(cid, blueDeaths) == 0 then

for i, pid in ipairs(players) do

if (isPlayer(players)) then

setPlayerStorageValue(pid, rushPlayer, 0)

doTeleportThing(pid, outOfEvent)

doPlayerSetLossPercent(pid, 1, 100)

if getPlayerStorageValue(pid, rushTeam) == 1 or 2 then

setPlayerStorageValue(pid, rushTeam, 0)

end

if getPlayerStorageValue(pid, rushPlayer) == 1 or 2 then

setPlayerStorageValue(pid, rushPlayer, 0)

end

if getPlayerStorageValue(pid, rushWinner) then

setPlayerStorageValue(pid, rushWinner, 0)

doPlayerAddItem(pid, math.random(items), 1)

if math.random(item) == 1 then

doPlayerAddItem(pid, items[1], 1)

end

end

end

end

end

end

 

TAG GLOBALEVENTS

 

 

 

<globalevent name="check" interval="1" event="script" value="checkDeaths.lua"/>

 

 

 

ERRO APRESENTADO NO CONSOLE

 

erro.png

Editado por rogeriok
Link para o comentário
https://xtibia.com/forum/topic/205553-ajuda-evento-de-war/
Compartilhar em outros sites

×
×
  • Criar Novo...