/** * 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; }
* * 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']}."); }