Ir para conteúdo
  • 0

[Pedido] Capture The Flag (Ctf)


AnneMotta

Pergunta

então caros amiguinhos é o seguinte, eu estava procurando o eventos CTF para o meu servidor, vim no xtibia, rodei, rodei, rode e nada, até que achei um topico do SkyDan~ e éra em MOD, maas ele removeu o script do topico.

Então estou a que pedindo para alguem caridoso possa fazar os scripts ou postar algum ja pronto.

Vou explicar mais o menos como funciona.

 

1 - Aparece uma mensagem na tela de todos os player em vermelhor avisando que 1 teleport abrira em tal lugar em x minutos.

 

2 - hora que o teleport abrir os players entrão (só player lv 100+) ai eles são levados para uma sala todos que entrarem no teleport, ai fala que denovo para todos players em vermelho que em x minutos o teleport se fechara e o evento começara.

 

3 - assim que o teleport se fechar os players são teleportados para o local de batalha e os times são divididos aleatoriamente sempre balanceado.

 

4 - cada time ( verde e vermelho ) tem uma bandeira em sua base e eles tem o dever de não deixar o outro time catar a bandeira ( se pega a bandeira paçando sobre um piso ).

 

5 - ganha o evento quem catar a bandeira do adversario 5 vezes ou então depois de x minutos de evento quem catou mais ganha.

 

6 - os premios são para todo o time vencedor mais tipo são varios items que são entregues aleatoriamente.

 

Axo que é isso.

 

OBS: os players que morrem não perde level, nem items nem nada e todas vezes que eles morrerem voltam para sua base.

 

PS: se não funcionar este evento no servidor global compacto nem precisa postar >< no compacto não pega nen zombie event nen war system, preciso de mais deste evento!

 

alguma duvida só entrar em contato!

Editado por AnneMotta
Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

Nossa Vodkart, não perde uma neh ?? Safadenhooo, rs

 

globalevents/scripts/ctf.lua adicione:

 

local t = {
redPos = {x = 982, y = 1022, z = 7},
bluePos = {x = 993, y = 1033, z = 7},
redStorage = 15000,
blueStorage = 15001,
fromPos = {x = 1004, y = 1023, z = 7},
toPos = {x = 1015, y = 1032, z = 7}
}
local conditionBlue = createConditionObject(CONDITION_OUTFIT)
setConditionParam(conditionBlue, CONDITION_PARAM_TICKS, 1800 * 1000)
addOutfitCondition(conditionBlue, {lookType = 130, lookHead = 87, lookBody = 87, lookLegs = 87, lookFeet = 87})
local conditionRed = createConditionObject(CONDITION_OUTFIT)
setConditionParam(conditionRed, CONDITION_PARAM_TICKS, 1800 * 1000)
addOutfitCondition(conditionRed, {lookType = 130, lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94})
local function teleportThing(minutes)
local event = 0
if minutes <= 0 then
 for _, cid in ipairs(getPlayersOnline()) do
  if isInRange(getThingPos(cid), t.fromPos, t.toPos) then
if math.random(1, 3) < 3 then
 setPlayerStorageValue(cid, t.redStorage, 1)
 doAddCondition(cid, conditionRed)
 doTeleportThing(cid, t.redPos, true)
else
 setPlayerStorageValue(cid, t.blueStorage, 1)
 doAddCondition(cid, conditionBlue)
 doTeleportThing(cid, t.bluePos, true)
end
  end
 end
 return true
end
if minutes == 1 then
 doBroadcastMessage("Capture The Flag will begin in " .. minutes .. " minute!")
elseif minutes <= 3 then
 doBroadcastMessage("Capture The Flag will begin in " .. minutes .. " minutes!")
else
 doBroadcastMessage("Capture The Flag will begin in " .. minutes .. " minutes!")
end
event = addEvent(teleportThing, 60, minutes - 1)
return true
end
function onThink(interval, lastExecution)
return teleportThing(math.abs(math.ceil(1)))
end

 

globalevents.xml adicione:

 

