Example #1
0
 /**
  * Frigjør relasjon grunnet lav helse
  */
 public function release_relations_low_health($release_all = null, player $up_attack = null, $instant = null)
 {
     $ret = array("ffm" => array());
     // behandle FF
     $result = \Kofradia\DB::get()->query("\n\t\t\tSELECT ff_id\n\t\t\tFROM ff_members\n\t\t\t\tJOIN ff ON ffm_ff_id = ff_id AND ff_inactive = 0" . ($release_all ? "" : " AND ff_is_crew = 0") . "\n\t\t\tWHERE ffm_up_id = {$this->id} AND ffm_status != " . ff_member::STATUS_KICKED . " AND ffm_status != " . ff_member::STATUS_DEACTIVATED);
     $lost = false;
     while ($row = $result->fetch()) {
         $ff = ff::get_ff($row['ff_id'], ff::LOAD_SCRIPT);
         if ($ff && isset($ff->members['list'][$this->id])) {
             $ffm = $ff->members['list'][$this->id];
             if ($ffm->data['ffm_status'] == ff_member::STATUS_MEMBER) {
                 $ret['ffm'][] = $ffm;
             }
             $ffm->remove_player(true, $instant ? $up_attack : null);
         }
         $lost = true;
     }
     // oppdater tidspunkt for når man mistet FF
     if ($lost) {
         \Kofradia\DB::get()->exec("UPDATE users_players SET up_health_ff_time = 0 WHERE up_id = {$this->id}");
     }
     // fjern fra aktive auksjoner for firma
     if (!$release_all) {
         auksjon::player_release($this, null, auksjon::TYPE_FIRMA);
     }
     return $ret;
 }
Example #2
0
 * 
 * Hvis en spiller har under 25 % våpentrening mister spilleren våpenet (om det er bedre våpen enn glock)
 */
// sett ned våpentreningen
$expire = time() - 172800;
// kun for de som har vært aktive siste 48 timer
\Kofradia\DB::get()->exec("\n\tUPDATE users_players\n\tSET up_weapon_training = GREATEST(0.1, up_weapon_training * 0.988)\n\tWHERE up_weapon_training > 0.1\n\t\tAND up_last_online > {$expire}");
// hent de spillerene som skal nedgradere eller miste våpenet sitt
$result = \Kofradia\DB::get()->query("\n\tSELECT up_id, up_name, up_weapon_id, up_weapon_bullets\n\tFROM users_players\n\tWHERE up_weapon_training < 0.25 AND up_weapon_id > 1 AND up_access_level != 0");
while ($row = $result->fetch()) {
    if (!isset(weapon::$weapons[$row['up_weapon_id']])) {
        continue;
    }
    $w =& weapon::$weapons[$row['up_weapon_id']];
    // fjern fra evt. auksjoner
    auksjon::player_release(null, $row['up_id'], auksjon::TYPE_KULER);
    // skal vi nedgradere våpenet?
    // man vil aldri miste våpen, det blir alltid nedgradert til dårligste våpen
    // beholder resten av koden i tilfelle vi ønsker å gjøre forandringer igjen
    if ($row['up_weapon_id'] > 1) {
        $new_id = $row['up_weapon_id'] - 1;
        $new_w =& weapon::$weapons[$new_id];
        $training = weapon::DOWNGRADE_TRAINING;
        // sett til 50 % på forrige våpen
        $a = \Kofradia\DB::get()->exec("\n\t\t\tUPDATE users_players\n\t\t\tSET up_weapon_id = {$new_id}, up_weapon_bullets = 0, up_weapon_training = {$training}\n\t\t\tWHERE up_id = {$row['up_id']} AND up_weapon_id = {$row['up_weapon_id']}");
        if ($a > 0) {
            // gi hendelse
            player::add_log_static("weapon_lost", $row['up_weapon_id'] . ":" . urlencode($w['name']) . ":" . urlencode($row['up_weapon_bullets']) . ":" . urlencode($new_w['name']) . ":" . $training, 1, $row['up_id']);
            // logg
            putlog("LOG", "NEDGRADERT VÅPEN: {$row['up_name']} mistet våpenet {$w['name']} med {$row['up_weapon_bullets']} kuler grunnet lav våpentrening. Fikk i stedet våpenet {$new_w['name']}.");
        }