Объявления

Форум о Героях Меча и Магии и King's Bounty. Если Вы любите эти игры, мы будем рады видеть Вас в наших рядах. :smile2:.

T-800 mod для Free Heroes II

Не запускается игра? Проблемы со звуком? Где, в конце концов, взять игру, скачать патчи, приложения и карты? Как установить все это? Все проблемы обсуждаем в этом разделе
offlineАватара пользователя
t800
Ветеран
Ветеран
 
Сообщения: 977
Зарегистрирован: 22 июл 2015, 11:36
Награды: 4
Наградной знак (1) Деревянный Щит (1) Золотой Меч (1) Серебряные Сапоги (1)
Поблагодарили: 189 раз.

Re: T-800 mod для Free Heroes II

Сообщение t800 » 14 окт 2016, 12:05

Итак вот код который из autosave.sav делает файл output.txt который нормально оправляетcя кодом SDLmail так что на почту приходит нормальный файл а не текст.

Код: Выделить всё
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include "base64.h"
#include <cstring>

int main() {

   FILE* hFile = NULL;
   unsigned int q, i,res;
        hFile = fopen("autosave.sav","rb");

      if(hFile == NULL)
        {
            fputs("Ошибка файла \n", stderr);
            exit(1);
            }
 
  // определяем размер файла
  fseek(hFile , 0 , SEEK_END);                          // устанавливаем позицию в конец файла
  long lSize = ftell(hFile);                            // получаем размер в байтах
  q = lSize/54+1;
  rewind (hFile);                                       // устанавливаем указатель в конец файла
 
  char * SendBuf = (char*) malloc(sizeof(char) * lSize);
  char * FileBuf = (char*) malloc(sizeof(char) * lSize); // выделить память для хранения содержимого файла
  char * TitleBuf = (char*) malloc(sizeof(char) * 1024);
   if (FileBuf  == NULL)
     {
      fputs("Ошибка памяти", stderr);
      exit(2);
     }
   // Делаем буфер:
   fseek (hFile,0,SEEK_SET);
   FILE * ptrFile = fopen ( "output.txt" , "wb" );
//Пишем заголовки
   strcat(TitleBuf,"Subject: Turnir\n");
   strcat(TitleBuf,"Content-Type: multipart/mixed;\n");
   strcat(TitleBuf,"Content-Disposition: attachment;\n");
   strcat(TitleBuf,"\tfilename=autosave.sav\n");
   strcat(TitleBuf,"Content-Transfer-Encoding: base64\n");
   strcat(TitleBuf,"Content-Type: application/octet-stream;\n");
   strcat(TitleBuf,"\tname=autosave.sav\n\n");
   fputs(TitleBuf, ptrFile);
//Кодируем и пищем файл
   for(i=0;i<q;i++)
   {   res = fread(FileBuf,sizeof(char),54,hFile);
      strcat(SendBuf,base64_encode(reinterpret_cast<const unsigned char*>(FileBuf),res).c_str());
       strcpy(SendBuf,base64_encode(reinterpret_cast<const unsigned char*>(FileBuf),res).c_str());
      strcat(SendBuf,"\r\n");
       fputs(SendBuf, ptrFile);
   }
    fclose (ptrFile);
  return 0;
}
Вернуться к началу

offlineАватара пользователя
t800
Ветеран
Ветеран
 
Сообщения: 977
Зарегистрирован: 22 июл 2015, 11:36
Награды: 4
Наградной знак (1) Деревянный Щит (1) Золотой Меч (1) Серебряные Сапоги (1)
Поблагодарили: 189 раз.

Re: T-800 mod для Free Heroes II

Сообщение t800 » 14 окт 2016, 13:59

Так разобрался с заголовками для оправки почты вот таким должен быть закодированный файл подготовленный для оправки двух файлов кодом SDLmail

Код: Выделить всё
Subject: Turnir
MIME-Version: 1.0
Content-Type: multipart/mixed;
        boundary=----==--wiki.kvkozyrev.org
------==--wiki.kvkozyrev.org
Content-Transfer-Encoding: 7bit
Content-Type: text/html

Turnir=T-800<br/>
Days=190<br/>
Name=Ivan Ivanov<br/>
------==--wiki.kvkozyrev.org
Content-Disposition: attachment;
   filename=fheroes2.hgsc
Content-Transfer-Encoding: base64
Content-Type: application/octet-stream;
   name=fheroes2.hgsc

AAAAaQAAAEoAAAAAeJz7+JmBgYEZiDlT9RKLEkuqUsuAHNYQXQsDg/B3FV+BnGAGBkZvHCreXk8G
ckKAKjyBNFtheWpRSSWSAX28QE40UNoJAEJ4GBE=
------==--wiki.kvkozyrev.org
Content-Disposition: attachment;
        filename=fheroes2.hgs