[/font][/color]
[color=#008000]<globalevent name="ctf_event" interval="60" event="script" value="ctf.lua"/>[/color]
[color=#000000][font=Tahoma, Calibri, Arial, Verdana, Tahoma,]

 

data/creaturescripts/scripts/ctf_target.lua adicione:

 

local t = {
redStorage = 15000,
blueStorage = 15001
}
function onCombat(cid, target)
if isPlayer(cid) and isPlayer(target) then
 if getPlayerStorageValue(cid, t.redStorage) == 1 and getPlayerStorageValue(target, t.redStorage) == 1 then
  return doPlayerSendCancel(cid, "You may not attack your team mates.") and false
 elseif getPlayerStorageValue(cid, t.blueStorage) == 1 and getPlayerStorageValue(target, t.blueStorage) == 1 then
  return doPlayerSendCancel(cid, "You may not attack your team mates.") and false
 end
end
return true
end

 

data/creaturescripts/scripts/stats_ctf.lua adicione:

 

local t = {
redPos = {x = 983, y = 1028, z = 7},
bluePos = {x = 992, y = 1028, z = 7},
redStorage = 15000,
blueStorage = 15001,
redFlag = 18000,
blueFlag = 18001
}
function onStatsChange(cid, attacker, type, combat, value)
if type == 1 then
 if getCreatureHealth(cid) <= value then
  if isPlayer(cid) and isCreature(attacker) then
if getPlayerStorageValue(cid, t.redStorage) == 1 then
 if getPlayerStorageValue(cid, t.blueFlag) == 1 and getGlobalStorageValue(t.blueFlag) == 1 then
  setPlayerStorageValue(cid, t.blueFlag, -1)
  setGlobalStorageValue(t.blueFlag, -1)
  doBroadcastMessage(getCreatureName(cid) .. " has lost the Blue Flag!")
  doTeleportThing(cid, t.redPos, true)
 else
  doTeleportThing(cid, t.redPos, true)
 end
 doCreatureAddHealth(cid, getCreatureMaxHealth(cid), true)
 doCreatureAddMana(cid, getCreatureMaxMana(cid), true)
elseif getPlayerStorageValue(cid, t.blueStorage) == 1 then
 if getPlayerStorageValue(cid, t.redFlag) == 1 and getGlobalStorageValue(t.redFlag) == 1 then
  setPlayerStorageValue(cid, t.redFlag, -1)
  setGlobalStorageValue(t.redFlag, -1)
  doTeleportThing(cid, t.bluePos, true)
  doBroadcastMessage(getCreatureName(cid) .. " has lost the Red Flag!")
 else
  doTeleportThing(cid, t.bluePos, true)
 end
 doCreatureAddHealth(cid, getCreatureMaxHealth(cid), true)
 doCreatureAddMana(cid, getCreatureMaxMana(cid), true)
end
  end
  return false
 end
end
return true
end

 

creaturescripts.xml adicione:

 

<event type="statschange" name="stats_ctf" event="script" value="stats_ctf.lua"/> [/font][/color]
[color=#000000][font=Tahoma, Calibri, Arial, Verdana, Tahoma,]<event type="combat" name="ctf_target" event="script" value="ctf_target.lua"/>

 

login.lua adicione:

 

registerCreatureEvent(cid, "stats_ctf")
registerCreatureEvent(cid, "ctf_target")

 

data/movements/scripts/test.lua adicione:

 

local t = {
redStorage = 15000,
blueStorage = 15001,
redFlag = 18000,
blueFlag = 18001,
redGoal = 19000,
blueGoal = 19001,
fromPos = {x = 982, y = 1022, z = 7},
toPos = {x = 993, y = 1033, z = 7}
}
local function getPlayers()
local thisTable = {}
for x = t.fromPos.x, t.toPos.x do
 for y = t.fromPos.y, t.toPos.y do
  for z = t.fromPos.z, t.toPos.z do
local myPos = {x = x, y = y, z = z}
local player = getTopCreature(myPos).uid
if player > 0 then table.insert(thisTable, player) else table.remove(thisTable, player) end
  end
 end
end
return {thisTable = thisTable}
end
local function repeatFlagOnPlayer(cid)
local k = getThingPos(cid)
local r = {
 {pos = {x = k.x + 2, y = k.y - 2, z = k.z}, delay = 300},
 {pos = {x = k.x + 2, y = k.y + 2, z = k.z}, delay = 300},
 {pos = {x = k.x - 2, y = k.y + 2, z = k.z}, delay = 300},
 {pos = {x = k.x - 2, y = k.y, z = k.z}, delay = 300},
 {pos = {x = k.x - 2, y = k.y - 2, z = k.z}, delay = 300},
 {pos = {x = k.x, y = k.y - 2, z = k.z}, delay = 300}
}
local effects = {27, 28, 29, 30}
if isPlayer(cid) then
 if getPlayerStorageValue(cid, t.blueStorage) == 1 and getPlayerStorageValue(cid, t.redFlag) == 1 and getGlobalStorageValue(t.redFlag) == 1 then
  for i = 1, 6 do
addEvent(doSendDistanceShoot, r[i].delay, r[i].pos, k, CONST_ME_FIREWORK_YELLOW)
  end
  for i = 1, 4 do
addEvent(doSendMagicEffect, 1000, getThingPos(cid), effects[i])
  end
  return addEvent(repeatFlagOnPlayer, 1000, cid)
 elseif getPlayerStorageValue(cid, t.redStorage) == 1 and getPlayerStorageValue(cid, t.blueFlag) == 1 and getGlobalStorageValue(t.blueFlag) == 1 then
  for i = 1, 6 do
addEvent(doSendDistanceShoot, r[i].delay, r[i].pos, k, CONST_ME_FIREWORK_YELLOW)
  end
  for i = 1, 4 do
addEvent(doSendMagicEffect, 1000, getThingPos(cid), effects[i])
  end
  return addEvent(repeatFlagOnPlayer, 1000, cid)
 else
  return false
 end
else
 return false
end
end
function onStepIn(cid, item, position, fromPosition, toPosition, lastPosition, actor)
if isPlayer(cid) then
 if item.actionid == 6000 then
  if getPlayerStorageValue(cid, t.redStorage) == 1 then
if getPlayerStorageValue(cid, t.blueFlag) == -1 and getGlobalStorageValue(t.blueFlag) == -1 then
 setPlayerStorageValue(cid, t.blueFlag, 1)
 setGlobalStorageValue(t.blueFlag, 1)
 repeatFlagOnPlayer(cid)
 doBroadcastMessage(getCreatureName(cid) .. " has stolen the Blue Flag!")
else
 doCreatureSay(cid, "The flag is not at home.", 19)
 doTeleportThing(cid, fromPosition, false)
end
  else
doCreatureSay(cid, "You may only pick up the opposite team flag.", 19)
doTeleportThing(cid, fromPosition, false)
  end
 elseif item.actionid == 6001 then
  if getPlayerStorageValue(cid, t.blueStorage) == 1 then
if getPlayerStorageValue(cid, t.redFlag) == -1 and getGlobalStorageValue(t.redFlag) == -1 then
 setPlayerStorageValue(cid, t.redFlag, 1)
 setGlobalStorageValue(t.redFlag, 1)
 repeatFlagOnPlayer(cid)
 doBroadcastMessage(getCreatureName(cid) .. " has stolen the Red flag!")
else
 doCreatureSay(cid, "The flag is not at home.", 19)
 doTeleportThing(cid, fromPosition, false)
end
  else
doCreatureSay(cid, "The flag is not at home.", 19)
doTeleportThing(cid, fromPosition, false)
  end
 end
 if item.actionid == 6002 then
  if getPlayerStorageValue(cid, t.redStorage) == 1 then
if getPlayerStorageValue(cid, t.blueFlag) == 1 and getGlobalStorageValue(t.blueFlag) == 1 then
 setGlobalStorageValue(t.blueFlag, -1)
 setPlayerStorageValue(cid, t.blueFlag, -1)
 setGlobalStorageValue(t.redGoal, getGlobalStorageValue(t.redGoal)+1)
 doBroadcastMessage("Current CTF Game Score:\nRed Team: " .. getGlobalStorageValue(t.redGoal) .. "\nBlue Team: " .. getGlobalStorageValue(t.blueGoal) .. "\nTen Scores to win!", 20)
 doBroadcastMessage(getCreatureName(cid) .. " has scored 1 point for the Red Team!")
else
 doCreatureSay(cid, "You dont have the flag.", 19)
 doTeleportThing(cid, fromPosition, false)
end
  elseif getPlayerStorageValue(cid, t.blueStorage) == 1 then
if getPlayerStorageValue(cid, t.redFlag) == 1 and getGlobalStorageValue(t.redFlag) == 1 then
 setGlobalStorageValue(t.redFlag, -1)
 setPlayerStorageValue(cid, t.redFlag, -1)
 setGlobalStorageValue(t.blueGoal, getGlobalStorageValue(t.blueGoal)+1)
 doBroadcastMessage("Current CTF Game Score:\nRed Team: " .. getGlobalStorageValue(t.redGoal) .. "\nBlue Team: " .. getGlobalStorageValue(t.blueGoal) .. "\nTen Scores to win!", 20)
 doBroadcastMessage(getCreatureName(cid) .. " has scored 1 point for the Blue Team!")
else
 doCreatureSay(cid, "You dont have the flag.", 19)
 doTeleportThing(cid, fromPosition, false)
end
  end
  if getGlobalStorageValue(t.blueGoal) == 10 and getGlobalStorageValue(t.redGoal) < 10 then
for _, cid in ipairs(getPlayersOnline()) do
 if getPlayerStorageValue(cid, t.blueStorage) == 1 then
  setPlayerStorageValue(cid, t.blueStorage, -1)
  doPlayerAddItem(cid, 9020, math.random(1, 6))
 elseif getPlayerStorageValue(cid, t.redStorage) == 1 then
  setPlayerStorageValue(cid, t.redStorage, -1)
 end
 doRemoveCondition(cid, CONDITION_OUTFIT)
 setGlobalStorageValue(t.redGoal, 0)
 setGlobalStorageValue(t.blueGoal, 0)
end
local FF = getPlayers().thisTable
if #FF > 1 then
 for _, hh in ipairs(FF) do
  doTeleportThing(hh, getTownTemplePosition(getPlayerTown(hh)), true)
 end
end
  elseif getGlobalStorageValue(t.redGoal) == 10 and getGlobalStorageValue(t.blueGoal) < 10 then
for _, cid in ipairs(getPlayersOnline()) do
 if getPlayerStorageValue(cid, t.redStorage) == 1 then
  setPlayerStorageValue(cid, t.redStorage, -1)
  doPlayerAddItem(cid, 9020, math.random(1, 6))
 elseif getPlayerStorageValue(cid, t.blueStorage) == 1 then
  setPlayerStorageValue(cid, t.blueStorage, -1)
 end
 doRemoveCondition(cid, CONDITION_OUTFIT)
 setGlobalStorageValue(t.redGoal, 0)
 setGlobalStorageValue(t.blueGoal, 0)
end
local F = getPlayers().thisTable
if #F > 1 then
 for _, h in ipairs(F) do
  doTeleportThing(h, getTownTemplePosition(getPlayerTown(h)), true)
 end
end
  end
 end
else
 doRemoveCreature(cid)
end
return true
end

 

movements.xml adicione:

 

<movevent type="StepIn" actionid="6000-6002" event="script" value="test.lua"/>

 

data/globalevents/scripts/start.lua adicione:

 

setGlobalStorageValue(19000, 0)
setGlobalStorageValue(19001, 0)

 

Posições: Podem ser alteradas!

 

mple position = {x = 1025, y = 1028, z = 7}

 

waiting room pos = {x = 1009, y = 1027, z = 7},

 

red team = {x = 982, y = 1022, z = 7},

 

blue team = {x = 993, y = 1033, z = 7},

 

score position = {x = 987, y = 1027, z = 7},

 

red team flag position = {x = 987, y = 1032, z = 7},

 

blue team flag position = {x = 987, y = 1023, z = 7}

 

 

Depois execute essa query:

 

 

UPDATE `players` SET posx = 1025, posy = 1028, posz = 7

Editado por Beeki
Link para o comentário
Compartilhar em outros sites

  • 0

não entendi isso:

 

Depois execute essa query:

 

 

UPDATE `players` SET posx = 1025, posy = 1028, posz = 7

 

tem como explicar?

 

Moderadores se for flood me Desculpe

 

o que seria:

 

mple position = {x = 1025, y = 1028, z = 7}

 

e

 

score position = {x = 987, y = 1027, z = 7},

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...