Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Estou com um problema, as imagens dos itens no site não aparece, mesmo tendo ela nas pastas do site com o ID correto.

 

Segue print.

 

 

attachicon.giferro.png

 

Alguém sabe resolver ?

 

Obrigado desde já.

 

Utilize esse:

<?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=\'/images/items/'.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>'; 
?>
Editado por Natanael Beckman (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

 

Utilize esse:

<?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=\'/images/items/'.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>'; 
?>

 

Perfeito agora :)

Link para o post
Compartilhar em outros sites
  • 11 months later...

+Rep pra ti mano, ótimo script. Seria possível postar as mudanças necessárias para rodar no TFS 1.0 ? Algumas mudanças identificadas na distro eu consegui resolver, mas não consegui terminar :/

--

Att,

Lucas Soledade  :pirate:
 
Desenvolvedor de Servidores  :wow: 
Inovação  :D 


-> Colossus Server <-

A4Zbobt.jpg

Link para o post
Compartilhar em outros sites

Sistema de Loterias por globalevents.
 
Crie um arquivo .lua com o nome lottery dentro da pasta data/globalevents/scripts/loterry.lua, adicione dentro do arquivo o seguinte code:

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-21:27",
                "Saturday-21:28",
                "Saturday-21:29",

                "Sunday-08:00",
                "Sunday-13:00",
                "Sunday-19:30"
                }
        }
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
     
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 OnLine pra ganhar na loteria")
        end
    end
    return true
end
Recomendamos modificar:
- rewards_id = {2494, 2472, 2514, 2160}, -- ID dos Itens Sorteados na Loteria
Recomendo de item count apenas o 2160, outros podem bugar.
- crystal_counts = 10, -- Usado somente se a rewards_id for crystal coin (ID: 2160).
Altere pra mais ou menos o dinheiro.
- "Monday-08:00", Ajuste os dias e horários como desejado.

Em globalevents.xml, adicione:

<!-- Lottery -->
<globalevent name="lottery" interval="60000" event="script" value="lottery.lua"/>

Não mexa no code acima.

Certo, essa é a parte do servidor, agora vamos adicionar as querys necessárias no MySql:

 

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;

Caso você queria adicionar uma query pra testar o site, veja:

INSERT INTO `lottery` (`id`, `name`, `item`, `world_id`, `item_name`, `date`) VALUES(NULL, 'Character', '2470', '0', 'golden legs', '22/05/2014 - 04:49:50');

Agora vamos pra parte do site, crie um arquivo .php com o nome lottery, adicione dentro do arquivo o seguinte code:

<?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>'; 
?>

Em index.php adicione:

case "lottery";
   $topic = "Lottery";
   $subtopic = "lottery";
   include("lottery.php");
break;

Em layouts.php adicione o code abaixo:

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

Pronto galera só isso, não esqueça clica em GOSTEI! Comente, participe do tópico, isso nos ajuda muito. 
 
b9s8.png
 
Créditos:
.lua - Killua e Matheus
.php - Matheus e Natanael Beckman
querys - Natanael Beckman e Matheus

Atualização 24/05/2014
- Adicionado regras pra não sorteá membro da staff(GM, GOD)
- Adicionando sistema de Storage pra não correr o risco de um player ganhar 2x no mesmo dia.

 

Bom eu Fiz o que pude aqui, mas mesmo com 1 player online ele diz que não tem ninguem online (player online não é o GOD)

Aqui esta o meu script editado para versão TFS 1.0
lottery.lua
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-01:00",
                "Monday-04:00",
                "Monday-08:00",
                "Monday-10:30",
                "Monday-13:00",
                "Monday-16:00",
                "Monday-19:30",
                "Monday-22:30",

                "Tuesday-01:00",
                "Tuesday-04:00",
                "Tuesday-08:00",
                "Tuesday-10:30",
                "Tuesday-13:00",
                "Tuesday-16:00",
                "Tuesday-19:30",
                "Tuesday-22:30",

                "Wednesday-01:00",
                "Wednesday-04:00",
                "Wednesday-08:00",
                "Wednesday-10:30",
                "Wednesday-13:00",
                "Wednesday-16:00",
                "Wednesday-19:30",
                "Wednesday-22:30",

                "Thursday-01:00",
                "Thursday-04:00",
                "Thursday-08:00",
                "Thursday-10:30",
                "Thursday-13:00",
                "Thursday-16:00",
                "Thursday-19:30",
                "Thursday-22:30",

                "Friday-01:00",
                "Friday-04:00",
                "Friday-08:00",
                "Friday-10:30",
                "Friday-13:00",
                "Friday-16:00",
                "Friday-19:30",
                "Friday-22:30",

                "Saturday-01:00",
                "Saturday-04:00",
                "Saturday-08:00",
                "Saturday-10:30",
                "Saturday-13:00",
                "Saturday-16:00",
                "Saturday-19:30",
                "Saturday-22:30",

                "Sunday-01:00",
                "Sunday-04:00",
                "Sunday-08:00",
                "Sunday-10:30",
                "Sunday-13:00",
                "Sunday-16:00",
                "Sunday-19:30",
                "Sunday-22:30"
                }
        }
