Jump to content
Korean Random

AlexChe

User
  • Content Count

    47
  • Joined

  • Last visited

Posts posted by AlexChe


  1. Если сегодня мы знаем, что завтра и послезавтра дня будет патч с изменением методов и модулей (откат), не проще бы было заранее сообщить о изменении методов и объединить все это в одну обнову?


  2. без анонсов, без всего. Клепаете через день. ЗП привязана к количеству патчей в месяц? Вышли с отпусков и погнали отрабатывать план. 
    Четыре дня отпуска вычеркнуты и в режиме аврала все перекраиваем.

    • Upvote 2

  3. 10 часов назад, Armagomen_dev сказал:

    крутой микропатч конечно... тупо папку сменили с модами... 2 дня назад тогда зачем меняли чтобы потом еще раз сменить.. просто слов нет.

    "Мы своё призванье не забудем - Смех и радость мы приносим людям" (С)

    • Upvote 1

  4. 12.07.2019 в 16:40, Mixaill сказал:

    Соскучились?
     

    15 июля 2019 года будет микропатч со сменой имён каталогов для модификаций на /mods/1.5.1.2/ и /res_mods/1.5.1.2 .

     

    Даже не спрашивайте, почему об этом пишу я.


    api опять обновить забыли

     

    Screenshot_40.png

    • Upvote 1

  5. 18 часов назад, Pavel3333 сказал:

    @AlexChe а как ты получил номер клиента? Не поделишься URL странички? В доках не нашел.

     

    https://api.worldoftanks.[zone]/wot/encyclopedia/info/?application_id=[application_id]&fields=tanks_updated_at%2Cgame_version
    где [zone]- регион игры (RU,COM,EU,ASIA)
    [application_id] - персональный application_id, во всех 4 зонах игры он разный.

     

    Сегодня, кстати, api сработало и показало микрообнову без смена патча.

     

    Screenshot_20190620-145534815_600.jpg

    • Upvote 1

  6. 13.06.2019 в 19:33, Darth_Abaddon сказал:

    Всем привет!

    Новая версия - новые микропатчи.

     

    15 июня выйдет микропатч. Папки модов будут называться /mods/1.5.1.1/ и /res_mods/1.5.1.1/

     

    Последние микрообновы (с изменением последней четвертой цифры)  начали менять версию игры в api, а сегодня опять обновить забыли.

     

    Не забывайте пожалуйста. Это важно.

     

    Screenshot_240.png

    • Upvote 1

  7. 14 часов назад, StranikS_Scan сказал:

    Вот только на оф. форуме есть новость, что ВГ переводит тунки с лаунчера на ГейЦентр и в таком случае они могут ликвидировать апи-лаунчера, тогда останется только апчхи ГейЦентра, а он показался мне каким-то мутноватым, я с ходу не смог понять откуда берутся некоторые константы в запросах.

    Костя, можно ссылку на типовой запрос в центр? посмотрю тоже.

     

    upd. прислушались или совпадение, но сегодня на микрообнове обновились API.
    Апдейтеры разослали смс о изменениях версии на серверах asia и ru (на текущий момент)

     

    Screenshot_20190523-094744495_1.jpg


  8. 5 часов назад, StranikS_Scan сказал:

     

    Дык нуно апи лаунчера юзать для этого.

     

    
     Для контента (данные берем из WoTLauncher.cfg):
       http://update.worldoftanks.ru/?protocol_ver=4
        &target=launcher,locale,client,sdcontent,hdcontent
        &launcher_ver=unknown
        &locale_ver=9.19.834803
        &client_ver=9.19.13258
        &sdcontent_ver=9.19.13198
        &hdcontent_ver=9.19.13194
        &lang=ru
     Ответ:
       <?xml version="1.0" encoding="UTF-8"?>
       <patch>
           <target>hdcontent</target>
           <parts>
               <part name="locale" latest="true" />
               <part name="client" latest="true" />
               <part name="sdcontent" latest="true" />
               <part name="hdcontent" latest="true" />
           </parts>
           <private_ptp_enabled>False</private_ptp_enabled>
               <dynamic_content>http://update.worldoftanks.ru/launcher/splash/ru</dynamic_content>
               <reference_repository>http://dl-wot-gc.wargaming.net/ru/references/</reference_repository>
               <hd_repository></hd_repository>
       </patch>
    
     Запрос ссылок на контент:
       http://update.worldoftanks.ru/?protocol_ver=4&target=client&client_ver=0.3.26.627&lang=ru
     Ответ:
       <?xml version="1.0" encoding="UTF-8"?>
       <patch>
           <target>launcher</target>
           <parts>
               <part name="client" latest="false" />
           </parts>
           <private_ptp_enabled>False</private_ptp_enabled>
           ...
           <version_from>0.3.26.627</version_from>
           <version_to>9.19.844008</version_to>
           <description/>
           ...
       </patch>
    
     Адреса прямого доступа к контенту
     http://dl-wot-gc.wargaming.net/ru/references/wot_1.3.0.19304_client.filelist.txt или /paths.xml или /paths.xml.torrent
     http://dl-wot-gc.wargaming.net/ru/references/wot_9.19.834803_locale_ru.filelist.txt
     http://dl-wot-gc.wargaming.net/ru/references/wot_9.19.13198_sdcontent.filelist.txt
     http://dl-wot-gc.wargaming.net/ru/references/wot_9.19.13194_hdcontent.filelist.txt

     

    Спасибо Костя, проработаем этот вариант.

    т.е. тут маркер является 

    <part name="sdcontent" latest="true" />

    Пока остается вопрос открытым получение номера клиентской версии без необходимости лезть *.cfg игры. Ведь, чтобы сделать запрос выше, нужно знать этот client_ver изначально. 

    client_ver=9.19.13258

    иначе

    * launcher_ver * This field is required. * locale_ver * This field is required. * client_ver * This field is required.

    Хотелось бы, к примеру, закинуть этот процесс на сервер и пусть живет там циклично, без необходимости обновлять игру вручную и прописывать этот номер client_ver.  Сделать это полностью автоматизированным.

     

    Будем думать. Как минимум 2 новых варианта решения уже есть.


  9. 3 минуты назад, Mixaill сказал:

    Зачем тебе делать СМС сообщения на некритичные по времени вещи?

    микрообновления со сменой папки это критичные вещи. А если сборками и модами занимаются несколько независимых друг от друга людей, то единое смс уведомление только ускоряет адаптацию модов. Т.е. о смене крупных версий мы узнаем из смс, а не через кучу жалоб и писем пользователей.  

    Уже отработана система.


  10. 5 минут назад, Mixaill сказал:

    На текущий момент, самый простой способ - это подписаться на Darth_Abaddon

     

     

    ну у меня была мысль, парсить эту тему раз в день или посты Darth_Abaddon и по маркерам отслеживать нужные сообщения. А дальше уже смс уведомления мододелам. К примеру в сообщениях сохраняется стабильность в маркерах "микрообновление" и "mods"


  11. 6 часов назад, Darth_Abaddon сказал:

    Идем, но, пока, не побит. 4 и было.

    А вариант пойти навстречу мододелам и хотя бы api допилить до того, чтобы все эти микрообновления где-то отображались?

     

    Потому что единственное место в api https://api.worldoftanks.[zone]/wot/encyclopedia/info/?application_id=[application_id]&fields=tanks_updated_at%2Cgame_version дает только крупные обновы. Микрообновления остаются незамеченными.

    Screenshot_94.png

     

    Я к тому, что мы бы сделали бы смс уведомления себе через эти API и оперативнее и спокойнее бы реагировали на обновы.

     

    Или где эти данные еще взять, кроме как чекать эту тему на предмет постов от WG?

    • Upvote 2

  12. 1.5.0.3
    3 микрообновления за неделю со сменой версии - это слишком мало.

    Игровое сообщество просит WG делать обновления каждый день.

    Долой сон, отпуска и работу. Каждый день перевыпускать моды и сборки - это забота о игроках, мододелах и непрерывное развитие игры!

     

    p.s. Не надо так. Спасибо за понимание.

    :halloween:     :confused::amazed::confused:

    • Upvote 3

  13. 13 минут назад, Kotyarko_O сказал:

    Тут я проглядел, при чтении предыдущего вопроса. Думал, что имеется ввиду просто прошерстить все компоненты. Но если речь конкретно об имени в [Components], то, как я уже говорил, никак.

     

    Есть:

    
    [Languages]
    Name: En; MessagesFile: "English.isl";
    Name: Ru; MessagesFile: "Russian.isl";
    
    [CustomMessages]
    En.FirstComponent=First component.
    Ru.FirstComponent=Первый компонент.
    
    [Components]
    Name: A; Description: "{cm:FirstComponent}";

     

    теперь все понятно. Вопрос с проблемами кирилицы решен. Спасибо!


  14. 1. но WizardForm.ComponentsList.Items выдает текстовое название пункта, а не его "name" 'KMP\punkt1'

    2. Еще вопрос, как реализовать смену текстовых значений пунктов при выборе другого языка установки (русский, английский).Есть готовые решения?


  15. 2 минуты назад, Kotyarko_O сказал:

    Никак. Обработка этих имён находится на уровне ниже.

    1. т.е. только IsComponentSelected('KMP\punkt1').? (кстати работает спасибо)
    2. а как функцию выше переделать, чтобы она выдавала все названия 
    'KMP\***'  (т.е. спускалась "ниже")?

     


  16. 42 минуты назад, Kotyarko_O сказал:

    Речь идёт про "поиск\одобрение" какого конкретно "пункта"? Компонента в списке или строки в конфиге?

     

    Можно просто использовать стандартную функцию, предназначенную для этой цели: IsComponentSelected('KMP\punkt1').

    мы ищем "включена ли галочка" в  WizardForm.ComponentsList.Items
    т.к поиск по имени не срабатывает при отсутствии русской кодировки.

     

    сейчас проверю 
    IsComponentSelected('KMP\punkt1').

    А как сделать деревянную функцию поиска этого 'KMP\punkt1' в функции ниже?

    function GetIndexComponent(ComponentName: String): Integer;
    var
        J: Integer;
        Nowstring: String;
    begin
        Result:= -1;
        for J:=0 to WizardForm.ComponentsList.ItemCount-1 do
        begin
          Nowstring:=Lowercase(WizardForm.ComponentsList.Items[J]);
          if (Lowercase(ComponentName)=Nowstring) then
          begin
            Result:=J;
            break;
          end;
        end;
    end;

    т.к. при функции выше в WizardForm.ComponentsList.Items[J] он выдает опять же текстовое значение пункта, а не Name


  17. Вопрос такой.
    После инсталяции применяю подстройку конфига путем замены параметра на уже установленном модпаке.

    Следующим путем

    1. Проверяю, был ли checked пункта с именем "Пункт1" следующим видом
     

    Function ComponentsChecked(Name: String): Boolean;
    begin
     Result := _IsComponentSelected(WizardForm.ComponentsList, Name);
    end;

     

    Function _IsComponentSelected(CheckListBox: TNewCheckListBox; Name: String): Boolean;
    var
     I, Idx: Integer;
    begin
     Result := False;
     try
      Idx := CheckListBox.Items.IndexOf(Name);
     // Idx := CheckListBox.Items.IndexOfName(Name)
      for I := 0 to CheckListBox.ItemCount - 1 do
       if (Idx <= CheckListBox.ItemCount) and (Idx = I) then
        Result := CheckListBox.Checked[Idx];
     except
      MsgBoxEx(WizardForm.Handle, GetExceptionMessage(), '{#__FILE__}: {#__LINE__}', MB_ICONERROR or MB_OK, 0, 0);
      Log('[CUSTOM LOG]: ' + 'Checked. I = ' + IntToStr(I) + '. Name: "' + Name + '".');
     end;
    end;


    2. Дальше делаю если пункт выбран, делаю замену  в конечном фонфиге функцией

    Procedure ConfigEdit(DefPath, ConfigFile: String; IsComponents: Boolean; OldValue, NewValue: String);
    var
     Config: TStringList;
     ConfigPath: String;
     back_num: Integer;
    begin
     if IsComponents then
     try
      Config := TStringList.Create;
      ConfigPath := ExpandConstant(DefPath + ConfigFile);
      ChangeConfiguratorStatus(ConfigPath);
      back_num:=Editor(Config, DefPath, ConfigPath, OldValue, NewValue);
      if back_num < 1 then
        MsgBoxEx(WizardForm.Handle, ConfigPath + #13#10 + OldValue + #13#10 + NewValue, 'Config value doesn`t changed', MB_ICONWARNING or MB_OK, 0, 0);
     finally
      Config.Free;
     end;
    end;

    3. Это все замечательно работает, но не не в странах, где нет русской кодировки. т.е. на этапе поиска/одобрения этого пункта идет затык.


    Как мне обойти этот момент? 
    Есть еще строчки вида
    Name: KMP\punkt1; Description: "{cm:CompName1}";    Flags:  disablenouninstallwarning;     Types: custom;

    Вероятно можно делать поиск по  "KMP\punkt1", но тогда какие параметры запроса должны быть в 
    _IsComponentSelected(WizardForm.ComponentsList, Name);

    и какая сама функция _IsComponentSelected должна быть?
    Мы должны искать вместо:
    Idx := CheckListBox.Items.IndexOf(Name);
    искать
    Idx := CheckListBox.Items.IndexOfName( 'KMP\punkt1');
    Но при этом ничего не ищет.

    В общем вот такая задача.


  18. Добрый день. Знаю, что уже было ранее на 230 страницах про это, но подскажите еще раз:

     

    Как сделать генерацию текстового файла (конфига) на лету в зависимости от выбранных позиций модов и сохранять на диск?.

     

    Как и где прописать проверку на выделение той или иной позиции, и после этого записывать определенное значение в файл с последующим сохранением?

    Благодарю за советы.

     

    p.s. Могу оплатить решение с моего примера (в личку)  :)


  19. if DirExists(ExpandConstant('{app}\{#MyAppName}\backup')) then
     ////
    if not DirExists(ExpandConstant('{app}\{#MyAppName}\backup')) then
    ////

    Да спасибо, на самом деле я  уже использовал этот код при бекапе, просто запямятовал, где я еще делал такую проверку ранее )


  20. Откопал в тырнете ноябрьское чтиво "О том как чувачки протектор pjorion ломали и чем это закончилось" - тыц. Наслаждайтесь ))))))

    честно пытался вникнуть в суть их беседы. Прям старательные парни попались)))

    Последний пост 20 Nov 2015 .

     

    В итоге чем у них все закончилось? 

     

    Деревья логики красивые получились у них. Заморочились таки, рисовали.


  21.  

    руками ))

    ща

    @MAHINATOR

    #define MyAppName "Моя программа"
    #define MyAppVersion "1.5"
    #define MyAppPublisher "Моя компания, Inc."
    #define MyAppURL "http://www.сайт.com/"
    #define MyAppExeName "MyProg.exe"
    
    [Setup]
    AppId={{ACF6B5AB-9DF3-43EB-B40C-633F075EC471}
    AppName={#MyAppName}
    AppVersion={#MyAppVersion}
    ;AppVerName={#MyAppName} {#MyAppVersion}
    AppPublisher={#MyAppPublisher}
    AppPublisherURL={#MyAppURL}
    AppSupportURL={#MyAppURL}
    AppUpdatesURL={#MyAppURL}
    DefaultDirName={pf}\{#MyAppName}
    DefaultGroupName={#MyAppName}
    OutputBaseFilename=setup
    Compression=lzma
    SolidCompression=yes
    [Components]
    Name: comp1; Description: "Установить ...";  
    Name: comp2; Description: "Удалить ...";
    
    [Code]
    procedure ComponentsListOnClickCheck(Sender: TObject);
    begin
      if (WizardForm.ComponentsList.ItemIndex = 0) and IsComponentSelected('comp1') then
       if MsgBox('вы действительно хотите поставить этот мод, мы его не рекомендуем ставить потому что ....', mbConfirmation, MB_YESNO) = IDNO then
          WizardForm.ComponentsList.Checked[0]:= false;
    end;
    
    
    procedure InitializeWizard;
    begin
      WizardForm.ComponentsList.OnClickCheck:=@ComponentsListOnClickCheck;
    end;
    

    Супер. Спасибо)

×
×
  • Create New...