Ir para conteúdo

Featured Replies

Postado

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 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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 520k

Informação Importante

Confirmação de Termo