local function getWorldCreatures(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(getOnlinePlayers()) 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
     
function onThink(interval, lastExecution)
    if table.find(config.days, os.date("%A-%H:%M")) then
        if Game.getPlayerCount() == 0 then
            return false
        end

        local query = db.query or db.executeQuery
        local random_item = config.rewards_id[math.random(1, #config.rewards_id)]
        local item_name = getItemIdByName(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(getPlayerByName(winner))
           
            if(random_item == 2160) then
                setPlayerStorageValue(winner, 281821, os.time() + 3600 * 24)
                doPlayerAddItem(winner, random_item, config.crystal_counts)
                doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .." " .. getItemIdByName(random_item) .. "s! Congratulations! (Next lottery in " .. config.lottery_hour .. ")")
            else
                setPlayerStorageValue(winner, 281821, os.time() + 3600 * 24)
                doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " ..getItemIdByName(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 OnLine pra ganhar na loteria")
        end
    end
    return true
end

 

globalevents.xml
<!-- Lottery -->
    <globalevent name="lottery" interval="60000" script="lottery.lua"/>

 

--

Att,

Lucas Soledade  :pirate:
 
Desenvolvedor de Servidores  :wow: 
Inovação  :D 


-> Colossus Server <-

A4Zbobt.jpg

Link para o post
Compartilhar em outros sites

Muito obrigado manow. :D Apesar de não ser tão eficiente cmo o seu, já ajuda muito. Funcionou Certinho aqui só tive que mudar essa linha:
+REP Pra Ti :D Abraços

			broadcastMessage('O player '.. ganhador:getName()..' recebeu '.. count .. ' '..ItemType(reward):getName()..' na loteria.', MESSAGE_STATUS_WARNING)

Tem algum Jeito de por para aparecer no Site ?

Editado por overseer (veja o histórico de edições)

--

Att,

Lucas Soledade  :pirate:
 
Desenvolvedor de Servidores  :wow: 
Inovação  :D 


-> Colossus Server <-

A4Zbobt.jpg

Link para o post
Compartilhar em outros sites
  • 2 months later...
Spoiler

Lua Script Error: [GlobalEvent Interface]
data/globalevents/scripts/others/lottery.lua:onThink
data/globalevents/scripts/others/lottery.lua:72: attempt to call global 'getItemNameById' (a nil value)
stack traceback:
        [C]: in function 'getItemNameById'
        data/globalevents/scripts/others/lottery.lua:72: in function <data/globalevents/scripts/others/lottery.lua:64>
[Error - GlobalEvents::think] Failed to execute event: lottery

 

Link para o post
Compartilhar em outros sites
  • 3 weeks later...
  • 1 year later...
Em 22/05/2014 ás 19:17, Natanael Beckman disse:

Sistema de Loterias por globalevents.
 
Crie um arquivo .lua com o nome lottery dentro da pasta data/globalevents/scripts/loterry.lua, adicione dentro do arquivo o seguinte code:


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-21:27",
                "Saturday-21:28",
                "Saturday-21:29",

                "Sunday-08:00",
                "Sunday-13:00",
                "Sunday-19:30"
                }
        }
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
     
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 OnLine pra ganhar na loteria")
        end
    end
    return true
end

Recomendamos modificar:
- rewards_id = {2494, 2472, 2514, 2160}, -- ID dos Itens Sorteados na Loteria
Recomendo de item count apenas o 2160, outros podem bugar.
- crystal_counts = 10, -- Usado somente se a rewards_id for crystal coin (ID: 2160).
Altere pra mais ou menos o dinheiro.
- "Monday-08:00", Ajuste os dias e horários como desejado.

Em globalevents.xml, adicione:


<!-- Lottery -->
<globalevent name="lottery" interval="60000" event="script" value="lottery.lua"/>

Não mexa no code acima.

Certo, essa é a parte do servidor, agora vamos adicionar as querys necessárias no MySql:

 


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;

Caso você queria adicionar uma query pra testar o site, veja:


INSERT INTO `lottery` (`id`, `name`, `item`, `world_id`, `item_name`, `date`) VALUES(NULL, 'Character', '2470', '0', 'golden legs', '22/05/2014 - 04:49:50');

Agora vamos pra parte do site, crie um arquivo .php com o nome lottery, adicione dentro do arquivo o seguinte code:


<?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>'; 
?>

Em index.php adicione:


case "lottery";
   $topic = "Lottery";
   $subtopic = "lottery";
   include("lottery.php");
break;

Em layouts.php adicione o code abaixo:


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

