new UserPreference(UserPreference.CATEGORY_TYPE,"klad", "Игра Искатели клада",""), new UserPreference(UserPreference.INTEGER_TYPE,"klad.room", "Комната для игры",getIntProperty("klad.room")), new UserPreference(UserPreference.INTEGER_TYPE,"dmoney", "Максимальная ставка",getIntProperty("dmoney")),
commands.put("!очко", new Cmd("!очко", "$n $n", 139)); commands.put("!взлом", new Cmd("!взлом", "$n", 137)); commands.put("!тир", new Cmd("!тир", "$n", 138));
Code
case 139: commandGameOchko(proc, uin, this.parser.parseArgs(tmsg)); break; case 137: commandVzlom(proc, uin, this.parser.parseArgs(tmsg)); break; case 138: commandTir(proc, uin, this.parser.parseArgs(tmsg)); break;
Code
public void commandGameOchko(IcqProtocol proc, String uin, Vector v) { if ((!isChat(proc, uin)) && (!this.psp.testAdmin(uin))) return; if (!auth(proc, uin, "g_kaz")) return; try { int i1 = ((Integer)v.get(0)).intValue(); int i2 = ((Integer)v.get(1)).intValue(); Users uss = this.srv.us.getUser(uin); if (uss.room != this.psp.getIntProperty("ochkoo.room")) { proc.mq.add(uin, "Играть в казино можно только в комнате " + this.psp.getIntProperty("ochkoo.room")); return; }if (uss.ball <= 0) { proc.mq.add(uin, "На вашем счету " + uss.ball + "!\nДля участия в игре, пополните пожалуйста ваш счет!"); return; }if (i2 > uss.ball) { proc.mq.add(uin, "Ставка не должна быть больше суммы на вашем счету!"); return; }if (i2 <= 0) { proc.mq.add(uin, "Ставка не должна быть меньше или равна 0!"); return; }if ((i1 < 0) || (i1 > 4)) { proc.mq.add(uin, "Число не должна быть меньше 0 и больше 4"); return; }int ger = (int)(Math.random() * 4.0D); proc.mq.add(uin, "Ваше число " + i1 + ", выпало " + ger); if (i1 == ger) { uss.ball += i2; String rrrt = i2 + "".toString(); this.srv.us.updateUser(uss); proc.mq.add(uin, "Поздравляю! Числа совпали, ваш приз составляет " + i2 + "\nВаш баланс: " + uss.ball + "ч$"); this.srv.cq.addMsg("Пользователь [" + uss.id + "] " + uss.localnick + " выиграл " + i2 + " в игре 'Очко'", uss.sn, uss.room); return; } uss.ball -= i2; this.srv.us.updateUser(uss); proc.mq.add(uin, "Числа не совпали!\nВы проиграли свои " + i2 + "\nВаш баланс: " + uss.ball + ""); this.srv.cq.addMsg("Пользователь [" + uss.id + "] " + uss.localnick + " проиграл свои " + i2 + " в игре 'Очко'", uss.sn, uss.room); } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin, "Ошибка " + ex.getMessage()); } }
Code
public void commandVzlom(IcqProtocol proc, String uin, Vector v) { if ((!isChat(proc, uin)) && (!this.psp.testAdmin(uin))) return; if (!auth(proc, uin, "vzlomik")) return; try { int s = ((Integer)v.get(0)).intValue(); int numb = (int)(Math.random() * 900.0D); int num = (int)(Math.random() * 15.0D); int hp = (int)(Math.random() * 7.0D); Users uss = this.srv.us.getUser(uin); if (uss.room != this.psp.getIntProperty("vzlo.room")) { proc.mq.add(uin, "Игра (взлом банка) находиться тут: [" + this.psp.getIntProperty("vzlo.room") + "] " + this.srv.us.getRoom(this.psp.getIntProperty("vzlo.room")).getName() + ""); return; } int moder_id = 0; String r = "Тебя спалила охрана!!!"; String d = "руб."; String z = "%"; if (s > 15) { proc.mq.add(uin, "Число должно быть от 1 до 15..."); return; } if (uss.ball < this.psp.getIntProperty("vzlo.many")) { proc.mq.add(uin, "Чтобы начать взлом надо чтобы у тебя было больше " + psp.getIntProperty("vzlo.many") + " на счету"); return; } this.srv.cq.addMsg("Программа_взломщик: Я подобрала число: (" + num + ") , а [" + uss.localnick + "] выбрал: (" + s + ")", "", uss.room); if (s == num) { uss.ball += numb; proc.mq.add(uin, "Программа_взломщик: Пароли доступа совпали!!! Ты получаешь [" + numb + "], твой баланс = " + uss.ball + d); this.srv.cq.addMsg("Программа_взломщик: Пароли доступа совпали!!! |" + uss.id + "|[" + uss.localnick + "] ХАКЕР:)!!! Он взломал банкомат и украл [" + numb + "], его баланс [" + uss.localnick + "](а) составляет: [" + uss.ball + "]", uss.sn, uss.room); } else { proc.mq.add(uin, "Программа_взломщик: Я подобрала число: (" + num + ") , А ты выбрал: (" + s + ") , Пароли не совпали! ПАЛЕВО!!! МЕНТЫ!!! ТЕБЯ поймали и взяли штраф!!!Они тебя избили и твоё здоровье уменьшелось на: [" + hp + "]% и теперь составляет: " + uss.hp + z); proc.mq.add(uin, "Тебя запалили менты!!! И взяли штраф на " + numb + ",Попробуй еще раз! ;)"); uss.ball -= numb; uss.hp -= hp; } } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin, "Ошибка " + ex.getMessage()); } }
Code
public void commandTir(IcqProtocol proc, String uin, Vector v) { try { int s = ((Integer)v.get(0)).intValue(); Users uss = this.srv.us.getUser(uin); int num = (int)(Math.random() * 3.0D); if (uss.room != this.psp.getIntProperty("tiri.room")) { proc.mq.add(uin, "Играть в тир можно только в комнате: [" + psp.getIntProperty("tiri.room") + "]"); return; } if (s > 3) { proc.mq.add(uin, "Прохожий: Ей,мужик!!!(женщина!!!) Число должно быть от 0 до 3"); return; } if (uss.ball < this.psp.getIntProperty("tiri.close")) { proc.mq.add(uin, "Прохожий: Ей,мужик!!!(женщина!!!) У тебя нету денек на первый взнос (<" + psp.getIntProperty("tiri.close") + ")!"); return; } Manager.getInstance().setData("times", Long.valueOf(System.currentTimeMillis() + 100L)); this.srv.cq.addMsg("Прохожий: Чел должен был попасть в [" + num + "] , а " + uss.localnick + " попал сюда: [" + s + "]", "", uss.room); if (s == num) { this.srv.cq.addMsg("Прохожий: Круто,он каким то чудом попал сюда: [" + s + "]. Поздравляем! " + uss.localnick + "!", "", uss.room); proc.mq.add(uin, "Прохожий: Надо было те попасть сюда: [" + num + "],а ты попал туда же: [" + s + "] правильно!!!"); int uroven = uss.ball + this.psp.getIntProperty("tiri.finish"); uss.ball = uroven; this.srv.us.updateUser(uss); } if (s != num) { int h = (int)(Math.random() * 3.0D); this.srv.cq.addMsg("Прохожий: А " + uss.localnick + " не попал в цель! Надо было сюда: [" + num + "],а " + uss.localnick + " попал сюда: [" + s + "]", "", uss.room); proc.mq.add(uin, "Прохожий: Цель была вот эта: [" + num + "].\nТы проиграл много руб.\nТвой баланс: " + uss.ball + " руб."); int uroven = uss.ball - psp.getIntProperty("tiri.close"); uss.ball = uroven; this.srv.us.updateUser(uss); } proc.mq.add(uin, "Прохожий: Пауза между запросами 5 секунд..."); } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin, "Ошибка " + ex.getMessage()); } }
Code
setIntProperty("ochkoo.room", 20); setIntProperty("vzlo.room", 10); setIntProperty("vzlo.many", 25); setIntProperty("tiri.room", 10); setIntProperty("tiri.finish", 10); setIntProperty("tiri.close", 20); new UserPreference(4, "ochkoo", "Игра ''Очко''"), new UserPreference(3, "ochkoo.room", "Комната для игры", Integer.valueOf(getIntProperty("ochkoo.room"))), new UserPreference(4, "vzlo", "Взлом пользовательских денег"), new UserPreference(3, "vzlo.room", "Комната для взлома", Integer.valueOf(getIntProperty("vzlo.room")),true), new UserPreference(3, "vzlo.many", "Игра разрешена если у юзера денег более:", Integer.valueOf(getIntProperty("vzlo.many"))), new UserPreference(4, "tiri", "Игра тир"), new UserPreference(3, "tiri.room", "Комната для игры", Integer.valueOf(getIntProperty("tiri.room"))), new UserPreference(3, "tiri.finish", "При выигрыше давать денег...", Integer.valueOf(getIntProperty("tiri.finish"))), new UserPreference(3, "tiri.close", "При проигрыше давать денег...", Integer.valueOf(getIntProperty("tiri.close"))),
commands.put("!наехать", new Cmd("!наехать", "$n", 175));
Code
case 175: commandnaexat(proc, uin, tmsg, parser.parseArgs(tmsg)); break;
Code
public void commandnaexat(IcqProtocol proc, String uin, String tmsg, Vector v) { if(!isChat(proc,uin) && !psp.testAdmin(uin)) return; if(!auth(proc,uin, "game")) return; int i = (Integer)v.get(0); Users u = srv.us.getUser(i); Users us = srv.us.getUser(uin); if (uss.room != this.psp.getIntProperty("auto.naezd")) { proc.mq.add(uin, "Наехать вы можете только в " + this.psp.getIntProperty("auto.naezd") + " комнате"); return; } if (us.auto == "Пешеход") { proc.mq.add(uin, "На чём наезжать собрался?"); return; } if(u.id==0){ proc.mq.add(uin,"Пользователь не найден"); return; } if (u.state == 1) { proc.mq.add(uin, "Пользователь не в чате"); return; } if (us.room != u.room) { proc.mq.add(uin, "Пользователь в другой комнате"); return; } int ohran = u.ohran - psp.getIntProperty("uron.ohran.avto"); u.ohran = ohran; int gold = u.ball - psp.getIntProperty("money.auto"); u.ball = gold; int gold2 = us.ball + psp.getIntProperty("money.auto"); us.ball = gold2; srv.us.updateUser(u); proc.mq.add(uin, "Ты наехал на своей машине |"+us.auto+"| на "+u.localnick+"и у он(а) теряет здоровье охраны |"+psp.getIntProperty("uron.ohran.avto")+"| и |"+psp.getIntProperty("money.auto")+"| и тебе начисляется |"+psp.getIntProperty("money.auto")+"|...удачной езды!"); proc.mq.add(u.sn, u.localnick + ", " + "на тебя наехал" + us.localnick + "на своём автомобиле |"+us.auto+"| и ты теряешь |"+psp.getIntProperty("uron.ohran.avto")+"| охраны и |"+psp.getIntProperty("money.auto")+"| денег..в следущий раз смотри по сторонам"); return; }
Code
setIntProperty("auto.naezd", 0); setIntProperty("uron.ohran.avto", 0); setIntProperty("money.auto", 0); new UserPreference(UserPreference.CATEGORY_TYPE,"naezd", "•••Настройки Наезда•••",""), new UserPreference(UserPreference.INTEGER_TYPE, "auto.naezd", "Комната для наезда", Integer.valueOf(getIntProperty("auto.naezd"))), new UserPreference(UserPreference.INTEGER_TYPE, "uron.ohran.avto", "Урон охраны при наезде", Integer.valueOf(getIntProperty("uron.ohran.avto"))), new UserPreference(UserPreference.INTEGER_TYPE, "money.auto", "Сколько отнимают за наезд", Integer.valueOf(getIntProperty("money.auto"))),
commands.put("!настену", new Cmd("!настену", "$s", 129)); commands.put("!удстена", new Cmd("!удстена", "", 130)); commands.put("!стена", new Cmd("!стена", "", 131));
Code
case 129: commandWall(proc, uin, parser.parseArgs(tmsg)); break; case 130: commandDelWall(proc, uin, parser.parseArgs(tmsg)); break; case 131: commandNaWall(proc, uin, parser.parseArgs(tmsg)); break;
Code
public void commandNaWall(IcqProtocol proc, String uin, Vector v) { try { String s = this.psp.loadText("./wall.txt"); String[] ss = s.split("<br>"); for (int i = 0; i < ss.length; i++) proc.mq.add(uin, "Стена:\n\n" + ss[i]); } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin, "Ошибка " + ex.getMessage()); } }
/* * автор Дмитрий Пролубников * переделана капча, bezzzdelnick */ public void commandReg(IcqProtocol proc, String uin, Vector v, String mmsg) { try { boolean twoPart = false; int maxNick = psp.getIntProperty("chat.maxNickLenght"); if ((srv.getProps().getBooleanProperty("chat.useCaptcha")) && (comMap.containsKey(uin))) { if (((CommandExtend)comMap.get(uin)).getMsg().equalsIgnoreCase(mmsg)) { twoPart = true; v = ((CommandExtend)comMap.get(uin)).getData(); comMap.remove(uin); } else { proc.mq.add(uin, "Система: Вы неправильно ответили на вопрос, попытайтесь зарегистрироваться еще раз."); comMap.remove(uin); return; } } String lnick = (String)v.get(0); Users uss = srv.us.getUser(uin); if ((lnick.equals("")) || (lnick.equals(" "))) { proc.mq.add(uin, "Ошибка: Ошибка регистрации, пустой ник"); Log.talk(uin + "Ошибка в коде штоли: " + mmsg); return; } if (lnick.length() > maxNick) { lnick = lnick.substring(0, maxNick); proc.mq.add(uin, "Система: Ваш ник слишком длинный и будет обрезан."); } String newNick = testNick(uin, lnick); if (newNick == null) { proc.mq.add(uin, "Ошибка: Пустой ник."); return; } if (!newNick.equals(lnick)) { lnick = newNick; proc.mq.add(uin, "Система: В вашем нике содержаться запретные символы, они будут удалены."); } lnick = lnick.replace('\n', ' '); lnick = lnick.replace('\r', ' '); if ((psp.getBooleanProperty("chat.isUniqueNick")) && (!qauth(proc, uin, "dblnick")) && (!psp.testAdmin(uin)) && (srv.us.isUsedNick(lnick))) { proc.mq.add(uin, "Ошибка: Такой ник уже существует.\n" + "Попробуйте другой ник."); return; } String oldNick = uss.localnick; if (uss.state != 0) { if (!srv.us.auth(proc, uin, "reg")) return; if (uss.state != 2) return; if (srv.us.getCountNickChange(uss.id) > maxNick) { proc.mq.add(uin, "Система: Вы не можете так часто менять ник."); return; } if (oldNick.equals(lnick)) { if (uss.state == 1) proc.mq.add(uin, "Система: Ник не изменен.\n" + "Для входа в чат используйте команду !чат"); else proc.mq.add(uin, "Система: Ник не изменен."); return; } uss.localnick = (lnick + uss.smailik); Log.talk(uin + " сменил ник на " + mmsg); proc.mq.add(uin, "Система: Обновление завершено"); srv.cq.addMsg("Система: У пользователя \"" + oldNick + "\" ник изменен на \"" + lnick + uss.smailik + "\"", "''", uss.room); srv.us.db.log(uss.id, uin, "REG", lnick, uss.room); srv.us.db.event(uss.id, uin, "REG", 0, "", lnick); uss.basesn = proc.baseUin; srv.us.updateUser(uss); return; } testNick(uin, lnick); if (newNick == null) { proc.mq.add(uin, "Ошибка: Пустой ник."); return; } if (!newNick.equals(lnick)) { lnick = newNick; proc.mq.add(uin, "Система: В вашем нике содержаться запретные символы, они будут удалены."); } if ((psp.getBooleanProperty("chat.FreeReg")) || (psp.testAdmin(uin))) { ////////// if ((srv.getProps().getBooleanProperty("chat.useCaptcha")) && (!twoPart)) { PreparedStatement pst = srv.us.db.getDb().prepareStatement("SELECT * FROM victorina ORDER BY RAND() LIMIT 1"); ResultSet rs = pst.executeQuery(); while(rs.next()){ Captcha = rs.getString(3); } rs.close(); pst.close(); String s = Captcha; int a = srv.us.r.nextInt(s.length()+1); int Answer = a+1; s = s.substring(0,a)+srv.us.getCaptchaSimbol()+s.substring(a); proc.mq.add(uin, "Система: Ответьте пожалуйсто на легкий вопрос.\n" + "Какои символ лишний в привиденном ниже слове.\n" + "Время на раздумье 5 минут, перед ответом подождите 20 секунд.\n" + "Слово: ["+s+"]\n" + "========\n" + "ПРИМЕЧАНИЕ: Посчитайте все буквы в слове, и напишите номер(место) " + "символа, который лишний в слове."); comMap.put(uin, new CommandExtend(uin, mmsg, String.valueOf(Answer), v, 300000)); return; } uss.state = 1; uss.basesn = proc.baseUin; uss.localnick = lnick; int id = srv.us.addUser(uss); proc.mq.add(uin, "", 1); Log.talk(uin + " Reg new user: " + mmsg); srv.us.db.log(id, uin, "REG", lnick, uss.room); srv.us.db.event(id, uin, "REG", 0, "", lnick); Set<Integer> rid = new HashSet(); Enumeration<String> e = srv.cq.uq.keys(); while (e.hasMoreElements()) { String i = e.nextElement(); Users us = srv.us.getUser(i); if (us.state == UserWork.STATE_CHAT) { rid.add(us.room); } } for (int i : rid) { srv.cq.addMsg("Система: Зарегистрировался новый пользователь " + uss.localnick + " [ID=" + uss.id + "]", uin, i); } proc.mq.add(uin, "Система: Вы зарегестрировались в лучшем чате, вход в чат по команде !чат.\n" + "Ваш ID = " + uss.id); return; } String inv = (String)v.get(1); if (inv.equals("")) { Log.talk(uin + "Неправильный пароль: " + mmsg); proc.mq.add(uin, "Система: Не правильный пароль.\n" + "Вход в чат по приглашениям вызван из-за флуда чата.");
return; } if (srv.us.testInvite(inv)) { if (!srv.us.updateInvite(uin, inv)) { proc.mq.add(uin, "Система: Ошибка регистрации.\n" + "Вход в чат по приглашениям вызван из-за флуда чата.");
Log.talk(uin + "Ошибка регистрации: " + mmsg); } else { if ((srv.getProps().getBooleanProperty("chat.useCaptcha")) && (!twoPart)) { PreparedStatement pst = srv.us.db.getDb().prepareStatement("SELECT * FROM victorina ORDER BY RAND() LIMIT 1"); ResultSet rs = pst.executeQuery(); while(rs.next()){ Captcha = rs.getString(3); } rs.close(); pst.close(); String s = Captcha; int a = srv.us.r.nextInt(s.length()+1); int Answer = a+1; s = s.substring(0,a)+srv.us.getCaptchaSimbol()+s.substring(a); proc.mq.add(uin, "Система: Ответьте пожалуйсто на легкий вопрос.\n" + "Какои символ лишний в привиденном ниже слове.\n" + "Время на раздумье 5 минут, перед ответом подождите 20 секунд.\n" + "Слово: ["+s+"]\n" + "========\n" + "ПРИМЕЧАНИЕ: Посчитайте все буквы в слове, и напишите номер(место) " + "символа, который лишний в слове."); comMap.put(uin, new CommandExtend(uin, mmsg, String.valueOf(Answer), v, 300000)); return; } uss.state = 1; uss.basesn = proc.baseUin; uss.localnick = lnick; srv.us.updateUser(uss); int id = srv.us.addUser(uss); proc.mq.add(uin, "", 1); Set<Integer> rid = new HashSet(); Enumeration<String> e = srv.cq.uq.keys(); while (e.hasMoreElements()) { String i = e.nextElement(); Users us = srv.us.getUser(i); if (us.state == UserWork.STATE_CHAT) { rid.add(us.room); } } for (int i : rid) { srv.cq.addMsg("Система: Зарегистрировался новый пользователь " + uss.localnick + " [ID=" + uss.id + "]", uin, i); } srv.us.db.log(id, uin, "REG", lnick, uss.room); srv.us.db.event(id, uin, "REG", 0, "", lnick); } } else { Log.talk(uin + " Ошибка регистрации: " + mmsg); proc.mq.add(uin, "Система: Ошибка регистрации, неверный пароль приглашения.\n" + "Вход в чат по приглашениям вызван из-за флуда чата.");
/** * Капча */ public String getCaptchaSimbol(){ String s = "!@#$%^&*()!№;:/\\|"; Random r = new Random(); String v=""; for(int i=0;i<1;i++){ v += s.charAt(r.nextInt(s.length())); } return v; }
Добавление/Удаление главного уина через команду В ChatCommandProc
Code
commands.put("!добуин", new Cmd("!добуин","$c",145)); commands.put("!делуин", new Cmd("!делуин","$c",146));
case 146: if (main.getBooleanProperty("del_admin_uin")) { if(!isChat(proc,uin) && !psp.testAdmin(uin)) break; command_delAdmin(proc, uin, parser.parseArgs(tmsg)); } else proc.mq.add(uin, "Эта команда закрыта"); break;
case 145: if (main.getBooleanProperty("dob_admin_uin")) { if(!isChat(proc,uin) && !psp.testAdmin(uin)) break; commandAdmin(proc, uin, parser.parseArgs(tmsg)); } else proc.mq.add(uin, "Эта команда закрыта"); break;
Code
public void commandAdmin(IcqProtocol proc, String uin, Vector v){ if(!isChat(proc,uin) && !psp.testAdmin(uin)) return; if (!auth(proc, uin, "admins")) return; try{ String s = (String)v.get(0); if(s.trim().equals(" ")){ proc.mq.add(uin,"Не верно введен uin! ( "+s+" )"); return; } try { int i = Integer.parseInt(s); } catch(NumberFormatException e) { proc.mq.add(uin,"Не верно введен uin! ( "+s+" )\n Пиши цыфрами!"); return; } String uin2 = s + ";" + (srv.getProps().getStringProperty("bot.adminUIN")); proc.mq.add(uin,"Уин успешно добавлен!"); ChatProps.getInstance(srv.getName()).setStringProperty("bot.adminUIN", uin2); Manager.getInstance().getService(srv.getName()).getProps().save(); } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,ex.getMessage()); } } public void command_delAdmin(IcqProtocol proc, String uin, Vector v){ if(!isChat(proc,uin) && !psp.testAdmin(uin)) return; if (!auth(proc, uin, "admins")) return; try{ String s = (String)v.get(0); if(s.trim().equals(" ")){ proc.mq.add(uin,"Не верно введен uin! ( "+s+" )"); return; } try { int i = Integer.parseInt(s); } catch(NumberFormatException e) { proc.mq.add(uin,"Не верно введен uin! ( "+s+" )\n Пиши цыфрами!"); return; } String uins = ""; String sn = this.psp.getStringProperty("bot.adminUIN"); String[] ss = sn.split(";"); for (int ii = 0; ii < ss.length; ++ii) { if (!ss[ii].equals(s))uins =uins+ ss[ii]+";"; } proc.mq.add(uin,"Уин успешно удален!"); ChatProps.getInstance(srv.getName()).setStringProperty("bot.adminUIN", uins); Manager.getInstance().getService(srv.getName()).getProps().save(); } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,ex.getMessage()); } }
В MainProps
Code
setBooleanProperty("del_admin_uin",false); new UserPreference(UserPreference.BOOLEAN_TYPE,"del_admin_uin","Включить команду !делуин",getBooleanProperty("del_admin_uin")), setBooleanProperty("dob_admin_uin",false); new UserPreference(UserPreference.BOOLEAN_TYPE,"dob_admin_uin","Включить команду !добуин",getBooleanProperty("dob_admin_uin")),
Тюрьма (ver.1.0) Автор: scano Описание: Команда для запирания пользователя на время
Код:
ChatCommandProc:
Code
authObj.put("prison","Отправлять юзера в тюрьму(!тюрьма)"); commands.put("!тюрьма", new Cmd("!тюрьма","$n $n $s",??)); ------------------------------------------------------------------------------------------------------
case ??: commandPrison(proc, uin, parser.parseArgs(tmsg), mmsg); break; ------------------------------------------------------------------------------------------------------
/** * !тюрьма * Оправка пользователя в тюрьму */ public void commandPrison(IcqProtocol proc, String uin, Vector v, String mmsg){ if(!isChat(proc, uin) && !psp.testAdmin(uin)) return; if(!auth(proc, uin, "prison")) return; int i1 = (Integer)v.get(0); int i2 = (Integer)v.get(1); String r = (String)v.get(2); Users u = srv.us.getUser(i1); Users uss = srv.us.getUser(uin); long t = System.currentTimeMillis() + (long)(i2 * 60000); if(psp.testAdmin(u.sn)) { proc.mq.add(uin, "Нельзя отправить пользователя в тюрьму, так как он владеет иммунитетом"); return; } if(uin.equals(u.sn)) { proc.mq.add(uin, "Вы не можете запереть самого себя в тюрьме!"); return; } if(testPrison(u.sn)){ proc.mq.add(uin,"Вы не можете изменить время закрытия!"); return; } if(u.id == UserWork.STATE_NO_REG) { proc.mq.add(uin, "Такого пользователя не существует!"); return; } if(u.state == UserWork.STATE_NO_CHAT) { proc.mq.add(uin, "Пользователь не в чате"); return; } if(r.equals("") || r.equals(" ")) { proc.mq.add(uin, "Укажите причину запирания"); return; } if(i2 > psp.getIntProperty("pris.pr.time") || i2 <= 0) { proc.mq.add(uin, "Время заперания не может быть меньше 1 и больше " + psp.getIntProperty("pris.pr.time") + " мин."); return; } else { srv.cq.addMsg("Пользователь [" + u.id + "] " + u.localnick + " был заперт в тюрьме на " + i2 + " мин.\nПо причине: " + r + ", пользователем [" + uss.id + "] " + srv.us.getUser(uin).localnick, u.sn, u.room); u.room = psp.getIntProperty("pris.prRoom"); u.lastclosed = t; srv.us.updateUser(u); srv.cq.changeUserRoom(u.sn, psp.getIntProperty("pris.prRoom"));[/b] srv.us.db.event(u.id, uin, "BANROOM", uss.id, "", " заперт в комнате |" + psp.getIntProperty("pris.prRoom") + "| - " + srv.us.getRoom(psp.getIntProperty("pris.prRoom")).getName() + " на " + i2 + " мин.\nПо причине: " + r + ", пользователем [" + uss.id + "] " + srv.us.getUser(uin).localnick); srv.us.db.log(u.id, uin, "BANROOM", "Пользователь [" + u.id + "] " + u.localnick + " заперт в комнате |" + psp.getIntProperty("pris.prRoom") + "| - " + srv.us.getRoom(psp.getIntProperty("pris.prRoom")).getName() + " на " + i2 + " мин.", u.room); srv.cq.addMsg("Пользователь [" + u.id + "] " + u.localnick + " переведен в тюрьму на " + i2 + " мин.\nПо причине: " + r + ", пользователем [" + uss.id + "] " + srv.us.getUser(uin).localnick, u.sn, u.room); srv.getIcqProcess(u.basesn).mq.add(u.sn, "Ты был переведен в тюрьму на " + i2 + " мин.\nПо причине " + r + ", пользователем [" + uss.id + "] " + srv.us.getUser(uin).localnick); proc.mq.add(uin, "Пользователь [" + u.id + "] " + u.localnick + " успешно заперт в комнате |" + psp.getIntProperty("pris.prRoom") + "| - " + srv.us.getRoom(psp.getIntProperty("pris.prRoom")).getName()); return; } } ------------------------------------------------------------------------------------------------------
public int testPrison(String sn) { long tc = srv.us.getUser(sn).lastclosed; long t = System.currentTimeMillis(); return tc <= t ? 0 : (int)(tc - t) / 60000; } ------------------------------------------------------------------------------------------------------
if(testPrison(srv.us.getUser(uin).sn) > 0) { proc.mq.add(uin, "Ты не можешь перейти в другую комнату!\nТебе осталось сидеть в тюрьме: " + testKickR(srv.us.getUser(uin).sn) + " мин."); return; } ------------------------------------------------------------------------------------------------------
SQL запрос:
Code
alter table `users` add `lastclosed` timestamp not null default '0000-00-00 00:00:00'
new UserPreference(UserPreference.CATEGORY_TYPE,"pris","Настройки тюрьмы",""), new UserPreference(UserPreference.INTEGER_TYPE,"pris.prRoom","Комната тюрьмы",getIntProperty("pris.prRoom")), new UserPreference(UserPreference.INTEGER_TYPE,"pris.pr.time","Максимальное время запирания (мин.)",getIntProperty("pris.pr.time")),
Добавлено (19.02.2012, 20:03) --------------------------------------------- Зарплата (ver.1.0) Автор: scano Характеристика: 1) Вкл/выкл начисления зарплаты через ПУ 2) Автоматическое получение зарплаты после входа в чат 3) Интервал зарплаты можно установить в панеле управления 4) Уведомление о получение зарплаты (вкл/выкл в ПУ)
/** * Зарплата (анализ последнего получения зарплаты) */ public int getSalary(int id, int i) { String q = ("select count(*) from `events` where user_id=" + id + " and type='BALL' and (to_days( now( ) ) - to_days( time )) <"+i); Vector v = db.getValues(q); System.out.println(Integer.parseInt(((String[])v.get(0))[0])); return Integer.parseInt(((String[])v.get(0))[0]); }
new UserPreference(UserPreference.CATEGORY_TYPE,"sal","Настройки зарплаты",""), new UserPreference(UserPreference.BOOLEAN_TYPE,"sal.on.off","Использовать зарплату в чате",getBooleanProperty("sal.on.off")), new UserPreference(UserPreference.BOOLEAN_TYPE,"sal.msg","Уведомлять юзера о получении зарплаты",getBooleanProperty("sal.msg")), new UserPreference(UserPreference.INTEGER_TYPE,"sal.term.mon","Интервал получения зарплаты (дн.)",getIntProperty("sal.term.mon")), new UserPreference(UserPreference.BOOLEAN_TYPE,"sal.adm.on.off","Начислять зарплату для adm",getBooleanProperty("sal.adm.on.off")), new UserPreference(UserPreference.INTEGER_TYPE,"sal.adm.mon","Зарплата adm (ч$)",getIntProperty("sal.adm.mon")), new UserPreference(UserPreference.BOOLEAN_TYPE,"sal.mod.on.off","Начислять зарплату для mod",getBooleanProperty("sal.mod.on.off")), new UserPreference(UserPreference.INTEGER_TYPE,"sal.mod.mon","Зарплата mod (ч$)",getIntProperty("sal.mod.mon")), new UserPreference(UserPreference.BOOLEAN_TYPE,"sal.user.on.off","Начислять зарплату для user",getBooleanProperty("sal.user.on.off")), new UserPreference(UserPreference.INTEGER_TYPE,"sal.user.mon","Зарплата user (ч$)",getIntProperty("sal.user.mon")),
Добавлено (19.02.2012, 20:05) --------------------------------------------- Список забаненных (ver. 2.0) Автор: scano Характеристика: 1) Устранена ошибка вывода списка забаненных Описание: Всем наверн известно, что при забанивании юзера и перезапуска чата, то список забаненных показывается пустым, пока не заглянешь в историю бана, вызвана эта ошибка связи с тем, что список забаненных не загружён в память чата. Я устранил данную ошибку и ввёл имитацию запуска истории. Примечание: может слегка нагружать чат
Код:
ChatCommandProc:
Code
authObj.put("ban","Банить юзера(!бан)"); commands.put("!банлист", new Cmd("!банлист","",??)); ==============================================
case ??: proc.mq.add(uin, srv.us.BanList()); break; ==============================================
UserWork:
Code
/** * !банлист - список забаненных */ public String BanList(){ String s = "Список забаненных:\n" + "|ид|ник|»|админ|-|причина|\n"; getBanLoad(); Iterator <Users> it = uc.values().iterator(); while(it.hasNext()){ Users u = it.next(); if(u.state==STATE_BANNED) { s += "[" + u.id + "] " + u.localnick + " » [" + getBanDesc(u.id) + "\n"; } } return s; } ==============================================
public String getBanDesc(int id) { Vector<String[]> v = db.getValues("SELECT user_id2, msg FROM `events` where type='BAN' and user_id='"+id+"'order by time desc"); if(v.size()==0) return ""; return getUser(Integer.parseInt(v.get(0)[0])).id + "] " + getUser(Integer.parseInt(v.get(0)[0])).localnick + " - " + v.get(0)[1]; } ==============================================
/** * Загрузка списка забаненных */ public void getBanLoad() { try { PreparedStatement pst = db.getDb().prepareStatement("select time, user_id, user_id2, msg from events where type='BAN' order by time desc"); ResultSet rs = pst.executeQuery(); for(int i=0;i<20;i++){ if(rs.next()){ Log.getLogger(serviceName).talk( "["+rs.getInt(2)+"]"+(rs.getInt(2)==0 ? "Admin" : getUser(rs.getInt(2)).localnick)+" "+ "["+rs.getInt(3)+"]"+(rs.getInt(3)==0 ? "Admin" : getUser(rs.getInt(3)).localnick)+" "+ rs.getString(4)); } } rs.close(); pst.close(); } catch (Exception ex) { ex.printStackTrace(); } } ==============================================
С уважением Sma1L
Сообщение отредактировал Andrey™ - Воскресенье, 19.02.2012, 20:04