function check_join($char, $player, &$join, &$alt, &$svit, $auto = 0) { //return 0; global $user_id; if (checkFunc($user_id, 1, 1) == 0) { //нельзя присоединяться если уже в бою return 0; } $est_plash_monaha_char = mysqlresult(myquery("SELECT COUNT(*) FROM game_items WHERE user_id=" . $char['user_id'] . " AND priznak=0 AND used=5 AND item_id=" . plash_monaha . ""), 0, 0); if ($est_plash_monaha_char == 1) { return 'Ты отказываешься от боя'; } $map = mysql_fetch_array(myquery("SELECT * FROM game_maps WHERE id='" . $char['map_name'] . "'")); $svitok = 0; list($host) = mysql_fetch_array(myquery("SELECT host FROM game_users_active WHERE user_id={$user_id}")); list($host_more) = mysql_fetch_array(myquery("SELECT host_more FROM game_users_active_host WHERE user_id={$user_id}")); list($cur_hod, $type, $npc) = mysql_fetch_array(myquery("SELECT hod,combat_type,npc FROM combat WHERE combat_id=" . $player['boy'] . "")); if ($map['dolina'] == 0) { if ($map['boy_type1'] == 0 and $map['boy_type2'] == 0 and $map['boy_type3'] == 0 and $map['boy_type4'] == 0 and $map['boy_type5'] == 0 and $map['boy_type6'] == 0 and $map['boy_type7'] == 0) { return 'На карте все бои запрещены'; } } else { if (clans_war == 0 and $auto == 0) { return 'В Долине Смерти бои еще запрещены'; } if ($cur_hod > 3) { return 'После 3 хода в Долине вход запрещен'; } } if ($type == 8 or $type == 9 or $type == 10) { //в турнирные бои вступать нельзя return 'В турнирые бои вступать нельзя'; } elseif ($npc == 1) { //нельзя нападать мертвым или на мертвого return 'Нельзя присоединяться к боям с ботами'; } $comb_func = combat_getFunc($player['user_id']); if ($player['boy'] == 0) { //присоединяться можно только к игрокам в бою return 'Игрок не участвует в бою'; } elseif ($player['HP'] == 0 or $char['HP'] == 0) { //нельзя нападать мертвым или на мертвого return 'Ты или игрок мертв'; } elseif ($comb_func != 5 and $comb_func != 6) { //присоединяться можно только к уже начавшим битву return 'Игрока нет в бою'; } elseif (mysql_result(myquery("SELECT COUNT(*) FROM combat_lose_user WHERE combat_id=" . $player['boy'] . " AND (user_id={$user_id} OR (host='" . $host . "' AND host_more='" . $host_more . "'))"), 0, 0) > 0 and $auto == 0) { //нельзя повторно вступать в бой return 'Ты уже ' . echo_sex('участвовал', 'участвовала') . ' в этом бою'; } elseif ($cur_hod > 6) { //после 6 хода в бой вступать нельзя return 'Вход в бой закрыт'; } if ($map['id'] != map_coliseum) { //Если есть свитки присоединения к бою - обработаем их $ch_small = mysql_result(myquery("SELECT COUNT(*) FROM game_items WHERE user_id={$user_id} AND priznak=0 AND used IN (12,13,14) AND item_id='" . svitok_small_item_id . "'"), 0, 0); $ch_sred = mysql_result(myquery("SELECT COUNT(*) FROM game_items WHERE user_id={$user_id} AND priznak=0 AND used IN (12,13,14) AND item_id='" . svitok_sred_item_id . "'"), 0, 0); } else { $ch_small = 0; $ch_sred = 0; } //echo '$ch_small = '.$ch_small.',$ch_sred='.$ch_sred; //Не в Долине Смерти проверим доступность присоединения по свиткам if ($map['dolina'] == 0) { if ($cur_hod > 3) { if ($map['id'] == map_coliseum) { return 'В бой можно войти только до конца 3 хода боя!'; } elseif ($ch_small == 0 and $ch_sred == 0) { //присоединяться к бою после 3 хода без свитков нельзя return 'У тебя нет нужного свитка!'; } } } //Далее проверим тип боя и право вступления в него с учетом свитков на руках if ($type == 1 and $char['clan_id'] != 0) { //в обычный бой можно присоединиться только к соклановцу $error = ''; $SELECT = myquery("SELECT view_active_users.clan_id FROM view_active_users,combat_users WHERE view_active_users.clan_id<>'" . $player['clan_id'] . "' AND view_active_users.user_id=combat_users.user_id and combat_users.combat_id='" . $player['boy'] . "' ORDER BY view_active_users.clan_id ASC limit 1"); list($clan) = mysql_fetch_array($SELECT); if ($clan == 0) { return 'Можно присоединяться только к битве клановых игроков'; } //если надо показать значок меча - возвращаем 1, join=1, alt = текст ALT тега картинки значка //если надо показать значок выбора свитка - возвращаем 1, join=99, alt = значения не имеет //сначала проверяем возможность обычного входа в бой без свитков. Если разрешено - возвращаемся, иначе начинаем проверку по свиткам if ($cur_hod <= 3) { if ($player['clan_id'] == $char['clan_id']) { $join = 1; $alt = 'Присоединиться к обычной битве'; return 1; } } $svit = ''; //по среднему свитку вступаем в любой бой до 7 хода if ($ch_sred > 0 and $cur_hod <= 6) { $svit .= ',2,'; } //по малому свитку вступаем на обычных условиях в любое время после 3 хода if ($ch_small > 0 and $cur_hod >= 3 and $cur_hod <= 6 and $player['clan_id'] == $char['clan_id']) { $svit .= ',1,'; } if ($svit != '' or $cur_hod < 3) { $join = 99; $alt = 'Вступить в обычную битву'; return 1; } else { $join = 0; return 'Ты не можешь присоединиться к обычной битве'; } } elseif ($type == 2) { return 'К дуэлям нельзя присоединяться!'; } elseif ($type == 3) { $error = ''; $sred_level = 0; $kol = 0; $sel = myquery("SELECT SUM(clevel) AS sumlevel,COUNT(*) AS kol FROM combat_users WHERE combat_id='" . $player['boy'] . "' AND `join`=0 GROUP BY combat_id"); list($sred_level, $kol) = mysql_fetch_array($sel); if ($kol > 0) { $sred_level = round($sred_level / $kol); //если надо показать значок меча - возвращаем 1, join=1, alt = текст ALT тега картинки значка //если надо показать значок выбора свитка - возвразаем 1, join=99, alt = значения не имеет //сначала проверяем возможность обычного входа в бой без свитков. Если разрешено - возвращаемся, иначе начинаем проверку по свиткам if ($cur_hod <= 3) { if (check_level3() or clans_war != 0 and $map['dolina'] == 1) { $join = 1; $alt = 'Присоединиться к общей битве'; return 1; } } $svit = ''; //по среднему свитку вступаем в любой бой до 7 хода if ($ch_sred > 0 and $cur_hod <= 6) { $svit .= ',2,'; } //по малому свитку вступаем на обычных условиях в любое время после 3 хода if ($ch_small > 0 and $cur_hod >= 3 and $cur_hod <= 6 and check_level3()) { $svit .= ',1,'; } if ($svit != '' or $cur_hod < 3) { $join = 99; $alt = 'Вступить в общую битву'; return 1; } else { $join = 0; return 'Ты не можешь присоединиться к общей битве (ср.уровень = ' . $sred_level . ')'; } } else { return 'В бою никого нет'; } } elseif ($type == 4) { //в клановый бой можно присоединиться только к соклановцу или выступить еще одной стороной в бое $error = ''; //если надо показать значок меча - возвращаем 1, join=1, alt = текст ALT тега картинки значка //если надо показать значок выбора свитка - возвразаем 1, join=99, alt = значения не имеет //сначала проверяем возможность обычного входа в бой без свитков. Если разрешено - возвращаемся, иначе начинаем проверку по свиткам if ($cur_hod <= 3) { if ($char['clan_id'] == $player['clan_id']) { $join = 1; $alt = 'Присоединиться к клановой битве'; return 1; } elseif ($char['clan_id'] != 0) { $join = 1; $alt = 'Вступить в клановую битву'; return 1; } } $svit = ''; //по среднему свитку вступаем в любой бой до 7 хода if ($ch_sred > 0 and $cur_hod <= 6) { $svit .= ',2,'; } //по малому свитку вступаем на обычных условиях в любое время после 3 хода if ($ch_small > 0 and $cur_hod >= 3 and $cur_hod <= 6 and ($char['clan_id'] == $player['clan_id'] or $char['clan_id'] != 0)) { $svit .= ',1,'; } if ($svit != '' or $cur_hod < 3) { $join = 99; $alt = 'Вступить в клановую битву'; return 1; } else { $join = 0; return 'Ты не можешь присоединиться к клановой битве'; } } elseif ($type == 5) { $error = ''; $sred_level = 0; $kol = 0; $sel = myquery("SELECT SUM(clevel) AS sumlevel,COUNT(*) AS kol FROM combat_users WHERE combat_id='" . $player['boy'] . "' AND `join`=0 GROUP BY combat_id"); list($sred_level, $kol) = mysql_fetch_array($sel); if ($kol == 0) { return 'В бою уже никого нет!'; } if ($auto == 1) { //для автоприсоединения (Битвы Хаоса) вступаем независимо от свитков return 1; } $sred_level = round($sred_level / $kol); //если надо показать значок меча - возвращаем 1, join=1, alt = текст ALT тега картинки значка //если надо показать значок выбора свитка - возвразаем 1, join=99, alt = значения не имеет //сначала проверяем возможность обычного входа в бой без свитков. Если разрешено - возвращаемся, иначе начинаем проверку по свиткам if ($cur_hod <= 3) { if (check_level5() or clans_war != 0 and $map['dolina'] == 1) { $join = 1; $alt = 'Присоединиться к битве все против всех'; return 1; } } $svit = ''; //по среднему свитку вступаем в любой бой до 7 хода if ($ch_sred > 0 and $cur_hod <= 6) { $svit .= ',2,'; } //по малому свитку вступаем на обычных условиях в любое время после 3 хода if ($ch_small > 0 and $cur_hod >= 3 and $cur_hod <= 6 and check_level5()) { $svit .= ',1,'; } if ($svit != '' or $cur_hod < 3) { $join = 99; $alt = 'Вступить в битву все против всех'; return 1; } else { $join = 0; return 'Ты не можешь присоединиться к битве все против всех (ср.уровень = ' . $sred_level . ')'; } } elseif ($type == 6) { $error = ''; $sred_level = 0; $kol = 0; $sel = myquery("SELECT SUM(clevel) AS sumlevel,COUNT(*) AS kol FROM combat_users WHERE combat_id='" . $player['boy'] . "' AND `join`=0 GROUP BY combat_id"); list($sred_level, $kol) = mysql_fetch_array($sel); if ($kol == 0) { return 'В бою уже никого нет!'; } $sred_level = round($sred_level / $kol); //если надо показать значок меча - возвращаем 1, join=1, alt = текст ALT тега картинки значка //если надо показать значок выбора свитка - возвразаем 1, join=99, alt = значения не имеет //сначала проверяем возможность обычного входа в бой без свитков. Если разрешено - возвращаемся, иначе начинаем проверку по свиткам if ($cur_hod <= 3) { if (check_level6() or clans_war != 0 and $map['dolina'] == 1) { $join = 1; $alt = 'Присоединиться к битве склонностей'; return 1; } } $svit = ''; //по среднему свитку вступаем в любой бой до 7 хода if ($map['id'] != map_coliseum) { if ($ch_sred > 0 and $cur_hod <= 6) { $svit .= ',2,'; } //по малому свитку вступаем на обычных условиях в любое время после 3 хода if ($ch_small > 0 and $cur_hod >= 3 and $cur_hod <= 6 and check_level6()) { $svit .= ',1,'; } } if ($svit != '' or $cur_hod < 3) { $join = 99; $alt = 'Вступить в битву склонностей'; return 1; } else { $join = 0; return 'Ты не можешь присоединиться к битве склонностей (ср.уровень = ' . $sred_level . ')'; } } elseif ($type == 7) { $error = ''; $sred_level = 0; $kol = 0; $sel = myquery("SELECT SUM(clevel) AS sumlevel,COUNT(*) AS kol FROM combat_users WHERE combat_id='" . $player['boy'] . "' AND `join`=0 GROUP BY combat_id"); list($sred_level, $kol) = mysql_fetch_array($sel); if ($kol == 0) { return 'В бою уже никого нет!'; } $sred_level = round($sred_level / $kol); //если надо показать значок меча - возвращаем 1, join=1, alt = текст ALT тега картинки значка //если надо показать значок выбора свитка - возвразаем 1, join=99, alt = значения не имеет //сначала проверяем возможность обычного входа в бой без свитков. Если разрешено - возвращаемся, иначе начинаем проверку по свиткам if ($cur_hod <= 3) { if (check_level7() or clans_war != 0 and $map['dolina'] == 1) { $join = 1; $alt = 'Присоединиться к битве рас'; return 1; } } $svit = ''; //по среднему свитку вступаем в любой бой до 7 хода if ($ch_sred > 0 and $cur_hod <= 6) { $svit .= ',2,'; } //по малому свитку вступаем на обычных условиях в любое время после 3 хода if ($ch_small > 0 and $cur_hod >= 3 and $cur_hod <= 6 and check_level7()) { $svit .= ',1,'; } if ($svit != '' or $cur_hod < 3) { $join = 99; $alt = 'Вступить в битву рас'; return 1; } else { $join = 0; return 'Ты не можешь присоединиться к битве рас (ср.уровень = ' . $sred_level . ')'; } } return ''; }
public static function checkFunc($func) { return checkFunc($func); }
mt_srand(make_seed()); if ($_SERVER['PHP_SELF'] == "/act.php" and (!isset($_GET['func']) or $_GET['func'] != 'boy') or $_SERVER['PHP_SELF'] == "/lib/town.php" and (!isset($_GET['option']) or $_GET['option'] != 12)) { $check_turnir = myquery("SELECT * FROM game_turnir_users WHERE user_id={$user_id}"); if (mysql_num_rows($check_turnir) > 0) { $tur = mysql_fetch_array($check_turnir); if ($tur['from_boy'] == 0) { setLocation('http://' . domain_name . '/lib/town.php?option=12'); } else { setLocation('http://' . domain_name . '/act.php?func=boy'); } die; } } // Видимо тут уже игрок в игре if (defined("MODULE_ID")) { $result_func = checkFunc($user_id, MODULE_ID); if (!defined("NO_FUNC_CHECK")) { if ($result_func == 0) { $last_str = getRedirectFunc($user_id); setLocation('http://' . domain_name . '/' . $last_str . ''); die; } } } $map_name = $char['map_name']; $filelist = ",/combat.php,/arcomage.php,/chat/chat_online.php,/chat/chat_ajax.php,/combat/ajax.php,/chat/chat.php,/chat/chat_update.php,/admin.php,/lib/map_editor.php,/main.php,/lib/town.php,"; if (strpos($filelist, PHP_SELF) == false) { //сначала проверяем на автонападение ботов if ($char['func_id'] != func_craft and $char['func_id'] != func_combat and $char['func_id'] != func_arcomage and (close_combat != 1 or $user_id == 612) and $char['hide'] == 0) { $result = myquery("SELECT game_npc.id FROM game_npc,game_npc_template WHERE game_npc.npc_id=game_npc_template.npc_id AND game_npc.map_name =" . $char['map_name'] . " AND game_npc.xpos =" . $char['map_xpos'] . " AND game_npc.ypos =" . $char['map_ypos'] . " AND game_npc_template.agressive IN ('2','1') AND game_npc.time_kill+game_npc_template.respawn<UNIX_TIMESTAMP() AND (game_npc.for_user_id=0 OR game_npc.for_user_id={$user_id}) ORDER BY game_npc.HP"); if (mysql_num_rows($result) > 0) {