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

Не работает функция...

Тема в разделе 'Запуск и Поддержка', создана пользователем VladGod2, 25 окт 2011.

  1. VladGod2 Парнишка с небывалым умом

    Сообщения:
    228
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.00
    Skype:
    Мой статус
    У меня Ghost One последней версии.
    Поставил галочку чтобы все юзеры могли хостить, а он не отвечает не на 1 конманду в чем проблема?
    Вот конфиг
    Код:
    [GHOST]
    ###########################################################
    # PLEASE EDIT CONFIG IN GHOST ONE UNDER GHOST OPTIONS TAB #
    ###########################################################
    ### handle name bans: 0 = do nothing, 1 = kick, 2 = announce only (no kick).
    bot_banning = 1
    
    ### force auto hcl from gamename in dota games (even when bot_defaulthcl is not set) 
    bot_forceautohclindota = 1
    
    ### set to 1 if you want admins to be autoplaced higher only in dota games (0 = in all games)
    bot_placeadminshigheronlyindota = 0
    
    ### if 1 - no admin can start the game if the owner is in the lobby
    bot_onlyownerscanstart = 1
    
    ### if set to 1, if using bot_allowedscores, players having an unknown score will be allowed
    bot_allownullscoredplayers = 1
    
    ### in autohosted games, allow only players with score>=x to join the lobby
    bot_autohostallowedscores = 0
    
    ### allow only players with score>=x to join the lobby
    bot_allowedscores = 0
    
    ### milliseconds to add to highest ping as base dynamic latency
    bot_dynamiclatencyaddedtoping = 10
    
    ### how many milliseconds to add to the normal latency if the players lag
    bot_dynamiclatencymaxtoadd = 10
    
    ### dynamic latency will try not to go over 2.2x highest ping, recommended 
    bot_dynamiclatency2.2xhighestpingmax = 0
    
    ### dynamic latency will be increased when a lobby is active 
    bot_dynamiclatencyincreasewhenlobby = 0
    
    ### enable dynamic latency, lowers or even increases latency as needed 
    bot_usedynamiclatency = 1
    
    ### if enabled, any user can !pub/!map/!unhost 
    bot_userscanhost = 1
    
    ### if enabled, any safelisted player can !pub/!map/!unhost 
    bot_safecanhost = 1
    
    ### will allow admins and safelisted players to download even if downloads are disabled 
    bot_adminsandsafecandownload = 1
    
    ### will replace every !ban/!bl with !warn/!wl 
    bot_replacebanwithwarn = 0
    
    ### 0 - ghost countdown, 1 - warcraft countdown 
    bot_normalcountdown = 0
    
    ### when you !unban player, the bot also issues an /unban player 
    bot_unbanremoveschannelban = 1
    
    ### all messages will be answered with a whisper 
    bot_whisperallmessages = 1
    
    ### fake pings for the following players, space separated: ex = nick1 nick2
    bot_fakepings = 
    
    # Prints the gameloaded.txt message after X seconds. Default: 10. 
    bot_gameloadedprintout = 10
    
    # how many games should the player play (without taking another warn) to make one of his warns inactive. Default: 7
    bot_gamenumtoforgetawarn = 2
    
    # how many days will each warn last. 0 - permanent warn. Default: 14.
    bot_warntimeofwarnedplayer = 2
    
    # how many days will the auto-ban from warns last. 0 - permanent ban. Default: 14. 
    bot_bantimeofwarnedplayer = 2
    
    # how many warns are needed to auto-ban the player. Default: 3.
    bot_banthewarnedplayerquota = 3
    
    # tbanlast/tbl will expire in x days - set to 0 to be permanent
    bot_tbanlasttime = 2
    
    # normal banlast/bl will expire in x days - set to 0 to be permanent
    bot_banlasttime = 2
    
    # normal bans will expire in x days - set to 0 to be permanent
    bot_bantime = 2
    
    # auto warns leavers
    bot_autowarnearlyleavers = 0
    
    # send admin messages or not (if using the admin game)
    bot_adminmessages = 0
    
    # send local admin messages or not (if using the admin game)
    bot_localadminmessages = 0
    
    # set !autostart 10 automatically in dota games
    bot_autostartdotagames = 0
    
    # safelisted players are immune to ban/warn
    bot_safelistedbanimmunity = 1
    
    # Drop the user if he/she desyncs or not
    bot_dropifdesync = 1
    
    ### Управление банами по ip: 0 = ничего не делать, 1 = кик, 2 = только оповещение(не кикать).
    bot_ipbanning = 1
    
    ### оповещение о бане в одну строку( = 0) (если возможно) или в две строки ( = 1)
    bot_twolinesbanannouncement = 1
    
    ### текст, который добавляется к версии
    bot_customversiontext = 
    
    ### автоматически банить игроков, которые выходят во время отсчета начала игры
    bot_autobancountdown = 1
    
    ### автоматически банить игроков, которые выходят во время загрузки игры
    bot_autobangameloading = 1
    
    ### запрещенные страны при использовании автохоста
    bot_autohostdeniedcountries = 
    
    ### разрешенные страны при использовании автохоста
    bot_autohostallowedcountries = 
    
    ### UDP порт, по которому консоль общается с оболчкой GHost One GUI, по умолчанию 5868
    udp_guiport = 5868
    
    # в LAN/GArena показывать реальное количество игроков (текущее/общее) в игре, при использовании команды !pubg он автоматически включается
    lan_showrealslotcount = 1
    
    # LIST OF SETTINGS NOT IN GHOST OPTIONS TAB
    #bot_language
    #bot_mapcfgpath
    #bot_savegamepath
    #bot_spoofchecks
    #bot_refreshmessages
    #bot_autolock
    #bot_autosave
    #bot_allowdownloads
    #bot_pingduringdownloads
    #bot_lcpings
    #bot_autokickping
    #bot_latency
    #bot_synclimit
    #bot_votekickallowed
    #bot_votekickpercentage
    #bot_udpconsole
    #bot_virtualhostname
    #udp_cmdbindip
    #udp_cmdspooftarget
    #admingame_password
    #db_sqlite3_file
    #bnet_holdfriends
    #bnet_holdclan
    
    ########################
    # Actual Config Below  #
    ########################
    
    # путь к файлу логов и его название
    bot_log = log.txt
    
    # показывать сообщение когда safe/admin/rootadmin/chieftain/shaman заходят на канал
    bot_channeljoingreets = 1
    
    # админы могут удалять только те баны, которые сделали они
    bot_adminslimitedunban = 0
    
    # Оповещение +1 и +2 (игроков осталось до фулла) в лобби (не используется при автохосте)
    bot_lobbyannounceunoccupied = 1
    
    # автоматическая установка режима HCL(бот будет сам прописывать игровой мод) , основанная на названии игры(пример: -arso EU pros установит мод -arso)(только если определен параметр map_defaulthcl, пример: map_defaulthcl=ar). Установит пустой режим HCL если в названии игры не обнаружит мод
    bot_autohclfromgamename = 1
    
    # включить молчанку игроку, который использовал запрещенные слова, на X секунд
    bot_censormute = 1
    # также автоматически ставить молчанку админам
    bot_censormuteadmins = 0
    # молчанка игроку на X секунд при первом нарушении
    bot_censormutefirstseconds = 10
    # молчанка игроку на X секунд при втором нарушении
    bot_censormutesecondseconds = 30
    # молчанка игроку на X секунд при 3 и более нарушениях
    bot_censormuteexcessiveseconds = 60
    
    lan_war3version = 26
    
    # Отключить алгоритм nagle (алгоритмы TCPIP могут снижать скорость и вызывать лаги в игре) - может улучшить latency
    tcp_nodelay = 0
    
    # путь к вашему WC3TVRecorder, пример: c:\Program Files\waaaghTV Recorder\
    wtv_path = C:\Program Files\WaaaghTV Recorder\
    # использование WC3TVRecorder, "1", чтобы включить
    wtv_enabled = 0
    # WaaaghTV Observer Name
    wtv_playername = Waaagh!TV
    
    # для примера: RO, только этим странам разрешено подсоединяться к игре
    bot_allowedcountries = 
    # для примера: RO, этим странам запрещено подсоединяться к игре
    bot_deniedcountries = 
    
    # ждать Х мс до отправки пакета среднего размера бнету, когда используется PVPGN
    bot_bnetpacketdelaymediumpvpgn = 2000
    # ждать Х мс до отправки пакета большого размера бнету, когда используется PVPGN
    bot_bnetpacketdelaybigpvpgn = 2500
    # ждать Х мс до отправки пакета среднего размера бнету(офф)
    bot_bnetpacketdelaymedium = 2700
    # ждать Х мс до отправки пакета большого размера бнету(офф)
    bot_bnetpacketdelaybig = 3700
    
    # Формула для расчета статистики
    # Разрешенные переменные: totgames, kills, deaths, assists, creepkills, creepdenies, neutralkills,
    # towerkills, raxkills, courierkills, wins, losses, killstotal, deathstotal, creepkillstotal,
    # creepdeniestotal,assiststotal, neutralkillstotal, towerkillstotal, raxkillstotal, courierkillstotal
    # Формула по умолчанию:
    # (((wins-losses)/totgames)+(kills-deaths+assists/2)+(creepkills/100+creepdenies/10+neutralkills/50)+(raxkills/6)+(towerkills/11))
    # Альтернативная формула:
    # (((kills-deaths+assists*0.7)*0.6+towerkills*0.8+raxkills+creepkills*0.02+creepdenies*0.08+neutralkills*0.03+courierkills*0.04)*0.5+(wins/totgames*2)+(totgames*0.002))
    
    bot_scoreformula = (((wins-losses)/totgames)+(kills-deaths+assists/2)+(creepkills/100+creepdenies/10+neutralkills/50)+(raxkills/6)+(towerkills/11))
    
    # Счет будет высчитываться только для тех игроков, которые сыграли Х игр
    bot_scoremingames = 1
    
    # Доступ владельца игры по умолчанию (используйте панель доступа чтобы сменить уровень доступа админов на ваше усмотрение и посмотреть коды доступа для этих команд)
    bot_owneraccess = 3965
    
    # Доступ админов по умолчанию
    bot_adminaccess = 1903
    
    # состояние игры для домашних игр
    bot_gamestateinhouse = 999
    
    #  автоматически банить только тех игроков, которые нарушают баланс команд(пример: игра 5-5. при 5-4 банить ливера, при 4-4 не банить, если этот параметр равен 1)
    bot_autobanteamdiffmax = 1
    
    # Банить игроков, которые покинули игру за Х минут до конца игры
    bot_autobangameendmins = 1
    
    # Банить игроков до Х минут игры
    bot_autobantimer = 0
    
    # Банить всех ливеров вне зависимости от карты
    bot_autobanall = 0
    
    # Автоматически банить первых Х ливеров
    bot_autobanfirstxleavers = 1
    
    # бот автоматически пересоздаст игру с названием [название#номер] если прошло Х секунд с момента присоединения последнего игрока, 0=отключить
    bot_autorehostdelay = 120
    
    # бот автоматически пересоздаст игру с названием [название#номер] если имя занято
    bot_rehostifnametaken = 1
    
    # если счетчик игр превысит этот предел, то автоматически сбросится до 1. 0=отключить
    bot_maxhostcounter = 1000
    
    # эти слова будут запрещены в игре
    bot_censorwords = 
    
    # load in game feature will be enabled for every map (if set to 1)
    bot_forceloadingame = 0
    
    # после окончания игры при использовании мускула бот запустит update_dota_elo.exe (НЕ ИСПОЛЬЗОВАТЬ ВМЕСТЕ)
    bot_updatedotaeloaftergame = 1
    
    # после окончания игры при использовании мускула бот пересчитает очки (score)  (НЕ ИСПОЛЬЗОВАТЬ ВМЕСТЕ)
    bot_updatedotascoreaftergame = 0
    
    # "1", если вы используете патч версии 1.23 или выше
    bot_patch23ornewer = 1
    
    # "1", если используется патч 1.21
    bot_patch21 = 0
    
    # показывать счет каждого вошедшего игрока и игравшего на этом боте раньше
    bot_showscoresonjoin = 1
    
    # установка значения bot_autohostmaximumgames > 0 приведет к автозапуску автохоста(извиняюсь за тавтологию)
    bot_autohostmaximumgames = 0
    bot_autohostautostartplayers = 10
    bot_autohostallowstart = 0
    bot_autohostlocal = 0
    bot_autohostowner = ******
    bot_autohostmapcfg = DotA v6.72f.cfg
    bot_autohostgamename = ******
    
    # при автохосте включает автобан игрокам нарушившим равновесие игры в картах с 2 командами. Не банит админов и главных админов.
    #     0 = off   1 = on
    bot_autoban = 0
    
    # делать ли всех игроков, заходящих с локальной сети, алминами?
    bot_lanadmins = 0
    
    # делать ли локальных игроков админами автоматически (например игроков с гарены)
    bot_localadmins = 0
    
    # языковой файл
    
    bot_language = Languages\*****.cfg
    
    ### укажите путь к папке warcraft
    ### эта папка должна содержать следующие файлы: war3.exe, storm.dll и game.dll
    ### для того, чтобы бот автоматически высчитывал значения для карт, в этой папке также должен находиться файл War3Patch.mpq, из которого бот попытается вытащить "Scripts\common.j" and "Scripts\blizzard.j" при загрузке, и положит их в bot_mapcfgpath (который определен в этом конфиге ниже)
    
    bot_war3path = *:\WarCraft III - Frozen Throne\
    
    ### порт, на котором GHost++ будет хостить игры в battle.net (должен отличаться от стандартного порта warcraft и порта админ игры(прописан ниже))
    
    bot_hostport = 6113
    
    ### максимальное количество игр, которые могут хоститься одновременно
    
    bot_maxgames = 6
    
    ### триггер, используемый в игре (триггер battle.net определен ниже в этом конфиге)
    ### Триггер - специальный символ, который позволяет боту определять, что данное предложение после триггера должно обработаться как команда(если такая существует)
    
    bot_commandtrigger = !
    
    ### путь к директории, в которой лежат ваш конфиги для карт
    ###  эта папка также может содержать файлы common.j и blizzard.j (извленченные из War3Patch.mpq)
    ###  Файлы common.j and blizzard.j требуются только для автоматического расчета map_crc ваших карт
    
    bot_mapcfgpath = mapcfgs\
    
    ### путь к директории, в которой лежат ваши сохраненные игры
    
    bot_savegamepath = savegames\
    
    ### путь к директории, в которой лежат ваши карты
    ###  GHost++ не требует наличия карт, но если он имеет доступ к ним, то может отправить их игрокам и автоматически расчитать значения большинства карт
    ###  GHost++ ищет карту в директориях, прописанных в следующих параметрах [bot_mappath + map_localpath] (map_localpath определено в каждом конфиге карты)
    
    bot_mappath = F:\WarCraft III - Frozen Throne\maps\download\
    
    ### сохранять реплеи или нет
    
    bot_savereplays = 0
    
    ### директория для сохранения реплеев
    
    bot_replaypath = replays\
    
    ### версия Warcraft 3, для которой бот будет сохранять реплеи
    
    replay_war3version = 26
    
    ### номер билда Warcraft 3 для сохранения реплеев
    ###  patch 1.23:  war3version 23, buildnumber 6058
    ###  patch 1.24:  war3version 24, buildnumber 6059
    ###  patch 1.24b: war3version 24, buildnumber 6059
    
    replay_buildnumber = 6060
    
    ### проводить автоматическую проверку на подмену ника или нет
    ###  0 отключает проверку
    ###  1 производит проверку автоматически для всех игроков
    ###  2 производит проверку только для потенциальных администраторов.
    
    bot_spoofchecks = 1
    
    ### Требуется ли для игры автоматическая проверка ника или нет ?
    ###  Данная настройка контролируется нужно-ли перед началом игры игрокам пройти проверку на подмену ника
    ###  если данная настройка включена (1) то для начала игры, если не включена автоматическая проверка игроки должны будут отправить боту команду вида /r !spoofcheck
    ### иначе игрок не прошедший проверку через 20 секунд будет выкинут.
    ### Если же автоматическая проверка включена, то бот автоматически проверит и толлько после проверки всех игроков начнет игру.
    
    bot_requirespoofchecks = 0
    
    ### Отображать ли сообщение об обновлении игры
    
    bot_refreshmessages = 0
    
    ### блокировать ли автоматически игру когда подключился владелец игры (только админ и владелец смогут вводить команды боту)
    
    bot_autolock = 1
    
    ### проводить ли автоматическое сохранение игры при отключении игры
    
    bot_autosave = 0
    
    ### разрешить скачивание карты или нет
    ###  0 запрещает скачивание карты
    ###  1 разрешает скачивание карты
    ###  2 разрешает скачивание карты по указке администратора (администратор должен прописать !download или !dl )
    
    bot_allowdownloads = 1
    
    ### Пинговать ли игроков при закачке игроком карты ?
    ###  если да то при скачивании игроки пинговатся не будут
    
    bot_pingduringdownloads = 1
    
    # кикать забаненных игроков с канала
    bot_kickbannedfromchannel = 1
    
    # банить на канале забаненных игроков
    bot_banbannedfromchannel = 1
    
    # ### использовать ли стиль пинга LC? (делит актуальный пинг на 2)
    
    bot_lcpings = 1
    
    ### Автоматический кик игроков пинг которых выше
    
    bot_autokickping = 200
    
    ### игровая задержка ( у Battle.net по умолчанию стоит 250 в LAN играх 100)
    ###  также может быть установлена для каждой игры через !latency команду (в пределах от 50 до максимума в 500)
    
    bot_latency = 120
    
    ### максимальное число пакетов которое не дошло до игрока прежде чем появится лагскрин ( экран после которого игрока выкинет из игры)
    ###  ниже 8.0 версии GHost++ не имел лагскрина и эта опция имела максимальное значения
    ###  также значение можно изменить во время игры используя !synclimit команду (в пределах от  10 до максимума в 10000)
    
    bot_synclimit = 200
    
    # whether votekicks are allowed or not
    
    bot_votekickallowed = 1
    
    ### процент голосов нужный для срабатывания votekick
    ###  предпологается что игрок стартовавший Голосование проголосовал ДА и если он стартовал Голосование опять то предпологается что он проголосовал НЕТ
    ###  формула для расчета количества необходимых голосов votes_needed = ceil( ( num_players - 1 ) * bot_votekickpercentage / 100 )
    ###  это значит что он будет округлять нужное число голосов в высшую сторону
    ###  если вы установите 100 это требует 2/3, 3/4, 4/5, 5/6, 6/7, 7/8, 8/9, 9/10, 10/11, и 11/12 голосов для результата
    ###  если вы установите 90 это требует 2/3, 3/4, 4/5, 5/6, 6/7, 7/8, 8/9, 9/10, 9/11, и 10/12 голосов для результата
    ###  если вы установите 80 это требует 2/3, 3/4, 4/5, 4/6, 5/7, 6/8, 7/9, 8/10, 8/11, и 9/12 голосов для результата
    ###  если вы установите 70 это требует 2/3, 3/4, 3/5, 4/6, 5/7, 5/8, 6/9, 7/10, 7/11, и 8/12 голосов для результата
    ###  если вы установите 60 это требует 2/3, 2/4, 3/5, 3/6, 4/7, 5/8, 5/9, 6/10, 6/11, и 7/12 голосов для результата
    
    bot_votekickpercentage = 60
    
    # "1" - на время игры бот добавляет создателя в друзья и удаляет его после окончания игры
    bot_addcreatorasfriendonhost = 1
    
    # показывать команды, направленные боту, в лобби/игре или нет
    bot_relaychatcommands = 0
    
    # показывать информацию о текущих загрузках карт или нет(скорость, процент загрузки)
    bot_showdownloadsinfo = 0
    
    # интервал между сообщениями о загрузках
    bot_showdownloadsinfotime = 10
    
    # максимум одновременных скачиваний
    bot_maxdownloaders = 10
    
    # общая максимальная скорость загрузки
    bot_totaldownloadspeed = 1536
    
    # макс скорость загрузки дял каждого игрока
    bot_clientdownloadspeed = 1024
    
    # иницировать таймер завершения игры если количество игроков меньше указанного  - 0 выключить завершение игры
    bot_gameoverminplayers = 0
    
    # иницировать таймер завершения игры если процент оставшихся игроков составляет меньше указанного  - 0 выключить завершение игры
    bot_gameoverminpercent = 0
    
    #  иницировать таймер завершения игры если разница между количеством игроков разных команд больше указанного  - 0 выключить завершение игры
    bot_gameovermaxteamdifference = 0
    
    # перенаправление вывода консоли на порт UDP
    bot_udpconsole = 1
    
    # резервировать ли игроков из прошлой игры?
    bot_holdplayersforrmk = 0
    
    # включить ли не админ комманды? 1 включить, 0 отключить
    bot_nonadmincommands = 1
    
    # требовать ли от рутадминов проверку ника или нет
    bot_rootadminsspoofcheck = 1
    
    # требовать ли от рутадминов проверку ника или нет
    bot_adminsspoofcheck = 1
    
    # если 1, забаненные игроки будут оповещены о бане
    bot_notifybannedplayers = 1
    
    # бот будет искать внешний ip при загрузке. отключите если хотите играть только по сети
    bot_findexternalip = 1
    
    # впишите свой внешний IP если не хотите, чтобы бот его искал при загрузке
    bot_externalip = 
    
    # использовать ли альтернативный сайт для поиска внешнего IP? (при наличии > 30 сек задержки при запуске бота)
    bot_altfindip = 0
    
    # Рутадмины(вписывать через пробел: userone usertwo userthree)
    bot_rootadmins = ********
    
    # UDP пароль бота
    bot_udppassword = 
    
    # показывать ли сообщения автоматического удаления игроков забаненных или из запрещенных стран
    bot_verbose = 1
    
    # виртуальное имя бота
    bot_virtualhostname = |cFF0000A0*****
    
    # игнорировать лаг скрин в первые X секунд игры
    bot_dropvotetime = 100
    
    # автоматически закрывает игровую прихожую если не подключается необходимое количество игроков или админ за указаное кол. минут
    bot_lobbytimelimit = 5
    
    # udp ip
    udp_cmdbindip = 0.0.0.0
    
    # udp port
    udp_cmdport = 6969
    
    # udp spoof target
    udp_cmdspooftarget =
    
    ###############################
    # ADMIN GAME CONFIGURATION #
    ###############################
    
    ### Создание админ игры
    
    admingame_create = 0
    
    ### порт админ игры
    
    admingame_port = 6114
    
    ### пароль админ игры
    
    admingame_password = 
    
    ##########################
    # DATABASE CONFIGURATION #
    ##########################
    
    ### тип БД
    ###  "sqlite3" для локальной БД SQLite
    ###  "mysql" для БД MySQL
    
    db_type = mysql
    
    ### конфигурация БД SQLite
    
    db_sqlite3_file = ghost.dbs
    
    ### конфигурация БД MySQL
    
    db_mysql_server = localhost
    db_mysql_database = Ghost
    db_mysql_user = GHost
    db_mysql_password = *********
    db_mysql_port = 3306
    
    
    
    помогите!
  2. VladGod2 Парнишка с небывалым умом

    Сообщения:
    228
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.00
    Skype:
    Мой статус
    Насколько я понял эта функция не рабочая...
    Нельзя ли ее сделать рабочей?
    C++ не шарю :nea:
    Но логический думать умею....
  3. ____ROB____ Старожила

    Сообщения:
    1.008
    Спасибы:
    22
    Сборка бота GHost:
    Ghost One 1.5
    Уже было (только для SL игроков). Найди и добавь в бнет.срр после "нон-админ команд".
  4. VladGod2 Парнишка с небывалым умом

    Сообщения:
    228
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.00
    Skype:
    Мой статус
    Во время компиляции вылезло вот такое окошко:
    [IMG]
    Как это исправить???
    Жму да пишит все ОК, но изменений не произошло
    Жму нет, тоже самое... :facepalm:
  5. ____ROB____ Старожила

    Сообщения:
    1.008
    Спасибы:
    22
    Сборка бота GHost:
    Ghost One 1.5
    картинка не открывается
  6. VladGod2 Парнишка с небывалым умом

    Сообщения:
    228
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.00
    Skype:
    Мой статус
    [IMG]
  7. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Release!
  8. VladGod2 Парнишка с небывалым умом

    Сообщения:
    228
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.00
    Skype:
    Мой статус
    Вообщем дело такое.
    На другой машине решил все сделать.
    Вот сам код команды !pub :
    Код:
    //
    				// !PUB (host public game)
    				// !P
    				//
    
    				if( Command == "pub" || Command == "p" )
    				{
    					if (!CMDCheck(CMD_host, AdminAccess))
    					{
    						QueueChatCommand(m_GHost->m_Language->YouDontHaveAccessToThatCommand( ), User, Whisper);
    						return;
    					}
    
    					if (m_GHost->m_LastGameName=="" && Payload.empty())
    					{
    						QueueChatCommand("No game has been hosted till now, specify a name", User, Whisper);
    						return;
    					}
    
    					string GameName = Payload;
    					if (GameName.empty())
    						GameName = m_GHost->m_LastGameName;					
    					string GameNr = string();
    					uint32_t idx = 0;
    					uint32_t Nr = 0;
    /*
    					if (!GameName.empty() && GameName==m_GHost->m_LastGameName)
    					{
    						QueueChatCommand("You can't use the same name!", User, Whisper);
    						return;
    					}
    */
    					if (Payload.empty())
    					{
    						idx = GameName.length()-1;
    						if (idx>=2)
    						if (GameName.at(idx-2)=='#')
    							idx = idx-1;
    						else
    							if (GameName.at(idx-1)=='#')
    								idx = idx;
    							else
    								idx = 0;
    
    						// idx = 0, no Game Nr found in gamename
    						if (idx == 0)
    						{
    							GameNr = "0";
    							GameName = GameName + " #";
    						}
    						else
    						{
    							GameNr = GameName.substr(idx,GameName.length()-idx);
    							GameName = GameName.substr(0,idx);
    						}
    						stringstream SS;
    						SS << GameNr;
    						SS >> Nr;
    						Nr ++;
    						if (Nr>20)
    							Nr = 1;
    						GameNr = UTIL_ToString(Nr);
    						GameName = GameName + GameNr;
    					}
    					m_GHost->m_QuietRehost = false;
    
    					// adding the game creator as friend
    					bool cf = false;
    					if (m_GHost->m_addcreatorasfriendonhost && !IsFriend(User))
    					{
    						QueueChatCommand( "/f a "+User);
    						cf = true;
    					}
    
    					m_GHost->CreateGame( m_GHost->m_Map, GAME_PUBLIC, false, GameName, User, User, m_Server, Whisper );
    					if (m_GHost->m_addcreatorasfriendonhost && !cf && m_GHost->m_CurrentGame)
    						m_GHost->m_CurrentGame->m_CreatorAsFriend = false;
    
    				}
    
    здесь я удалил вот это:
    Код:
    	if (!CMDCheck(CMD_host, AdminAccess))
    					{
    						QueueChatCommand(m_GHost->m_Language->YouDontHaveAccessToThatCommand( ), User, Whisper);
    						return;
    					}
    В итоге он мне во время построения начал давать кучу ошибок (синтаксических), но вроде Ок
    захожу на батл регаю новый ник, пишу !pub он мне пишит: мол у вас нет прав....
    Что я сделал не так?
  9. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
  10. VladGod2 Парнишка с небывалым умом

    Сообщения:
    228
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.00
    Skype:
    Мой статус
    И что ты мне этим хотел сказать? o_O
  11. VladGod2 Парнишка с небывалым умом

    Сообщения:
    228
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.00
    Skype:
    Мой статус
    Код:
    //
    				// !LOAD (load config file)
    				//
    
    				if( Command == "load" )
    				{
    					if( Payload.empty( ) )
    						QueueChatCommand( m_GHost->m_Language->CurrentlyLoadedMapCFGIs( m_GHost->m_Map->GetCFGFile( ) ), User, Whisper );
    					else
    					{
    						string FoundMapConfigs;
    
    						try
    						{
    							path MapCFGPath( m_GHost->m_MapCFGPath );
    							string Pattern = Payload;
    							transform( Pattern.begin( ), Pattern.end( ), Pattern.begin( ), (int(*)(int))tolower );
    
    							if( !exists( MapCFGPath ) )
    							{
    								CONSOLE_Print( "[BNET: " + m_ServerAlias + "] error listing map configs - map config path doesn't exist" );
    								QueueChatCommand( m_GHost->m_Language->ErrorListingMapConfigs( ), User, Whisper );
    							}
    							else
    							{
    								directory_iterator EndIterator;
    								path LastMatch;
    								uint32_t Matches = 0;
    
    								for( directory_iterator i( MapCFGPath ); i != EndIterator; i++ )
    								{
    									string FileName = i->filename( );
    									string Stem = i->path( ).stem( );
    									transform( FileName.begin( ), FileName.end( ), FileName.begin( ), (int(*)(int))tolower );
    									transform( Stem.begin( ), Stem.end( ), Stem.begin( ), (int(*)(int))tolower );
    
    									if( !is_directory( i->status( ) ) && i->path( ).extension( ) == ".cfg" && FileName.find( Pattern ) != string :: npos )
    									{
    										LastMatch = i->path( );
    										Matches++;
    
    										if( FoundMapConfigs.empty( ) )
    											FoundMapConfigs = i->filename( );
    										else
    											FoundMapConfigs += ", " + i->filename( );
    
    										// if the pattern matches the filename exactly, with or without extension, stop any further matching
    
    										if( FileName == Pattern || Stem == Pattern )
    										{
    											Matches = 1;
    											break;
    										}
    									}
    								}
    
    								if( Matches == 0 )
    									QueueChatCommand( m_GHost->m_Language->NoMapConfigsFound( ), User, Whisper );
    								else if( Matches == 1 )
    								{
    									string File = LastMatch.filename( );
    									QueueChatCommand( m_GHost->m_Language->LoadingConfigFile( m_GHost->m_MapCFGPath + File ), User, Whisper );
    									CConfig MapCFG;
    									MapCFG.Read( LastMatch.string( ) );
    									m_GHost->m_Map->Load( &MapCFG, m_GHost->m_MapCFGPath + File );
    								}
    								else
    									QueueChatCommand( m_GHost->m_Language->FoundMapConfigs( FoundMapConfigs ), User, Whisper );
    							}
    						}
    						catch( const exception &ex )
    						{
    							CONSOLE_Print( "[BNET: " + m_ServerAlias + "] error listing map configs - caught exception [" + ex.what( ) + "]" );
    							QueueChatCommand( m_GHost->m_Language->ErrorListingMapConfigs( ), User, Whisper );
    						}
    					}
    				}
    
    Код:
    //
    				// !MAP (load map file)
    				//
    
    				if( Command == "map" )
    				{
    					if( Payload.empty( ) )
    						QueueChatCommand( m_GHost->m_Language->CurrentlyLoadedMapCFGIs( m_GHost->m_Map->GetCFGFile( ) ), User, Whisper );
    					else
    					{
    						string FoundMaps;
    
    						try
    						{
    							path MapPath( m_GHost->m_MapPath );
    							string Pattern = Payload;
    							transform( Pattern.begin( ), Pattern.end( ), Pattern.begin( ), (int(*)(int))tolower );
    
    							if( !exists( MapPath ) )
    							{
    								CONSOLE_Print( "[BNET: " + m_ServerAlias + "] error listing maps - map path doesn't exist" );
    								QueueChatCommand( m_GHost->m_Language->ErrorListingMaps( ), User, Whisper );
    							}
    							else
    							{
    								directory_iterator EndIterator;
    								path LastMatch;
    								uint32_t Matches = 0;
    
    								for( directory_iterator i( MapPath ); i != EndIterator; i++ )
    								{
    									string FileName = i->filename( );
    									string Stem = i->path( ).stem( );
    									transform( FileName.begin( ), FileName.end( ), FileName.begin( ), (int(*)(int))tolower );
    									transform( Stem.begin( ), Stem.end( ), Stem.begin( ), (int(*)(int))tolower );
    
    									if( !is_directory( i->status( ) ) && FileName.find( Pattern ) != string :: npos )
    									{
    										LastMatch = i->path( );
    										Matches++;
    
    										if( FoundMaps.empty( ) )
    											FoundMaps = i->filename( );
    										else
    											FoundMaps += ", " + i->filename( );
    
    										// if the pattern matches the filename exactly, with or without extension, stop any further matching
    
    										if( FileName == Pattern || Stem == Pattern )
    										{
    											Matches = 1;
    											break;
    										}
    									}
    								}
    
    								if( Matches == 0 )
    									QueueChatCommand( m_GHost->m_Language->NoMapsFound( ), User, Whisper );
    								else if( Matches == 1 )
    								{
    									string File = LastMatch.filename( );
    									QueueChatCommand( m_GHost->m_Language->LoadingConfigFile( File ), User, Whisper );
    
    									// hackhack: create a config file in memory with the required information to load the map
    
    									CConfig MapCFG;
    									MapCFG.Set( "map_path", "Maps\\Download\\" + File );
    									MapCFG.Set( "map_localpath", File );
    									bool dota = false;
    									string dt=string();
    									string dc=string();
    									string dh=string();
    									if (File.find("Allstars")!=string::npos)
    										dota = true;
    									if (dota)
    									{
    										dt = "dota";
    										dc = "dota_elo";
    										if (m_GHost->m_forceautohclindota)
    											dh = "ar";
    									}
    									MapCFG.Set( "map_type", dt );
    									MapCFG.Set( "map_matchmakingcategory", dc );
    									MapCFG.Set( "map_defaulthcl", dh );
    									m_GHost->m_Map->Load( &MapCFG, File );
    								}
    								else
    									QueueChatCommand( m_GHost->m_Language->FoundMaps( FoundMaps ), User, Whisper );
    							}
    						}
    						catch( const exception &ex )
    						{
    							CONSOLE_Print( "[BNET: " + m_ServerAlias + "] error listing maps - caught exception [" + ex.what( ) + "]" );
    							QueueChatCommand( m_GHost->m_Language->ErrorListingMaps( ), User, Whisper );
    						}
    					}
    				}
    
    Код:
    //
    				// !PUB (host public game)
    				// !P
    				//
    
    				if( Command == "pub" || Command == "p" )
    				{
    					if (!CMDCheck(CMD_host, AdminAccess))
    					{
    						QueueChatCommand(m_GHost->m_Language->YouDontHaveAccessToThatCommand( ), User, Whisper);
    						return;
    					}
    
    					if (m_GHost->m_LastGameName=="" && Payload.empty())
    					{
    						QueueChatCommand("No game has been hosted till now, specify a name", User, Whisper);
    						return;
    					}
    
    					string GameName = Payload;
    					if (GameName.empty())
    						GameName = m_GHost->m_LastGameName;					
    					string GameNr = string();
    					uint32_t idx = 0;
    					uint32_t Nr = 0;
    /*
    					if (!GameName.empty() && GameName==m_GHost->m_LastGameName)
    					{
    						QueueChatCommand("You can't use the same name!", User, Whisper);
    						return;
    					}
    */
    					if (Payload.empty())
    					{
    						idx = GameName.length()-1;
    						if (idx>=2)
    						if (GameName.at(idx-2)=='#')
    							idx = idx-1;
    						else
    							if (GameName.at(idx-1)=='#')
    								idx = idx;
    							else
    								idx = 0;
    
    						// idx = 0, no Game Nr found in gamename
    						if (idx == 0)
    						{
    							GameNr = "0";
    							GameName = GameName + " #";
    						}
    						else
    						{
    							GameNr = GameName.substr(idx,GameName.length()-idx);
    							GameName = GameName.substr(0,idx);
    						}
    						stringstream SS;
    						SS << GameNr;
    						SS >> Nr;
    						Nr ++;
    						if (Nr>20)
    							Nr = 1;
    						GameNr = UTIL_ToString(Nr);
    						GameName = GameName + GameNr;
    					}
    					m_GHost->m_QuietRehost = false;
    
    					// adding the game creator as friend
    					bool cf = false;
    					if (m_GHost->m_addcreatorasfriendonhost && !IsFriend(User))
    					{
    						QueueChatCommand( "/f a "+User);
    						cf = true;
    					}
    
    					m_GHost->CreateGame( m_GHost->m_Map, GAME_PUBLIC, false, GameName, User, User, m_Server, Whisper );
    					if (m_GHost->m_addcreatorasfriendonhost && !cf && m_GHost->m_CurrentGame)
    						m_GHost->m_CurrentGame->m_CreatorAsFriend = false;
    
    				}
    
    Код:
    //
    				// !START
    				//
    
    				if( Command == "start" && m_GHost->m_CurrentGame && !m_GHost->m_CurrentGame->GetCountDownStarted( ) && m_GHost->m_CurrentGame->GetNumPlayers( ) > 0 )
    				{
    					if (m_GHost->m_onlyownerscanstart)
    						if ((!m_GHost->m_CurrentGame->IsOwner( User) && m_GHost->m_CurrentGame->GetPlayerFromName(m_GHost->m_CurrentGame->GetOwnerName(), false)) && !RootAdminCheck )
    						{
    							QueueChatCommand( "Only the owner can start the game.", User, Whisper);
    							return;
    						}
    
    					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 );
    				}
    
    
    Код:
                                                   //
    				// !SWAP (swap slots)
    				//
    
    				if( Command == "swap" && !Payload.empty( ) && m_GHost->m_CurrentGame )
    				{
    					if (!CMDCheck(CMD_swap, AdminAccess))
    					{
    						QueueChatCommand(m_GHost->m_Language->YouDontHaveAccessToThatCommand( ), User, Whisper);
    						return;
    					}
    
    					if( !m_GHost->m_CurrentGame->GetLocked( ) )
    					{
    						uint32_t SID1;
    						uint32_t SID2;
    						stringstream SS;
    						SS << Payload;
    						SS >> SID1;
    
    						if( SS.fail( ) )
    							CONSOLE_Print( "[BNET: " + m_ServerAlias + "] bad input #1 to swap command" );
    						else
    						{
    							if( SS.eof( ) )
    								CONSOLE_Print( "[BNET: " + m_ServerAlias + "] missing input #2 to swap command" );
    							else
    							{
    								SS >> SID2;
    
    								if( SS.fail( ) )
    									CONSOLE_Print( "[BNET: " + m_ServerAlias + "] bad input #2 to swap command" );
    								else
    								{
    									bool isAdmin = false;
    									bool isRootAdmin = false;
    									bool sameteam = false;
    									if (SID1-1<m_GHost->m_CurrentGame->m_Slots.size() && SID2-1<m_GHost->m_CurrentGame->m_Slots.size())
    										sameteam = m_GHost->m_CurrentGame->m_Slots[SID1-1].GetTeam() == m_GHost->m_CurrentGame->m_Slots[SID2-1].GetTeam();
    									CGamePlayer *Player = m_GHost->m_CurrentGame->GetPlayerFromSID( SID1 - 1 );
    									CGamePlayer *Player2 = m_GHost->m_CurrentGame->GetPlayerFromSID( SID2 - 1 );
    									if (Player)
    									if (Player->GetName()!=User)
    										if (IsRootAdmin(Player->GetName()))
    											isRootAdmin = true;
    									if (Player2)
    									if (Player2->GetName()!=User)
    										if (IsRootAdmin(Player2->GetName()))
    											isRootAdmin = true;
    									if (m_GHost->m_onlyownerscanswapadmins && !sameteam)
    									{
    										if (Player)
    										{
    											if (IsAdmin(Player->GetName()) || IsRootAdmin(Player->GetName()))
    												if (Player->GetName()!=User)
    													isAdmin = true;
    										}
    										if (Player2)
    										{
    											if (IsAdmin(Player2->GetName()) || IsRootAdmin(Player2->GetName()))
    												if (Player2->GetName()!=User)
    													isAdmin = true;
    										}
    									}
    									if (isRootAdmin && !RootAdminCheck)
    									{
    										QueueChatCommand( "You can't swap a rootadmin!", User, Whisper);
    										return;
    									}
    
    									if (isAdmin && !(m_GHost->m_CurrentGame->IsOwner(User) || RootAdminCheck))
    									{
    										QueueChatCommand( "You can't swap an admin!", User, Whisper);
    										return;
    									} else
    									m_GHost->m_CurrentGame->SwapSlots( (unsigned char)( SID1 - 1 ), (unsigned char)( SID2 - 1 ) );
    								}
    							}
    						}
    					}
    					else
    						QueueChatCommand( m_GHost->m_Language->TheGameIsLockedBNET( ), User, Whisper );
    				}
    Код:
    //
    				// !OPEN (open slot)
    				// !O
    				//
    
    				if( ( Command == "open" || Command == "o" ) && !Payload.empty( ) && m_GHost->m_CurrentGame )
    				{
    					if (!CMDCheck(CMD_open, AdminAccess))
    					{
    						QueueChatCommand(m_GHost->m_Language->YouDontHaveAccessToThatCommand( ), User, Whisper);
    						return;
    					}
    					if( !m_GHost->m_CurrentGame->GetLocked( ) )
    					{
    						// open as many slots as specified, e.g. "5 10" opens slots 5 and 10
    
    						stringstream SS;
    						SS << Payload;
    
    						while( !SS.eof( ) )
    						{
    							uint32_t SID;
    							SS >> SID;
    
    							if( SS.fail( ) )
    							{
    								CONSOLE_Print( "[BNET: " + m_ServerAlias + "] bad input to open command" );
    								break;
    							}
    							else
    								m_GHost->m_CurrentGame->OpenSlot( (unsigned char)( SID - 1 ), true );
    						}
    					}
    					else
    						QueueChatCommand( m_GHost->m_Language->TheGameIsLockedBNET( ), User, Whisper );
    				}
    
    Код:
    //
    				// !OPENALL
    				// !OA
    				//
    
    				if( ( Command == "openall" || Command == "oa" ) && m_GHost->m_CurrentGame )
    				{
    					if (!CMDCheck(CMD_open, AdminAccess))
    					{
    						QueueChatCommand(m_GHost->m_Language->YouDontHaveAccessToThatCommand( ), User, Whisper);
    						return;
    					}
    
    					if( !m_GHost->m_CurrentGame->GetLocked( ) )
    						m_GHost->m_CurrentGame->OpenAllSlots( );
    					else
    						QueueChatCommand( m_GHost->m_Language->TheGameIsLockedBNET( ), User, Whisper );
    				}
    
    Код:
    //
    				// !PRIV (host private game)
    				// !PR
    				// !PRI
    				//
    
    				if( ( Command == "priv" || Command == "pr" || Command == "pri") && !Payload.empty( ) )
    				{
    					if (!CMDCheck(CMD_host, AdminAccess))
    					{
    						QueueChatCommand(m_GHost->m_Language->YouDontHaveAccessToThatCommand( ), User, Whisper);
    						return;
    					}
    
    					// adding the game creator as friend
    					bool cf = false;
    					if (m_GHost->m_addcreatorasfriendonhost && !IsFriend(User))
    					{
    						QueueChatCommand( "/f a "+User);
    						cf = true;
    					}
    
    					if (Command=="pri")
    						m_GHost->CreateGame( m_GHost->m_Map, m_GHost->m_gamestateinhouse, false, Payload, User, User, m_Server, Whisper );
    					else
    						m_GHost->CreateGame( m_GHost->m_Map, GAME_PRIVATE, false, Payload, User, User, m_Server, Whisper );
    					if (m_GHost->m_addcreatorasfriendonhost && !cf && m_GHost->m_CurrentGame)
    						m_GHost->m_CurrentGame->m_CreatorAsFriend = false;
    				}
    
    Код:
    //
    				// !END
    				//
    
    				if( Command == "end" && !Payload.empty( ) )
    				{
    					// todotodo: what if a game ends just as you're typing this command and the numbering changes?
    
    					if (!CMDCheck(CMD_end, AdminAccess))
    					{
    						QueueChatCommand(m_GHost->m_Language->YouDontHaveAccessToThatCommand( ), User, Whisper);
    						return;
    					}
    
    					uint32_t GameNumber = UTIL_ToUInt32( Payload ) - 1;
    
    					if( GameNumber < m_GHost->m_Games.size( ) )
    					{
    						// if the game owner is still in the game only allow the root admin to end the game
    
    						if( m_GHost->m_Games[GameNumber]->GetPlayerFromName( m_GHost->m_Games[GameNumber]->GetOwnerName( ), false ) && !IsRootAdmin( User ) && IsAdmin(m_GHost->m_Games[GameNumber]->GetOwnerName( )))
    							QueueChatCommand( m_GHost->m_Language->CantEndGameOwnerIsStillPlaying( m_GHost->m_Games[GameNumber]->GetOwnerName( ) ), User, Whisper );
    						else
    						{
    							if (!RootAdminCheck)
    							if (m_GHost->m_EndReq2ndTeamAccept && m_GHost->m_Games[GameNumber]->m_GetMapNumTeams==2)
    								return;
    							QueueChatCommand( m_GHost->m_Language->EndingGame( m_GHost->m_Games[GameNumber]->GetDescription( ) ), User, Whisper );
    							CONSOLE_Print( "[GAME: " + m_GHost->m_Games[GameNumber]->GetGameName( ) + "] is over (admin ended game)" );
    							m_GHost->m_Games[GameNumber]->SendAllChat("Game will end in 5 seconds");
    							m_GHost->m_Games[GameNumber]->m_GameEndCountDownStarted = true;
    							m_GHost->m_Games[GameNumber]->m_GameEndCountDownCounter = 5;
    							m_GHost->m_Games[GameNumber]->m_GameEndLastCountDownTicks = GetTicks();
    	//						m_GHost->m_Games[GameNumber]->StopPlayers( "was disconnected (admin ended game)" );
    						}
    					}
    					else
    						QueueChatCommand( m_GHost->m_Language->GameNumberDoesntExist( Payload ), User, Whisper );
    				}
    
    Код:
    //
    				// !UNHOST
    				// !UH
    				//
    
    				if( Command == "unhost" || Command == "uh" )
    				{
    					if( m_GHost->m_CurrentGame )
    					{
    						if( m_GHost->m_CurrentGame->GetCountDownStarted( ) )
    							QueueChatCommand( m_GHost->m_Language->UnableToUnhostGameCountdownStarted( m_GHost->m_CurrentGame->GetDescription( ) ), User, Whisper );
    						else
    						{
    							// if the game owner is still in the game only allow the root admin to unhost the game
    
    							if( m_GHost->m_CurrentGame->GetPlayerFromName( m_GHost->m_CurrentGame->GetOwnerName( ), false ) && !IsRootAdmin( User ) && IsAdmin(m_GHost->m_CurrentGame->GetOwnerName( )) )
    								QueueChatCommand( m_GHost->m_Language->CantUnhostGameOwnerIsPresent( m_GHost->m_CurrentGame->GetOwnerName( ) ), User, Whisper );
    							else
    							{
    								QueueChatCommand( m_GHost->m_Language->UnhostingGame( m_GHost->m_CurrentGame->GetDescription( ) ), User, Whisper );
    								m_GHost->m_CurrentGame->SetExiting( true );
    							}
    						}
    					}
    					else
    						QueueChatCommand( m_GHost->m_Language->UnableToUnhostGameNoGameInLobby( ), User, Whisper );
    				}
    Что тут нужно удалить чтобы он реагировал на команды юзеров????

    И как сделать так чтоб на команды:
    !swap
    !open
    !openall
    !close
    !closeall
    !start
    !end
    !unhost
    Бот реагировал на них если их написал владелец игры или рутадмин??? :stenka:
  12. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    переместить их к командам которые доступные юзерам, при этом убрав все проверки на админку .
  13. VladGod2 Парнишка с небывалым умом

    Сообщения:
    228
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.00
    Skype:
    Мой статус
    я так уже пытался сделать.
    К примеру ставлю команду pub перед командой !stats

    Удаляю вот это:
    Код:
    	{
    					if (!CMDCheck(CMD_host, AdminAccess))
    					{
    						QueueChatCommand(m_GHost->m_Language->YouDontHaveAccessToThatCommand( ), User, Whisper);
    						return;
    					}
    Все ок получается но он мне все равно пишит мол не прав
    Из команд для админов я ее удалил
  14. VladGod2 Парнишка с небывалым умом

    Сообщения:
    228
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.00
    Skype:
    Мой статус
    Как быть тогда с проверкой на owner ?
  15. VladGod2 Парнишка с небывалым умом

    Сообщения:
    228
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.00
    Skype:
    Мой статус
    ну наконец то все запахало...
    но я таки и не решил вопрос о командах в игре
  16. VladGod2 Парнишка с небывалым умом

    Сообщения:
    228
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.00
    Skype:
    Мой статус
    Странно я добавил еще немного команд к !open и !openall
    Но на них бот не реагирует что я сделал не так?
    Код:
    if( ( Command == "openall" || Command == "oa" || Command == "open all" || Command == "оа" || Command == "опен а" || Command == "опен алл" || Command == "о алл" || Command == "открыть в" || Command == "о все" || Command == "открыть все" || Command == "открыть всё" || Command == "открыть все слоты" ) && m_GHost->m_CurrentGame )
    Код:
    if( ( Command == "open" || Command == "o" || Command == "o" || Command == "о" || Command == "открыть" || Command == "опен" || Command == "оупен" || Command == "открой" ) && !Payload.empty( ) && m_GHost->m_CurrentGame )
    Ни как не пойму...
  17. VladGod2 Парнишка с небывалым умом

    Сообщения:
    228
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.00
    Skype:
    Мой статус
    А вот в этой команде так:
    я пишу !лоад бот мне отвечает какой конфиг загружен
    я пишу !load бот мне тоже отвечает, но почему-то 2 раза...
    что тут не то?
    Код:
    //
    				// !LOAD (load config file)
    				//
    
    				if( Command == "load" || Command == "лоад" )
    				{
    					if( Payload.empty( ) )
    						QueueChatCommand( m_GHost->m_Language->CurrentlyLoadedMapCFGIs( m_GHost->m_Map->GetCFGFile( ) ), User, Whisper );
    					else
    					{
    						string FoundMapConfigs;
    
    						try
    						{
    							path MapCFGPath( m_GHost->m_MapCFGPath );
    							string Pattern = Payload;
    							transform( Pattern.begin( ), Pattern.end( ), Pattern.begin( ), (int(*)(int))tolower );
    
    							if( !exists( MapCFGPath ) )
    							{
    								CONSOLE_Print( "[BNET: " + m_ServerAlias + "] error listing map configs - map config path doesn't exist" );
    								QueueChatCommand( m_GHost->m_Language->ErrorListingMapConfigs( ), User, Whisper );
    							}
    							else
    							{
    								directory_iterator EndIterator;
    								path LastMatch;
    								uint32_t Matches = 0;
    
    								for( directory_iterator i( MapCFGPath ); i != EndIterator; i++ )
    								{
    									string FileName = i->filename( );
    									string Stem = i->path( ).stem( );
    									transform( FileName.begin( ), FileName.end( ), FileName.begin( ), (int(*)(int))tolower );
    									transform( Stem.begin( ), Stem.end( ), Stem.begin( ), (int(*)(int))tolower );
    
    									if( !is_directory( i->status( ) ) && i->path( ).extension( ) == ".cfg" && FileName.find( Pattern ) != string :: npos )
    									{
    										LastMatch = i->path( );
    										Matches++;
    
    										if( FoundMapConfigs.empty( ) )
    											FoundMapConfigs = i->filename( );
    										else
    											FoundMapConfigs += ", " + i->filename( );
    
    										// if the pattern matches the filename exactly, with or without extension, stop any further matching
    
    										if( FileName == Pattern || Stem == Pattern )
    										{
    											Matches = 1;
    											break;
    										}
    									}
    								}
    
    								if( Matches == 0 )
    									QueueChatCommand( m_GHost->m_Language->NoMapConfigsFound( ), User, Whisper );
    								else if( Matches == 1 )
    								{
    									string File = LastMatch.filename( );
    									QueueChatCommand( m_GHost->m_Language->LoadingConfigFile( m_GHost->m_MapCFGPath + File ), User, Whisper );
    									CConfig MapCFG;
    									MapCFG.Read( LastMatch.string( ) );
    									m_GHost->m_Map->Load( &MapCFG, m_GHost->m_MapCFGPath + File );
    								}
    								else
    									QueueChatCommand( m_GHost->m_Language->FoundMapConfigs( FoundMapConfigs ), User, Whisper );
    							}
    						}
    						catch( const exception &ex )
    						{
    							CONSOLE_Print( "[BNET: " + m_ServerAlias + "] error listing map configs - caught exception [" + ex.what( ) + "]" );
    							QueueChatCommand( m_GHost->m_Language->ErrorListingMapConfigs( ), User, Whisper );
    						}
    					}
    				}
    
    
  18. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Пробелов в русских командах нет?


    Ищи дубляж команды !load для админов/неадминов.
  19. VladGod2 Парнишка с небывалым умом

    Сообщения:
    228
    Спасибы:
    4
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.00
    Skype:
    Мой статус
    Пробелов в русских командах нет?

    Есть ^^
    Как я уже понял их надо убирать... :bIbIbIblya: