Ir para conteúdo
  • 0

Explicação De Uma Script (Urgente)


JumentoCuzaum

Pergunta

Bom Encontrei Esse Script Aqui No Xtibia Mais a Pess0a Que Postou Diz Que Não é Dele o Script e Não Vai Sanar Minha Duvida...

Então Queria Uma Explicação de Como Usar Este Script...

 

Bom Segue o Post Da Pess0a Que Disponibilizou O Script:

Por Favor Me Expliquem o Que Significa cada parte ai e la em baixo tem umas positions do map que não sei ao certo o que por e uma query que não sei onde por...

 

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

 

Se Alguem Ajudar +REP :D

 

...

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

A query voce executa no database do seu servidor,

meu palpite é que voce usa SQL entao, execute essa query la no database.

 

Abra o DATABASE, selecione o seu, depois ache perto da barra de ferramentas, uma barrinha escrita QUERY,

ai basta copiar e colar o que esta escrito e clicar em um RAIOZINHO na aba QUERY (se deixar o mouse por cima, vai estar escrito

 

 

 

Enquanto a isso:

 

mple position = {x = 1025, y = 1028, z = 7} - PARA ONDE O PLAYER VAI SER TELEPORTADO

 

waiting room pos = {x = 1009, y = 1027, z = 7}, - QUAL A POSIÇÂO DA SALA DE ESPERA

 

red team = {x = 982, y = 1022, z = 7}, - ONDE O RED TEAM VAI NASCER

 

blue team = {x = 993, y = 1033, z = 7}, - ONDE O BLUE TEAM VAI NASCER

 

score position = {x = 987, y = 1027, z = 7}, - Onde os players nascem (ACHO)

 

red team flag position = {x = 987, y = 1032, z = 7}, - POSICAO DA RED FLAG

 

blue team flag position = {x = 987, y = 1023, z = 7} - POSICAO DA BLUE FLAG

 

Acho que é mais ou menos isso,

se tiver duvidas em mapa, daqui a pouco te ajudo, deixa eu arrumar a minha net!

Link para o comentário
Compartilhar em outros sites

  • 0

espero mais respostas sobre o map ...

 

e esse:

 

mple position = {x = 1025, y = 1028, z = 7} - PARA ONDE O PLAYER VAI SER TELEPORTADO

 

pra onde eles vão quando? no inicio/final?

 

...

 

???

Link para o comentário
Compartilhar em outros sites

  • 0

Que eu me lembre, se voce pegou o script aqui no forum, lá tem uma imagem de explicação..

 

vo achar pra tu, calmae

 

Ja sei, essa mple position, pode ser aonde o teleporte para o CTF ira aparecer!

 

me diz aonde esta essa local que eu te falo pra que que serve...

 

SkyDangerous retirou o mod de ctf, ;/

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...