Перейти к содержимому


Готовые скрипты


Сообщений в теме: 70

#21 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 31 Март 2009 - 13:52

Название: Замена стандартного входа в чат
(По просьбе юзера morgan
А также, возможность автоперемещать на свободнейший уин
(По просьбе юзера HParaLoN
Смысл: Возможность заменить сообщения, разгрузка номеров
Установка:
1)Создать файлы *.bsh скриптов в папке ./services/ChatBot/scripts/command
2)ЕСЛИ НАДО АВТОМАТИЧЕСКИ ПЕРЕМЕЩАТЬ ЮЗЕРА, СОЗДАТЬ ФАЙЛ "AutoUin" ЛЮБОГО СОДЕРЖАНИЯ В КОРНЕ БОТА
/**
 * Альтернатива входу.
 * ЕСЛИ НАДО АВТОМАТИЧЕСКИ ПЕРЕМЕЩАТЬ ЮЗЕРА, СОЗДАТЬ ФАЙЛ "AutoUin" ЛЮБОГО СОДЕРЖАНИЯ В КОРНЕ БОТА
 * Редактировать сообщения MESSAGE (Для входящего) и MESSAGE2 (Для всех прочих)
 * Imda
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!чат", new Cmd("!чат","",39,name));
	cmd.addCommand("!chat", new Cmd("!chat","",39,name));
	cmd.addCommand("!ч", new Cmd("!чат","",39,name));
	cmd.addCommand("!вход", new Cmd("!вход","",39,name));
	cmd.addCommand("!enter", new Cmd("!enter","",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{
	String MESSAGE = "Вы вошли в чат";
	String MESSAGE2 = " вошел в чат";
        Users uss = cmd.srv.us.getUser(uin);
        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_CHAT) 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);
        }        
        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);
        if(f){
		File acu = new File ("./AutoUin");
		if (!acu.exists())
		{
	            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);
        	    }
		}
		else
		{
        	        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);
		}
	
        }
        } catch (Exception ex) {
            ex.printStackTrace();
           proc.mq.add(uin,ex.getMessage());
        }

Замена выхода:
/**
 * Альтернатива выходу.
 * Редактировать сообщения MESSAGE (Для выходящего) и MESSAGE2 (Для всех прочих)
 * Imda
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!вых", new Cmd("!вых","",39,name));
	cmd.addCommand("!выход", new Cmd("!выход","",39,name));
	cmd.addCommand("!exit", new Cmd("!exit","",39,name));
	out="Ok";
	return;
}

    try{
	String MESSAGE = "Вы вышли";
	String MESSAGE2 = " вышел из чата";
        Users uss = cmd.srv.us.getUser(uin);
        if (uss.state==UserWork.STATE_CHAT ||
                uss.state==UserWork.STATE_OFFLINE) {
            if(!ChatProps.getInstance(cmd.srv.getName()).getBooleanProperty("chat.NoDelContactList")){
                Log.info("Delete contact " + uin);
                proc.RemoveContactList(uin);
            }
        } else
            return; // Юзера нет в чате - игнорируем команду
        uss.state = UserWork.STATE_NO_CHAT;
        cmd.srv.us.updateUser(uss);
        Log.talk(uss.localnick + MESSAGE2);
        cmd.srv.us.db.log(uss.id,uin,"STATE_OUT",uss.localnick + " Ушел из чата",uss.room);
        cmd.srv.us.db.event(uss.id, uin, "STATE_OUT", 0, "", uss.localnick + " Ушел из чата");
        cmd.srv.cq.addMsg(uss.localnick + MESSAGE2, uss.sn, uss.room);
        proc.mq.add(uin,MESSAGE);
        cmd.srv.cq.delUser(uin);    
} catch (Exception ex){
     ex.printStackTrace();
     proc.mq.add(uin,ex.getMessage());
}


#22 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 31 Март 2009 - 22:58

Название: Смена х-статуса
По просьбе юзера tuz21
Смысл: Возможность из асю сменить х-статус.
Установка:
1)Создать файлы *.bsh скриптов в папке ./services/ChatBot/scripts/command
2)ЕСЛИ НЕ НАДО ПЕРЕЗАПУСКАТЬ АВТОМАТИЧЕКСКИ, ЗАРЕМИРОВАТЬ СООТВЕТСТВУЮЩУЮ СТРОКУ
/**
 * Скрипт для смены Х-статусов
 * Imda
 * x-статус (0-34):
 * Нет = 0;
 * Злой= 1;
 * Купаюсь = 2;
 * Устал = 3;
 * Вечеринка = 4;
 * Пиво = 5;
 * Думаю = 6;
 * Кушаю = 7;
 * ТВ = 8;
 * Друзья = 9;
 * Кофе = 10;
 * Слушаю музыку = 11;
 * Дела = 12;
 * Кино= 13;
 * Весело = 14;
 * Телефон = 15;
 * Играю = 16;
 * Учусь = 17;
 * Магазины = 18;
 * Болею = 19;
 * Сплю = 20;
 * Отрываюсь = 21;
 * Интернет = 22;
 * Работаю = 23;
 * Печатаю = 24;
 * Пикник = 25;
 * Готовлю = 26;
 * Курю = 27;
 * Релакс= 28;
 * Туалет = 29;
 * Вопрос = 30;
 * Дорога = 31;
 * Любовь = 32;
 * Поиск = 33;
 * Дневник = 34;
 */

