И так. Я тут подумал и решил сделать типа что-то пофикшенного GHostOne. Не меняя его структуру. Т.е. работать с прежними классами и типами. Т.е. например мне не нравится как brt изменили класс ланга. Он работает как-то криво и наблюдая за их ботом заметил что он толком не работает. Много ошибок сдвигов строк и т.д. Добавлять функции протестированные и проверенные и т.д. Это как проект. Есть желающие здешних старожилов принимать участие и выкладывать нужные (новые, интересные) патчи для GHostOne? Возможно часть позаимствуем с brtGhost... У них GPL v3 а значит с их код можем хоть переписать и запатентовать ^^ Но конечно желательна полная отдача. Т.е. если есть интересный патч не жмотиться и не скрывать его. У кого какие предлы?
Можно стартануть отдельный проект по боту в googlecode, от меня могу предложить полную поддержку по функциям бота и поддержку в части сайта ( добавить в страницу загрузки, обеспечить отдельный раздел форума если нужно)
А я, а я буду платформой для тестирования + базы MySQL + всевозможные серверы + отдельный сервер Ventrilo для организации конференций.
JiLiZART, пока немного повременим. Я начал работать. И если будет не плохо идти - можно будет и сделать. И уже большая благодарность HELLICOPTER за помощь с адресами серверов. Пока работаю над лангами. Хочу полностью устранить выскакивающие, не редактируемые (в конфиге), сообщения. Нужна будет помощь перевода. Даже с Английского на Русский у меня порой бывают проблемы (плохо учил в школе его, зато информатика прежде всего ^^ ). Работаемс. Отписываемся желающих. В частности очень хотелось бы услышать fake'a. Заметил очень интересную вещь на подобии этой. На каждый ланг создается своя ф-ия. И довольно часто встречается "противофукция". Т.е. например. Файл загружен успешно, или безуспешно. И я тут подумал сделать вот так: в комменте мой вариант вместо описанных 2 ф-ий string CLanguage :: FileLoadedSuccessfully(string file, string path) { string Out = m_CFG->GetString( "lang_1012", "lang_1012" ); Replace( Out, "$FILE$", file ); Replace( Out, "$PATH$", path ); return Out; } string CLanguage :: FileLoadedNotSuccessfully(string file) { string Out = m_CFG->GetString( "lang_1013", "lang_1013" ); Replace( Out, "$FILE$", file ); return Out; } /* // optimized? string CLanguage :: FileLoaded(string file, string path, bool ok) { if (ok) { // File $FILE$ downloaded OK in : $PATH$ string Out = m_CFG->GetString( "lang_1012", "lang_1012" ); Replace( Out, "$FILE$", file ); Replace( Out, "$PATH$", path ); return Out; } else { // $FILE$ didn't download OK! string Out = m_CFG->GetString( "lang_1013", "lang_1013" ); Replace( Out, "$FILE$", file ); return Out; } }*/ Т.е. сделать функцию двузначной. Успех или провал. Путем добавления 3 параметра. Можно даже 3 параметр установить по умолчанию на true и не задавая его использовать 2 параметра в качестве "успешности". Кто как смотрит на данный вариант?
2 Deals: я за, помогу чем смогу. 2 JiLiZART: хотелось бы какуюнибуть приватную ветку для старожилов, напр чтоб можно было выкладывать какието свои варианты кода и никто не мог прочитать кроме допущенных.
// // !DRD (turn dynamic latency on or off) // !DLATENCY // !DDR // if( Command == "drd" || Command == "dlatency" || Command == "ddr") { if (Payload.empty()) { /*if (m_GHost->m_UseDynamicLatency) QueueChatCommand( "Dynamic latency disabled", User, Whisper ); else QueueChatCommand( "Dynamic latency enabled", User, Whisper );*/ QueueChatCommand( m_GHost->m_Language->DynamicLatency( m_GHost->m_UseDynamicLatency), User, Whisper ); m_GHost->m_UseDynamicLatency = !m_GHost->m_UseDynamicLatency; return; } if( Payload == "on" ) { QueueChatCommand( m_GHost->m_Language->DynamicLatency(true), User, Whisper ); // QueueChatCommand( "Dynamic latency enabled", User, Whisper ); m_GHost->m_UseDynamicLatency = true; } else if( Payload == "off" ) { QueueChatCommand( m_GHost->m_Language->DynamicLatency(false), User, Whisper ); // QueueChatCommand( "Dynamic latency disabled", User, Whisper ); m_GHost->m_UseDynamicLatency = false; } }
после анонса значение меняется =) ретурн помоему тут должен возвращять true or false(warning) я бы сделал так Код: if( Command == "drd" || Command == "dlatency" || Command == "ddr") { if (Payload.empty()) m_GHost->m_UseDynamicLatency = !m_GHost->m_UseDynamicLatency; else if( Payload == "on" ) m_GHost->m_UseDynamicLatency = true; else if( Payload == "off" ) m_GHost->m_UseDynamicLatency = false; QueueChatCommand( m_GHost->m_Language->DynamicLatency( m_GHost->m_UseDynamicLatency), User, Whisper ); } чисто для экономия строк=0 зы: создание "противофункций" как по мне облегчает чтение кода=) ведь с таким названием DynamicLatencyIsOn функция более явна чем DynamicLatency. ззы: жил хацю приватку=)
Вот что значит сначала анонс по переменной, а потом смена переменной сразу после анонса. И сам поймался. PHP: <span class="syntaxdefault">void CBNET </span><span class="syntaxkeyword">::</span><span class="syntaxdefault"> ProcessChatEvent</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> CIncomingChatEvent </span><span class="syntaxkeyword">*</span><span class="syntaxdefault">chatEvent </span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span> Тип ф-ии void. А значит не должно ничего возвращать. return используется в качестве выхода из ф-ии не завершая ее до конца.
Я бы по поводу языка посоветовал что то типа t("You uploaded %s sucessful",FILE) ( сама функция проходится по строке printf и заменяет плейсхолдеры, но только после того как по этой строке в файле языка найдёт переведённый вариант. и по поводу комманд можно сделать чтобы комманды ( их условное обозначение ) не вбивались хардкорно в бота, можно сделать чтобы был конфиг файл для комманд вида к примеру получив комманду, бот анализирует список всех комманд и определяет её тип, к примеру START и выполняет действие. а вообще я бы помог развитию бота GhostLite с плагин системой.
Да, офигенная идея. Сделать SVN, постоянно какие-то патчи или закрытый код, исходники 50 WMZ. Сразу вставьте туда ФФ под Опен Статс, поддержка новых шмоток. С UDP порядки наведите. В конфиг добавьте по больше цифровых значений. Что бы сохранял игры и репы. Команду бан айпи, навсегда, мап хакеров банить. Глянуть хистори с 1 айпи по никам и банам. Уменьшить нагрузку на MySql. Все будут ваших ботов юзать, потому что самый толковый бот будет.
та диалс пропал кудато =) вот и патчи кончились... мне тупо в падлу, а посоны заняты своими проэктами =) да и не знаем какую начать фиксить( я бы начал фиксить ghost++ а они хотят one)
Вот, вот, надо фиксить гхост++. Есть какие-либо общие рекомендации по тому, как делать перенос фич из гхост1 в гхост++? А то что-то не совсем всё гладко...