• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Sistema] Perfect Lottery System (MySql) - Atualizado

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

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    Sistema de Loterias

    hola usuarios de tibiaface hoy consegui este sistema fabuloso;

    que es lo que hace?

    Nada mas que sortear un item o varios item.

    pero quienes reciven los item?

    los item son sorteados con todos los usuarios de la base de datos registrados. no importa si no esta online tambien los player offline participan en el sorteo:

    instlacion:

    nos vamos a:


    data/globalevents/scripts

    copiamos cualquier archivo y renombramos por loterry.lua y pegamos esto dentro:

    Código:
    local function getPlayerWorldId(cid)
        if not(isPlayer(cid)) then
            return false
        end
        local pid = getPlayerGUID(cid)
        local worldPlayer = 0
        local result_plr = db.getResult("SELECT * FROM `players` WHERE `id` = "..pid..";")
        if(result_plr:getID() ~= -1) then
            worldPlayer = tonumber(result_plr:getDataInt("world_id"))
            result_plr:free()
            return worldPlayer
        end
        return false
    end

    local function getOnlineParticipants()
        local players = {}
        for _, pid in pairs(getPlayersOnline()) do
            if getPlayerAccess(pid) <= 2 and getPlayerStorageValue(pid, 281821) <= os.time() then
                table.insert(players, pid)
            end
        end
        if #players > 0 then
            return players
        end
        return false
    end

    local config = {
    lottery_hour = "2 hours", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message)
    rewards_id = {2494, 2472, 2514, 2160}, -- ID dos Itens Sorteados na Loteria
    crystal_counts = 10, -- Usado somente se a rewards_id for crystal coin (ID: 2160).
    website = "yes", -- Only if you have php scripts and table `lottery` in your database!
    days = {
    "Monday-08:00",
    "Monday-13:00",
    "Monday-19:30",

    "Tuesday-08:00",
    "Tuesday-13:00",
    "Tuesday-19:30",

    "Wednesday-08:00",
    "Wednesday-13:00",
    "Wednesday-19:30",

    "Thursday-08:00",
    "Thursday-13:00",
    "Thursday-19:30",

    "Friday-01:22",
    "Friday-13:00",
    "Friday-19:30",

    "Saturday-01:49",
    "Saturday-01:50",
    "Saturday-01:51",

    "Sunday-08:00",
    "Sunday-13:00",
    "Sunday-19:30"}
    }
       
    function onThink(cid, interval)
        if table.find(config.days, os.date("%A-%H:%M")) then
            if(getWorldCreatures(o) <= 0)then
                return true
            end

            local query = db.query or db.executeQuery
            local random_item = config.rewards_id[math.random(1, #config.rewards_id)]
            local item_name = getItemNameById(random_item) 
            local data = os.date("%d/%m/%Y - %H:%M:%S")
            local online = getOnlineParticipants()
         
            if online then
                local winner = online[math.random(1, #online)]
                local world = tonumber(getPlayerWorldId(winner))
             
                if(random_item == 2160) then
                    doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24)
                    doPlayerAddItem(winner, random_item, config.crystal_counts)
                    doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .. " " .. getItemNameById(random_item) .. "s! Congratulations! (Next lottery in " .. config.lottery_hour .. ")")
                else
                    doPlayerSetStorageValue(winner, 281821, os.time() + 3600 * 24)
                    doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. getItemNameById(random_item) .. "! Congratulations! (Next lottery in " .. config.lottery_hour .. ")")
                    doPlayerAddItem(winner, random_item, 1)
                end
                if(config.website == "yes") then
                    query("INSERT INTO `lottery` (`name`, `item`, `world_id`, `item_name`, `date`) VALUES ('".. getCreatureName(winner) .."', '".. random_item .."', '".. world .."', '".. item_name .."', '".. data .."');")
                end
            else
                print("Ninguem ON pra ganhar na loteria")
            end
        end
        return true
    end


    recomendaciones:

    Recomendamos modificar:
    - rewards_id = {2494, 2472, 2514, 2160}, -- ID de los Itens Sorteados en la Loteria
    Recomiendo que solo el item 2160 tenga counts (cantida de item), otros pueden dar bug.
    - crystal_counts = 10, -- Usado solamente a rewards_id para crystal coin (ID: 2160).
    altere a su gusto el dinero.

    - "Monday-08:00", Ajuste los dias y horários como usted lo desea.


    luego nos vamos a:


    Data/ globalevents/ globalevents.xml


    y añadimos esta tag:

    Código:
    <globalevent name="lottery" interval="60000" event="script" value="lottery.lua"/>


    con esto ya tienen instalado el sistema de loteria automatico



    y por ultimo debemos ingresar a nuestro panel mysql y entrar a nuestra base de datos y ejecutar esta tabla:

    Código:
    CREATE TABLE `lottery` (
      `id` int(11) NOT NULL auto_increment,
      `name` varchar(255) NOT NULL,
      `item` varchar(255) NOT NULL,
      `world_id` tinyint(2) unsigned NOT NULL default '0',
      `item_name` varchar(255) NOT NULL,
      `date` varchar(256) NOT NULL,
      PRIMARY KEY  (`id`)
     ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

    Si usted desea colocar en su web un pagina dedicada a este sistema de loteria donde todo lo usuarios podran verificar quienes son los ganadores puede usted entonces añadir a su web como indican estos pasos

    1.- crear un nuevo archivo php o copiar alguno que ya estan y renombrar por lottery.php luego pegan esto dentro:

    Código:
    <?PHP
    $main_content .= '<center><h1>Lottery</h1><h3>Lotterys held at 09:00, 14:00 and 20:30 hour, brazil time.</h3></center><br><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tr BGCOLOR="'.$config['site']['vdarkborder'].'"><td CLASS=white><center><b>Player Name</b></center></td><td CLASS=white width=184 colspan=2><center><b>Winning Item</b></center></td><td width=50 CLASS=white><center><b>World</b></center></td><td width=100 CLASS=white><center><b>Date and Time</b></center></td></tr>';
    $lottery = $SQL->query('SELECT id, name, item, world_id, item_name, date FROM lottery WHERE world_id = 0 ORDER BY id DESC;');
    foreach($lottery as $result) {
     $players++;
                if(is_int($players / 2))
                    $bgcolor = $config['site']['lightborder'];
                else
                    $bgcolor = $config['site']['darkborder'];

    $main_content .= '<TR BGCOLOR='.$bgcolor.'><TD WIDTH=35%><center><a href="?subtopic=characters&name='.urlencode($result['name']).'">'.$result['name'].'</a></center></td><TD WIDTH=5%><img src=\'/item_images/'.urlencode($result['item']).'.gif\'></td><TD WIDTH=30%><center>'.$result['item_name'].'</center></td><TD WIDTH=7%><center>MegaTibia</center></td></td><TD WIDTH=30%><center>'.$result['date'].'</center></td></tr>';
    }
    $main_content .= '</table>';
    ?>

    2.-ir a al index.php y adicionar esta linea:

    Código:
    case "lottery";
      $topic = "Lottery";
      $subtopic = "lottery";
      include("lottery.php");
    break;


    3.- ir a nuestro layouts.php y adicionar donde van los demas subtopic:

    Código:
     <a href="?subtopic=lottery">
                            <div id="submenu_lottery" class="Submenuitem" onmouseover="MouseOverSubmenuItem(this)" onmouseout="MouseOutSubmenuItem(this)">
                                    <div class="LeftChain" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);"></div>
                                    <div id="ActiveSubmenuItemIcon_lottery" class="ActiveSubmenuItemIcon" style="background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);"></div>
                                    <div id="ActiveSubmenuItemLabel_lottery" class="SubmenuitemLabel">Lottery</div>
                                    <div class="RightChain" style="background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);"></div>
                            </div>
                    </a>


    y listo cone so tendremos el sistema de loteria igual en nuestra web imagen:




    Créditos:
    .lua - Killua e Matheus
    .php - Matheus e Natanael Beckman
    querys - Natanael Beckman e Matheus


    Código:
    Atualizaçion 24/05/2014
    - Adicionado reglas para no sortear miembro de staff(GM, GOD)
    - Adicionando sistema de Storage para no correr o riesgo de un player pueda ganar 2 veses el  mismo dia.



    Ver perfil de usuario http://www.tibiaface.com
    Hay manera de que funcione para TFS 1.0

    Ver perfil de usuario http://dybbuk.jimdo.com/

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    dybbuk escribió:Hay manera de que funcione para TFS 1.0

    aqui hay uno puedes probar pero no es el mismo pero tiene la misma funcion


    Código:
    local config = {
      interval = "3 hours",
      rewards = {[2195] = 1, [2472] = 1, [2514] = 1, [2157] = 1, [8902] = 1},
        -- [itemid] = count; [2160] = 50 - it gives 50 crystal coins
      website = true
    }


    function onThink(interval)
      if Game.getPlayerCount() == 0 then
        return true
      end

      local players = Game.getPlayers()
      local winner  = players[math.random(1, #players)]

      local items = {}
      for itemid, count in pairs(config.rewards) do
        items[#items + 1] = itemid
      end

      local itemid = items[math.random(1, #items)]
      local amount = config.rewards[itemid]
      winner:addItem(itemid, amount)

      local it  = ItemType(itemid)
      local name = ""
      if amount == 1 then
        name = it:getArticle() .. " " .. it:getName()
      else
        name = amount .. " " .. it:getPluralName()
      end

      broadcastMessage("[LOTTERY SYSTEM] " .. winner:getName() .. " won " .. name .. "! Congratulations! (Next lottery in " .. config.interval .. ")")

      if config.website then
        db.query("INSERT INTO `lottery` (`name`, `item`) VALUES (\"".. db.escapeString(winner:getName()) .."\", \"".. db.escapeString(it:getName()) .."\");")
      end
      return true
    end



    Ver perfil de usuario http://www.tibiaface.com

    Contenido patrocinado


    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.