Postado Maio 11, 2021 4 anos TFS 0.4 Bom tenho esse sistema de castle, esta funciona bem, o único defeito é que ele não entrega os 30% de exp a mais para os membros da guild dominante, vou postar o script se alguém conseguir ajuda a resolver agradeço. action alavanca: Spoiler --[[ Real Castle Event Desenvolvido por Vítor Bertolucci (Killua) ]] function onUse(cid, item, frompos, item2, topos) if item.uid == 61466 then local guild = getGlobalStorageValue(realCastle.guild_storage) > 1 and "a guild "..getGuildNameByID(getGlobalStorageValue(realCastle.guild_storage)).." possui o domínio" or "nenhuma guild possui o domínio do castelo" local sto = realCastle.dateStorages local gsto = getGlobalStorageValue local time = gsto(sto[1]).."/"..gsto(sto[2]).."/"..gsto(sto[3]) local domain = realCastle.isOpen() and "as guilds estão batalhando pelo domínio do castelo" or guild local msg = " -----------[CASTLE WAR]---------\n\n\nAtualmente "..domain..".\n\nPróxima batalha: "..time.." às 21:00." doShowTextDialog(cid,8977,msg) return true end if not realCastle.isOpen() then doTeleportThing(cid,getTownTemplePosition(1)) return true end if not realCastle.isDominating(cid) then realCastle.domain(cid) doSendMagicEffect(getThingPos(cid), CONST_ME_CRAPS) else doPlayerSendCancel(cid,"Sua guild já está com o domínio do castelo.") end return true end creaturescripts login.lua Spoiler local storage_guild = getGlobalStorageValue(123123) if getPlayerGuildId(cid) == storage_guild then rate = rate + 0.1 doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Sua guild domina o castelo, por isso você vai receber 10% a mais de EXP.") end if realCastle.isDominating(cid) then rate = rate + 0.2 doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Sua guild domina o PvP Castle, por isso você vai receber 30% a mais de EXP.") end doPlayerSetExperienceRate(cid, rate) globalevents não achei necessario postar pois só o open e o close do sistema Lib Spoiler realCastle = { open_storage = 100005, guild_storage = 100006, dateStorages = {100007,100008,100009}, frompos = {x = 2189, y = 522, z = 6}, topos = {x = 2282, y = 614, z = 6}, storages = { -- só modifique os storages se necessário accessTime = 100010, running = 100013 } } realCastle.open = function() setGlobalStorageValue(realCastle.open_storage,1) setGlobalStorageValue(realCastle.guild_storage,-1) setGlobalStorageValue(realCastle.storages.running, 1) end realCastle.close = function() setGlobalStorageValue(realCastle.open_storage,-1) local tomorrow = getTomorrowsDate() local tomorrowString = tomorrow[1].."/"..tomorrow[2].."/"..tomorrow[3] for i = 1, 3 do setGlobalStorageValue(realCastle.dateStorages[i], tomorrow[i]) end local players = getPlayersInArea(realCastle.frompos, realCastle.topos) if players then for _, pid in pairs(players) do doTeleportThing(pid,getTownTemplePosition(1)) end end if getGlobalStorageValue(realCastle.guild_storage) == -1 then doBroadcastMessage("[Castle WAR] A batalha terminou e nenhuma guild conseguiu dominar o castelo!") else doBroadcastMessage("[Castle WAR] A batalha terminou e a guild vencedora foi "..getGuildNameByID(getGlobalStorageValue(realCastle.guild_storage)).."! Todos os jogadores dessa guild agora tem 30% a + de experiencia!") end local func = db.query or db.executeQuery func("DELETE FROM real_castle WHERE world_id = '"..getWorldId().."'") func("INSERT INTO real_castle (guild_name, guild_id, tomorrow, world_id) VALUES ('"..getGuildNameByID(getGlobalStorageValue(realCastle.guild_storage)).."', '"..getGlobalStorageValue(realCastle.guild_storage).."', '"..tomorrowString.."', '"..getWorldId().."')") setGlobalStorageValue(realCastle.storages.running, -1) doSaveServer() end realCastle.broadcast = function(message) local players = getPlayersInArea(realCastle.frompos, realCastle.topos) if players then for _, pid in pairs(players) do doPlayerSendTextMessage(pid,MESSAGE_STATUS_WARNING,message) end end end realCastle.domain = function(cid) local guild_id = getPlayerGuildId(cid) setGlobalStorageValue(realCastle.guild_storage,guild_id) doBroadcastMessage("[Castle WAR] O jogador "..getPlayerName(cid).." da guild "..getPlayerGuildName(cid).." dominou o castelo! As outras guilds têm até às 22:00 para conseguir tirar o domínio deles, não desistam!") end realCastle.isDominating = function(cid) local guild_id = getPlayerGuildId(cid) return guild_id == getGlobalStorageValue(realCastle.guild_storage) end realCastle.isOpen = function() return getGlobalStorageValue(realCastle.open_storage) == 1 end --- Config by Dwarfer realCastle.isRunning = function() return getGlobalStorageValue(realCastle.storages.running) ~= -1 end Editado Maio 11, 2021 4 anos por Apache (veja o histórico de edições)
Postado Maio 11, 2021 4 anos As storages estão corretas? Pq, no login, remete a storage(123123), mas não está citada em outros arquivos. Outra coisa, aparece as 2 mensagens ao logar com um player que esteja na guilda dominante?
Postado Maio 11, 2021 4 anos Autor 3 horas atrás, Toruk disse: As storages estão corretas? Pq, no login, remete a storage(123123), mas não está citada em outros arquivos. Outra coisa, aparece as 2 mensagens ao logar com um player que esteja na guilda dominante? então mano nao aparece nenhuma mensagem ao logar... a storage 123123 é para o castle 24hrs que nao esta em uso eu penso que o que esta puxando o dominante é realCastle.isDominating Spoiler if not realCastle.isOpen() then doTeleportThing(cid,getTownTemplePosition(1)) return true end if not realCastle.isDominating(cid) then realCastle.domain(cid) doSendMagicEffect(getThingPos(cid), CONST_ME_CRAPS) else doPlayerSendCancel(cid,"Sua guild já está com o domínio do castelo.") end return true end essa parte da action não esta funcionando também, quando o dominante puxa a alavanca novamente apos o dominio não aparece nenhuma mensagem, e se for alguem que não tem o dominio puxar a alavanca, só é teleportado ao templo e nao aparece nada.
Postado Maio 11, 2021 4 anos Solução Dentro de login.lua na função > function onLogin(cid) < você adiciona, no meu caso são 2 castle o 48 e 24 horas, você so vai substituir para o storage do castle do seu server --Castle local rate = 1 local storage_guild = getGlobalStorageValue(123123) if getPlayerGuildId(cid) == storage_guild then rate = rate + 0.4 --doPlayerSetExperienceRate(cid, getPlayerRates(cid)[8] + 0.3) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"[Castle24hrs]:Sua guild dominou, por isso você esta com 30% a mais de EXP.") end if realCastle.isDominating(cid) then rate = rate + 0.3 --doPlayerSetExperienceRate(cid, getPlayerRates(cid)[8] + 0.2) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"[Tribo - Castle]: Sua Guild Dominou o , por isso você vai receber 20% a mais de EXP.") end doPlayerSetExperienceRate(cid, rate)
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.