/**
 * При вызове скрипта определены следующие переменные:
 * ChatCommandProc cmd - ссылка на обработчик команд
 * IcqProtocol proc - ссылка на процесс обработки icq
 * String msg - текст сообщения с командой
 * String uin - кто отправил сообщение
 * String name - имя этого файла (при процедуре инсталяции скрипта)
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!x", new Cmd("!x","$n",39,name));
	out="Ok";
	return;
}

// Проверим полномочия
if (cmd.psp.testAdmin(uin))
try{

	Vector v = cmd.getParser().parseArgs(msg);
	int xs = (Integer)v.get(0);
	if ((xs>34) || (xs<0)) return;
	ChatProps.getInstance(cmd.srv.getName()).setIntProperty("icq.xstatus",xs);
	proc.mq.add(uin,"Xstatus изменен, нужен перезапуск");
	//ЕСЛИ НЕ НАДО - ЗАРЕМИРОВАТЬ
	Manager.restart();
} catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
} 
else{
    proc.mq.add(uin,"Зароещено");
}


#23 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 31 Март 2009 - 23:38

Название: Альтернатива стандартному кику, оповещает ВСЕХ юзеров чата v1.1
По просьбе юзера Мультик
Смысл: Кик с оповещением всех юзеров во всех комнатах
СКРИПТ ИСПРАВЛЕН) Ошибки больше нету)
Установка:
1)Создать файлы *.bsh скриптов в папке ./services/ChatBot/scripts/command
/**
 * Скрипт замена стандартного кика, вывод сапщения во все комнаты
 * Imda
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
cmd.addCommand("!kick", new Cmd("!kick","$c $n $s",39,name));
	out="Ok";
	return;
}

// Проверим полномочия
        if(!cmd.isChat(proc,uin) && !psp.testAdmin(uin)) return;
        if(!cmd.auth(proc,uin, "kickone")) return;
        try{
	Vector v = cmd.getParser().parseArgs(msg);
            int moder_id = cmd.srv.us.getUser(uin).id;
            String s = (String)v.get(0);
            int t = (Integer)v.get(1);
//            if(t<=0){
//                proc.mq.add(uin,"Время кика должно быть больше нуля");
//                return;
//            }
            String r = (String)v.get(2);
            int id=0;
            try{
                id = Integer.parseInt(s);
            } catch (Exception ex){
                proc.mq.add(uin,"Ошибка в команде");
                return;
            }
            String i = cmd.srv.us.getUser(id).sn;
            if(cmd.testKick(i)>0 && !auth(proc,uin, "chgkick")){
                proc.mq.add(uin,"Вы не можете изменить время кика");
                return;
            }
//            if(!i.equals("")) {
                if(t==0){
                    cmd.tkick(proc, i, ChatProps.getInstance(cmd.srv.getName()).getIntProperty("chat.defaultKickTime"), moder_id,"");
                    proc.mq.add(uin,"Юзер выпнут на: " + cmd.srv.testKick(i));
		    Set rid = new HashSet();   			// переменная - набор комнат     
		    Enumeration ee = cmd.srv.cq.uq.keys(); 	// пробегаем
		    while(ee.hasMoreElements()){                // все
			    String il = ee.nextElement();       // комнаты
			    Users us = cmd.srv.us.getUser(il);	// и создаем
			    if(us.state==UserWork.STATE_CHAT) 	// их список
			    rid.add(us.room); 			// собсно, добавлем в список
		    }
		
		    for (int il:rid){
				cmd.srv.cq.addMsg("Инфо>>> юзер "+s+" выпнут на: " + cmd.testKick((String)il) , uin, il); //вывод сообщения в каждую комнату из набора rid
		    }
                } else {
                    if(r.equals("")){
                        proc.mq.add(uin,"Необходимо добавить причину кика");
                        return;
                    }
                    if(t>ChatProps.getInstance(cmd.srv.getName()).getIntProperty("chat.maxKickTime"))
                        t=ChatProps.getInstance(cmd.srv.getName()).getIntProperty("chat.maxKickTime");
                    cmd.tkick(proc, i, t, moder_id, r);
                    proc.mq.add(uin,"Юзер выпнут на: " + t);
		
		    Set rid = new HashSet();   			// переменная - набор комнат     
		    Enumeration ee = cmd.srv.cq.uq.keys(); 	// пробегаем
		    while(ee.hasMoreElements()){                // все
			    String il = ee.nextElement();       // комнаты
			    Users us = cmd.srv.us.getUser(il); 	// и создаем
			    if(us.state==UserWork.STATE_CHAT) 	// их список
			    rid.add(us.room); 			// собсно, добавлем в список
		    }

		    for (int il:rid){
			    cmd.srv.cq.addMsg("Инфо>>> юзер "+s+" выпнут на: " + cmd.testKick((String)il) , uin, il); //вывод сообщения в каждую комнату из набора rid
		    }
                }
        } catch (Exception ex) {
            ex.printStackTrace();
        }  


#24 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 01 Апрель 2009 - 00:00

Название: АдмСтат
Смысл: Админ-статистика
Установка:
1)Создать файлы *.bsh скриптов в папке ./services/ChatBot/scripts/command
/**
 * Скрипт для вывода статистики
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;


//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!лучшие", new Cmd("!лучшие","",39,name));
	cmd.addAuth("best","Вывод статистики лучших");
	out="Ok";
	return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "best")) return;

try{
        String s = "За последние сутки:\n";
        s += "Всего зашло в чат: " + cmd.srv.us.statUsersCount();
        s += "\nОтправлено сообщений: " + cmd.srv.us.statMsgCount();
        s += "\nКикнутых юзеров: " + cmd.srv.us.statKickUsersCount();
        s += "\nВсего киков: " + cmd.srv.us.statKickCount();
        s += "\nЗабанено юзеров: " + cmd.srv.us.statBanUsersCount();
        s += "\nСамые болтливые пользователи:";
	String[] ss = cmd.srv.us.statUsersTop().split(";");
	for(int i=0;i
					
					

#25 Maximus

    Специалист

  • Пользователи
  • PipPipPipPip
  • 334 сообщений
  • ГородВладимирская область

Отправлено 01 Апрель 2009 - 04:22

Название: Скрипт вывода сообщений отправленной командой !adm
Смысл: Удобно для тех у кого чат на сервере, ненадо лишний раз на сервер лазить.
Команда:
!админу
Установка: Создать файл *.bsh скрипта в папке ./services/ChatBot/scripts/command
/**
 * Скрипт для расширения команд чата
 */

/**
 * При вызове скрипта определены следующие переменные:
 * ChatCommandProc cmd - ссылка на обработчик команд
 * IcqProtocol proc - ссылка на процесс обработки icq
 * String msg - текст сообщения с командой
 * String uin - кто отправил сообщение
 * String name - имя этого файла (при процедуре инсталяции скрипта)
 */

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
	cmd.addCommand("!админу", new Cmd("!админу","",39,name));
	cmd.addAuth("admsoob","Сообщения админу");
	out="Ok";
	return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "admsoob")) return;

try{
	//Прочитаем текст из файла
	String s = cmd.psp.loadText("admin_msg.txt");
	//Разбиваем текст на куски, в качестве разделителя будет использовате тег 

	String[] ss = s.split("
");
	//По очереди отсылаем куски текста юзеру, точнее - помещаем их в очередь
	//исходящих сообщений уина, на котоором этот юзер сидит.
	for(int i=0;i
					
					

#26 bess

    Пользователь

  • Специалисты
  • PipPip
  • 94 сообщений
  • ГородСамарска обл. Нефтегорский р-н.

Отправлено 01 Апрель 2009 - 22:22

Те у кого скрипт по смене статуса не робит....импортируйте manager

#27 morgan

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 163 сообщений
  • ГородТаганрог

Отправлено 03 Апрель 2009 - 09:31

Название: Замена стандартного входа в чат с выводом ID
А также, возможность автоперемещать на свободнейший уин
Смысл: Возможность заменить сообщения, разгрузка номеров
Установка:
1)Создать файлы *.bsh скриптов в папке ./services/ChatBot/scripts/command
2)ЕСЛИ НАДО АВТОМАТИЧЕСКИ ПЕРЕМЕЩАТЬ ЮЗЕРА, СОЗДАТЬ ФАЙЛ "AutoUin" ЛЮБОГО СОДЕРЖАНИЯ В КОРНЕ БОТА
Авторы скрипта:Imda,модификация by MorGaN
import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
   cmd.addCommand("!чат", new Cmd("!чат","",39,name));
   cmd.addCommand("!chat", new Cmd("!chat","",39,name));
   cmd.addCommand("!ч", new Cmd("!чат","",39,name));
   cmd.addCommand("!вход", new Cmd("!вход","",39,name));
   cmd.addCommand("!enter", new Cmd("!enter","",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{
   String MESSAGE = "Добро пожаловать!\n" + 
                    "Приятного Вам общения :)\n" +
                    "Ваш ID = " ;
                    
   String MESSAGE2 = " вошел(вошла) в чат";
   String MESSAGE3 = "[";
   String MESSAGE4 = "]";
        Users uss = cmd.srv.us.getUser(uin);
        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_CHAT) 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(MESSAGE3 + uss.id + MESSAGE4 + uss.localnick + MESSAGE2, uss.sn, uss.room);
            proc.mq.add(uin,MESSAGE + uss.id);
            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 + uss.id);
            if(cmd.psp.getBooleanProperty("chat.showChangeUserStatus"))
                cmd.srv.cq.addMsg(MESSAGE3 + uss.id + MESSAGE4 + uss.localnick + MESSAGE2, uss.sn, uss.room);
        }        
        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,"",MESSAGE3 + uss.id +MESSAGE4 +  uss.localnick + MESSAGE2);
        cmd.srv.cq.addUser(uin,proc.baseUin, uss.room);
        if(f){
      File acu = new File ("./AutoUin.txt");
      if (!acu.exists())
      {
               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);
               }
      }
      else
      {
                   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);
      }
   
        }
        } catch (Exception ex) {
            ex.printStackTrace();
           proc.mq.add(uin,ex.getMessage());
        }


#28 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 03 Апрель 2009 - 13:58

Копипаст и удаление копирайта, морган;)
Название\суть:
Переписаный для работы с коммандами !вкусты и !тавкусты (Спрятаться из списка юзеров) список админов. Теперь не отображаетесь и там. ТА видят ВСЕХ
Установка: создать файл скрипта в папке коммандс
/**
 * Список админов в чате
 * Imda
 */
 
import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;
 
if(in.equals("install")){
    cmd.addCommand("!админы", new Cmd("!админы","",39,name));
    cmd.addAuth("AdminList","Получить список админов");
    out="Ok";
    return;
}
 
 
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
if(!cmd.auth(proc,uin, "AdminList")) return;
 
try{
    String lst = "";
    Enumeration e = cmd.srv.cq.uq.keys();
    while(e.hasMoreElements()){
	String i = e.nextElement();
	Users us = cmd.srv.us.getUser(i);
	File hideta = new File ("./.hideta");
if (!cmd.psp.testAdmin(uin))
{
	if (!cmd.psp.testAdmin(i) && ((cmd.srv.us.authorityCheck(i, "OpChat")) && (cmd.srv.us.authorityCheck(i, "Show"))))
	{
		lst = lst + us.id+" - "+us.localnick+" , ["+us.room+"]"+cmd.srv.us.getRoom(us.room).getName()+"; \n";
	}
	if (cmd.psp.testAdmin(i) && (!hideta.exists()))
	{
		lst = lst + us.id+" - "+us.localnick+" , ["+us.room+"]"+cmd.srv.us.getRoom(us.room).getName()+"; \n";
	}
		
}
else if ((cmd.srv.us.authorityCheck(i, "OpChat")) && (!cmd.psp.testAdmin(i))) {
		lst = lst + us.id+" - "+us.localnick+" , ["+us.room+"]"+cmd.srv.us.getRoom(us.room).getName()+"; \n";
     }
else if ((cmd.srv.us.authorityCheck(i, "OpChat")) && (cmd.psp.testAdmin(i))) {
		lst = lst + "#"+us.id+" - "+us.localnick+" , ["+us.room+"]"+cmd.srv.us.getRoom(us.room).getName()+"; \n";
     }
	
}
 proc.mq.add(uin,"Администрация: \n "+lst);
} catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
}


#29 Imda

    Новичок

  • Пользователи
  • Pip
  • 32 сообщений
  • ГородОттуда

Отправлено 05 Апрель 2009 - 00:25

Название: Альтернатива списку комнат, отображает кол-во юзеров в комнате
По просьбе юзера dxdr
Смысл: См. выше
Установка:
Создать файл *.bsh в папке ./services/ChatBot/scripts/command
/**
 * Список комнат, с кол-м юзеров в скобульках
 * Imda
 */
 
import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;
 
if(in.equals("install")){
    cmd.addCommand("!комнаты", new Cmd("!комнаты","",39,name));
    cmd.addCommand("!ск", new Cmd("!ск","",39,name));
    cmd.addCommand("!rooms", new Cmd("!rooms","",39,name));
    cmd.addCommand("!rl", new Cmd("!rl","",39,name));
    cmd.addCommand("+а", new Cmd("+а","",39,name));
    cmd.addCommand("+a", new Cmd("+a","",39,name));
    out="Ok";
    return;
}
 
 
if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return;
 
try{
String s = "Список комнат в чате\n";
Set rid = cmd.srv.us.getRooms();
 for(int i:rid){
       	Enumeration ee = cmd.srv.cq.uq.keys();
      	int cnt=0;
      	while(ee.hasMoreElements()){
       		String ii = ee.nextElement();
      		Users us = cmd.srv.us.getUser(ii);
       		if(us.state==UserWork.STATE_CHAT){
              		if(us.room==i) cnt++;
		}
	}
	s += i + " - " + cmd.srv.us.getRoom(i).getName() + " ["+cnt+" чел]\n";
 }
proc.mq.add(uin,s);
} catch (Exception ex) {
ex.printStackTrace();
proc.mq.add(uin,"Ошибка "+ex.getMessage());
}


#30 HubMasster

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 159 сообщений
  • ГородКумертау

Отправлено 18 Апрель 2009 - 01:43

Название: Вход/Выход по комнатам
Назначение: Для Замены текста при входе и выходе из комнат
Установка: Для работы скрипта его нужно скопировать в папку \services\Имя_сервиса_чата\scripts\command
Дополнительно: Это не мой скрипт, но я решил выложить

/**
* Скрипт для расширения команд чата
* Замена перехода в комнаты
*/

/**
* При вызове скрипта определены следующие переменные:
* ChatCommandProc cmd - ссылка на обработчик команд
* IcqProtocol proc - ссылка на процесс обработки icq
* String msg - текст сообщения с командой
* String uin - кто отправил сообщение
* String name - имя этого файла (при процедуре инсталяции скрипта)
*/

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
   cmd.addCommand("!room", new Cmd("!room","$n",39,name));
   cmd.addAuth("room","Переход по комнатам");
   out="Ok";
   return;
}

// Проверим полномочия
if(!cmd.isChat(proc,uin)) return;
if(!cmd.auth(proc,uin, "room")) return;

try{
   String MESSAGE1 = " ушел(а) из комнаты ";
   String MESSAGE2 = " вошел(а) в комнату ";
   Vector v = cmd.getParser().parseArgs(msg);
   //Согласно шаблону, оба аргумента должны быть числами
   int i = (Integer)v.get(0);
    Users uss = cmd.srv.us.getUser(uin);
    if(uss.room==i){
      proc.mq.add(uin,"Ты уже сидишь в этой комнате!");
    } else
      if(cmd.qauth(proc,uin, "anyroom") || cmd.srv.us.checkRoom(i)){
         cmd.srv.cq.addMsg(uss.localnick + MESSAGE1 + uss.room, uin, uss.room);
            uss.room=i;
            cmd.srv.us.updateUser(uss);
            cmd.srv.cq.changeUserRoom(uin, i);
            cmd.srv.cq.addMsg(uss.localnick + MESSAGE2 + uss.room, uin, uss.room);
            proc.mq.add(uin,"Ты перешел в комнату " + i + " - " + cmd.srv.us.getRoom(i).getName() +
            (cmd.srv.us.getRoom(i).getTopic().equals("") ? "" : ("\nТема: " + cmd.srv.us.getRoom(i).getTopic())));
            } else {
                proc.mq.add(uin,"Такой комнаты не существует!");
            }
}catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
}


#31 Sushka

    Профи

  • Модераторы
  • 741 сообщений
  • ГородСмоленск

Отправлено 11 Май 2009 - 09:30

Название: Скритп вывода 20 последних разбанов
Назначение: позволяте отслеживать когда, кто и кого выпустил из бани
Установка: скопируйте скрипт в папку \services\имя_сервиса\scripts\command
/**
*  Скрипт вывода 20 последних разбанов
*
* (с) Sushka 2009
*/

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;
import ru.jimbot.Manager;
import java.sql.*;

//Установка скрипта как обработчика команды
if(in.equals("install")){
   cmd.addCommand("!ubanlist", new Cmd("!ubanlist","",39,name));
   cmd.addAuth("ubanlist","20 последний разбанов");
   out="Ok";
   return;
}

try{
	String host = ChatProps.getInstance(cmd.srv.getName()).getStringProperty("db.host");
    String namedb = ChatProps.getInstance(cmd.srv.getName()).getStringProperty("db.dbname");
    String user = ChatProps.getInstance(cmd.srv.getName()).getStringProperty("db.user");
    String pass = ChatProps.getInstance(cmd.srv.getName()).getStringProperty("db.pass");
	DBChat db;
	db = new DBChat(cmd.srv.getName());
    db.openConnection(host, namedb, user, pass);
  String s = "20 последних разбанов:\n";
  s+="Время|Пользователь|Кто разбанил\n";
        try {
            PreparedStatement pst = db.getDb().prepareStatement("select time, user_id, user_id2 from events where type='UBAN' order by time desc");
            ResultSet rs = pst.executeQuery();
            for(int i=0;i<20;i++){
                if(rs.next()){
                    s += "["+rs.getTimestamp(1)+"] "+
                            (rs.getInt(2)==0 ? "Admin" : cmd.srv.us.getUser(rs.getInt(2)).localnick)+"|" +rs.getInt(2)+"|,"+ 
                           (rs.getInt(3)==0 ? "Admin" : cmd.srv.us.getUser(rs.getInt(3)).localnick)+"|" +rs.getInt(3)+"|\n";
                }
            }
            rs.close();
            pst.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
     proc.mq.add(uin,s);   
}	catch (Exception ex) {
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка "+ex.getMessage());
}


#32 Indigo_85

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 178 сообщений

Отправлено 15 Май 2009 - 23:33

Название: AltEnterRoom v.3.0
Альтернатива входу с автоматическим переводом в ближайшую наименее загруженную комнату.
Максимальное количество юзеров в главной комнате устанавливается переменной N_MAX.
Редактировать сообщения MESSAGE (Для входящего) и MESSAGE2 (Для всех прочих).
Автор: Indigo_85, thanks to Imda, to mmaximm
Цель: исключить проблему нечитабельности большого потока сообщений при чрезмерном заполнении главной комнаты
Установка: распакуйте файл в ./services/ChatBot/scripts/command/

Прикрепленные файлы



#33 KRaFT

    Специалист

  • Пользователи
  • PipPipPipPip
  • 206 сообщений

Отправлено 17 Май 2009 - 06:21

Название: Скрипт для входа в чат + разброс по комнатам
Смысл работы: Если юзер пытается зайти в чат (в одну из главных комнат), то при заполненности одной главной, он будет перемещён в другую свободную главную.
Установка: Для работы скрипта его нужно скопировать в папку \services\Имя_сервиса_чата\scripts\command
Описание: Очередной релиз чудо-скрипта входа от Indigo_85.
Теперь в чате может быть несколько главных комнат: 0-основная главная, остальные дополнительные главные.
Обычно основная часть народа выходит из чата из-за того, что сообщений в главную комнату приходит слишком много. Почему бы не сделать ещё одну главную, и ещё...
Главных комнат может быть сколько угодно.
Можно выставлять максимальное количество юзеров ДЛЯ КАЖДОЙ главной комнаты.
Если юзер пытается зайти в чат (в одну из главных комнат), то при заполненности одной главной, он будет перемещён в другую свободную главную. Если же все главные комнаты заполнены, юзер будет перемещён просто в наименее загруженную комнату чата.
Итак, как пользоваться...
Количество дополнительных главных комнат (помимо основной с номером 0) устанавливается в переменной N_ADD. Номера допольнительные главных комнат считаются после основной главной комнаты с номером 0 комнаты по порядку возрастания номеров, поэтому БУДЬТЕ ВНИМАТЕЛЬНЫ и проверьте, создано ли у вас достаточное количество комнат с номерами 1, 2, 3, ... то есть после 0-й.
Максимальное количество юзеров в главных комнатах устанавливается в массиве nmax, по умолчанию 30 для всех. Вы можете изменить его по своему усмотрению.
Рассмотрим конкретный пример...
Допустим у нас в чате сидит много народу и мы хотим создать аж ещё 3 главных комнаты.
Для этого сначала убеждаемся в том, что у нас имеются комнаты с номерами 1, 2 и 3, которые будут главными.
Затем вместо количества дополнительных комнат int N_ADD = 2; пишем int N_ADD = 3; затем, если мы хотим изменить/установить для всех комнат лимит 15, то вместо nmax[i] = 30; пишем nmax[i] = 15; а если хотим установить для каждой комнаты свой лимит, то раскомментируем строчки, получив nmax[0] = 40; nmax[1] = 20; nmax[2] = 25; и допишем ещё одну nmax[3] = 5; то есть в основной комнате у нас будет лимит 40 человек, в первой главной 20 чел. во второй 25 чел. и в третьей 5 чел.
Собственно всё.
Скрипт не влияет на команды перехода, так что возможность переходить по комнатам (в т.ч. и по главным) при помощи команд !room <номер>, !комната <номер> сохраняется.
Приятного юзания!
Автор: Indigo_85

Прикрепленные файлы



#34 HubMasster

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 159 сообщений
  • ГородКумертау

Отправлено 17 Май 2009 - 14:07

Название: ЛС Пользователей
Смысл: Админ Может Читать лс Пользователей, чтоб не прошла реклама
Установка:
1)Создать файлы в папке ./services/ChatBot/scripts/command

import ru.jimbot.modules.AbstractServer;
import ru.jimbot.util.*;
import ru.jimbot.modules.chat.*;
import ru.jimbot.modules.*;


       
if(in.equals("install")){
    cmd.addCommand("+p", new Cmd("+p","$n $s",39,name));
    cmd.addCommand("+р", new Cmd("+р","$n $s",39,name));
    cmd.addCommand("+лс", new Cmd("+лс","$n $s",39,name));
    cmd.addAuth("pmsg","Отправка приватных сообщений");
    out="Ok";
    return;
}

if(!cmd.isChat(proc,uin)) return;
if(!cmd.auth(proc,uin, "pmsg")) return;

try{
   Vector v = cmd.getParser().parseArgs(msg);
   int no = (Integer)v.get(0);
   String txt = (String)v.get(1);
   if(txt.equals("")) {
      proc.mq.add(uin,"Сообщение отсутствует");
      return;
   }
   Users uss = cmd.srv.us.getUser(no);
   if(uss == null){
      proc.mq.add(uin,"Такого пользователя не существует");
      return;                       
   }
   if(!cmd.srv.cq.testUser(uss.sn)){
      proc.mq.add(uin,"Пользователь не в сети");
      return;
   }
   if(txt.length()>cmd.psp.getIntProperty("chat.MaxMsgSize")){
      txt = txt.substring(0,cmd.psp.getIntProperty("chat.MaxMsgSize"));
      proc.mq.add(uin,"Слишком длинное сообщение было обрезано: " + txt);
   }
   

  String im = "******"; //кому присылать уведомление
   Log.talk("CHAT: " + uss.sn + ">> Личное сообщение от [" + cmd.srv.us.getUser(uin).id + "]" + cmd.srv.us.getUser(uin).localnick + " : " + txt);
   cmd.srv.us.db.log(uss.id,uin,"OUT",">> Личное сообщение от [" + cmd.srv.us.getUser(uin).id + "]" + cmd.srv.us.getUser(uin).localnick + " : " +

txt,uss.room);
   cmd.srv.getIcqProcess(uss.basesn).mq.add(uss.sn,"Личное сообщение от [" + cmd.srv.us.getUser(uin).id + "]" + cmd.srv.us.getUser(uin).localnick + " : "

+ txt);
   cmd.srv.getIcqProcess(cmd.srv.us.getUser(im).basesn).mq.add(im,"Отправлено личное сообщение пользователю [" + uss.id + "]" + uss.localnick + " от

[" + cmd.srv.us.getUser(uin).id + "]" + cmd.srv.us.getUser(uin).localnick + " : " + txt);
  proc.mq.add(uin,"Сообщение пользователю [" + uss.id + "]"  + uss.localnick + " Отправлено8-)");
} catch (Exception ex) {   
      ex.printStackTrace();
      proc.mq.add(uin,"Ошибка "+ex.getMessage());
}


#35 Indigo_85

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 178 сообщений

Отправлено 17 Май 2009 - 18:20

Сборник скриптов альтернативного входа от Indigo_85.
Во всех версиях добавлен некогда забытый автоперевод на свободный UIN. :)
Для установки извлеките нужный скрипт в .\services\ChatBot\scripts\command\
Не ставьте сразу несколько этих скриптов.
Перед установкой убедитесь что у вас не установлен скрипт альтернативного входа.
Если установлен, предварительно удалите его.
Особая благодарность to Imda за первопроходство. :)

