Postado Outubro 22, 2017 7 anos Tem um banco global storage, como assim aushusahu não vi nada lá no script do link de mandar pro banco, não vou ficar procurando vou tentar fazer do meu jeito aí Vai no banco, na tabela guilds e adiciona a coluna castleowner, põe default pra ser 0 e põe pra poder ser nil também pra evitar bugs. Edita o script castlewar1 pra isso aqui Spoiler function onUse(cid, item, frompos, item2, topos) local castle_one_name = "Castle24h" -- Nome do castelo 1 local storages = {154154,54321,123123} -- Storages ( se vc eh iniciante, deixe como está...) local premio_por_vezes = 1 -- Premio por vezes de conquista de castelo. (1) = Ativo (0) = Desativa. local premio_vezes = 15 -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO. local premio = 5468 -- ID do Premio local premio_cont = 1 -- Quantidade do Premio local premio_reset = 1 -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM (0) = NAO local sto_ativ = getGlobalStorageValue(storages[2]) position = getCreaturePosition(cid) if isPlayerGuild(cid) == TRUE then if sto_ativ == 1 or sto_ativ == -1 then guildname = getPlayerGuildName(cid) guild = getPlayerGuildId(cid) guild_sto = getGlobalStorageValue(storages[3]) if guild ~= guild_sto then setPlayerStorageValue(cid,guild_sto,guild) if getPlayerStorageValue(cid,storages[1]) == -1 then setPlayerStorageValue(cid,storages[1],0) end sto_vezes = getPlayerStorageValue(cid,storages[1]) setGlobalStorageValue(storages[3],getPlayerGuildId(cid)) setPlayerStorageValue(cid,storages[1], sto_vezes + 1) sto_vezes_total = getPlayerStorageValue(cid,storages[1]) doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o castelo "..castle_one_name.." para a guild \""..guildname.."\" pela "..sto_vezes_total.."ª vez(s).", 22) db.executeQuery("UPDATE `guilds` SET `castleowner` = 0;") db.executeQuery("UPDATE `guilds` SET `castleowner` = 1 WHERE `guilds`.`id` = ".. guild ..";") doSendMagicEffect(position, 39) if premio_por_vezes == 1 then if getPlayerStorageValue(cid,storages[1]) == premio_vezes then if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then doBroadcastMessage("O "..getCreatureName(cid).." ganhou uma(o) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!", 21) doPlayerAddItem(cid, premio,premio_cont) doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!") ----------------------------------------------- -- if premio_reset == 1 then -- setPlayerStorageValue(cid,storages[1],0) -- Resetar a contagem end -- ----------------------------------------------- -- else doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!") addEvent(additem,10000,cid,premio,premio_cont,premio_reset) end end end else doPlayerSendCancel(cid,"Este castelo ja foi conquistado pela sua guild!") doSendMagicEffect(position, 2) end else doPlayerSendCancel(cid,"O sistema está desativado") end else doPlayerSendCancel(cid,"É nescessario ter guild para dominar o castelo!") doSendMagicEffect(position, 2) end end function additem(cid,premio,premio_cont,premio_reset) if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then doPlayerAddItem(cid, premio,premio_cont) doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!") if premio_reset == 1 then setPlayerStorageValue(cid,storages[1],0) end stopEvent(additem) else doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Verificando novamente em 10 segundos!") addEvent(additem,10000,cid) end end function isPlayerGuild(cid) if getPlayerGuildName(cid) ~= "" then return TRUE else return FALSE end end Edita esse script ae do gesior pra isso Spoiler <div class="sidebar"> <?php $guild = $SQL->query('SELECT * FROM `guilds` WHERE `castleowner`=1;'); ?> <style type="text/css" media="all"> .name { position: relative; top:40px; text-align: center; font-family: Tahoma, Geneva, sans-serif; font-size: 9.2pt; color: #FFF; font-weight: bold; } .logo { position: relative; top: 50px; text-align: center; } .CastleWarbox { position: relative; margin-top: 10px; margin-bottom: 5px; width: 200px; height: 200px; } </style> <div id="CastleWar" class="CastleWarbox" style="background-image:url(https://i.imgur.com/ASZv7fN.png);"> <?php if ($guild) { ?> <div class="logo"> <img style="max-height:100px;" src="<?php logo_exists($guild['name']); ?>"> </div> <div class = "name"> <?php echo '<br><a href="guilds.php?name='.$guild['name'].'">'.$guild["name"].'</a><br>';?> </div> <?php }else ?> <div class = "name"> <?php echo '<br><br><br><p>No Have Owner</p><br>';?> </div> </div> </div> Não testei pode ter uns erros de coisas que esqueci Esse script castlewar1 é executado só uma vez quando o jogador ganha, ou pra cada jogador da guilda que ganhou? Se for pra cada jogador, me fala qual arquivo começa o sistema, tipo, o primeiro a ser executado, porque aí tenho que usar uma storage. Se der erro na minha array ali eu arrumo separado, até porque é mais rápido que usar *. Spoiler Se der erro nessa linha db.executeQuery("UPDATE `guilds` SET `castleowner` = 1 WHERE `guilds`.`id` = ".. guild ..";") Usa assim db.executeQuery("UPDATE `guilds` SET `castleowner` = 1 WHERE `id` = ".. guild ..";") Editado Outubro 22, 2017 7 anos por psychonaut (veja o histórico de edições) Life is so meaningless, there is nothing worth a smile So goodbye, I'll miss you sugestões?
Postado Outubro 22, 2017 7 anos Autor @psychonaut O script executou certinho na database só que na parte php ele não está lendo... fica assim
Postado Outubro 22, 2017 7 anos Tipo, no banco ta indo o valor lá e em uma guilda só? Tenta assim, achei algo no gesior pra guildas já, o echo é só pra testar, se der certo é só remover. Se der erro nesse, remove a linha $guild = $guild['name'] e tenta dnv. Spoiler <div class="sidebar"> <?php $guild = $SQL->query('SELECT `name` FROM `guilds` WHERE `castleowner`=1;'); $guild = $guild['name']; echo $guild; ?> <style type="text/css" media="all"> .name { position: relative; top:40px; text-align: center; font-family: Tahoma, Geneva, sans-serif; font-size: 9.2pt; color: #FFF; font-weight: bold; } .logo { position: relative; top: 50px; text-align: center; } .CastleWarbox { position: relative; margin-top: 10px; margin-bottom: 5px; width: 200px; height: 200px; } </style> <div id="CastleWar" class="CastleWarbox" style="background-image:url(https://i.imgur.com/ASZv7fN.png);"> <?php if ($guild) { ?> <div class="logo"> <img style="max-height:100px;" src="<?php logo_exists($guild); ?>"> </div> <div class = "name"> <?php echo '<br><a href="guilds.php?name='.$guild.'">'.$guild.'</a><br>';?> </div> <?php }else ?> <div class = "name"> <?php echo '<br><br><br><p>No Have Owner</p><br>';?> </div> </div> </div> Não deu erro no php? Edit: Achei uma classe pras guilds no gesior se quiser tentar usar. Spoiler <div class="sidebar"> <?php $guild_id = $SQL->query('SELECT `id` FROM `guilds` WHERE `castleowner`=1;'); $guild_id = $guild_id['id']; $guild = new Guild(); $guild->load($guild_id); ?> <style type="text/css" media="all"> .name { position: relative; top:40px; text-align: center; font-family: Tahoma, Geneva, sans-serif; font-size: 9.2pt; color: #FFF; font-weight: bold; } .logo { position: relative; top: 50px; text-align: center; } .CastleWarbox { position: relative; margin-top: 10px; margin-bottom: 5px; width: 200px; height: 200px; } </style> <div id="CastleWar" class="CastleWarbox" style="background-image:url(https://i.imgur.com/ASZv7fN.png);"> <?php if($guild->isLoaded()) { $guildname = htmlspecialchars($guild->getName()); ?> <div class="logo"> <img style="max-height:100px;" src="<?php echo $guild->getGuildLogoLink(); ?>"> </div> <div class = "name"> <?php echo '<br><a href="guilds.php?name='.$guildname.'">'.$guildname.'</a><br>';?> </div> <?php }else ?> <div class = "name"> <?php echo '<br><br><br><p>No Have Owner</p><br>';?> </div> </div> </div> Editado Outubro 22, 2017 7 anos por psychonaut (veja o histórico de edições) Life is so meaningless, there is nothing worth a smile So goodbye, I'll miss you sugestões?
Postado Outubro 22, 2017 7 anos o meu script na lib eu adicionei o executeQuery lá mais não foi. dá erro. poderia ver ? Realcastle.lib Spoiler --[[ Real Castle Event Desenvolvido por Vítor Bertolucci (Killua) ]] realCastle = { open_storage = 100005, guild_storage = 100006, date_storages = {100007,100008,100009}, frompos = {x = 63, y = 454, z = 7}, topos = {x = 198, y = 530, z = 7} } realCastle.removePlayers = function() local first_cave = getPlayersInArea({x = 2829, y = 7, z = 7},{x = 3118, y = 467, z = 7}) local second_cave = getPlayersInArea({x = 2902, y = 340, z = 7},{x = 3445, y = 585, z = 7}) local fifith_cave = getPlayersInArea({x = 3304, y = 192, z = 7},{x = 3687, y = 340, z = 7}) local sixth_cave = getPlayersInArea({x = 3595, y = 260, z = 8},{x = 3689, y = 338, z = 8}) local seventh_cave = getPlayersInArea({x = 3616, y = 270, z = 9},{x = 3680, y = 341, z = 9}) local eight_cave = getPlayersInArea({x = 3445, y = 175, z = 6},{x = 3515, y = 241, z = 6}) local ninth_cave = getPlayersInArea({x = 3445, y = 175, z = 5},{x = 3515, y = 241, z = 5}) local tenth_cave = getPlayersInArea({x = 3445, y = 175, z = 4},{x = 3515, y = 241, z = 4}) local eleventh_cave = getPlayersInArea({x = 3143, y = 342, z = 8},{x = 3246, y = 423, z = 8}) local castle_area = getPlayersInArea(realCastle.frompos,realCastle.topos) if first_cave then for _, pid in pairs(first_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if second_cave then for _, pid in pairs(second_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end for _, tid in pairs(getPlayersOnline()) do local pos = getThingPos(tid) if pos.x >= 2829 and pos.x <= 3118 and pos.y >= 7 and pos.y <= 467 then doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(tid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end for _, tid in pairs(getPlayersOnline()) do local pos = getThingPos(tid) if pos.x >= 2902 and pos.x <= 3445 and pos.y >= 340 and pos.y <= 585 then doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(tid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end for _, tid in pairs(getPlayersOnline()) do local pos = getThingPos(tid) if pos.x >= 3304 and pos.x <= 3687 and pos.y >= 192 and pos.y <= 340 then doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(tid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if fifith_cave then for _, pid in pairs(fifith_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if sixth_cave then for _, pid in pairs(sixth_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if seventh_cave then for _, pid in pairs(seventh_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if eight_cave then for _, pid in pairs(eight_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if ninth_cave then for _, pid in pairs(ninth_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if tenth_cave then for _, pid in pairs(tenth_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if eleventh_cave then for _, pid in pairs(eleventh_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if castle_area then for _, pid in pairs(castle_area) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end end realCastle.open = function() setGlobalStorageValue(realCastle.open_storage,1) setGlobalStorageValue(realCastle.guild_storage,-1) realCastle.removePlayers() end realCastle.close = function() setGlobalStorageValue(realCastle.open_storage,-1) 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("[New Castle] A batalhar terminou e nenhuma guild conseguiu dominar o castelo! Amanhã às 21:00 vocês podem tentar novamente!") else doBroadcastMessage("[New Castle] A batalha terminou e a guild vencedora foi "..getGuildNameByID(getGlobalStorageValue(realCastle.guild_storage)).."! Todos os jogadores dessa guild agora podem aproveitar o castelo até amanhâ às 21:00!") end 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) setGuildRealCastle(cid) realCastle.broadcast("[New Castle] O jogador "..getPlayerName(cid).." da guild "..getPlayerGuildName(cid).." dominou o castelo! As outras guilds têm até às 22:30 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 function setGuildRealCastle(cid) db.query("UPDATE `guilds` SET `castleowner` = 0;") db.query("UPDATE `guilds` SET `castleowner` = 1 WHERE `id` = ".. guild ..";") end [Error - Action Interface] data/actions/scripts/events/realCastle.lua:onUse Description: data/lib/realCastle.lua:150: attempt to concatenate global 'guild' (a nil value) stack traceback: data/lib/realCastle.lua:150: in function 'setGuildRealCastle' data/lib/realCastle.lua:138: in function 'domain' data/actions/scripts/events/realCastle.lua:24: in function <data/actions/scripts/events/realCastle.lua:8>
Postado Outubro 22, 2017 7 anos A função tá errada, teria quer receber mais um valor pra guilda, mas dá pra incorporar no script já. Não sei dessa função que você colocou mas se não tiver usando mais, remove lá no fim. Spoiler --[[ Real Castle Event Desenvolvido por Vítor Bertolucci (Killua) ]] realCastle = { open_storage = 100005, guild_storage = 100006, date_storages = {100007,100008,100009}, frompos = {x = 63, y = 454, z = 7}, topos = {x = 198, y = 530, z = 7} } realCastle.removePlayers = function() local first_cave = getPlayersInArea({x = 2829, y = 7, z = 7},{x = 3118, y = 467, z = 7}) local second_cave = getPlayersInArea({x = 2902, y = 340, z = 7},{x = 3445, y = 585, z = 7}) local fifith_cave = getPlayersInArea({x = 3304, y = 192, z = 7},{x = 3687, y = 340, z = 7}) local sixth_cave = getPlayersInArea({x = 3595, y = 260, z = 8},{x = 3689, y = 338, z = 8}) local seventh_cave = getPlayersInArea({x = 3616, y = 270, z = 9},{x = 3680, y = 341, z = 9}) local eight_cave = getPlayersInArea({x = 3445, y = 175, z = 6},{x = 3515, y = 241, z = 6}) local ninth_cave = getPlayersInArea({x = 3445, y = 175, z = 5},{x = 3515, y = 241, z = 5}) local tenth_cave = getPlayersInArea({x = 3445, y = 175, z = 4},{x = 3515, y = 241, z = 4}) local eleventh_cave = getPlayersInArea({x = 3143, y = 342, z = 8},{x = 3246, y = 423, z = 8}) local castle_area = getPlayersInArea(realCastle.frompos,realCastle.topos) if first_cave then for _, pid in pairs(first_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if second_cave then for _, pid in pairs(second_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end for _, tid in pairs(getPlayersOnline()) do local pos = getThingPos(tid) if pos.x >= 2829 and pos.x <= 3118 and pos.y >= 7 and pos.y <= 467 then doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(tid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end for _, tid in pairs(getPlayersOnline()) do local pos = getThingPos(tid) if pos.x >= 2902 and pos.x <= 3445 and pos.y >= 340 and pos.y <= 585 then doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(tid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end for _, tid in pairs(getPlayersOnline()) do local pos = getThingPos(tid) if pos.x >= 3304 and pos.x <= 3687 and pos.y >= 192 and pos.y <= 340 then doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(tid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if fifith_cave then for _, pid in pairs(fifith_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if sixth_cave then for _, pid in pairs(sixth_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if seventh_cave then for _, pid in pairs(seventh_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if eight_cave then for _, pid in pairs(eight_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if ninth_cave then for _, pid in pairs(ninth_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if tenth_cave then for _, pid in pairs(tenth_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if eleventh_cave then for _, pid in pairs(eleventh_cave) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end if castle_area then for _, pid in pairs(castle_area) do doTeleportThing(pid,getTownTemplePosition(1)) doPlayerPopupFYI(pid,"O domínio de sua guild sob o castelo acabou e uma nova batalha está se iniciando.") end end end realCastle.open = function() setGlobalStorageValue(realCastle.open_storage,1) setGlobalStorageValue(realCastle.guild_storage,-1) realCastle.removePlayers() end realCastle.close = function() setGlobalStorageValue(realCastle.open_storage,-1) 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("[New Castle] A batalhar terminou e nenhuma guild conseguiu dominar o castelo! Amanhã às 21:00 vocês podem tentar novamente!") else doBroadcastMessage("[New Castle] A batalha terminou e a guild vencedora foi "..getGuildNameByID(getGlobalStorageValue(realCastle.guild_storage)).."! Todos os jogadores dessa guild agora podem aproveitar o castelo até amanhâ às 21:00!") db.query("UPDATE `guilds` SET `castleowner` = 0;") db.query("UPDATE `guilds` SET `castleowner` = 1 WHERE `id` = ".. getGlobalStorageValue(realCastle.guild_storage) ..";") end 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) setGuildRealCastle(cid) realCastle.broadcast("[New Castle] O jogador "..getPlayerName(cid).." da guild "..getPlayerGuildName(cid).." dominou o castelo! As outras guilds têm até às 22:30 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 function setGuildRealCastle(cid) return true end Life is so meaningless, there is nothing worth a smile So goodbye, I'll miss you sugestões?
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.