Content-Transfer-Encoding: base64
Content-Type: application/octet-stream;
        name=fheroes2.hgs

AAAAaQAAAEoAAAAAeJz7+JmBgYEZiDlT9RKLEkuqUsuAHNYQXQsDg/B3FV+BnGAGBkZvHCreXk8G
ckKAKjyBNFtheWpRSSWSAX28QE40UNoJAEJ4GBE=
------==--wiki.kvkozyrev.org
Вернуться к началу

offlineАватара пользователя
t800
Ветеран
Ветеран
 
Сообщения: 977
Зарегистрирован: 22 июл 2015, 11:36
Награды: 4
Наградной знак (1) Деревянный Щит (1) Золотой Меч (1) Серебряные Сапоги (1)
Поблагодарили: 189 раз.

Re: T-800 mod для Free Heroes II

Сообщение t800 » 15 окт 2016, 19:12

Фух сделал со всеми заголовками

Код: Выделить всё
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "base64.h"


int SendText ()
{                        
   char * TextBuf = (char*) malloc(sizeof(char) * 1024);
   FILE * ptrFile = fopen ( "output.txt" , "wb" );
   strcat(TextBuf,"Subject: Turnir\n");
   strcat(TextBuf,"MIME-Version: 1.0\n");
   strcat(TextBuf,"Content-Type: multipart/mixed;\n");
   strcat(TextBuf,"\tboundary=----==--wiki.kvkozyrev.org\n");
   strcat(TextBuf,"------==--wiki.kvkozyrev.org\n");
   strcat(TextBuf,"Content-Transfer-Encoding: 7bit\n");
   strcat(TextBuf,"Content-Type: text/html\n");
   strcat(TextBuf,"\n");
   //Здесь пищем турнирные данные в файл
   strcat(TextBuf,"Turnir=T-800<br/>\n");
   strcat(TextBuf,"Days=190<br/>\n");
   strcat(TextBuf,"Name=Ivan Ivanov<br/>\n");
   strcat(TextBuf,"------==--wiki.kvkozyrev.org\n");
   fputs(TextBuf, ptrFile);
   memset(TextBuf, 0, sizeof(TextBuf));
   fclose (ptrFile);
   return (0);
}

int Send(const char *FileName)
{
unsigned int q, i,res;
FILE* hFile = NULL;
hFile = fopen(FileName,"rb");

      if(hFile == NULL)
        {
           fputs("Ошибка файла \n", stderr);
           exit(1);
           }

  // определяем размер файла
  fseek(hFile , 0 , SEEK_END);                    // устанавливаем позицию в конец файла
  long lSize = ftell(hFile);                     // получаем размер в байтах
  q = lSize/54+1;
  rewind (hFile);                              // устанавливаем указатель в конец файла

  char * SendBuf = (char*) malloc(sizeof(char) * lSize);
  char * FileBuf = (char*) malloc(sizeof(char) * lSize); // выделить память для хранения содержимого файла
  char * TitleBuf = (char*) malloc(sizeof(char) * 1024);
  if (FileBuf  == NULL)
    {
     fputs("Ошибка памяти", stderr);
     exit(2);
    }
   // Делаем буфер:
   fseek (hFile,0,SEEK_SET);
   FILE * ptrFile = fopen ( "output.txt" , "ab" );
//Пишем заголовки
   memset(SendBuf, 0, sizeof(SendBuf)); // чистим буфер от мусора
   memset(TitleBuf, 0, sizeof(TitleBuf)); // чистим буфер от мусора
   strcat(TitleBuf,"Content-Disposition: attachment;\n");
   strcat(TitleBuf,"\tfilename=");
   strcat(TitleBuf,FileName);
   strcat(TitleBuf,"\n");
   strcat(TitleBuf,"Content-Transfer-Encoding: base64\n");
   strcat(TitleBuf,"Content-Type: application/octet-stream;\n");
   strcat(TitleBuf,"\tname=");
   strcat(TitleBuf,FileName);
   strcat(TitleBuf,"\n\n");
   fputs(TitleBuf, ptrFile);
//Кодируем и пищем файл
   for(i=0;i<q;i++)
   {
      res = fread(FileBuf,sizeof(char),54,hFile);
      strcat(SendBuf,base64_encode(reinterpret_cast<const unsigned char*>(FileBuf),res).c_str());
      strcpy(SendBuf,base64_encode(reinterpret_cast<const unsigned char*>(FileBuf),res).c_str());
      strcat(SendBuf,"\r\n");
      fputs(SendBuf, ptrFile);
   }
   memset(SendBuf, 0, sizeof(SendBuf));
   strcat(SendBuf,"------==--wiki.kvkozyrev.org\n");
   fputs(SendBuf, ptrFile);
   fclose (ptrFile);
   fclose (hFile);
  return(0);
}