Pronto galera só isso, não esqueça clica em GOSTEI! Comente, participe do tópico, isso nos ajuda muito. 


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


Atualização 24/05/2014
- Adicionado regras pra não sorteá membro da staff(GM, GOD)
- Adicionando sistema de Storage pra não correr o risco de um player ganhar 2x no mesmo dia.

 

Revivendo o tópico pois possuo uma dúvida e não encontrei em nenhum outro lugar:

 

Citar

Em layouts.php adicione o code abaixo:

 

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

 

Onde está esse maldito layouts.php? fiz todo o processo e deu certo, mas não acho o esse arquivo layouts.php do site nem a pau!

 

CONHEÇA MEU PROJETO:

WWW.ETERNUS-GLOBAL.COM

 

tibia-logo.gif

Link para o post
Compartilhar em outros sites
  • 1 year later...
Em 22/05/2014 em 19:17, Natanael Beckman disse:

Sistema de Loterias por globalevents.
 
Crie um arquivo .lua com o nome lottery dentro da pasta data/globalevents/scripts/loterry.lua, adicione dentro do arquivo o seguinte code:


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-21:27",
                "Saturday-21:28",
                "Saturday-21:29",

                "Sunday-08:00",
                "Sunday-13:00",
                "Sunday-19:30"
                }
        }
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
     
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 OnLine pra ganhar na loteria")
        end
    end
    return true
end

Recomendamos modificar:
- rewards_id = {2494, 2472, 2514, 2160}, -- ID dos Itens Sorteados na Loteria
Recomendo de item count apenas o 2160, outros podem bugar.
- crystal_counts = 10, -- Usado somente se a rewards_id for crystal coin (ID: 2160).
Altere pra mais ou menos o dinheiro.
- "Monday-08:00", Ajuste os dias e horários como desejado.

Em globalevents.xml, adicione:


<!-- Lottery -->
<globalevent name="lottery" interval="60000" event="script" value="lottery.lua"/>

Não mexa no code acima.

Certo, essa é a parte do servidor, agora vamos adicionar as querys necessárias no MySql:

 


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;

Caso você queria adicionar uma query pra testar o site, veja:


INSERT INTO `lottery` (`id`, `name`, `item`, `world_id`, `item_name`, `date`) VALUES(NULL, 'Character', '2470', '0', 'golden legs', '22/05/2014 - 04:49:50');

Agora vamos pra parte do site, crie um arquivo .php com o nome lottery, adicione dentro do arquivo o seguinte code:


<?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>'; 
?>

Em index.php adicione:


case "lottery";
   $topic = "Lottery";
   $subtopic = "lottery";
   include("lottery.php");
break;

Em layouts.php adicione o code abaixo:


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

Pronto galera só isso, não esqueça clica em GOSTEI! Comente, participe do tópico, isso nos ajuda muito. 


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


Atualização 24/05/2014
- Adicionado regras pra não sorteá membro da staff(GM, GOD)
- Adicionando sistema de Storage pra não correr o risco de um player ganhar 2x no mesmo dia.

 

como faz pra colocar id de items, q tem quantidade sem ser crystal coins ??

Link para o post
Compartilhar em outros sites
  • 3 years later...

Só não entendi porque deixar a mensagem que a próxima loteria vai acontecer em duas horas, se o horário é pré-estabelecido na config, e não a cada duas horas.

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por gmdouglas
      Lindões do TK, estou com um probleminha simples, porém não sei resolver.
      Tenho um Lottery System em meu servidor, toda hora sorteia 5k de crystal.
      Os sorteados vão para o SITE, pois ai vem o problema:
      Toda hora aumenta um vencedor e a página da Loterry System só aumenta.
      Gostaria de limitar para aparecer apenas os últimos 20 vencedores, é possível?
       
      Segue o PHP:
      <?PHP $main_content .= '<center><h1>Lottery System</h1><h4>Nosso Lottery System sorteia toda hora 5K de Crystal Coins, entre os Players On Line.</h4></center><br><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tr BGCOLOR="'.$config['site']['vdarkborder'].'"><td CLASS=white><center><b>Nome do ganhador</b></center></td><td CLASS=white width=184 colspan=2><center><b>Recompensa</b></center></td></tr>'; $lottery = $SQL->query('SELECT id, name, item, world_id 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=35%><center>'.$result['item'].'</center></td><TD WIDTH=30%><center>Br Ot Server</center></td></tr> '; } $main_content .= '</table>'; ?>  
      Olhem o tamanho que já está:

    • Por Escrezov
      Galera, tenho o sistema de loterias no server e a pagina no gesior, funcionam perfeitamente.

      Ela executa a seguinte query:


      SELECT `id`, `name`, `item` FROM lottery ORDER BY `id` ASC LIMIT 12;

      Gostaria que a execução fosse decrescente no ID.



      Alguem me ajuda a criar a nova query?
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo