Дата: Понедельник, 18.01.2010, 19:50 | Сообщение # 46
Замена перехода по комнатам! показывает: ушел(а) из комнаты в комнату
/** * Скрипт для расширения команд чата * Замена перехода в комнаты */
/** * При вызове скрипта определены следующие переменные: * ChatCommandProc cmd - ссылка на обработчик команд * IcqProtocol proc - ссылка на процесс обработки icq * String msg - текст сообщения с командой * String uin - кто отправил сообщение * String name - имя этого файла (при процедуре инсталяции скрипта) */
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!room", new Cmd("!room","$n $c",39,name)); cmd.addCommand("!комната", new Cmd("!комната","$n $c",39,name)); cmd.addCommand("!ком", new Cmd("!ком","$n $c",39,name)); cmd.addAuth("room","Переход по комнатам"); out="Ok"; return; }
if ((i==10) && (!cmd.qauth(proc, uin, "kickone"))) // у кого есть полномочие kickone игнорируем { proc.mq.add(uin,"Комната <<" + cmd.srv.us.getRoom(i).getName() + ">> закрыта для посещений!"); return; }
uss.room=i; cmd.srv.us.updateUser(uss); cmd.srv.cq.changeUserRoom(uin, i); String sss = cmd.psp.loadText("./news.txt"); proc.mq.add(uin,cmd.srv.us.getUser(uin).localnick+", ты причапал(а) в комнату\n" + i + " - " + cmd.srv.us.getRoom(i).getName() +"\nНовости: " + sss +"\nТема: " + cmd.srv.us.getRoom(i).getTopic());
Дата: Понедельник, 18.01.2010, 19:52 | Сообщение # 47
Скрипты повышения/понижения репутации юзеров. Теперь есть возможность просматривать кто, когда и за что изменил репутацию пользователю. Может кому пригодится.
try{ Vector v = cmd.getParser().parseArgs(msg); int s = (Integer)v.get(0); // набранный ид String r = (String)v.get(1); // причина Users us = cmd.srv.us.getUser(s); Users uss = cmd.srv.us.getUser(uin); if(us.id==0) { proc.mq.add(uin,"Ошибка! Такой пользователь ещё не зарегистрировался в чате!"); return; } // проверка на себя if(uss.id==s){ proc.mq.add(uin,us.localnick+",\nВнимание! Нельзя повысить репутацию самому себе!"); return; } // проверим причину повышения if(r==""){ proc.mq.add(uin,"Необходимо добавить причину повышения репутации."); return; } proc.mq.add(uin,"Вы увеличили репутацию на [1] пользователю [" + us.id + "]" + us.localnick + " за [" + r + "]."); int uroven = us.country+1; us. country = uroven;
File Persona = new File ("./Reit/"+us.id+".txt"); //if (Persona.exists()) Persona.open(); java.sql.Time T = new java.sql.Time(new java.util.Date().getTime()); java.sql.Date D = new java.sql.Date(new java.util.Date().getTime()); OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("./Reit/"+us.id+".txt",true),"windows-1251"); ow.write("[" + D +" "+ T + "] " + "Повысил: "+ uss.localnick + ". Причина: " + r + "\n"); ow.close(); cmd.srv.us.updateUser(us); cmd.srv.getIcqProcess(us.basesn).mq.add(us.sn,"Ваша репутация теперь: [" + uroven + "]\n Вам увеличил репутацию [" + uss.id + "]" + uss.localnick + " за [" + r + "].");
try{ Vector v = cmd.getParser().parseArgs(msg); int s = (Integer)v.get(0); String r = (String)v.get(1); // причина Users us = cmd.srv.us.getUser(s); Users uss = cmd.srv.us.getUser(uin); if(us.id==0) { proc.mq.add(uin,"Такой пользователь ещё не зарегистрировался в чате"); return; } // проверка на себя if(uss.id==s){ proc.mq.add(uin,us.localnick+",\nВнимание! Нельзя понизить репутацию самому себе!"); return; } // проверим причину понижения if(r==""){ proc.mq.add(uin,"Необходимо добавить причину понижения репутации."); return; } proc.mq.add(uin,"Вы уменьшили репутацию на [1] пользователю [" + us.id + "]" + us.localnick + " за [" + r + "]."); int uroven = us.country-1; us.country=uroven;
File Persona = new File ("./Reit/"+us.id+".txt"); //if (Persona.exists()) Persona.delete(); java.sql.Time T = new java.sql.Time(new java.util.Date().getTime()); java.sql.Date D = new java.sql.Date(new java.util.Date().getTime()); OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("./Reit/"+us.id+".txt",true),"windows-1251"); ow.write("[" + D +" "+ T + "] " + "Понизил: "+ uss.localnick +". Причина: " + r + "\n\n"); ow.close(); cmd.srv.us.updateUser(us); cmd.srv.getIcqProcess(us.basesn).mq.add(us.sn,"Ваша репутация теперь: [" + uroven + "]\n Вам уменьшил репутацию [" + uss.id + "]" + uss.localnick + " за [" + r + "].");
Дата: Понедельник, 18.01.2010, 19:53 | Сообщение # 48
Вход в чат с выводом комнат
/** * Альтернатива входу. * Вместо стандартной !чат использовать !чат <room>, где room - номер комнаты * Редактировать сообщения MESSAGE (Для входящего) и MESSAGE2 (Для всех прочих) * Imda (ред. Indigo_85) */
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!чат", new Cmd("!чат","$n",39,name)); cmd.addCommand("!chat", new Cmd("!chat","$n",39,name)); cmd.addCommand("!ч", new Cmd("!ч","$n",39,name)); cmd.addCommand("!вход", new Cmd("!вход","$n",39,name)); cmd.addCommand("!enter", new Cmd("!enter","$n",39,name)); // cmd.addAuth("room","Переход по комнатам"); out="Ok"; return; }
// Проверим полномочия //if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; //if(!cmd.auth(proc,uin, "roomgo")) return; try{ Users uss = cmd.srv.us.getUser(uin); if (uss.state==UserWork.STATE_CHAT) return; //Юзер уже в чате if((msg.compareTo("!чат")==0)||(msg.compareTo("!chat")==0)||(msg.compareTo("!ч")==0)||(msg.compareTo("!вход")==0)||(msg.compareTo("!en ter")= =0)){ proc.mq.add(uin,"Неверный ввод: выберите комнату."); return; } Vector v = cmd.getParser().parseArgs(msg); int choiseroom= (Integer)v.get(0); if((!cmd.srv.us.checkRoom(choiseroom))&&(choiseroom!=0)){ String sroom=""; Set nrooms = cmd.srv.us.getRooms(); for(int i:nrooms){ sroom += i + " - " + cmd.srv.us.getRoom(i).getName() + "\n"; } proc.mq.add(uin,"Неверный ввод: комнаты с таким номером не существует.\nДоступные комнаты: \n"+sroom); return; } String MESSAGE = "Вы вошли в чат"; String MESSAGE2 = " вошел в чат"; uss.room = choiseroom; boolean f = false; if(uss.localnick==null || uss.localnick.equals("") || uss.state==UserWork.STATE_NO_REG) { proc.mq.add(uin, "Прежде чем войти в чат, необходимо зарегистрироваться."); return; } if (uss.state==UserWork.STATE_NO_CHAT) { Log.info("Add contact " + uin); if(proc.isNoAuthUin(uin)) proc.mq.add(uin, "Чтобы бот видел ваш статус - авторизуйте его", 2); proc.addContactList(uin); uss.state = UserWork.STATE_CHAT; uss.basesn = proc.baseUin; cmd.srv.us.updateUser(uss); cmd.srv.cq.addMsg(uss.localnick + MESSAGE2, uss.sn, uss.room); proc.mq.add(uin,MESSAGE); f = true; } if (uss.state==UserWork.STATE_OFFLINE) { uss.state = UserWork.STATE_CHAT; uss.basesn = proc.baseUin; cmd.srv.us.updateUser(uss); proc.mq.add(uin,MESSAGE); if(cmd.psp.getBooleanProperty("chat.showChangeUserStatus")) cmd.srv.cq.addMsg(uss.localnick + MESSAGE2, uss.sn, uss.room); } if(f){ if(cmd.srv.us.getCurrUinUsers(uss.basesn)>cmd.psp.getIntProperty("chat.maxUserOnUin")){ proc.mq.add(uin,"Данный номер слишком загружен, вы будете автоматически переведены на ближайший свободный номер."); String s = cmd.srv.us.getFreeUin(); uss.basesn = s; cmd.srv.us.updateUser(uss); cmd.srv.cq.changeUser(uin, s); proc.mq.add(uin,"Сообщения теперь будут приходить с номера " + s); } } Log.talk(uss.localnick + MESSAGE2); cmd.srv.us.db.log(uss.id,uin,"STATE_IN",uss.localnick + MESSAGE2,uss.room); cmd.srv.us.db.event(uss.id, uin, "STATE_IN", 0, "", uss.localnick + MESSAGE2); cmd.srv.cq.addUser(uin,proc.baseUin, uss.room); } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,ex.getMessage()); }
СНАЧАЛО ДОБАВЬТЕ КОДЫ В ИСХОДНИКИ И СДЕЛАЙТЕ КОМПИЛЯЦИЮ!!!! Обратите внимание на то что выделено красным! Вот тут меняется комната:private int roomQuiz = 0; А тут задаётся интервал через который будет выводится вопрос в чат: private long TimeRange = 2; 1) Добавьте это в ChatCommandProc:
Quote
public RobQuiz quiz = null;
Это в основной парсер:
Quote
if(quiz==null){ quiz= new RobQuiz(srv); quiz.start(); } quiz.parse(uin, mmsg, srv.us.getUser(uin).room);
Потом заходите phpmyadmin. Открываете свою базу. Смотрите есть ли там таблица victorina. если ее там нет то нажимаете на вкладочку sql и в окно выполнить запрос вводите
Quote
CREATE TABLE `quiz` ( `id` int(11) NOT NULL, `vopros` varchar(255) NOT NULL, `otvet` varchar(255) NOT NULL, PRIMARY KEY (`id`) );
После этого таблица будет создана. Остается только набить ее вопросами. Для этого нада скачать дамп вопросов.
Далее в том же разделе sql чуть пониже увидите что можно выбрать файл. Находите свой дамп. и нажимаете ПОШЕЛ. После этого ваша база заполниться вопросами и ответами. (ДЛЯ тех кто в танке скажу. Архивы дампов упакованы архиватором. Надо сначала распаковать. )
Сообщение отредактировал SpartaN - Вторник, 19.01.2010, 14:27
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!кости", new Cmd("!кости","$n $n",39,name)); cmd.addAuth("game","возможность играть"); out="Ok"; return; }
try{ Vector v = cmd.getParser().parseArgs(msg); Users uss = cmd.srv.us.getUser(uin); File p = new File("./ads/time.txt"); if (p.exists()) { String time = ""; BufferedReader r = new BufferedReader(new InputStreamReader(new
FileInputStream("./ads/time.txt"),"windows-1251")); time += r.readLine(); r.close(); if(System.currentTimeMillis()-(Long.parseLong(time))<30000) { proc.mq.add(uin,"Пауза между запросами 30 сек..."); return; } } if (p.exists()) p.delete(); long time = System.currentTimeMillis(); String ttt = Long.toString(time); OutputStreamWriter file = new OutputStreamWriter(new FileOutputStream("./ads/time.txt",true),"windows-1251"); file.write(ttt); file.close(); String d = " золотых"; int s = (Integer)v.get(0); // набранное число int num = (int) ((Math.random()*6)); // случаиное число от 0 до 6 int ss = (Integer)v.get(1); // набранное число int numm = (int) ((Math.random()*6)); // случаиное число от 0 до 6 int t = (int) ((Math.random()*50)); // случаиное число от 0 до 60 int moder_id = uss.id; // ид модера String r ="Проиграл в кости!"; // причина if(uss.room!=12 && uss.room!=666 && uss.room!=13 && uss.room!=14) { proc.mq.add(uin,"Пиздуй в |12| - " + cmd.srv.us.getRoom(12).getName() + ""); return; } if(s>6) { proc.mq.add(uin,"Первое число должно быть от 0 до 6.."); return; } if(ss>6) { proc.mq.add(uin,"Второе число должно быть от 0 до 6.."); return; } cmd.srv.cq.addMsg("Кости: Я бросила кости, у меня выпало: [" + num + "][" + numm + "] , а " + uss.localnick + "
выпало: [" + s + "][" + ss + "]", uss.sn, uss.room); if(s+ss==num+numm) { cmd.srv.cq.addMsg("Кости: Числа совпали! |" + uss.id + "|" + uss.localnick + " выпнут(а) из чата", uss.sn, uss.room); proc.mq.add(uin,"Кости: У меня выпало: [" + num + "][" + numm + "] , а у тебя выпало: [" + s + "][" + ss + "] , числа
совпали! ты неудачник!");
proc.mq.add(uin,"Вы были выпнуты из чата. Причина: Ты проиграл(а) в кости!"); cmd.tkick(proc, uin, t, moder_id, r);
} else { int gold = uss.gender+25; uss.gender=gold; cmd.srv.us.updateUser(uss); int z = s + ss; int t = num + numm; if(z>t){ } proc.mq.add(uin,"Кости: А ты везунчик ! Ты выиграл(а) 25 золотых, Твой баланс = " + uss.gender + d); cmd.srv.cq.addMsg("Кости: Числа несовпали! " + uss.localnick + " у нас везунчик выиграл(а) 25 золотых, баланс " +
uss.localnick + " составляет: " + uss.gender + " золотых", uss.sn, uss.room); proc.mq.add(uin,"Кости: У меня выпало: [" + num + "][" + numm + "] , а у тебя выпало: [" + s + "][" + ss + "] , числа
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!число", new Cmd("!число","$n",39,name)); cmd.addAuth("game","возможность играть"); out="Ok"; return; }
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!рулетка", new Cmd("!рулетка","$n",39,name)); cmd.addAuth("game","возможность играть"); out="Ok"; return; }
QuakeS да не за что скоро новые скрипты будут "рюмка, нападение, банк(положить деньги и снять), поиск по нику, покупка брони(защита от нападения), покупка комнат, охраны и должностей" хочешь зарабтать wm?? тогда >>ЖМИ<<