Coiyote 1 Postado Maio 5, 2020 Share Postado Maio 5, 2020 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 ?? Link para o comentário Compartilhar em outros sites More sharing options...
0 Diretor Yan Liima 577 Postado Maio 7, 2020 Diretor Share Postado Maio 7, 2020 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! Coiyote reagiu a isso 1 Link para o comentário Compartilhar em outros sites More sharing options...
0 Diretor Yan Liima 577 Postado Maio 6, 2020 Diretor Share Postado Maio 6, 2020 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") Coiyote reagiu a isso 1 Link para o comentário Compartilhar em outros sites More sharing options...
0 Coiyote 1 Postado Maio 6, 2020 Autor Share Postado Maio 6, 2020 Muito obrigado Yan, mas uma dúvida, ele não vai dar problema na hora do castle ? Link para o comentário Compartilhar em outros sites More sharing options...
0 Diretor Yan Liima 577 Postado Maio 6, 2020 Diretor Share Postado Maio 6, 2020 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. Link para o comentário Compartilhar em outros sites More sharing options...
0 Coiyote 1 Postado Maio 6, 2020 Autor Share Postado Maio 6, 2020 (editado) 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) end function 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 end function 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 end function 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) end function 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) end function 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 Editado Maio 6, 2020 por Coiyote Link para o comentário Compartilhar em outros sites More sharing options...
0 Coiyote 1 Postado Maio 7, 2020 Autor Share Postado Maio 7, 2020 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 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! Muito obrigadooo!!! Só uma duvida, fica muito complicado de fazer "Stages" ?? Tipo, do lvl 100 ao 300 - 300 ao 600 e assim vai ? Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Coiyote 1
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 ??
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados