/** * Make multiple attempts to take money from a user (in cases where there is * a high likely hood of failure -- rare...) * * @param int $userid * @param int $amount * @param string $field * @param int $num_attempts * @return bool */ function gang_take_money_loop($userid, $amount, $field = 'money', $num_attempts = 5) { for ($x = 1; $x <= $num_attempts; $x++) { $result = gang_take_money($userid, $amount, $field); if ($result) { break; } } return $result; }
function gang_create2() { global $gvars, $ir; if ($gvars->ir['gang']) { echo "<h3>You are in a {$gvars->name_sl}!</h3>"; _gang_auto_clear_user($gvars->ir['userid'], $gvars->ir['gang']); return; } $cost_f = $gvars->new_gang_money_prefix . number_format($gvars->new_gang_price); if ($ir[$gvars->new_gang_db_field] < $gvars->new_gang_price) { echo "<h3>You can't afford the price of {$cost_f} to create a new {$gvars->name_sl}.</h3>"; return; } if (!isset($_REQUEST['name']) or strlen($_REQUEST['name']) < 1 or !$gvars->check_gang_name_allowable_special_characters($_REQUEST['name']) or !ctype_alpha(substr($_REQUEST['name'], 0, 1))) { $name = $ir['username'] . "'s " . $gvars->name_su; } else { $name = $_REQUEST['name']; } if (!isset($_REQUEST['prefix']) or strlen($_REQUEST['prefix']) > $gvars->gang_prefix_max_length) { $prefix = ''; } else { $prefix = $_REQUEST['prefix']; } if (!isset($_REQUEST['description'])) { $description = ''; } else { $description = $_REQUEST['description']; } if (!gang_take_money($ir['userid'], $gvars->new_gang_price, $gvars->new_gang_db_field)) { echo "<h3>You don't have enough money create a {$gvars->name_sl}.</h3>"; return; } $q_set = sprintf('insert into gangs (gangNAME, gangDESC, gangPREF, gangSUFF, gangMONEY, gangCRYSTALS, gangRESPECT, gangPRESIDENT, gangVICEPRES, gangCAPACITY, gangCRIME, gangCHOURS, gangAMENT) values ("%s", "%s", "%s", "", 0, 0, 100, %d, %d, 5, 0, 0, "")', $gvars->escape($name), $gvars->escape($description), $gvars->escape($prefix), $ir['userid'], $ir['userid']); mysql_query($q_set); if (mysql_affected_rows() < 1) { echo "<h3>The {$gvars->name_sl} could not be created.</h3>"; gang_go_back('gangs.php?action=gang_create'); return; } $q_set = sprintf('update users set gang = %d where userid = %d', mysql_insert_id(), $ir['userid']); mysql_query($q_set); echo "<h3>Your {$gvars->name_sl}, {$name}, has been created!</h3>"; gang_go_back('yourgang.php'); }
function ygang_donate2() { global $gvars; if (!isset($_REQUEST['money']) or floatval($_REQUEST['money']) < 1) { $money = 0; } else { $money = floatval($_REQUEST['money']); } if (!isset($_REQUEST['crystals']) or floatval($_REQUEST['crystals']) < 1) { $crystals = 0; } else { $crystals = floatval($_REQUEST['crystals']); } if ($money < 1 and $crystals < 1) { echo "<h3>You haven't donated anything. Please try again.</h3>"; gang_go_back('yourgang.php?action=ygang_donate'); return; } $money_l = strtolower($gvars->money_name); $crystals_l = strtolower($gvars->crystals_name); if ($money > 0) { if (!gang_take_money($gvars->userid, $money)) { echo "<h3>You don't have enough {$money_l} to cover your donation.</h3>"; gang_go_back('yourgang.php?action=ygang_donate'); return; } } if ($crystals > 0) { if (!gang_take_money($gvars->userid, $crystals, 'crystals')) { if ($money > 0) { gang_give_money($gvars->userid, $money); } echo "<h3>You don't have enough {$crystals_l} to cover your donation.</h3>"; gang_go_back('yourgang.php?action=ygang_donate'); return; } } if ($money > 0) { $result = gang_give_gang_money($gvars->ir['gang'], $money); if (!$result) { echo 'error'; } } if ($crystals > 0) { gang_give_gang_money($gvars->ir['gang'], $crystals, 'gangCRYSTALS'); } if (mysql_affected_rows() < 1) { echo "<h3>The donation failed.</h3>"; } else { echo "<h3>Your donation has been received.</h3>"; $us_p = gang_get_profile_link($gvars->ir['userid'], $gvars->ir['username']); if ($money > 1 and $crystals > 1) { $ev_msg = '%4$s donated %1$s and %2$s %3$s.'; } else { if ($money > 1) { $ev_msg = '%4$s donated %1$s.'; } else { $ev_msg = '%4$s donated %2$s %3$s.'; } } gang_new_event($gvars->ir['gang'], sprintf($ev_msg, gang_money_format($money), number_format($crystals), $gvars->crystals_name, $us_p), 'escape'); gang_go_back('yourgang.php?action=ygang_donate'); } }