1. Соблюдайте Правила форума и проявляйте уважение к другим участникам беседы.

Как дать доступ к !start смертным

Тема в разделе 'Кодинг/Собственные решения', создана пользователем Fox_Mulder, 15 май 2009.

  1. Fox_Mulder Ньюфаг

    Сообщения:
    34
    Спасибы:
    0
    Поставил на сервак локальный ГХОСТА. пару человекам дал админки для !kick !ban !lat и прочих команд. но вот хочу чтобы !start могли все юзать. В кодинге не силен, помогыте)
  2. Fox_Mulder Ньюфаг

    Сообщения:
    34
    Спасибы:
    0
    никто чтоли не знает где в коде что подправить, чтобы !start могли все юзать?
  3. Ivan.K Ньюфаг

    Сообщения:
    15
    Спасибы:
    0
    bnet.cpp
    Код:
    //
    				// !START
    				//
    
    				if( Command == "start" && m_GHost->m_CurrentGame && !m_GHost->m_CurrentGame->GetCountDownStarted( ) && m_GHost->m_CurrentGame->GetNumPlayers( ) > 0 )
    				{
    					if( !m_GHost->m_CurrentGame->GetLocked( ) )
    					{
    						// if the player sent "!start force" skip the checks and start the countdown
    						// otherwise check that the game is ready to start
    
    						if( Payload == "force" )
    							m_GHost->m_CurrentGame->StartCountDown( true );
    						else
    							m_GHost->m_CurrentGame->StartCountDown( false );
    					}
    					else
    						QueueChatCommand( m_GHost->m_Language->TheGameIsLockedBNET( ), User, Whisper );
    				}
    
    
    Из admin commands в non admin commands там всё просто выделил копировал удалил вставил. Инструкцию по компиляции начиная с 12 версии смотрите в readme.txt
    ну и вот пример с командой !pubby http://w3gh.ru/index.php/topic,15.210.html

    Но имхо будет хаос а так !lock !unlock
  4. C3PO Ньюфаг

    Сообщения:
    4
    Спасибы:
    0
    У меня вопрос примерно такой же я хотел сделать просмотр топа !top сделать для всех
    в bnet.cpp закоментил топ в админ командах и с копировал в неадмин команды
    делал я это в нотпад ++
    так вот неработает она, ето наверно из за нотпада ?
  5. JiLiZART Администрация

    Сообщения:
    815
    Спасибы:
    35
    Сборка бота GHost:
    Ghost++ 17.1
    Дата начала использования бота:
    12.12.04
    Какбы после всех изменений нужно скомпилировать бота через Visual Studio, или собрать на никсах используя Makefile
  6. Tsukasa-mixer Старожила

    Сообщения:
    66
    Спасибы:
    0
    мне вот дикое решение пришло =)

    Дать людям не особо разбирающимся в программировании и в компилировании программ, но которые хотят добавить реакцию на команду, дать им собственно говоря скриптовый язык для доступа к определённым данным =)
    ну например интерпретатор python'a встроить в ГХоста =)

    и то хлеб с маслом, - вывести на досуп большую часть переменных в общий доступ с питоном и пусть скриптуют себе что хотят =)
    как мысля  ?????
  7. JiLiZART Администрация

    Сообщения:
    815
    Спасибы:
    35
    Сборка бота GHost:
    Ghost++ 17.1
    Дата начала использования бота:
    12.12.04
    Эта мысля уже проскакивала на codelain.com. Даже были реализации ghost'a с поддержкой lua.
    Видно Varlok'у лень изучать и делать это. А так было бы неплохо, прикрутить скриптовость боту. Вообще бы поидее все комманды вынести как плагин на питоне, чтобы бот был глухонемым, мог только коннектиться, хостить и общятся с базой =)
    А так было бы неплохо посадить и добавить переменные\события\триггеры\функции локализации и ещё много всякой вкусности чтобы народ мог кодить.
    Еще была идея посадить Ghost на gettext вместо используемого в нём встроенного функционала для поддержки мультиязычности.
  8. Tsukasa-mixer Старожила

    Сообщения:
    66
    Спасибы:
    0
    С gettext не знаком, а вот почему питон упомянул, т.к. озы знаемс.....
    в принципе даже реализуемо, заодно в кишках прибратся можно........

    давай так тогда:
    - составте списки всего что нужно вынести
    - не откажуся от помощи по разбору модулей если тут есть ещё программисты
    - gettext имеется в питоне поэтому можно туда вынести язык совсем.(повесить всё на константы и поглядеть что получится.)
    - я в ближайшее время ( сразу как разберуся с реализацией потоков на спп(мне нужны классы потоков для множественного создания, через boost::thread пока не получилось, всмысле не получилось его сделать так как нужно =/ . - шаманю.)) попробую вырезать все функции из бота и по человечески впаять туда интерпретатор питона и дать питону доступ ко всем стоящим переменным, а там прямые руки людей потребуются для реализации функций  бота на питоне. =).

    Сделаю, не сделаю, но попробую привести всё в порядок. когда свободное время будет.
    (ибо заняты мы сейчас - трудоустройством =/ ....)
  9. JiLiZART Администрация

    Сообщения:
    815
    Спасибы:
    35
    Сборка бота GHost:
    Ghost++ 17.1
    Дата начала использования бота:
    12.12.04
    Былобы неплохо сделать что то типо Обсерверов, которые бы по определённому событию оповещяли все зарегестрированные модули (обсерверы) на предмет этого события, если в модуле имеются функции для работы с этим событием, то функция отрабатывает и возвращяет результат, потом этот результат идёт дальше на следующий обсервер (модуль). Либо сделать по анологии со структурой друпала, хуки, поидее тоже самое что и обсервер но немного подругому работает. У ядра имеются хуки, если модуль реализует какой либо из системных хуков, то ядро регистрирует этот хук ( к примеру у ядра есть хук hook_menu, если в модуле есть функция mymodule_menu то ядро заносит его в список хуков) после этого при регистрации всех хуков, ядро начинает сбор контента на вывод, вызываются все хуки в том порядке в котором они регистрировались (либо по указанному весу\позиции в списке). Хуки отрабатываются довольно просто, при вызове функции ядра, с поддержкой хука то функция обрабатывает результат потом прогоняет его через все свои хуки и выводит конечный результат.

    Думаю с обсерверами будет проще =)
    К примеру
    При создании игры бот вызывает NotifyCreateGame(vars), далее смотрятся обсерверы (плагины на питоне) в которых есть это событие, если таковые имеются то поочерёдно по алфавиту (либо по весу) прогоняется результат по всем функциям и в конце получается результат который должен получить бот обратно =)
    Таким же макаром можно реализовывать парсинг комманд к примеру при поступлении текста с регистром `!` смотрим на текст, если подходит выполняем комманду (в плагине или посылаемы вызов функции к боту с параметрами)

    Вот здесь можно найти шаблоны проектирования, там же находится информация про паттерн Обсервер.
    Насчёт помощи, рад бы помочь, но знаю только PHP, изучаю потихоньку питон =)
  10. Tsukasa-mixer Старожила

    Сообщения:
    66
    Спасибы:
    0
    первая проблема с обсерверами которая приходит на ум, эт проблема производительности =/ ....
    питон работает по предкомпиляции, т.е. просто опросить модуль не получится, питон один хрен попробует его скомпилить.
    Тут-же в принципе мысль возможного решения,  что-то типа виртуальных функций в спец фыайле описания, =/.... тиогда времени на предкомпиляцию минимум будет, но оно будет, .е. инамически подключать отключать модули на мой взгляд будет немного глупо ибо будут крупные задержки при переносе, ещё одна мысль (можете и почитать на самом деле я щас пишу заметки для проектирования) модули листать только при старте гхоста, а по спец команде проводить сброс и поиск модулей =/... самый простой вариант.

    Кста вероятна задержка в проектировании (нормального гхоста перерализуемого быстро не ждёмс... ибо у меня кажется работёнка подвернулась, да и время на изучение принципов интеграции питона в c++ нужно будет учеть(по отдельности не проблема, вместе пока не писал=/ .)) а про обсерверов мысль интересная... спс.!
  11. JiLiZART Администрация

    Сообщения:
    815
    Спасибы:
    35
    Сборка бота GHost:
    Ghost++ 17.1
    Дата начала использования бота:
    12.12.04
    все интерпретируемые языки медленные =) а так было бы неплохо сделать стуктуру модуля
    <my_module>
    ---my_module.info (список функции и определение самого модуля)
    ---my_module.py (ядро модуля со всеми функциями)
    ---my_module.lang.ru (языковые переменные модуля для русского)

    что то так =)
  12. Tsukasa-mixer Старожила

    Сообщения:
    66
    Спасибы:
    0
    <my_module.info>

    mod = my_module.py (ядро модуля со всеми функциями)
    lang = my_module.lang.ru (языковые переменные модуля для русского)

    а дальше виртуальные функции, или как-то так..... так меньше опрашивать =)
    + побыстрее в плане производительности.
  13. Tsukasa-mixer Старожила

    Сообщения:
    66
    Спасибы:
    0
    они не медленные а некоторые работаю ещё быстрее и эффективнее наитивных языков =/...
    беда в том что на подготовку к выполнению у них уходит достаточно продолжительный промежуток времени.

    А питон кстати будет по производителенее явы =) (их сравнивать любят)
    у меня ява с гуем - жутко тормозит, в то время как питон после запуска, работает достаточно шустро...