Postado Maio 3, 2019 6 anos OLÁ A TODOS! SE ALGUEM PUDER AJUDAR PORFAVOR, E SÓ UM PEDIDO , ( NAO MANDEM MENSAGEM INBOX PEDINDO DINHEIRO PARA RESOLVER), SE PUDER AJUDAR SOMOS TODOS MUITO GRATOS !RESUMO! 1°- SOMENTE PODERÁ USAR COMANDO ENTROSA SE AS GUILDS ESTIVEREM COM WAR SISTEM ATIVADO ; (pois podem usar o comando mesmo sem estarem em war) A funçao na script de que os players precisam estar em war nao funciona! WarEntrosa.lua Spoiler local arena_storage = 454645 local players_storage = 888125 local storage_accept = 151814 local storage_check = 153049 local guild_invite = 542115 local guild_accept = 456311 local time_1_pos = {x=811,y=67,z=7} local time_2_pos = {x=875,y=135,z=7} local city = "darashia" local function getOnlineGuildMembersByRank(guildId, rank, selectLowerRanks) if not rank then rank = 3 selectLowerRanks = true end local list = {} for _, pid in pairs(getPlayersOnline()) do if getPlayerGuildId(pid) == guildId then local playerRank = getPlayerGuildLevel(pid) if playerRank == rank or (selectLowerRanks and playerRank <= rank) then table.insert(list, pid) end end end return list end function onSay(cid, words, param, channel) if param == "" then doPlayerSendCancel(cid, "Use os parametros corretos.") return true end if getPlayerLevel(cid) <= 30 then doPlayerSendCancel(cid, "Voce nao tem level suficiente.") return true end local t = string.explode(param, ",") if t[1] == "invite" then if getPlayerGuildLevel(cid) < 3 then doPlayerSendCancel(cid, "Somente liders de guild podem usar esse comando.") return true end if getGuildId(t[2]) and getGuildId(t[2]) ~= getPlayerGuildId(cid) then if #getOnlineGuildMembersByRank(getGuildId(t[2]), 3, false) > 0 then if getGlobalStorageValue(arena_storage) <= os.time() then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Voce convidou a guild "..t[2].." para uma war em "..city.."!") for _, gid in pairs(getOnlineGuildMembersByRank(getGuildId(t[2]), 3, false)) do doPlayerSendTextMessage(gid, MESSAGE_STATUS_CONSOLE_ORANGE, getCreatureName(cid).." da guild "..getPlayerGuildName(cid).." chamou sua guild para uma war em "..city.." Para aceitar diga /war"..city.." accept, "..getPlayerGuildName(cid)..".") setPlayerStorageValue(gid, storage_accept, os.time() + 20*60) setPlayerStorageValue(gid, storage_check, getPlayerGuildId(cid)) end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "A arena ja esta ocupada.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Nenhum lider da guild "..t[2].." esta online.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Essa guild nao existe.") end elseif t[1] == "accept" then if getPlayerGuildLevel(cid) < 3 then doPlayerSendCancel(cid, "Somente liders de guild podem usar esse comando.") return true end if getGuildId(t[2]) and getGuildId(t[2]) ~= getPlayerGuildId(cid) then if getPlayerStorageValue(cid, storage_accept) > os.time() then if getPlayerStorageValue(cid, storage_check) == getGuildId(t[2]) then setGlobalStorageValue(arena_storage, os.time() + 3600) setGlobalStorageValue(guild_accept, getPlayerGuildId(cid)) setGlobalStorageValue(guild_invite, getGuildId(t[2])) if #getOnlineGuildMembersByRank(getGuildId(t[2]), 3, true) > 0 then for _, gid in pairs(getOnlineGuildMembersByRank(getGuildId(t[2]), 3, true)) do doPlayerSendTextMessage(gid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua guild entrou em war contra a guild "..getPlayerGuildName(cid).."! Para participar diga /war"..city.." go ,para sair va até area pz e diga !fly templo") end end if #getOnlineGuildMembersByRank(getPlayerGuildId(cid), 3, true) > 0 then for _, pid in pairs(getOnlineGuildMembersByRank(getPlayerGuildId(cid), 3, true)) do doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua guild entrou em war contra a guild "..t[2].."! Para participar diga /war"..city.." go ,para sair va até area pz e diga !fly templo") end end addEvent(function() for _, pid in pairs(getPlayersOnline()) do if isInArea(getThingPos(pid), {x = 743, y = 24, z = 7}, {x = 911, y = 162, z = 7}) then doTeleportThing(pid, getTownTemplePosition(getPlayerTown(cid))) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce foi teleportado para o templo porque o tempo de war acabou") end end end, 1000*3600) addEvent(setGlobalStorageValue, 3600*1000, guild_accept, -1) addEvent(setGlobalStorageValue, 3600*1000, guild_invite, -1) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Essa guild nao te invitou para uma war.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua guild nao foi chamada para nenhuma war.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Essa guild nao existe.") end elseif t[1] == "go" then if getTilePzInfo(getThingPos(cid)) == false then doPlayerSendCancel(cid, "Voce precisa estar em uma area protect zone") return true end if getGlobalStorageValue(guild_invite) == getPlayerGuildId(cid) or getGlobalStorageValue(guild_accept) == getPlayerGuildId(cid) then doPlayerSetStorageValue(cid, 888125, os.time() + getGlobalStorageValue(arena_storage)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce entrou na war!") if getGlobalStorageValue(guild_invite) == getPlayerGuildId(cid) then doTeleportThing(cid, time_1_pos) else doTeleportThing(cid, time_2_pos) end else doPlayerSendCancel(cid, "Sua guild nao esta em war") end end return true end Ou caso estiver com bom caraçao = 2°- UNIR ESSES DOIS SCRIPTs - INTEGRAR O WARSISTEM NO WARENTROSA QUE ESTA ABAIXO ; EXEMPLO - AO INVITAR A GUILD PARA WAR COM O COMANDO (/WARDARASHIA INVITE, GUILD NAME) ELE JA ADICIONAR AS FUNÇOES DO ( /WAR INVITE, GUILD NAME, FRAGS), FUNÇOES QUE JA ESTAO NO SISTEMA WAR.LUA E PASSAR A SER EXEMPLO: (/WARDARASHIA INVITE, GUILD NAME, FRAGS,MONEY) - O WARENTROSA PROPORCIONA 1HR DA CIDADE E DEPOIS EXPULSA TODOS. ENTAO O TEMPO JA É DEFINIDO PELO SISTEMA . NAO PRECISA ADICIONAR AOS COMANDOS. War.lua Spoiler function onSay(cid, words, param, channel) local guild = getPlayerGuildId(cid) if(not guild or getPlayerGuildLevel(cid) < GUILDLEVEL_LEADER) then doPlayerSendChannelMessage(cid, "", "You cannot execute this talkaction.", TALKTYPE_CHANNEL_W, 0) return true end local t = string.explode(param, ",") if(not t[2]) then doPlayerSendChannelMessage(cid, "", "Not enough param(s).", TALKTYPE_CHANNEL_W, 0) return true end local enemy = getGuildId(t[2]) if(not enemy) then doPlayerSendChannelMessage(cid, "", "Guild \"" .. t[2] .. "\" does not exists.", TALKTYPE_CHANNEL_W, 0) return true end if(enemy == guild) then doPlayerSendChannelMessage(cid, "", "You cannot perform war action on your own guild.", TALKTYPE_CHANNEL_W, 0) return true end local enemyName, tmp = "", db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. enemy) if(tmp:getID() ~= -1) then enemyName = tmp:getDataString("name") tmp:free() end if(isInArray({"accept", "reject", "cancel"}, t[1])) then local query = "`guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild if(t[1] == "cancel") then query = "`guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy end tmp = db.getResult("SELECT `id`, `begin`, `end`, `payment` FROM `guild_wars` WHERE " .. query .. " AND `status` = 0") if(tmp:getID() == -1) then doPlayerSendChannelMessage(cid, "", "Currently there's no pending invitation for a war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end if(t[1] == "accept") then local _tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild) local state = _tmp:getID() < 0 or _tmp:getDataInt("balance") < tmp:getDataInt("payment") _tmp:free() if(state) then doPlayerSendChannelMessage(cid, "", "Your guild balance is too low to accept this invitation.", TALKTYPE_CHANNEL_W, 0) return true end db.query("UPDATE `guilds` SET `balance` = `balance` - " .. tmp:getDataInt("payment") .. " WHERE `id` = " .. guild) end query = "UPDATE `guild_wars` SET " local msg = "accepted " .. enemyName .. " invitation to war." if(t[1] == "reject") then query = query .. "`end` = " .. os.time() .. ", `status` = 2" msg = "rejected " .. enemyName .. " invitation to war." elseif(t[1] == "cancel") then query = query .. "`end` = " .. os.time() .. ", `status` = 3" msg = "canceled invitation to a war with " .. enemyName .. "." else query = query .. "`begin` = " .. os.time() .. ", `end` = " .. (tmp:getDataInt("end") > 0 and (os.time() + ((tmp:getDataInt("begin") - tmp:getDataInt("end")) / 86400)) or 0) .. ", `status` = 1" end query = query .. " WHERE `id` = " .. tmp:getDataInt("id") if(t[1] == "accept") then doGuildAddEnemy(guild, enemy, tmp:getDataInt("id"), WAR_GUILD) doGuildAddEnemy(enemy, guild, tmp:getDataInt("id"), WAR_ENEMY) end tmp:free() db.query(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. msg, MESSAGE_EVENT_ADVANCE) return true end if(t[1] == "invite") then local str = "" tmp = db.getResult("SELECT `guild_id`, `status` FROM `guild_wars` WHERE `guild_id` IN (" .. guild .. "," .. enemy .. ") AND `enemy_id` IN (" .. enemy .. "," .. guild .. ") AND `status` IN (0, 1)") if(tmp:getID() ~= -1) then if(tmp:getDataInt("status") == 0) then if(tmp:getDataInt("guild_id") == guild) then str = "You have already invited " .. enemyName .. " to war." else str = enemyName .. " have already invited you to war." end else str = "You are already on a war with " .. enemyName .. "." end tmp:free() end if(str ~= "") then doPlayerSendChannelMessage(cid, "", str, TALKTYPE_CHANNEL_W, 0) return true end local frags = tonumber(t[3]) if(frags ~= nil) then frags = math.max(10, math.min(1000, frags)) else frags = 100 end local payment = tonumber(t[4]) if(payment ~= nil) then payment = math.max(100000, math.min(1000000000, payment)) tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild) local state = tmp:getID() < 0 or tmp:getDataInt("balance") < payment tmp:free() if(state) then doPlayerSendChannelMessage(cid, "", "Your guild balance is too low for such payment.", TALKTYPE_CHANNEL_W, 0) return true end db.query("UPDATE `guilds` SET `balance` = `balance` - " .. payment .. " WHERE `id` = " .. guild) else payment = 0 end local begining, ending = os.time(), tonumber(t[5]) if(ending ~= nil and ending ~= 0) then ending = begining + (ending * 86400) else ending = 0 end db.query("INSERT INTO `guild_wars` (`guild_id`, `enemy_id`, `begin`, `end`, `frags`, `payment`) VALUES (" .. guild .. ", " .. enemy .. ", " .. begining .. ", " .. ending .. ", " .. frags .. ", " .. payment .. ");") doBroadcastMessage(getPlayerGuildName(cid) .. " has invited " .. enemyName .. " to war till " .. frags .. " frags.", MESSAGE_EVENT_ADVANCE) return true end if(not isInArray({"end", "finish"}, t[1])) then return false end local status = (t[1] == "end" and 1 or 4) tmp = db.getResult("SELECT `id` FROM `guild_wars` WHERE `guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy .. " AND `status` = " .. status) if(tmp:getID() ~= -1) then local query = "UPDATE `guild_wars` SET `end` = " .. os.time() .. ", `status` = 5 WHERE `id` = " .. tmp:getDataInt("id") tmp:free() doGuildRemoveEnemy(guild, enemy) doGuildRemoveEnemy(enemy, guild) db.query(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. (status == 4 and "mend fences" or "ended up a war") .. " with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE) return true end if(status == 4) then doPlayerSendChannelMessage(cid, "", "Currently there's no pending war truce from " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end tmp = db.getResult("SELECT `id`, `end` FROM `guild_wars` WHERE `guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild .. " AND `status` = 1") if(tmp:getID() ~= -1) then if(tmp:getDataInt("end") > 0) then tmp:free() doPlayerSendChannelMessage(cid, "", "You cannot request ending for war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end local query = "UPDATE `guild_wars` SET `status` = 4, `end` = " .. os.time() .. " WHERE `id` = " .. tmp:getDataInt("id") tmp:free() db.query(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has signed an armstice declaration on a war with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE) return true end doPlayerSendChannelMessage(cid, "", "Currently there's no active war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end Editado Maio 5, 2019 6 anos por Wesleyt10 (veja o histórico de ediçõ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.