• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Sistema] ShopGuild Points 100% add in player offline.

    Compartir:

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

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    hola usuarios de tibiaface

    bueno aqui les traigo el famoso guild shop donde todos los miembro de la guild reciben puntos cada 24 horas si el linder ejecuta un talkaction.

    sin mas preangulos aqui le dejo el tutorial de como instalarlo:

    lo primero que tenemos que hacer es ejecutar estas lineas en nuestro phpadmin base de datos:

    Código:
    ALTER TABLE `accounts` ADD `guild_points` INTEGER(11) NOT NULL DEFAULT 0;

    Código:
    ALTER TABLE `accounts` ADD `guild_points_stats` INT NOT NULL DEFAULT '0';

    Código:
    ALTER TABLE `guilds` ADD `last_execute_points` INT NOT NULL DEFAULT '0';

    Código:
    CREATE TABLE `z_shopguild_offer`(
                           `id`int(11) NOT NULL auto_increment,
                           `points`int(11) NOT NULL default'0',
                           `itemid1`int(11) NOT NULL default'0',
                           `count1`int(11) NOT NULL default'0',
                           `itemid2`int(11) NOT NULL default'0',
                           `count2`int(11) NOT NULL default'0',
                           `offer_type` varchar(255)default NULL,
                           `offer_description` text NOT NULL,
                           `offer_name` varchar(255) NOT NULL,
                           `pid` INT(11) NOT NULL DEFAULT '0',
                     PRIMARY KEY (`id`))

    Código:
    CREATE TABLE `z_shopguild_history_item`(
                           `id`int(11) NOT NULL auto_increment,
                           `to_name` varchar(255) NOT NULL default'0',
                           `to_account`int(11) NOT NULL default'0',
                           `from_nick` varchar(255) NOT NULL,
                           `from_account`int(11) NOT NULL default'0',
                           `price`int(11) NOT NULL default'0',
                           `offer_id`int(11) NOT NULL default'0',
                           `trans_state` varchar(255) NOT NULL,
                           `trans_start`int(11) NOT NULL default'0',
                           `trans_real`int(11) NOT NULL default'0',
                     PRIMARY KEY (`id`))

    Código:
    CREATE TABLE `z_shopguild_history_pacc`(
                           `id`int(11) NOT NULL auto_increment,
                           `to_name` varchar(255) NOT NULL default'0',
                           `to_account`int(11) NOT NULL default'0',
                           `from_nick` varchar(255) NOT NULL,
                           `from_account`int(11) NOT NULL default'0',
                           `price`int(11) NOT NULL default'0',
                           `pacc_days`int(11) NOT NULL default'0',
                           `trans_state` varchar(255) NOT NULL,
                           `trans_start`int(11) NOT NULL default'0',
                           `trans_real`int(11) NOT NULL default'0',
                     PRIMARY KEY (`id`))

    Código:

            CREATE TABLE IF NOT EXISTS `z_ots_guildcomunication` (
              `id` int(11) NOT NULL AUTO_INCREMENT,
              `name` varchar(255) NOT NULL,
              `type` varchar(255) NOT NULL,
              `action` varchar(255) NOT NULL,
              `param1` varchar(255) NOT NULL,
              `param2` varchar(255) NOT NULL,
              `param3` varchar(255) NOT NULL,
              `param4` varchar(255) NOT NULL,
              `param5` varchar(255) NOT NULL,
              `param6` varchar(255) NOT NULL,
              `param7` varchar(255) NOT NULL,
              `delete_it` int(2) NOT NULL DEFAULT '1',
            PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=230 ;


    listo ahora nos vamos a:

    index.php y añadimos

    Código:
    case "shopguild";
    $topic = "Shop Guild";
    $subtopic = "shopguild";
    include("shopguild.php");
    break;

    Código:
    case "shopguildadmin";
    $subtopic = "shopguildadmin";
    $topic = "Shop System";
    include("shopguildadmin.php");
    break;


    en config.php añadimos:

    Código:
    $config['site']['shopguild_system'] = 1;


    en la layouts.php añadimos_.

    Código:
    <a href='?subtopic=shopguild'>
      <div id='submenu_shopguild' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'>
            <div class='LeftChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div>
            <div id='ActiveSubmenuItemIcon_shopguild' class='ActiveSubmenuItemIcon' style='background-image:url(".$layout_name."/images/menu/icon-activesubmenu.gif);'></div>
            <div class='SubmenuitemLabel'>Shop Guild <blink><font size='0'><font color='yellow'>NEW</font></font></blink></div>
            <div class='RightChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div>
      </div>
    </a>

    Código:
    <a href='?subtopic=shopguildadmin'>
      <div id id='submenu_shopguildadmin' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'>
        <div class='LeftChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div>
        <div id='ActiveSubmenuItemIcon_shopguildadmin' class='ActiveSubmenuItemIcon' style='background-image:url(".$layout_name."/images/menu/icon-activesubmenu.gif);'></div>
        <div class='SubmenuitemLabel'><font color=red>! ShopGuild Admin !</font></div>
        <div class='RightChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div>
      </div>
    </a>

    en htdoc añadimos estos archivos shopguild.php y shopguildadmin.php con aquellos nombres


    shopguild.php
    [Tienes que estar registrado y conectado para ver este vínculo]

    shopguildadmin.php

    [Tienes que estar registrado y conectado para ver este vínculo]


    Y esto añaden en globalevents:


    Código:
    -- Created by Unknown, Fixed by Rac --
    GUILDSHOP_MSG_TYPE =18
    SQL_interval =30
    function onThink(interval, lastExecution)
       local result_plr = db.storeQuery("SELECT * FROM z_ots_guildcomunication")
        if(result_plr ~= false) then
            repeat
                local id = tonumber(result.getDataInt(result_plr, "id"))
                local action = tostring(result.getDataString(result_plr, "action"))
                local delete = tonumber(result.getDataInt(result_plr, "delete_it"))
                local cid = getPlayerByName(tostring(result.getDataString(result_plr, "name")))
                if(cid) then
                    local itemtogive_id = tonumber(result.getDataInt(result_plr, "param1"))
                    local itemtogive_count = tonumber(result.getDataInt(result_plr, "param2"))
                    local container_id = tonumber(result.getDataInt(result_plr, "param3"))
                    local container_count = tonumber(result.getDataInt(result_plr, "param4"))
                    local add_item_type = tostring(result.getDataString(result_plr, "param5"))
                    local add_item_name = tostring(result.getDataString(result_plr, "param6"))
                    local received_item = 0
                    local full_weight = 0
                    if(add_item_type == 'container') then
                        container_weight = getItemWeight(container_id, 1)
                        if(isItemRune(itemtogive_id)) then
                            items_weight = container_count * getItemWeight(itemtogive_id, 1)
                        else
                            items_weight = container_count * getItemWeight(itemtogive_id, itemtogive_count)
                        end
                        full_weight = items_weight + container_weight
                    else
                        full_weight = getItemWeight(itemtogive_id, itemtogive_count)
                        if(isItemRune(itemtogive_id)) then
                            full_weight = getItemWeight(itemtogive_id, 1)
                        else
                            full_weight = getItemWeight(itemtogive_id, itemtogive_count)
                        end
                    end
                    local free_cap = getPlayerFreeCap(cid)
                    if(full_weight <= free_cap) then
                        if(add_item_type == 'container') then
                            local new_container = doCreateItemEx(container_id, 1)
                            local iter = 0
                            while(iter ~= container_count) do
                                doAddContainerItem(new_container, itemtogive_id, itemtogive_count)
                                iter = iter + 1
                            end
                            received_item = doPlayerAddItemEx(cid, new_container)
                        else
                            local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
                            received_item = doPlayerAddItemEx(cid, new_item)
                        end
                        if(type(received_item) == "number" and received_item == RETURNVALUE_NOERROR) then
                            doPlayerSendTextMessage(cid, GUILDSHOP_MSG_TYPE, 'You received items '.. add_item_name ..'from OTS guildshop.')
                            db.query("DELETE FROM `z_ots_guildcomunication` WHERE `id` = " .. id .. ";")
                            db.query("UPDATE `z_shopguild_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
                        else
                            doPlayerSendTextMessage(cid, GUILDSHOP_MSG_TYPE, ' '.. add_item_name ..'  from OTS guildshop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.')
                        end
                    else
                        doPlayerSendTextMessage(cid, GUILDSHOP_MSG_TYPE, ' '.. add_item_name ..'  from OTS guildshop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.')
                    end
                end
            until not result.next(result_plr)
            result.free(result_plr)
        end
        return true
    end

    y esto en globalevents.xml


    Código:
    <globalevent name="shopguild" interval="30" script="shopguild.lua"/>


    en talkactions.xml


    Código:
    <talkaction words="!guildpoints" event="script" value="guildpoints.lua"/>


    y en scripts:

    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


    config:

    ExecuteIntervalHours = 24,
    NeedPlayersOnline = 10,
    NeedDiferentIps = 6,
    MinLevel = 80,
    AddPointsForAcc = 9



    Última edición por [Admin] God Maya el Lun Dic 10, 2018 8:58 pm, editado 1 vez



    [Sistema] ShopGuild Points 100% add in player offline. YNU5B25
    5 participantes
    http://www.tibiaface.com

    mingidan

    mingidan
    Donador User
    Donador User
    error en consola por favor ayudar no llega el item

    [9:24:17.729] [Error - GlobalEvent Interface]
    [9:24:17.731] data/globalevents/scripts/shopguild.lua:onThink
    [9:24:17.731] Description:
    [9:24:17.731] (luaGetItemWeight) Item not found

    [9:24:17.732] [Error - GlobalEvent Interface]
    [9:24:17.732] data/globalevents/scripts/shopguild.lua:onThink
    [9:24:17.733] Description:
    [9:24:17.733] (luaGetItemWeight) Item not found

    [9:24:17.782] [Error - GlobalEvent Interface]
    [9:24:17.792] data/globalevents/scripts/shopguild.lua:onThink
    [9:24:17.793] Description:
    [9:24:17.794] data/globalevents/scripts/shopguild.lua:38: attempt to compare boolean with number
    [9:24:17.795] stack traceback:
    [9:24:17.800] data/globalevents/scripts/shopguild.lua:38: in function <data/globalevents/scripts/shopguild.lua:4>
    [9:24:17.813] [Error - GlobalEvents::think] Couldn't execute event: shopguild

    5 participantes

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    mingidan escribió:error en consola por favor ayudar no llega el item

    [9:24:17.729] [Error - GlobalEvent Interface]
    [9:24:17.731] data/globalevents/scripts/shopguild.lua:onThink
    [9:24:17.731] Description:
    [9:24:17.731] (luaGetItemWeight) Item not found

    [9:24:17.732] [Error - GlobalEvent Interface]
    [9:24:17.732] data/globalevents/scripts/shopguild.lua:onThink
    [9:24:17.733] Description:
    [9:24:17.733] (luaGetItemWeight) Item not found

    [9:24:17.782] [Error - GlobalEvent Interface]
    [9:24:17.792] data/globalevents/scripts/shopguild.lua:onThink
    [9:24:17.793] Description:
    [9:24:17.794] data/globalevents/scripts/shopguild.lua:38: attempt to compare boolean with number
    [9:24:17.795] stack traceback:
    [9:24:17.800] data/globalevents/scripts/shopguild.lua:38: in function <data/globalevents/scripts/shopguild.lua:4>
    [9:24:17.813] [Error - GlobalEvents] Couldn't execute event: shopguild


    que version de ot usas primero tendrias que comensar dandonos la version de tu ot



    [Sistema] ShopGuild Points 100% add in player offline. YNU5B25
    5 participantes
    http://www.tibiaface.com

    Hokku

    Hokku
    Miembro
    Miembro
    que tfs es compatible maya?

    5 participantes

    [Adm] SevuOT

    [Adm] SevuOT
    Miembro
    Miembro
    Si su TFS low version les dice este error :
    Código:
    attempt to compare boolean with number
    Entonces debes usar este script con una modificacion para evitar eso.
    Compatibilidad para TFS [ 0.4 ]
    Me refiero al globalevents Lua
    Código:
    -- Created by Unknown, Fixed by Rac --
    GUILDSHOP_MSG_TYPE =18
    SQL_interval =30
    function onThink(interval, lastExecution)
      local result_plr = db.storeQuery("SELECT * FROM z_ots_guildcomunication")
        if(result_plr ~= false) then
            repeat
                local id = tonumber(result.getDataInt(result_plr, "id"))
                local action = tostring(result.getDataString(result_plr, "action"))
                local delete = tonumber(result.getDataInt(result_plr, "delete_it"))
                local cid = getPlayerByName(tostring(result.getDataString(result_plr, "name")))
                if (cid) then
                    local itemtogive_id = tonumber(result.getDataInt(result_plr, "param1"))
                    local itemtogive_count = tonumber(result.getDataInt(result_plr, "param2"))
                    local container_id = tonumber(result.getDataInt(result_plr, "param3"))
                    local container_count = tonumber(result.getDataInt(result_plr, "param4"))
                    local add_item_type = tostring(result.getDataString(result_plr, "param5"))
                    local add_item_name = tostring(result.getDataString(result_plr, "param6"))
                    local received_item = 0
                    local full_weight = 0
                    if(add_item_type == 'container') then
                        container_weight = getItemWeightById(container_id, 1)
                        if(isItemRune(itemtogive_id)) then
                            items_weight = container_count * getItemWeightById(itemtogive_id, 1)
                        else
                            items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count)
                        end
                        full_weight = items_weight + container_weight
                    else
                        full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
                        if(isItemRune(itemtogive_id)) then
                            full_weight = getItemWeightById(itemtogive_id, 1)
                        else
                            full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
                        end
                    end
                    local free_cap = getPlayerFreeCap(cid)
                    if full_weight <= free_cap then
                        if(add_item_type == 'container') then
                            local new_container = doCreateItemEx(container_id, 1)
                            local iter = 0
                            while(iter ~= container_count) do
                                doAddContainerItem(new_container, itemtogive_id, itemtogive_count)
                                iter = iter + 1
                            end
                            received_item = doPlayerAddItemEx(cid, new_container)
                        else
                            local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
                            received_item = doPlayerAddItemEx(cid, new_item)
                        end
                        if(type(received_item) == "number" and received_item == RETURNVALUE_NOERROR) then
                            doPlayerSendTextMessage(cid, GUILDSHOP_MSG_TYPE, 'You received items '.. add_item_name ..'from OTS guildshop.')
                            db.query("DELETE FROM `z_ots_guildcomunication` WHERE `id` = " .. id .. ";")
                            db.query("UPDATE `z_shopguild_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
                        else
                            doPlayerSendTextMessage(cid, GUILDSHOP_MSG_TYPE, ' '.. add_item_name ..'  from OTS guildshop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.')
                        end
                    else
                        doPlayerSendTextMessage(cid, GUILDSHOP_MSG_TYPE, ' '.. add_item_name ..'  from OTS guildshop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.')
                    end
                end
            until not result.next(result_plr)
            result.free(result_plr)
        end
        return true
    end



    Si necesitas hospedaje para tu servidor usa este enlace y mira los buenos planes de Windows y Linux:
    Si tu cuenta de PayPal no esta verificada no importara, igual aceptan pagos con cuentas no verificadas.


    [Sistema] ShopGuild Points 100% add in player offline. TRJEB8aSRYK5IulEU6ilJw
    5 participantes

    6[Sistema] ShopGuild Points 100% add in player offline. Empty teste Sáb Nov 18, 2017 7:03 pm

    Tibia Matatan

    Tibia Matatan
    Miembro
    Miembro
    [Tienes que estar registrado y conectado para ver este vínculo] no me resulto tu solucion pero el error debe ser en las tablas del mysql ya que el shop normal resulta perfecto pero con las tablas z_ots_comunication z_shop_history_item
    no con las del guild seguro que algo les falta a las de guild
    saludos y ojalas poder solucionar este problema



    [spoiler="talkaction"]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[/spoiler

    hola buenas aqui tengo un problema ya que yo nesecito uno que solo le de a los players online de la guild que tengan los requisitos pedidios

    5 participantes

    Contenido patrocinado


    5 participantes

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