示例#1
0
    foreach ($arrRequiredSkills as $iSkill => $iValue) {
        if ((double) $iValue > (double) $arrSkills[$iSkill]) {
            exit(json::encode(array(array('msg', 'You\'re not skilled enough yet!'))));
        }
    }
    $arrCosts = db_select_fields('d_r_d_costs', 'resource_id,amount', '0 < amount AND r_d_id = ' . (int) $rd['id']);
    foreach ($arrCosts as &$c) {
        $c = max(0, applyRDChange('r_d_costs', (int) $c));
        unset($c);
    }
    if ($HAVOC_RESDEV) {
        $rd['eta'] = max(0, (int) $HAVOC_RESDEV_ETA);
    } else {
        $rd['eta'] = applyRDChange('r_d_eta', (int) $rd['eta']);
    }
    if (0 === array_sum($arrCosts) || db_transaction_update($arrCosts, 'resource_id', 'amount')) {
        $arrInsert = array('r_d_id' => (int) $rd['id'], 'planet_id' => PLANET_ID, 'eta' => (int) $rd['eta']);
        db_insert('planet_r_d', $arrInsert);
        // SUCCESS
        exit(json::encode(array(array('eval', 'document.location.reload();'))));
    }
    // FAILED
    exit(json::encode(array(array('msg', 'You probably don\'t have enough resources!'))));
}
// END if ( isset($_GET['r_d_id']) )
_header();
?>

<div class="header"><?php 
echo $szName;
if ($HAVOC_RESDEV) {
示例#2
0
db_update('planet_resources', 'amount = 500000', 'planet_id = 1');
// PRE
echo 'Pre: ';
print_r(db_select_fields('d_resources r, planet_resources p', 'resource_id,amount', 'p.resource_id = r.id AND p.planet_id = 1'));
echo "\n";
/**/
exit;
/**/
$arrUpdates = array(1 => 300000, 2 => 50, 3 => 50);
function db_transaction_update($f_arrUpdates, $f_szIfField, $f_szUpdateField)
{
    db_query("BEGIN;");
    $szIfClause = '__N__';
    $szIfClause0 = 'IF(' . $f_szIfField . '=__X__,__Y__,__N__)';
    foreach ($f_arrUpdates as $x => $y) {
        $szIfClause = str_replace('__N__', str_replace('__X__', $x, str_replace('__Y__', $y, $szIfClause0)), $szIfClause);
    }
    $szIfClause = str_replace('__N__', '0', $szIfClause);
    db_query('UPDATE planet_resources SET ' . $f_szUpdateField . ' = ' . $f_szUpdateField . ' - ' . $szIfClause . ' WHERE ' . $f_szUpdateField . ' >= ' . $szIfClause . ' AND planet_id = 1;');
    if (count($f_arrUpdates) === (int) db_affected_rows()) {
        db_query("COMMIT;");
        return true;
    }
    db_query("ROLLBACK;");
    return false;
}
var_dump(db_transaction_update($arrUpdates, 'resource_id', 'amount'));
echo "\n";
// POST
echo 'Post: ';
print_r(db_select_fields('d_resources r, planet_resources p', 'resource_id,amount', 'p.resource_id = r.id AND p.planet_id = 1'));
示例#3
0
function addProductions($f_szType, $f_arrUnits)
{
    global $GAMEPREFS;
    $arrUnits = array();
    foreach ($f_arrUnits as $iUnit => $iAmount) {
        if (0 < (int) trim($iAmount) && count($u = db_select('d_all_units u, planet_r_d p', 'u.id = ' . $iUnit . ' AND p.r_d_id = u.r_d_required_id AND p.eta = 0 AND p.planet_id = ' . PLANET_ID . ' AND u.T IN (\'' . str_replace(',', "','", $f_szType) . "')"))) {
            $arrUnit = $u[0];
            $arrAmounts = array((int) $iAmount);
            $arrFunds = db_select_fields('planet_resources', 'resource_id,amount', 'planet_id = ' . PLANET_ID);
            $arrUnitCosts = db_select_fields('d_unit_costs', 'resource_id,amount', 'unit_id = ' . $iUnit . ' AND 0 < amount');
            foreach ($arrUnitCosts as $iResourceId => $iCosts) {
                $arrAmounts[] = floor($arrFunds[$iResourceId] / $iCosts);
            }
            $iAmount = min($arrAmounts);
            if (0 < $iAmount) {
                $arrCosts = array();
                foreach ($arrUnitCosts as $iResourceId => $iCosts) {
                    $arrCosts[$iResourceId] = $iAmount * $iCosts;
                }
                if (0 === array_sum($arrCosts) || db_transaction_update($arrCosts, 'resource_id', 'amount')) {
                    $arrInsert = array('planet_id' => PLANET_ID, 'unit_id' => $iUnit, 'eta' => (int) $GAMEPREFS['havoc_production'] ? 0 : (int) $arrUnit['build_eta'], 'amount' => $iAmount);
                    db_insert('planet_production', $arrInsert);
                }
            }
        }
    }
}