Thread: Major Additions - Realm Conquest System
View Single Post
  #406  
Old 07-06-2009, 07:47 PM
Dutch_Boy Dutch_Boy is offline
 
Join Date: Dec 2007
Location: The Netherlands
Posts: 214
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by moat View Post
Had that same issue. Our forum is mostly local so its doesn't get any hits overnight. The way VB's scheduling works if noone's hit the site for a few hours the next person only triggers one update and doesn't catchup on the missed ones. I made a few changes to the update script to calculate the number of missed updates and perform a catchup of the missed ones (just wrapped the existing code in a loop)

My conquestCycle.php below. I've changed the update time to 30 mins (the figure of 1800 in 2 lines below) and changed the VB scheduler to 15 minutes. A bit rough but it worked.

PHP Code:
<?php

// ######################## SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
if (!
is_object($vbulletin->db))
{
    exit;
}

// ########################################################################
// ######################### START MAIN SCRIPT ############################
// ########################################################################

$settings $vbulletin->db->query_first("SELECT * FROM ".TABLE_PREFIX."conquest_gameset");

$time time();
// $next = $settings[gLastCycle] + (60 * $settings[gCycleMinutes]);
$loopz = (time()-$settings[gLastCycle]) / 1800;
$roundednext time() - (time() % 1800);

// if ($time >= $next)
for($i=1;$i<=$loopz;$i++)
{
    
$vbulletin->db->query_write("UPDATE IGNORE ".TABLE_PREFIX."conquest_gameset SET gLastCycle = '".$roundednext."'");

    
$players $vbulletin->db->query_read("SELECT * FROM ".TABLE_PREFIX."conquest_players AS conquest_players
        LEFT JOIN "
.TABLE_PREFIX."conquest_nations AS conquest_nations ON conquest_players.nationID = conquest_nations.nationID
    "
);

    while (
$player $vbulletin->db->fetch_array($players))
    {
        
$spyCost $player[pSpies] * $settings[gSpyUpkeep];
        
$goldGain ceil($settings[gCycleGold] * ($player[nIncome]/100)) - $spyCost;

        
$newTurns $player[pTurns] + $settings[gCycleTurns];
        
$newGold $player[pGold] + $goldGain;
        
$newTroops $player[pTroops] + $settings[gCycleTroops];

        if (
$newTroops $settings[gMinTroops]) { $newTroops $settings[gMinTroops]; }
        if (
$newTurns $settings[gMaxTurns]) { $newTurns $settings[gMaxTurns]; }

        
$vbulletin->db->query_write("
            UPDATE IGNORE "
.TABLE_PREFIX."conquest_players
            SET    pTurns = "
.$newTurns.",
                pGold = "
.$newGold.",
                pTroops = "
.$newTroops."
            WHERE playerID = "
.$player[playerID]."
        "
);
    }
}

?>
Where do i need to put this code?
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01154 seconds
  • Memory Usage 1,822KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete