1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Игра робовойны

Тема в разделе "Дополнения для Jimbot", создана пользователем cerber, 20 фев 2015.

  1. TopicStarter Overlay
    cerber

    cerber Местный инквизитор Команда форума

    Регистрация:
    25.02.11
    Сообщения:
    8.456
    Симпатии:
    2.783
    Баллы:
    575
    Пол:
    Мужской
    Адрес:
    АДА
    автор - BezzzDelnick
    Код:
    commands.put("!война", new Cmd("!война", "", ***));
    
    Код:
    case ***:
    GamesWar(proc, uin, parser.parseArgs(tmsg), mmsg);
    break;
    Код:
    public void GamesWar(IcqProtocol proc, String uin, Vector v, String mmsg) {
    class WarInfo {
    boolean started = false;
    int health; //Здоровье бота
    int damage; //Урон бота
    int prize;  //Выигрыш
    String names;
    boolean bot = false; //Если true, то бот атакует, иначе защищается
    }
    
    String[] names = {"Степлер", "Андроид", "Мегатрон", "Г. Букин", "Бэтмен", "ReGe-Bot"}; //Имена
    int[] health   = {      100,       150,     200,       250,     300,          350}; //Здоровье
    int[] damage   = {       5,         30,       40,         55,       60,            70}; //Урон
    int[] prize    = {      500,       1500,     2500,       4000,     6000,          9000}; //Выигрыш
    Users u = srv.us.getUser(uin);
    
    if (u.room!=psp.getIntProperty("robiki")) {
    proc.mq.add(uin,"Робо-Воины проходят в комнате "+psp.getIntProperty("robiki"));
    return;
    }
    
    CommandExtend ucmd = comMap.get(uin);
    if (ucmd==null) {
    
    String list = "Рефери: Выберите противника РОБО-ВОИНА:";
    for (int i=0; i<names.length; i++)
    list = list + "\n" + (i+1) + ") " + names[i] + " - [H-" + health[i] + "] (L-"+prize[i]+")";
    list += "\n0) Отменить бой";
    Vector v2=new Vector(1);
    v2.add(new WarInfo());
    ucmd = new CommandExtend(uin,mmsg,null,v2,300000);
    comMap.put(uin, ucmd);
    proc.mq.add(uin, list);
    return;
    }
    Vector v2=ucmd.getData();
    WarInfo info = (WarInfo)v2.get(0);
    
    String[] places  = {"голова", "живот", "ноги"};
    String[] placesv = {"голову", "живот", "ноги"};
    String placesList = "";
    for (int i = 0; i<places.length; i++) {
    if (i!=0) placesList += ", ";
    placesList += places[i];
    }
    
    if (!info.started) {
    //Выбор противника
    int botIndex = -1;
    try {
    botIndex = Integer.parseInt(mmsg);
    } catch (NumberFormatException ex) {
    }
    if (botIndex<0 || botIndex>names.length) {
    ucmd = new CommandExtend(uin,ucmd.getCmd(),null,v2,300000);
    comMap.put(uin, ucmd);
    proc.mq.add(uin, "Рефери: Нужно указать число от 0 до " + names.length + ". Попробуйте ещё раз.");
    return;
    }
    if (botIndex==0) {
    comMap.remove(uin);
    proc.mq.add(uin, "Рефери: Вы отменили битву.");
    return;
    }
    info.started = true;
    botIndex--;
    info.health = health[botIndex];
    info.damage = damage[botIndex];
    info.prize = prize[botIndex];
    info.names = names[botIndex];
    ucmd = new CommandExtend(uin,ucmd.getCmd(),null,v2,300000);
    comMap.put(uin, ucmd);
    proc.mq.add(uin, "Рефери: Ваш противник: "+names[botIndex]+". Бой начат, выбирайте, куда нанести удар ("+placesList+").");
    srv.cq.addMsg("РОБО-ВОИНЫ: Начинается бой между роботом "+names[botIndex]+" и человеком ["+u.id+"]"+u.localnick, u.sn, u.room);
    return;
    }
    
    //Бой
    String strPlace = mmsg.trim().toLowerCase();
    int userPlace = -1;
    for (int i = 0; i<places.length; i++) {
    if (strPlace.equals(places[i])) {
    userPlace = i;
    break;
    }
    }
    if (userPlace<0) {
    proc.mq.add(uin, "Рефери: Вы должны указать место из списка ("+placesList+"). Попробуйте ещё раз.");
    comMap.put(uin, new CommandExtend(uin,ucmd.getCmd(),null,v2,300000));
    return;
    }
    int botPlace = r.nextInt(places.length);
    String msg;
    if (info.bot) {
    //Бот атакует
    if (userPlace==botPlace) {
    msg = "Рефери: "+info.names+" пытался ударить Вас в " + placesv[userPlace] + ", удар не удался.\n";
    }
    else {
    int damage2 = (int)(info.damage*(r.nextDouble()/2+0.75));//Плюс-минус 25%
    
    u.hp -= damage2;
    if (u.hp<=0) {
    u.hp = 0;
    if (u.ball>0) u.ball = 0;
    }
    msg = "Рефери: "+info.names+" ударил Вас в " + placesv[botPlace] + ". Вам нанесён урон - " + damage2 + " нр%. Ваше здоровье: " + u.hp + " нр%.\n";
    srv.us.updateUser(u);
    if (u.hp==0) {
    msg += "Рефери: Бой завершён - Вы проиграли. Вы потеряли все денежные средства.";
    srv.cq.addMsg("РОБО-ВОИНЫ: В бое между РОБОТОМ "+info.names+" && ЧЕЛОВЕКОМ ["+u.id+"]"+u.localnick +" - ПОБЕДИЛ робот!!!", u.sn, u.room);
    comMap.remove(uin);
    proc.mq.add(uin, msg);
    return;
    }
    }
    }
    else {
    //Пользователь атакует
    if (userPlace==botPlace) {
    msg = "Рефери: "+info.names+" поставил блок на " + placesv[userPlace] + ", удар не удался.\n";
    }
    else {
    int damage2 = (int) ((Math.random()*50));
    if (damage2<1) damage2 = 5;
    else if (damage2>10000) damage2 = 10000;
    msg = "Рефери: "+info.names+" поставил блок на " + placesv[botPlace] + ", удар удался! "+info.names+"[H-"+info.health+"] нанесён урон - " + damage2 + " нр%.\n";
    info.health -= damage2;
    if (info.health<=0) {
    int prize2 = (int)(info.prize*(r.nextDouble()/2+0.75)); //Плюс-минус 25%
    u.ball += prize2;
    srv.us.updateUser(u);
    msg += "Рефери: Бой завершён - Вы победили! Вы получаете "+prize2+" рублей. Поздравляем ! *YAHOO*";
    srv.cq.addMsg("РОБО-ВОИНЫ: В бое между РОБОТОМ "+info.names+" && ЧЕЛОВЕКОМ ["+u.id+"]"+u.localnick +" - ПОБЕДИЛ человек!!!", u.sn, u.room);
    comMap.remove(uin);
    proc.mq.add(uin, msg);
    return;
    }
    }
    }
    if (info.bot) {
    info.bot = false;
    msg += "Рефери: Теперь Вы атакуете - выбирайте, куда нанести удар (" + placesList + ").";
    }
    else {
    info.bot = true;
    msg += "Рефери: Теперь Вы защищаетесь - выбирайте, куда поставить блок (" + placesList + ").";
    }
    proc.mq.add(uin, msg);
    comMap.put(uin, new CommandExtend(uin,ucmd.getCmd(),null,v2,300000));
    }
    в ChatProps
    Код:
    setIntProperty("robiki",3);
    new UserPreference(UserPreference.STRING_TYPE,"robiki", "Комнаты игры", getStringProperty("robiki")),
    Xpert™ и forZone нравится это.

Поделиться этой страницей