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)
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("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
info
Grupo: Campones
Registrado: 13/12/12
Posts: 48
Reputação: +4
Char no Tibia: nao jogo mais
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
Editado Janeiro 26 por rogeriok