Прикрепленные файлы



#36 Indigo_85

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 178 сообщений

Отправлено 21 Май 2009 - 18:53

Название: X-status
Смысл работы: возможность устанавливать и читать в чате дополнительные статусы пользователей наподобие XTraz в ICQ.
Установка: распаковать архив в каталог ./services/ChatBot/scripts/command/
В случае необходимости закомментировать/удалить сточку с командой +тут в скрипте start.bsh
Дополнительно: создать каталог ./UXstatus/
Автор: Indigo_85

Прикрепленные файлы

  • Прикрепленный файл  X-Status.rar   1,49К   329 Количество загрузок:
  • Прикрепленный файл  X-Status+.rar   1,52К   373 Количество загрузок:


#37 Indigo_85

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 178 сообщений

Отправлено 28 Май 2009 - 01:24

Название: Стена (Wall)
Смысл работы: Виртуальная стена в чате, на которой пользователи могут оставлять сообщения, доступная для просмотра.
Установка: распаковать архив в каталог ./services/ChatBot/scripts/command/
проставить соответствующие полномочия
Дополнительно: Ведётся статистика сообщений для каждого пользователя, мониторинг новых сообщений на стене. Возможность установки вместимости стены, бэкап старых сообщений.
Автор: Indigo_85

Прикрепленные файлы

  • Прикрепленный файл  Wall.rar   2,14К   495 Количество загрузок:


#38 fraer72

    Профи

  • Специалисты
  • PipPipPipPipPip
  • 1 429 сообщений

Отправлено 08 Июнь 2009 - 10:22

Название: Cвадьба пользователей.
Смысл работы: Пользователи чата смогут заключать
браки.
Установка: скопируйте скрипт в папку \services\имя_сервиса\scripts\command
В чате:
!свадьба id(невесты) id(жениха)
Обязательно первый id вводим невесты.
Автор: Fraer72

Прикрепленные файлы



#39 fraer72

    Профи

  • Специалисты
  • PipPipPipPipPip
  • 1 429 сообщений

Отправлено 08 Июнь 2009 - 10:24

Название: Развод пользователей.
Смысл работы: Развести брак пользователей при их желании.
Установка: скопируйте скрипт в папку \services\имя_сервиса\scripts\command
В чате:
!развести id(невесты) id(жениха)
Обязательно первый id вводим невесты.
Автор: Fraer72

Прикрепленные файлы



#40 Griny

    Пользователь

  • Пользователи
  • PipPip
  • 78 сообщений

Отправлено 07 Июль 2009 - 02:09

Название: Погода (Москва)
Смысл работы: Импорт погоды с сайта RP5.ru через RSS ленту. ШАБЛОН
Установка: скопируйте скрипт в папку \services\имя_сервиса\scripts\command
В чате:
!погода
Дополнительно: В файле всё тщательно расписано в комментариях, разобраться не составит труда)
Автор: Griny + огромная благодарность людям Sushka, aliga, p0is0n, Xteam и fraer72

Скачать/Download

Обсуждаем тут





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей