• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Utilidad] Talkaction script

    Compartir:

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1[Utilidad] Talkaction script Empty [Utilidad] Talkaction script Miér Oct 16, 2019 10:29 pm

    ricardo.12

    ricardo.12
    Miembro
    Miembro
    Descripcion escribió:AÑADO CODIGO DEL TALKACTION PARA GUILD SHOP DE GESSIOR PARA QUE LO PUEDAS USAR EN TU SERVER
    Código:
    GuildPointsConfigs =
    {
            ExecuteIntervalHours = 24,
            NeedPlayersOnline = 10,
            NeedDiferentIps = 6,
            MinLevel = 80,
            AddPointsForAcc = 9
    }
     
    function getGuildPlayersValidAccIDS(GuildID, MinLevel)
            local RanksIDS = {}
            local AccsID = {}
            local ValidAccsID = {}
            Query1 = db.getResult("SELECT `id` FROM `guild_ranks` WHERE guild_id = '".. GuildID .."'")
            if(Query1:getID() == -1) then
                    return ValidAccsID
            end
            for i = 1, Query1:getRows() do
                    table.insert(RanksIDS, Query1:getDataInt("id"))
                    Query1:next()
            end
            Query2 = db.getResult("SELECT `account_id` FROM `players` WHERE `rank_id` IN (".. table.concat(RanksIDS, ', ') ..") AND `level` >= ".. MinLevel .."")
            if(Query2:getID() == -1) then
                    return ValidAccsID
            end
            for i = 1, Query2:getRows() do
                    local AccID = Query2:getDataInt("account_id")
                    if #AccsID > 0 then
                            for k = 1, #AccsID do
                                    if AccID == AccsID[k] then
                                            AddAccList = false
                                            break
                                    end
                                    AddAccList = true
                            end
                            if AddAccList then
                                    table.insert(AccsID, AccID)
                            end
                    else
                            table.insert(AccsID, AccID)
                    end
                    Query2:next()
            end
            Query3 = db.getResult("SELECT `id` FROM `accounts` WHERE `guild_points_stats` = 0 AND `id` IN (".. table.concat(AccsID, ', ') ..")")
            if(Query3:getID() == -1) then
                    return ValidAccsID
            end
            for i = 1, Query3:getRows() do
                    local AccID = Query3:getDataInt("id")
                    if #ValidAccsID > 0 then
                            for k = 1, #ValidAccsID do
                                    if AccID == ValidAccsID[k] then
                                            AddAccList = false
                                            break
                                    end
                                    AddAccList = true
                            end
                            if AddAccList then
                                    table.insert(ValidAccsID, AccID)
                            end
                    else
                            table.insert(ValidAccsID, AccID)
                    end
                    Query3:next()
            end
            return ValidAccsID
    end
     
    function onSay(cid, words, param, channel)
            if(getPlayerGuildLevel(cid) == 3) then
                    local GuildID = getPlayerGuildId(cid)
                    Query = db.getResult("SELECT `last_execute_points` FROM `guilds` WHERE id = '".. GuildID .."'")
                    if(Query:getID() == -1) then
                            return true
                    end
                    if Query:getDataInt("last_execute_points") < os.time() then
                            local GuildMembers = {}
                            local GuildMembersOnline = {}
                            local PlayersOnline = getPlayersOnline()
                            for i, pid in ipairs(PlayersOnline) do
                                    if getPlayerGuildId(pid) == GuildID then
                                            if getPlayerLevel(pid) >= GuildPointsConfigs.MinLevel then
                                                    table.insert(GuildMembersOnline, pid)
                                            end
                                    end
                            end
                            if #GuildMembersOnline >= GuildPointsConfigs.NeedPlayersOnline then
                                    local IPS = {}
                                    for i, pid in ipairs(GuildMembersOnline) do
                                            local PlayerIP = getPlayerIp(pid)
                                            if #IPS > 0 then
                                                    for k = 1, #IPS do
                                                            if PlayerIP == IPS[k] then
                                                                    AddIPList = false
                                                                    break
                                                            end
                                                            AddIPList = true
                                                    end
                                                    if AddIPList then
                                                            table.insert(IPS, PlayerIP)
                                                    end
                                            else
                                                    table.insert(IPS, PlayerIP)
                                            end
                                    end
                                    if #IPS >= GuildPointsConfigs.NeedDiferentIps then
                                            local ValidAccounts = getGuildPlayersValidAccIDS(GuildID, GuildPointsConfigs.MinLevel)
                                            db.executeQuery("UPDATE `guilds` SET `last_execute_points` = ".. os.time() +(GuildPointsConfigs.ExecuteIntervalHours * 3600) .." WHERE `guilds`.`id` = ".. GuildID ..";")
                                            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "".. #ValidAccounts .." Players received points")
                                            if #ValidAccounts > 0 then
                                                    db.executeQuery("UPDATE `accounts` SET `guild_points` = `guild_points` + " ..GuildPointsConfigs.AddPointsForAcc .. ", `guild_points_stats` = ".. os.time() .." WHERE `id` IN (" .. table.concat(ValidAccounts, ',') ..");")
                                                    for i, pid in ipairs(GuildMembersOnline) do
                                                            local PlayerMSGAccID = getPlayerAccountId(pid)
                                                            for k = 1, #ValidAccounts do
                                                                    if PlayerMSGAccID == ValidAccounts[k] then
                                                                            doPlayerSendTextMessage(pid, MESSAGE_INFO_DESCR, "You received "..GuildPointsConfigs.AddPointsForAcc .." guild points.")
                                                                            break
                                                                    end
                                                            end
                                                    end
                                            end
                                    else
                                            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only ".. #IPS .." players are valid, you need ".. GuildPointsConfigs.NeedDiferentIps .." players with different ips.")
                                    end
                            else
                                    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Has only ".. #GuildMembersOnline .." players online you need ".. GuildPointsConfigs.NeedPlayersOnline .." players online at least from level ".. GuildPointsConfigs.MinLevel ..".")
                            end
                    else
                            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "The command can only be run once every "..GuildPointsConfigs.ExecuteIntervalHours .." hours.")
                    end
            else
                    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only guild leader can request points.")
            end
            return true
    end
    esta diseñado para tfs 0.4 compatible con otx espero sea de utilidad, despues de eso recuerden crear la linea en el talkaction.xml quedaria algo asi :
    Código:
    <talkaction words="!guildpoints" event="script" value="guildpoints.lua"/>
    Imagen Explicativa escribió:Imagen Explicativa: [Utilidad] Talkaction script Tibiaf10
    Version del Scripts: TFs 0.4.0

    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).