Yurii Pisanka
Winning proposal- Projects 17
- Rating -
- Rating 607
Budget: 300 UAH Deadline: 1 day
If you are referred to in a console with symbols 1. If you need your functions such as printf or put I also consider.
Budget: 1000 UAH Deadline: 1 day
Good morning, I’m going to make a program for this evening. Write to Ls and discuss the details.
Proposals concealed
Proposals are currently absent
Budget: 4000 UAH Deadline: 4 days
Hello to Julia.Take your task (described in the image you applied in the discussions) in Visual Studio 2019 (on pure C, without using C++), describe the programs with a pseudocode (in words), as well as drawing from the hand block schemes,
for 4000 UAH within 1-2 days (but the deadline is taken for 4 days - with stock).There is still the possibility of alternative (non-money) ways of gratitude, but it is better outside the Site to discuss.I am a FOP (EN, 3 group, without VAT).I accept payment exclusively on the FOP account, according to the account-offers I have presented (you can pay with a bank card, or at any bank department).At the same time, the task can be carried out through the Site with the indication that the payment is carried out through the Site.This can be useful in the light of the possibility of leaving one-to-one reviews.I show the result away, and after receiving the money from you, I give it to you.I am guaranteed for my work:
If after receiving the result you find any errors in what I did, or the teacher asks something to fix, then I fix it free of charge (this risk is included in the cost and motivates me to do everything quality from the first time).More detail about me and the interaction with me can be read on my website: http://hj.net.ua/synergies.html
-
Yekaterina B. 21 May 2021Использование библиотек допускается? Данные для заполнения таблицы сразу подаются в структуре данных или построчно? Можно пример входных и выходных данных увидеть?
-
Julia Olenichenko
21 May 2021
ни слова не понимаю, я родственник горе-студента)))
У меня есть задание и лекция, отправляю Вам
-
Yekaterina B. 21 May 2021Это рисование линиями. Но с входными данными не доконца ясно. Их можно попросить ввести пользователе или же сразу при запуске указать. В целом понятно :).
-
Julia Olenichenko
21 May 2021
при запуске сразу выходит вид таблички с номерками.
К сдаче нужен код,
псевдокод (словесный)
и блок-схума со словами а не текстом из кода (если большая, то можно по функциям) - схему можно от руки, мы потом перерисовываем в спец программе.
-
Julia Olenichenko
21 May 2021
ЛЕКЦИЯ 8
Тема: а примере проектирования простой консольной формы ввода логина и пароля рассмотрены особенности составных типов данных: структур и перечислений, а так же основные принципы пошагового проектирования интерактивных программ.
"Хорошая структура программы и плохая структукра данных – плохая программа. Хорошая структура данных и плохая структура программного кода – хорошая программа!"
Новые навыки.
Построение экранных форм (в режиме псевдографики).
Определение и использование структур и перечислений для структуризации данных программного продукта.
Пошаговая разработки программного приложения по технологии "сверху вниз".
На предыдущих практических занятиях были определены требования к учебной интерактивной программе определения логина и пароля пользователя, а так же общая архитектура программного проекта, повторяющая структуру программирования системы Arduino: определение главных подпрограмм setup – начальные установки, и loop – основной интерактивный цикл работы программы.
Функционал приложения определяется так.
Программа должна обеспечивать:
- возможность ввода текстового значения "логина" (буквы латинского алфавита, кириллицы и цифры) с отображением вводимого текста на экране и возможностью его редактирования;
- возможность ввода текстового значения "пароля" (буквы латинского алфавита, кириллицы и цифры) с отображением условных символов вместо вводимых символов текста и возможностью его редактирования;
- очистку полей ввода логина и пароля;
- переход "вперед-назад" между полями ввода.
Напомним общую структуру модулей разрабатываемого приложения (проекта):
<!--[if !vml]-->
Здесь модуль codec необходим для поддержки перекодировок ср1251 и ср866 системы Windows.
Начальный код модуля myprograms.c
#include "myprograms.h"
void setup(){
} // setup
void loop(){
} // loop
Общая концепция структуры системы может быть изображена в виде диаграммы деятельности:
<!--[if !vml]-->
Первый шаг разработки. Построение экранной формы.
Подпрограмма, реализующая построение этой формы – setPanel.
Определяем "болванку" данной подпрограммы и включаем ее ф подпрограмму setup.
void setPanel();
void setup(){
setPanel();
} // setup
void setPanel(){
} // setup
Сразу заметим, что строить заданную экранную форму одной подпрограммой в корне неверно!
Почему?
Внимательно рассмотрим эскиз требуемой формы:
<!--[if !vml]-->
Видно, что основной графический элемент формы – прямоугольник: окантока формы, выделение полей ввода, определение поля сброса данных.
Таким образом, подпрограмма построения прямоугольника – необходимый элемент подпрограммы построения формы.
Какие параметры (в данном случае), изменяются при построении конкретных прямоугольников формы? Точка "привязки" (координаты левого верхнего угла прямоугольника), ширина и высота. Напоминаем, что при использовании псевдографики все координаты определяются в "знакоместах" и начальное значение координат – единица!
Теперь можно определить подпрограмму построения прямоугольника:
void ramka( int x, int y, int w, int h, int dubL=0 ){
gotoxy( x, y );
uchar vl, vp, nl, np, gor, vert;
if ( dubL ){
vl=201; vp=187; nl=200; np=188; gor=205; vert=186;
} else {
vl=218; vp=191; nl=192; np=217; gor=196; vert=179;
}
putch( vl );
for ( int i=0; i<( w-1 ); i++ ) putch( gor );
putch( vp );
// niz
gotoxy( x, y+h );
putch( nl );
for ( int i=0; i<( w-1 ); i++ ) putch( gor );
putch( np );
for ( int i=1; i<h; i++ ) {
// levo
gotoxy( x, y+i ); putch( vert );
// pravo
gotoxy( x+w, y+i ); putch( vert );
}
} // ramka
Обратите внимание на еще один параметр – dubL. Он определяет, какой линией будет произведена прорисовка прямоугольника: одинарной или двойной.
Теперь можно, используя для перекодировки текстовых данных подпрограмму cp866cp1251, сформировать подпрограмму построения экранной формы – setPanel:
void setPanel(){
char s[50];
textbackground( BLUE );
textcolor( WHITE );
clrscr();
ramka( 1, 1, PANEL_W, PANEL_H, 1 );
ramka( 10, 3, 19, 5 );
ramka( 10, 9, 19, 5 );
gotoxy( 3, 5 );
puts( cp866cp1251( s, "ЛОГИН" ) );
gotoxy( 3, 11 );
puts( cp866cp1251( s, "ПАРОЛЬ" ) );
ramka( PANEL_W/2-5, 16, 11, 4 );
gotoxy( PANEL_W/2-3, 18 );
puts( cp866cp1251( s, "ОБНОВИТЬ" ) );
} // setPanel
Выделенным шрифтом отмечены выражения, определяющие иные (не "по умолчанию") цвета прорисовки: цвет фона и цвет текста. В данном случае – белый текст по голубому фону.
Использование структур для объединения "связанных" между собой данных. Например – цвет фона и цвет текста.
А что делать, если понадобиться сменить параметры цветовой палитры? Напрашивает решение: добавить два параметра процедуры: цвет фона и цвет текста.
На наш взгляд – это не лучшее решение: эти два параметра "связаны" друг с другом, представляют комбинацию этих величин.
В системе С, как в большинстве других языков программирования, для этих целей служат специальные конструкции: составные типы данных – структуры.
В данном случае определим структуру, позволяющую задать комбинацию параметров: "цвет поля"-"цвет шрифта".
typedef struct Colors_panel {
int textColor, backgroundColor;
} TColors_panel;
Примечание. Структура – это определяемый программистом набор байтов, элементы которого (точнее – их адреса в памяти) могут быть определены с помощью "внутренних" имен этой структуры. Формальное определения структур и приемы работы с ними выучите по предлагаемым учебникам. Здесь мы приводим практику их применения. Отметим, что определение структуры с помощью выражения typedef позволяет более "компактно" в дальнейшем записывать определения, включающие этот тип данных.
Обратите внимание на размер структуры (сумма размеров составляющих ее элементов) и на возможность присваивания значения:
typedef struct panel {
int textColor, backgroundColor;
} Tpanel;
Tpanel p1={10, 20}, p2={40, 50};
int main(){
printf( "size TColors_panel=%d\n", sizeof( Tpanel ) );
printf( "textColor=%d backgroundColor=%d\n",
p1.textColor, p1.backgroundColor );
p1 = p2;
printf( "textColor=%d backgroundColor=%d\n",
p1.textColor, p1.backgroundColor );
return 0;
} // main
<!--[if !vml]-->
Таким образом, мы имеем возможность работать как с отдельными элементами (составляющими) структуры, так со структурой в целом.
Теперь мы можем "предопределить" два вида цветовой гаммы нашего оконного приложения:
typedef struct Colors_panel {
int textColor, backgroundColor;
} TColors_panel;
Начальное присваивание можно реализоват так:
static TColors_panel wbPanel = { WHITE, BLACK };
static TColors_panel wblPanel = { WHITE, BLUE };
или так:
static TColors_panel wbPanel = { .textColor=WHITE, .backgroundColor=BLACK };
static TColors_panel wblPanel = { .textColor=WHITE, .backgroundColor=BLUE };
А новое определение подпрограммы прорисовки экранной формы приолжения буде выглядеть:
void setPanel( TColors_panel cp = wbPanel ){
char s[50];
textbackground( cp.backgroundColor );
textcolor( cp.textColor );
clrscr();
ramka( 1, 1, PANEL_W, PANEL_H, 1 );
ramka( 10, 3, 19, 5 );
ramka( 10, 9, 19, 5 );
gotoxy( 3, 5 );
puts( cp866cp1251( s, "ЛОГИН" ) );
gotoxy( 3, 11 );
puts( cp866cp1251( s, "ПАРОЛЬ" ) );
ramka( PANEL_W/2-5, 16, 11, 4 );
gotoxy( PANEL_W/2-3, 18 );
puts( cp866cp1251( s, "ОБНОВИТЬ" ) );
} // setPanel
Теперь варианты вызова этой полпрограммы:
void setup(){
//setPanel(); // черно-белая панель
setPanel( wblPanel ); // голубая-белая панель
} // setup
Результат обоих вызовов:
<!--[if !vml]--><!--[endif]--> <!--[if !vml]-->
Второй шаг разработки. Построение интерактивного функционала приложения.
Напомним основные элементы функционала:
- ввод и редактирование текстовых данных в поля логина и пароля, причем во втором случае, с заменой изображения вводимых символов на замещающие их условные символы;
- переход по нажатию определенных клавиш между полями ввода;
- возможность очистки полей ввода по требованию пользователя (нажатие клавиши "ВВОД") при нахождении курсора в поле "ОБНОВИТЬ".
Прежде всего отметим, что использование для наших целей (ввод и редактирование текста) стандартных средств С невозможно: ввод продолжается, пока "жмется клава".
Например – ввод логина с помощью gets (fgets) scanf.
void setup(){
setPanel();
//setPanel( wblPanel );
} // setup
void loop(){
uchar s[50];
gotoxy( 12, 5 );
fgets( s, 15, stdin );
gotoxy( 1, PANEL_H+6 );
puts( s );
} // loop
<!--[if !vml]-->
Таким образом, необходимо разработать специальную программу ввода редактирования текста в интерактивном режиме.
Общая структура подпрограммы (интерактивного цикла работы приложения) может быть представлена в виде следующей диаграммы деятельности:
<!--[if !vml]-->
Как мы видели на предыдущих примерах работы с подпрограммами консольного ввода-вывода ряд клавиш при нажатии вырабатываю "двойной" код – функция getch должна вызываться дважды.
Поскольку в нашей программе необходимо будет использовать специальные клавиши управления вводом (перемещения по вводимому тексту, забой символов, переход от заполнения одной формы к другой) всякий раз анализировать непосредственно эти коды неудобно.
В подобных случаях данные (в данном случае – коды клавиш) разбиваются на классы (подклассы), корорым присваиваются числовые индексы и дальнейшая работа производится исходя из индекса соответствующего класса символа и его (символа) кода.
Например: класс "навигации", класс "печатного символа" и т.п.
В С удобно использовать еще один тип данных языка С – перечисления.
Общая форма определения перечислений:
enum [identifier] { enumerator-list };
Примеры.
Вообще перечисления можно представить как задание некоторых поименованных констант.
enum color { black, red, green, yellow, blue, white=7, gray };
enum { OFF, ON } toggle = ON;
enum { OFF, ON, STOP = 0, GO = 1, CLOSED = 0, OPEN = 1 };
Теперь можно определить "классы" кодов клавиш (точнее – условные наименования типов клавиш – команд) и создать функцию, которая будет обрабатывать "нажатие" клавиш, вырабатывая код типа клавиши и, при необходимости , ее значение. ....
Определим типы клавиш (заметте – независимо от количестваа водимых символов на нажатие клавиши!):
M_ESC – закончить работу (27);
M_LEVO – сдвиг влево по тексту вводимой строки (224, 75);
M_PRAVO – сдвиг влево по тексту вводимой строки (224, 77);
M_DELETE – удалить текущий символ (224, 83);
M_BASCSP – удалить предыдущий символ (8);
M_TOP – переход на предыдущее поле (Ctrl-tab – 0, 148);
M_DOWN – переход на следующее поле (tab – 9);
M_CLEAR – нажатие ENTER (13 – для очистки полей ввода );
M_CHAR – печатный символ (ср866: 48-57, 65-122, 128-175, 224-245(239))
enum typeKlavr { M_ESC, M_LEVO, M_PRAVO, M_DELETE, M_BASCSP,
M_TOP, M_DOWN, M_CLEAR, M_CHAR };
Примечание. "Жирным" текстом выделены типы клавиш (команд), необходимых для "полноценного" редактирования вводимых полей. В нашем случае при разработке строкового редактора ввода ограничимся упрощенным редактором, позволяющим изменять (стирать) только последний символ в строке.
Теперь подпрограмма (функция) ввода с клавиатуры должна вырабатывать "класс" клавиши" и, для "допустимых" печатных символов, их код.
Как мы уже делали это ранее, связанные логически данные удобно представить в виде структуры. Например – такой:
typedef enum typeKlav { M_ESC, M_LEVO, M_PRAVO, M_DELETE, M_BASCSP,
M_TOP, M_DOWN, M_CLEAR, M_CHAR } TtypeKlav;
//typedef struct KodKav { enum typeKlav klav; uchar ch; } TkodKlav;
typedef struct KodKav { TtypeKlav klav; uchar ch; } TkodKlav;
//TkodKlav ku = { M_ESC, 27 }; // пример данных
Тут специально представлен вариант (выделено цветом) определения TkodKlav без использования конструкции typedef для определения перечисления типов клавиш.
Теперь определение подпрограммы ввода можно представить так:
TkodKlav getKlav();
А ее реализация:
TkodKlav getKlav(){
TkodKlav rez;
uchar c[2];
int n, k;
while ( !kbhit() ); // ожидание нажатия клавиши
n = 0;
while ( 1 ) {
while ( kbhit() ){
k = getch();
c[ n++ ] = k;
}
if ( n==1 ){
switch( c[0] ){
case 27 : rez.klav = M_ESC; return rez;
case 8 : rez.klav = M_BASCSP; return rez;
case 9 : rez.klav = M_DOWN; return rez;
case 13 : rez.klav = M_CLEAR; return rez;
default :
if ( isMyAlpha( c[0] )) {
rez.klav=M_CHAR; rez.ch=c[0]; return rez;
}
} // switch
} else {
if ( c[0]==224 ){
switch( c[1]){
case 75 : rez.klav = M_LEVO; return rez;
case 77 : rez.klav = M_PRAVO; return rez;
case 83 : rez.klav = M_DELETE; return rez;
}
} else if ( c[0]==0 && c[1]==148 )
rez.klav = M_TOP; return rez;
}
} // while
return rez;
} // TkodKlav
Задание: самостоятельно изобразите диаграмму деятельности этой подпрограммы.
Построим теперь подпрограммы редактирования поля ввода.
Опять главный вопрос: представление параметров ввода, с которыми работает подпрограмма редактирования.
Как говорилось ранее: если у нас есть хотя бы два похожих фрагмента – их необходимо объединить в одну подпрограмму!
Однако такая подпрограмма, почти наверняка, должна будет работать в различных условиях. Иначе – в разном контекстном окружении.
В данном случае это и положение на экране отображаемых при вводе символов и различная реакция на вводимые символы: при вводе логина – отображение (вывод) символов, а при вводе пароля – вывод условных обозначений.
Поэтому перед разработкой подпрограммы определим структуру "контекста".
Например, в данном случае, это может быть такая структура:
typedef struct KodKav { TtypeKlav klav; uchar ch; } TkodKlav;
typedef struct PoleVvoda { uchar posX, posY, s[20], maxLen,
curLen, posInStr, kodZameny; } TPoleVvoda;
У нас два поля ввода: логина и пароля.
Определим их контексты:
TPoleVvoda login={ .posX=12, .posY=5, .s="", .maxLen=15,
.curLen=0, .posInStr=0, .kodZameny=0 },
parol={ .posX=12, .posY=11, .s="", .maxLen=15,
.curLen=0, .posInStr=0, .kodZameny=249 };
Теперь подпрограммы работы с этими контекстами (не только редактирование, но и сброс – начальная установка контекста, установка позиции ввода – курсора) могут быть определены следующим образом:
void ustPos( TPoleVvoda * pole );
void sbrosPola( TPoleVvoda * pole );
void redPola( TPoleVvoda * pole, TkodKlav kod );
Построим их "болванки" и приступим к реализации главной части программы – подпрограммы loop.
Именно на основе постепенного подключения функционала к этой подпрограмме мы и будем отлаживать всю программную систему:
- получение данных клавиатуры и выход из подпрограммы;
- переход между полями ввода:
- ввод и редактирование данных.
void loop(){
uchar s[50], sost = 0;
TkodKlav kod;
gotoxy( 12, 5 ); // ??????
while( 1 ){
kod = getKlav();
if ( kod.klav==M_ESC ) break;
switch ( sost ){
case 0 : // vvod logina
if ( kod.klav==M_DOWN ) {
ustPos( &parol );
sost=1;
} else redPola( &login, kod );
break;
case 1 : // vvod parola
if ( kod.klav==M_DOWN ) {
gotoxy( 12, 18 );
sost=2;
} else if ( kod.klav==M_TOP ){
ustPos( &login );
sost=0;
} else redPola( &parol, kod );
break;
case 2 : // ogidanie sbrosa
if ( kod.klav==M_TOP ) {
ustPos( &parol );
sost=1;
} else if ( kod.klav==M_CLEAR ) {
sbrosPola( &login );
sbrosPola( &parol );
ustPos( &login );
sost=0;
}
break;
} // switch sost
}
gotoxy( 1, PANEL_H+4 );
login.s[ login.curLen ] = 0;
parol.s[ parol.curLen ] = 0;
puts( login.s );
puts( parol.s );
gotoxy( 1, PANEL_H+8 );
} // loop
Реализация подпрограмм работы к контекстом ввода данных:
void sbrosPola( TPoleVvoda * pole ){
// parol={ .posX=12, .posY=11, .s="", .maxLen=15, .posInStr=0, .curLen=0, .kodZameny=249 };
gotoxy( pole->posX, pole->posY );
while ( pole->curLen ){
putch( ' ' );
pole->curLen--;
}
pole->s[0] = 0; //pole->curLen=0;
pole->posInStr = 0;
} // sbrosPola
void ustPos( TPoleVvoda * pole ){
gotoxy( pole->posX+pole->curLen, pole->posY );
pole->posInStr = pole->curLen;
} // ustPos
void redPola( TPoleVvoda * pole, TkodKlav kod ){
switch( kod.klav ){
case M_LEVO :
break;
case M_PRAVO :
break;
case M_DELETE :
break;
case M_BASCSP :
if ( pole->curLen ){
pole->curLen--;
gotoxy( pole->posX+pole->curLen, pole->posY );
putch( ' ' );
gotoxy( pole->posX+pole->curLen, pole->posY );
}
break;
case M_CHAR :
if ( pole->curLen < pole->maxLen ){
pole->s[ pole->curLen++ ] = kod.ch;
if ( pole->kodZameny ) putch( pole->kodZameny );
else putch( kod.ch );
}
}
} // redPola
-
Julia Olenichenko
21 May 2021
2.1. Написать программу:
2.1.1. Сформировать массив (установкой начальных значений) и вывести его изображение. Выход из подпрограммы по нажатию клавиши ESC
2.1.2. Написать подпрограмму, формирующую следующее изображение
Выход из подпрограммы по нажатию клавиши ESC
я так понимаю, что при запуске сразу выходит вид таблички с номерками.
К сдаче нужен:
код,
псевдокод (словесный)
и блок-схума со словами а не текстом из кода (если большая, то можно по функциям) - схему можно от руки, мы потом перерисовываем в спец программе.
Current freelance projects in the category C & C++
A patch is required for the graphics card driver that expands the capabilities of managing the graphics adapter by adding additional user settings. The patch must integrate into the existing driver architecture without disrupting its core functionality and ensure compatibility with supported versions of the operating system. The main goal is to provide more flexible access to parameters that are not available in the standard driver control panel, with the ability to modify them through a user interface or software API. The patch should provide a modular structure that allows for the addition of new parameters in the future without significant code redesign. It is necessary to ensure proper error handling, change logging, the ability to revert settings to default values, as well as maintain compatibility with future driver updates as much as possible. The solution should be accompanied by technical documentation describing the architecture, implemented capabilities, limitations, and testing recommendations.
Automation on the site - echerha
We are a large logistics company with our own exports. We have a large fleet of vehicles and we constantly send our own vehicles for export to European countries.Description Website: https://echerha.gov.ua/ On this website, we place our vehicles in an electronic queue for crossing the state border. During registration, the following data must be entered: driver's first and last name; foreign passport number; email address; logistics phone number for notifications; type of vehicle (cargo); manufacturer's name of the vehicle; state registration number of the tractor; state registration number of the trailer; customs declaration number. A specific day and time for crossing the border is predetermined for each vehicle. For example, the vehicle must pass through the "Rava-Ruska" checkpoint on Monday at 10:00.Our Problem - The queue on the website https://echerha.gov.ua/ moves unpredictably. - For example, today is Friday, and the vehicle must cross the border on Monday at 10:00. - We do not know exactly when the queue will start moving. This can happen on Friday evening, at any time on Saturday or Sunday, early in the morning, during the day, or late at night. - When the queue starts moving, it is immediately visible on the website. Sometimes, within just a few minutes, it can move from Friday to Monday or even to Tuesday. - Because of this, logistics personnel are forced to constantly monitor the mobile application or website to not miss the moment when the queue reaches the required date and time. If this moment is missed, we physically cannot place the vehicle in the queue for the needed time slot.Task - After entering the vehicle data (for example, into a table or another interface, depending on the programmer's implementation), the system should automatically track the movement of the queue. - When the queue reaches the predetermined date and time, the system should automatically fill in the necessary data and place the vehicle in the queue without the involvement of the logistics personnel.
Looking for an experienced TrinityCore 3.3.5a developer who has a good understanding of the core architecture, Battleground system, C++, SQL, and the WoW 3.3.5 client. A custom Battleground “Slavery Valley” has already been integrated into the project, transferred from AzerothCore to TrinityCore. The main part of the work has already been completed, but it needs to be brought up to Blizzard's standards.What has been done TrinityCore 3.3.5a + Eluna. The server is fully configured. The Battleground is integrated into the core. Entry into the BG works. Client UI works (partially). Most SQL and DBC have been transferred. Builds without errors.What needs to be done Fix remaining Battleground bugs. Bring the mechanics up to the level of official Blizzard Battlegrounds. Fix the match start phase. Implement correct starting gates/fire walls. Fix point capture mechanics. Fix match completion. Check score allocation and WorldState functionality. Fix remaining C++ and SQL issues. Conduct a full gameplay test.Requirements Mandatory experience: TrinityCore 3.3.5a; C++; SQL (MariaDB/MySQL); DBC; MPQ; Visual Studio; CMake; Git. Would be a big plus: AzerothCore; Eluna; experience in Battleground development; understanding of the client side of WoW 3.3.5a.Work format Work is staged. Mandatory testing after each stage. Each stage is accepted only after in-game verification. Clear reports on changes are required.In the future This is a long-term project. After completing the Battleground, the following is planned: transfer of new Battlegrounds; transfer of new arenas; new races; new classes; new game systems; further development of a custom World of Warcraft 3.3.5a server. Looking for a developer who has already worked with TrinityCore and can not only write code but also bring the system to a fully operational state.no server from 0 as I want If you are looking for a developer not just for one Battleground, but for creating a server from scratch, then the announcement should look something like this.Project Title Development of a World of Warcraft 3.3.5a server from scratch (TrinityCore / C++ / SQL / Eluna)Project Description Looking for an experienced TrinityCore 3.3.5a developer for long-term collaboration. I need a person who can develop a fully ready World of Warcraft 3.3.5a game server from scratch based on TrinityCore with further project development. The project is large and is expected to take several months of development.Project Foundation TrinityCore 3.3.5a. Maximally stable and close to Blizzard base. Eluna Lua Engine. MariaDB. Visual Studio + CMake. Git.What is planned to be implemented Fully operational server 3.3.5a. Fixing core bugs. Development of new game systems. Integration of custom Battlegrounds. Integration of new arenas. Transfer of useful modules from AzerothCore to TrinityCore. Development of custom modules. New PvP and PvE systems. New game events. Class balancing. Additional progression systems. Improvement of server performance.In the future After completing the basic part, the following is planned: new races; new classes; new zones; new dungeons; new raids; new Battlegrounds; new professions; new game mechanics; integration of modern systems into the 3.3.5a client.Developer Requirements Mandatory: Excellent knowledge of TrinityCore 3.3.5a. Confident knowledge of C++. SQL (MariaDB/MySQL). Git. Visual Studio. CMake. Understanding of TrinityCore architecture. Experience with Battleground, PvP, and game mechanics. Would be a big plus: Experience with AzerothCore. Eluna Lua Engine. Working with DBC and MPQ. Experience in creating custom game systems.Work format Work is staged. Each task is documented as a separate technical assignment. Mandatory testing after each stage. Work is accepted only after verification directly in the game. A developer is needed who can bring functionality to a fully operational state, not just write code.
DRONE AIRCRAFT TYPE
Create compatibility between the ground control station, automatic start system (SAS), radar, and the aircraft.
это задание