Postado Julho 24, 2016 10 anos Então galera, eu estou criando um otserver e tive um problema com esse evento battlefield. O problema é que quando o evento acaba, os ganhadores não são teleportados para o templo. Gostaria de ajuda, pois entendo muito pouco sobre scripts. Obrigado Ps: todo o script do evento ja está no link acima, mas se for preciso eu posto aqui também.
Postado Julho 24, 2016 10 anos 19 minutos atrás, bielmattos disse: Então galera, eu estou criando um otserver e tive um problema com esse evento battlefield. O problema é que quando o evento acaba, os ganhadores não são teleportados para o templo. Gostaria de ajuda, pois entendo muito pouco sobre scripts. Obrigado Ps: todo o script do evento ja está no link acima, mas se for preciso eu posto aqui também. Troque isso: doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) por isso: local tab = { pos = {x = 1017, y = 1020, z = 7} -- posição x, y, z do seu templo doTeleportThing(cid, tab.pos) em data/lib/battlelib.lua
Postado Julho 24, 2016 10 anos Autor Então @Kemmlly, eu fiz isso e no meu server log aparece esse erro
Postado Julho 24, 2016 10 anos 2 minutos atrás, bielmattos disse: Então @Kemmlly, eu fiz isso e no meu server log aparece esse erro Aonde você colocou essa parte que te mandei? Em que parte do script? Manda ele aí pra mim
Postado Julho 24, 2016 10 anos Autor @Kemmlly eu botei de duas formas e todas as duas deram errado. Toda as duas em data/lib/Battlelib Antes de eu mostrar o que fiz, que fique claro que sou um completo retartado em scripts (UHSAIUGSIAU) A primeira foi dessa forma. Spoiler _Lib_Battle_Info = { Reward = { exp = {true, 1000000}, items = {true, 6527, 1}, premium_days = {false, 2} }, TeamOne = {name = "Black Assassins", storage = 140120, pos = {x=409,y=168,z=7}}, TeamTwo = {name = "Red Barbarians",storage = 140121,pos = {x=375,y=168,z=7}}, storage_count = 180400, tpPos = {x=150, y=47, z=7},local tab = { pos = {x = 160, y = 54, z = 7} -- posição x, y, z do seu templo limit_Time = 10 -- limite de tempo para adentrar o evento } function resetBattle() setGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage, 0) setGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage, 0) end function OpenWallBattle() local B = { {9118,{x=385, y=157, z=6, stackpos = 1}}, {9118,{x=385, y=158, z=6, stackpos = 1}}, {9118,{x=385, y=159, z=6, stackpos = 1}}, {9118,{x=385, y=160, z=6, stackpos = 1}}, {9118,{x=385, y=161, z=6, stackpos = 1}}, {9118,{x=385, y=162, z=6, stackpos = 1}}, {9118,{x=396, y=157, z=6, stackpos = 1}}, {9118,{x=396, y=158, z=6, stackpos = 1}}, {9118,{x=396, y=159, z=6, stackpos = 1}}, {9118,{x=396, y=160, z=6, stackpos = 1}}, {9118,{x=396, y=161, z=6, stackpos = 1}}, {9118,{x=396, y=162, z=6, stackpos = 1}}, {3517,{x=392, y=171, z=6, stackpos = 1}}, {3517,{x=392, y=172, z=6, stackpos = 1}}, {3517,{x=392, y=173, z=6, stackpos = 1}}, {3517,{x=392, y=174, z=6, stackpos = 1}}, {1543,{x=186, y=57, z=7, 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) 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 doPlayerSendTextMessage(cid,type,msg) end 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 str, c = "" , 0 for _, cid in pairs(getPlayersOnline()) do if getPlayerStorageValue(cid, storage) == 1 then if _Lib_Battle_Info.Reward.exp[1] == true then doPlayerAddExperience(cid, _Lib_Battle_Info.Reward.exp[2]) end if _Lib_Battle_Info.Reward.items[1] == true then doPlayerAddItem(cid, _Lib_Battle_Info.Reward.items[2], _Lib_Battle_Info.Reward.items[3]) end if _Lib_Battle_Info.Reward.premium_days[1] == true then doPlayerAddPremiumDays(cid, _Lib_Battle_Info.Reward.premium_days[2]) end doRemoveCondition(cid, CONDITION_OUTFIT) doTeleportThing(cid, tab.pos) setPlayerStorageValue(cid, storage, -1) c = c+1 end end str = str .. ""..c.." Player"..(c > 1 and "s" or "").." from team "..(getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage) == 0 and _Lib_Battle_Info.TeamTwo.name or _Lib_Battle_Info.TeamOne.name).." won the event battlefield!" resetBattle() OpenWallBattle() return doBroadcastMessage(str) end function CheckEvent(delay) if delay > 0 and getGlobalStorageValue(_Lib_Battle_Info.storage_count) > 0 then doBroadcastMessage("[BattleField Event] We are waiting "..getGlobalStorageValue(_Lib_Battle_Info.storage_count).." players to Battlefield starts") elseif delay == 0 and getGlobalStorageValue(_Lib_Battle_Info.storage_count) > 0 then 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 doRemoveCondition(cid, CONDITION_OUTFIT) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) setPlayerStorageValue(cid, _Lib_Battle_Info.TeamOne.storage, -1) setPlayerStorageValue(cid, _Lib_Battle_Info.TeamTwo.storage, -1) end end doBroadcastMessage("The event cannot be started because not had enough players.") setGlobalStorageValue(_Lib_Battle_Info.storage_count, 0) resetBattle() removeBattleTp() end addEvent(CheckEvent, 60000, delay-1) end E a segunda foi dessa forma Spoiler _Lib_Battle_Info = { Reward = { exp = {true, 1000000}, items = {true, 6527, 1}, premium_days = {false, 2} }, TeamOne = {name = "Black Assassins", storage = 140120, pos = {x=409,y=168,z=7}}, TeamTwo = {name = "Red Barbarians",storage = 140121,pos = {x=375,y=168,z=7}}, storage_count = 180400, tpPos = {x=150, y=47, z=7}, limit_Time = 10 -- limite de tempo para adentrar o evento } function resetBattle() setGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage, 0) setGlobalStorageValue(_Lib_Battle_Info.TeamTwo.storage, 0) end function OpenWallBattle() local B = { {9118,{x=385, y=157, z=6, stackpos = 1}}, {9118,{x=385, y=158, z=6, stackpos = 1}}, {9118,{x=385, y=159, z=6, stackpos = 1}}, {9118,{x=385, y=160, z=6, stackpos = 1}}, {9118,{x=385, y=161, z=6, stackpos = 1}}, {9118,{x=385, y=162, z=6, stackpos = 1}}, {9118,{x=396, y=157, z=6, stackpos = 1}}, {9118,{x=396, y=158, z=6, stackpos = 1}}, {9118,{x=396, y=159, z=6, stackpos = 1}}, {9118,{x=396, y=160, z=6, stackpos = 1}}, {9118,{x=396, y=161, z=6, stackpos = 1}}, {9118,{x=396, y=162, z=6, stackpos = 1}}, {3517,{x=392, y=171, z=6, stackpos = 1}}, {3517,{x=392, y=172, z=6, stackpos = 1}}, {3517,{x=392, y=173, z=6, stackpos = 1}}, {3517,{x=392, y=174, z=6, stackpos = 1}}, {1543,{x=186, y=57, z=7, 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) 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 doPlayerSendTextMessage(cid,type,msg) end 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 str, c = "" , 0 for _, cid in pairs(getPlayersOnline()) do if getPlayerStorageValue(cid, storage) == 1 then if _Lib_Battle_Info.Reward.exp[1] == true then doPlayerAddExperience(cid, _Lib_Battle_Info.Reward.exp[2]) end if _Lib_Battle_Info.Reward.items[1] == true then doPlayerAddItem(cid, _Lib_Battle_Info.Reward.items[2], _Lib_Battle_Info.Reward.items[3]) end if _Lib_Battle_Info.Reward.premium_days[1] == true then doPlayerAddPremiumDays(cid, _Lib_Battle_Info.Reward.premium_days[2]) end doRemoveCondition(cid, CONDITION_OUTFIT)local tab = { pos = {x = 160, y = 54, z = 7} -- posição x, y, z do seu templo doTeleportThing(cid, tab.pos) setPlayerStorageValue(cid, storage, -1) c = c+1 end end str = str .. ""..c.." Player"..(c > 1 and "s" or "").." from team "..(getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage) == 0 and _Lib_Battle_Info.TeamTwo.name or _Lib_Battle_Info.TeamOne.name).." won the event battlefield!" resetBattle() OpenWallBattle() return doBroadcastMessage(str) end function CheckEvent(delay) if delay > 0 and getGlobalStorageValue(_Lib_Battle_Info.storage_count) > 0 then doBroadcastMessage("[BattleField Event] We are waiting "..getGlobalStorageValue(_Lib_Battle_Info.storage_count).." players to Battlefield starts") elseif delay == 0 and getGlobalStorageValue(_Lib_Battle_Info.storage_count) > 0 then 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 doRemoveCondition(cid, CONDITION_OUTFIT) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) setPlayerStorageValue(cid, _Lib_Battle_Info.TeamOne.storage, -1) setPlayerStorageValue(cid, _Lib_Battle_Info.TeamTwo.storage, -1) end end doBroadcastMessage("The event cannot be started because not had enough players.") setGlobalStorageValue(_Lib_Battle_Info.storage_count, 0) resetBattle() removeBattleTp() end addEvent(CheckEvent, 60000, delay-1) end
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.