int main() {
SendText();
Send("fheroes2.hgs");
Send("fheroes2.hgsc");
Send("autosave.sav");
return 0;
}
Вернуться к началу

offlineАватара пользователя
VDV_forever
Администратор
 
Сообщения: 3696
Изображений: 7
Зарегистрирован: 22 мар 2009, 12:36
Поблагодарили: 897 раз.

Re: T-800 mod для Free Heroes II

Сообщение VDV_forever » 16 окт 2016, 07:16

Как реализуешь новую турнирную вкладку и протестируешь, можно будет очередной турнир запустить. :smile2:
Так что работайте молодой человек. :smile2: :smile20:
http://www.handbookhmm.ru- Познай все тонкости игры!
Вернуться к началу

offlineАватара пользователя
t800
Ветеран
Ветеран
 
Сообщения: 977
Зарегистрирован: 22 июл 2015, 11:36
Награды: 4
Наградной знак (1) Деревянный Щит (1) Золотой Меч (1) Серебряные Сапоги (1)
Поблагодарили: 189 раз.

Re: T-800 mod для Free Heroes II

Сообщение t800 » 16 окт 2016, 11:11

VDV_forever писал(а):

Как реализуешь новую турнирную вкладку и протестируешь, можно будет очередной турнир запустить. :smile2:
Так что работайте молодой человек. :smile2: :smile20:


Ну вроде не очень много делать осталось. Разобраться как правильно вставить код SDLmail и base64 в игру ну и вывести кнопки. Кнопки легко (только нарисовать кнопку ТУРНИР надо) так что на каникулах (они у меня с 1 ноября) наверное закончу.
Вернуться к началу

offlineАватара пользователя
t800
Ветеран
Ветеран
 
Сообщения: 977
Зарегистрирован: 22 июл 2015, 11:36
Награды: 4
Наградной знак (1) Деревянный Щит (1) Золотой Меч (1) Серебряные Сапоги (1)
Поблагодарили: 189 раз.

Re: T-800 mod для Free Heroes II

Сообщение t800 » 16 окт 2016, 12:48

Кстати, только что зашел в консоль разработчика на Google Play и заметил что сегодня у T-800 Mod набралось ровно 5000 игроков. И вообще цифры красивые: 5000 игроков, 18500 установок и 333 отзыва. Прикольное вышло сочетание :smile1:
5000.jpg
5000.jpg (135.14 КБ) Просмотров: 673
Вернуться к началу

offlineАватара пользователя
Владимир
Ветеран
Ветеран
 
Сообщения: 608
Зарегистрирован: 30 окт 2012, 18:37
Награды: 3
Высшая медаль (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (1)
Поблагодарили: 358 раз.

Re: T-800 mod для Free Heroes II

Сообщение Владимир » 15 дек 2017, 01:53

(Т.) - техническое
Богдан, по опыту моих предыдущих попыток играть в fHeroes прошу проверить и исправить:
-Стоимость улучшения существ должна быть равна не простой разнице цен улучшенного и неулучшенного существа, а удвоенной.
-Двухклеточные существа в бою вне зависимости от маршрута должны ходить на нормальное (в соответствии с их скоростью), а не уменьшенное расстояние.
-У 2-клеточных монстров личи атакуют задний гекс. ( http://handbookhmm.ru/2-monsters )
Не будет большой бедой, если атакуемый гекс можно будет выбрать, как в Героях 3. Сейчас в fHeroes личи всегда стреляют в передний гекс.

По опыту последнего турнира, прошу проверить и привести в соответствие поведение численности нейтральных охранников:
( http://handbookhmm.ru/2-timing-and-garrison )
-Отряды существ при начале игры на карте имеют численность, указанную в таблице...
-В первый день каждой новой недели численность нейтральных существ-охранников увеличивается примерно на 1/7.
 
Я так понимаю, прохождение на оригинальной версии для меня стало лёгкой прогулкой, потому что начальное число и/или прирост Джиннов на fHeroes оказались больше, чем на оригинальной версии. Надеюсь, что это действительно было следствием различия в механике версий (а не недосмотром, или даже очередной "пасхалкой от Богдана"). Непробиваемых охранников всегда можно получить, выставив численность вручную в редакторе.


И, наконец, вот это:
-Запрещается пользоваться в битвах БАГом с магий "Воскрешение"
Стоит наконец найти природу бага и исправить его.
Вернуться к началу

Пред.

Вернуться в Техническая часть

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1