Example #1
0
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 '';
}
Example #2
0
 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) {