Boa noite, como faço para colocar limite de lvl no pvp? um lvl 700 esta atacando um lvl 300, nao teria como colocar uma diferença entre um e outro para que nao haja desigualdade no pvp ??
[AJUDA PVP] Level alto atacando lvl baixo

Creaturescript
local lvl_different = 300 -- se a diferença de level for 300, não da pra atacar. function onCombat(cid, target) if isPlayer(cid) and isPlayer(target) then return math.abs(getPlayerLevel(cid) - getPlayerLevel(target)) <= lvl_different end return true end
XML:
<event type="combat" name="LvL_Different" event="script" value="level_different.lua"/>
login.lua:
registerCreatureEvent(cid, "LvL_Different")
╔══════════════════════════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ══════════════════════════╗
ALGUNS DOS MEUS TRABALHOS:
Newstory dbo+nto+bleach[DOWNLOAD]
- Projetos lançados também feitos por mim {
DBO SKY
POKE SKY
WODBOWARS
Tic-tac-War
Dbo Universe(em desenvolvimento)
}
Te Ajudei? Rep + e ficamos Quits
Precisando de ajuda?
Discord: Yan Liima #3702
Programador Júnior de LUA, PHP e JavaScript
Juntos somos lendas, separados somos Mitos!
╚══════════════════════════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═════════════════════════════╝
Muito obrigado Yan, mas uma dúvida, ele não vai dar problema na hora do castle ?
34 minutos atrás, Coiyote disse:Muito obrigado Yan, mas uma dúvida, ele não vai dar problema na hora do castle ?
Puuts, bem provável que a diferença de level funcione lá também... Quando entra no castle o jogador recebe alguma storage? Porq aí poderíamos fazer com que a diferença de lvl não funcionasse com essa storage, caso exista... Se tu utiliza também aquelas opções de PvP do rme nesse seu castle, acho que daria pra fazer ignorar essa diferença de level em áreas assim.
╔══════════════════════════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ══════════════════════════╗
ALGUNS DOS MEUS TRABALHOS:
Newstory dbo+nto+bleach[DOWNLOAD]
- Projetos lançados também feitos por mim {
DBO SKY
POKE SKY
WODBOWARS
Tic-tac-War
Dbo Universe(em desenvolvimento)
}
Te Ajudei? Rep + e ficamos Quits
Precisando de ajuda?
Discord: Yan Liima #3702
Programador Júnior de LUA, PHP e JavaScript
Juntos somos lendas, separados somos Mitos!
╚══════════════════════════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═════════════════════════════╝
Boa tarde @Yan Liima, na pasta Lib eu achei isso e nele contem "storage", porem nao sei se é sobre isso que voce estava falando
Citar_Lib_Battle_Info = {
Reward = {2160,100},
Reward2 = {12780,300},
TeamOne = {name = "Demonics", storage = 140120, pos = {x=696,y=647,z=15}},
TeamTwo = {name = "Saiyajins",storage = 140121,pos = {x=759,y=688,z=15}},
storage_count = 180400,
tpPos = {x=662, y=391, z=7},
limit_Time = 10 -- em minutos
}function resetBattle()
return setGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage, 0) and setGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage, 0)
endfunction OpenWallBattle()
local B = {
-- Demonics
{1524,{x=695, y=664, z=15, stackpos = 1}},
{1524,{x=696, y=664, z=15, stackpos = 1}},
{1524,{x=697, y=664, z=15, stackpos = 1}},
{1524,{x=698, y=664, z=15, stackpos = 1}},
{1526,{x=708, y=660, z=15, stackpos = 1}},
{1526,{x=708, y=652, z=15, stackpos = 1}},
{1526,{x=708, y=651, z=15, stackpos = 1}},
{1526,{x=708, y=650, z=15, stackpos = 1}},
{1526,{x=708, y=649, z=15, stackpos = 1}},
-- Saiyajins
{1526,{x=744, y=691, z=15, stackpos = 1}},
{1526,{x=744, y=690, z=15, stackpos = 1}},
{1526,{x=744, y=689, z=15, stackpos = 1}},
{1526,{x=744, y=688, z=15, stackpos = 1}},
{1526,{x=744, y=679, z=15, stackpos = 1}},
{1524,{x=755, y=675, z=15, stackpos = 1}},
{1524,{x=756, y=675, z=15, stackpos = 1}},
{1524,{x=757, y=675, z=15, stackpos = 1}},
{1524,{x=758, y=675, z=15, stackpos = 1}}
}
for i = 1, #B do
if getTileItemById(B[2], B[1]).uid == 0 then
doCreateItem(B[1], 1, B[2])
else
doRemoveItem(getThingfromPos(B[2]).uid,1)
end
end
endfunction doBroadCastBattle(type,msg)
local players = {}
for _, cid in pairs(getPlayersOnline()) do
if getPlayerStorageValue(cid, _Lib_Battle_Info.TeamOne.storage) == 1 or getPlayerStorageValue(cid, _Lib_Battle_Info.TeamTwo.storage) == 1 then
table.insert(players, cid)
end
end
for i = 1, #players do
doPlayerSendTextMessage(players,type,msg)
end
endfunction removeBattleTp()
local t = getTileItemById(_Lib_Battle_Info.tpPos, 1387).uid
return t > 0 and doRemoveItem(t) and doSendMagicEffect(_Lib_Battle_Info.tpPos, CONST_ME_POFF)
endfunction getWinnersBattle(storage)
local players,str = {},""
for _, cid in pairs(getPlayersOnline()) do
if getPlayerStorageValue(cid, storage) == 1 then
table.insert(players, cid)
end
end
str = str .. ""..#players.." Jogador"..(#players > 1 and "es" or "").." do time "..(getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage) == 0 and _Lib_Battle_Info.TeamTwo.name or _Lib_Battle_Info.TeamOne.name).." ganharam o evento Battlefield e receberam ".._Lib_Battle_Info.Reward[2].." "..getItemNameById(_Lib_Battle_Info.Reward[1]).." + ".._Lib_Battle_Info.Reward2[2].." "..getItemNameById(_Lib_Battle_Info.Reward2[1]).."!"
for i = 1, #players do
doPlayerAddItem(players, _Lib_Battle_Info.Reward[1], _Lib_Battle_Info.Reward[2])
doPlayerAddItem(players, _Lib_Battle_Info.Reward2[1], _Lib_Battle_Info.Reward2[2])
doRemoveCondition(players, CONDITION_OUTFIT)
doTeleportThing(players, getTownTemplePosition(getPlayerTown(players)))
setPlayerStorageValue(players, storage, -1)
end
resetBattle()
OpenWallBattle()
return doBroadcastMessage(str)
endfunction CheckEvent(delay)
if delay > 0 and getGlobalStorageValue(_Lib_Battle_Info.storage_count) > 0 then
doBroadcastMessage("[BattleField] Estamos à espera de "..getGlobalStorageValue(_Lib_Battle_Info.storage_count).." jogadores para o Battlefield iniciar.")
elseif delay == 0 and getGlobalStorageValue(_Lib_Battle_Info.storage_count) > 0 then
local players = {}
for _, cid in pairs(getPlayersOnline()) do
if getPlayerStorageValue(cid, _Lib_Battle_Info.TeamOne.storage) == 1 or getPlayerStorageValue(cid, _Lib_Battle_Info.TeamTwo.storage) == 1 then
table.insert(players, cid)
end
end
for i = 1, #players do
doRemoveCondition(players, CONDITION_OUTFIT)
doTeleportThing(players, getTownTemplePosition(getPlayerTown(players)))
setPlayerStorageValue(players, getPlayerStorageValue(players, _Lib_Battle_Info.TeamOne.storage) == 1 and _Lib_Battle_Info.TeamOne.storage or _Lib_Battle_Info.TeamTwo.storage, -1)
end
doBroadcastMessage("O evento Battlefield não iniciou por não ter jogadores suficientes.")
setGlobalStorageValue(_Lib_Battle_Info.storage_count, 0)
resetBattle()
removeBattleTp()
end
addEvent(CheckEvent, 60000, delay-1)
end
Esse Castle é separado por time, certo? Então pelo pouco que vi cada time tem sua storage. Tenta ai:
local lvl_different = 300 -- se a diferença de level for 300, não da pra atacar. function onCombat(cid, target) if not getPlayerStorageValue(cid, 140120) == 1 or not getPlayerStorageValue(cid, 140121) == 1 and isPlayer(cid) and isPlayer(target) then return math.abs(getPlayerLevel(cid) - getPlayerLevel(target)) <= lvl_different end return true end
Dessa forma o script não irá funcionar pra galerinha do Castle.
Caso não dê e eu esteja enganado. Tenta dessa maneira, mas ai não teria a diferença de level pra ninguém enquanto o castle estiver ativo.
local lvl_different = 300 -- se a diferença de level for 300, não da pra atacar. function onCombat(cid, target) if not getGlobalStorageValue(180400) == 1 and isPlayer(cid) and isPlayer(target) then return math.abs(getPlayerLevel(cid) - getPlayerLevel(target)) <= lvl_different end return true end
São pequenas gambi que pode ajudar kkkk
@EDIT
Bolei uma coisa melhor aqui. Na parte do seu mapa do castle deixa como PVP Zone igual eu tinha mencionado:
O script fica dessa maneira:
local lvl_different = 300 -- se a diferença de level for 300, não da pra atacar. function onCombat(cid, target) if not getTileInfo(getThingPos(cid)).hardcore and isPlayer(cid) and isPlayer(target) then return math.abs(getPlayerLevel(cid) - getPlayerLevel(target)) <= lvl_different end return true end
É isso ai haha, abração!
╔══════════════════════════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ══════════════════════════╗
ALGUNS DOS MEUS TRABALHOS:
Newstory dbo+nto+bleach[DOWNLOAD]
- Projetos lançados também feitos por mim {
DBO SKY
POKE SKY
WODBOWARS
Tic-tac-War
Dbo Universe(em desenvolvimento)
}
Te Ajudei? Rep + e ficamos Quits
Precisando de ajuda?
Discord: Yan Liima #3702
Programador Júnior de LUA, PHP e JavaScript
Juntos somos lendas, separados somos Mitos!
╚══════════════════════════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═════════════════════════════╝
10 horas atrás, Yan Liima disse:Esse Castle é separado por time, certo? Então pelo pouco que vi cada time tem sua storage. Tenta ai:
local lvl_different = 300 -- se a diferença de level for 300, não da pra atacar. function onCombat(cid, target) if not getPlayerStorageValue(cid, 140120) == 1 or not getPlayerStorageValue(cid, 140121) == 1 and isPlayer(cid) and isPlayer(target) then return math.abs(getPlayerLevel(cid) - getPlayerLevel(target)) <= lvl_different end return true endDessa forma o script não irá funcionar pra galerinha do Castle.
Caso não dê e eu esteja enganado. Tenta dessa maneira, mas ai não teria a diferença de level pra ninguém enquanto o castle estiver ativo.
local lvl_different = 300 -- se a diferença de level for 300, não da pra atacar. function onCombat(cid, target) if not getGlobalStorageValue(180400) == 1 and isPlayer(cid) and isPlayer(target) then return math.abs(getPlayerLevel(cid) - getPlayerLevel(target)) <= lvl_different end return true endSão pequenas gambi que pode ajudar kkkk
@EDIT
Bolei uma coisa melhor aqui. Na parte do seu mapa do castle deixa como PVP Zone igual eu tinha mencionado:
O script fica dessa maneira:
local lvl_different = 300 -- se a diferença de level for 300, não da pra atacar. function onCombat(cid, target) if not getTileInfo(getThingPos(cid)).hardcore and isPlayer(cid) and isPlayer(target) then return math.abs(getPlayerLevel(cid) - getPlayerLevel(target)) <= lvl_different end return true endÉ isso ai haha, abração!
Muito obrigadooo!!!
Só uma duvida, fica muito complicado de fazer "Stages" ??
Tipo, do lvl 100 ao 300 - 300 ao 600 e assim vai ?