Jump to content

Ropedann

Advanced members
  • Content Count

    71
  • Joined

  • Last visited

  • Days Won

    14

Posts posted by Ropedann


  1. Всем привет!
    Решил возобновить работу над проектом.
    Начал писать ItemInfoManager
    Пока что вот так:
    ItemInfoManager.PNG.2b33d0b20d4e534854b0219047e0a45d.PNG

     

    имеется проблема с импортом иконок и их привязкой. Если кто то может помочь решить проблему Добро пожаловать в репозиторий гит! 😃 Всетаки делаем общее дело(проект OpenSource и всегда будет в шаре пока пиратия жива =D ).

    Так же исправил проблему с кодировкой в NPCManager 
    Было:

    110041814_NPCManager.PNG.86fec8916ad7a64894cc24f419ffd877.PNG 

     

    Стало:
    727336332_NPCManager.PNG.93489a8c81b42f152b124090f1e8a90f.PNG

    • Thanks 1

  2. Решено!
    Сделал так (решил попробовать использовать функцию "SendExchangeXData"):

    function newbie_traider ()
    	Talk( 1,  "Всё для кача: Привет! Сегодня распродажа! " )
    	Text( 1,  "Торг ", BuyPage )
    	Text( 1,  "Рынок \"Всякой-Всячены\"", SendExchangeXData)
       
    	InitExchangeX()
        ExchangeDataX(2438,10,3094,1,1)
        ExchangeDataX(2438,25,3095,1,1)
    	ExchangeDataX(2438,10,3096,1,1)
    	ExchangeDataX(2438,25,3097,1,1)
    	ExchangeDataX(2438,30,3098,10,1)
    	ExchangeDataX(2438,30,3099,10,1)
    
        Defence(	3844	)
    	Defence(	3845	)
    	Defence(	3141	)
    	Defence(	1847	)
    	Defence(	1848	)
    	Defence(	1849	)
    	Other(	3088	)
    	Other(	3089	)
    	Other(	3090	)
    	Other(	3091	)
    	Other(	3092	)
    	Other(	3093	)	
    
    	AddNpcMission ( 109  )
    end
    
    
    function feary_traider()
    	Talk( 1,  "Продовщица фей: Приветик, я тебе могу предложить все для феи, заходи!) " )
    	Text( 1,  "Посмотреть ", BuyPage )
    	Text( 1,  "Свадьба фей ", OpenEidolonMetempsychosis )
    	Text( 1,  "Рынок фей", SendExchangeXData)
       
    	InitExchangeX()
        ExchangeDataX(2438,50,578,10,1)
    	ExchangeDataX(2438,50,2312,10,1)
        ExchangeDataX(2438,30,280,5,1)
    	ExchangeDataX(2438,30,279,5,1)
    	ExchangeDataX(2438,30,278,5,1)
    	ExchangeDataX(2438,30,277,5,1)
    	ExchangeDataX(2438,30,276,5,1)
    	
    	InitTrade()
        Defence(	0262	)
        Defence(	0239	)
        Defence(	3152	)
    	Defence(	0226    )
    	Defence(	0225    )
    	Defence(	0222    )
    	Defence(	0224    )
    	Defence(	0223	)
    	
    	AddNpcMission ( 107  )
    end

     

    • Thanks 3

  3. Используемая сборка:  PKO 1.38 [RUS] 
    Создаю 2 НПС черный торговец. Товар в скрипте отличается, но на самом сервере продают один и тотже товар.
     

    NpcScript01.lua:

    function feary_traider()
    	Talk( 1,  "Продовщица фей: Приветик, я тебе могу предложить все для феи, заходи!) " )
    	Text( 1,  "Посмотреть ", BuyPage )
    	Text( 1,  "Свадьба фей ", OpenEidolonMetempsychosis )
    	Text( 1,  "Рынок фей", SendExchangeData)
       
    	InitExchange()
        ExchangeData(2438,50,578,10,2)
    	ExchangeData(2438,50,2312,10,2)
        ExchangeData(2438,30,280,5,2)
    	ExchangeData(2438,30,279,5,2)
    	ExchangeData(2438,30,278,5,2)
    	ExchangeData(2438,30,277,5,2)
    	ExchangeData(2438,30,276,5,2)
    	
    	InitTrade()
        Defence(	0262	)
        Defence(	0239	)
        Defence(	3152	)
    	Defence(	0226    )
    	Defence(	0225    )
    	Defence(	0222    )
    	Defence(	0224    )
    	Defence(	0223	)		
    end
    
    function newbie_traider ()
    	Talk( 1,  "Всё для кача: Привет! Сегодня распродажа! " )
    	Text( 1,  "Торг ", BuyPage )
    	Text( 1,  "Рынок \"Всякой-Всячены\"", SendExchangeData)
       
    	InitExchange()
        ExchangeData(2438,10,3094,1,1)
        ExchangeData(2438,25,3095,1,1)
    	ExchangeData(2438,10,3096,1,1)
    	ExchangeData(2438,25,3097,1,1)
    	ExchangeData(2438,30,3098,10,1)
    	ExchangeData(2438,30,3099,10,1)
    
        Defence(	3844	)
    	Defence(	3845	)
    	Defence(	3141	)
    	Defence(	1847	)
    	Defence(	1848	)
    	Defence(	1849	)
    	Other(	3088	)
    	Other(	3089	)
    	Other(	3090	)
    	Other(	3091	)
    	Other(	3092	)
    	Other(	3093	)	
    end

    variable.lua
     

    Цитата

    ChangeItemList          = {}

    ChangeItemList[1]   = { 2438,10,3094,1 }

    ChangeItemList[2]   = { 2609,25,3095,1 }

    ChangeItemList[3]   = { 2438,10,3096,1 }

    ChangeItemList[4]   = { 2438,25,3097,1 }

    ChangeItemList[5]   = { 2438,30,3098,10 }

    ChangeItemList[6]   = { 2438,30,3099,10 }

    ChangeItemList[7]   = { 2438,50,578,10 }

    ChangeItemList[8]   = { 2438,50,2312,10 }

    ChangeItemList[9]   = { 2438,30,280,5 }

    ChangeItemList[10]  = { 2438,30,279,5 }

    ChangeItemList[11]  = { 2438,30,278,5 }

    ChangeItemList[12]  = { 2438,30,277,5 }

    ChangeItemList[13]  = { 2438,30,276,5 }

     

    Может кто то сталкивался и исправлял уже данную проблему. Подскажите пожалуйста.


  4. В 05.02.2023 в 10:25, BXlevovich сказал:

    На первом видео видно , что зависает gui, на втором же плавное заполнение, либо асинхронность, либо в отдельном потоке загрузка выполняется.

    там gui подвисает так как погружается новая форма я думаю.
     


  5. В 05.02.2023 в 10:33, BXlevovich сказал:

    @Ropedann в твоём примере можно спокойной обойтись без интерфейса.

     

    Интерфейсы - это как спецификация, которая определяет какие методы должен содержать класс, если он хочет следовать этому интерфейсу. Они позволяют разработчикам создавать код, который может быть использован вместе с другими классами, не зная их реальной реализации. Это повышает гибкость и повторную используемость кода.

     

    IAnimal - это интерфейс, который определяет метод animalSound().

     

    Pig - это класс, который реализует интерфейс IAnimal и переопределяет метод animalSound().

    Спасибо за ответ.

     


  6. Думаю многие знают что в программировании существует такая штука как  [ interface ]

    Не могу ни как понять зачем и для чего они нужны. Везде описано все как то в общих чертах. Пишут и рассказывают как ими пользоваться, но зачем ни кто адекватно объяснить не может.

    Ниже привожу пример использования интерфейса. Но по сути все бы работало и без него.

     internal interface IAnimal
        {
            void animalSound();
        }
    
     class Pig :IAnimal
        {
            public void animalSound()
            {
                Console.WriteLine("wee wee wee...");
            }
        }
    
    Pig pig = new Pig();
    pig.animalSound();

    Хотелось бы вызвать пояснительную бригаду.


  7. В 15.08.2022 в 15:39, V3ct0r сказал:

    Привет, @Ropedann!

     

    Есть новости по проекту?

    Привет, пока что нет не хватает времени из-за учебы в универе. Сейчас на последнем курсе учусь и занят дипломом и закрыванием долгов. Но как только под разгребусь обязательно продолжу работу.

    • Thanks 1

  8. 2 часа назад, Artstyle сказал:

    Давненько уже есть вопрос, для чего делают однодневки.

    Да прикол в том что Один и тот же чувак это делает. причем из-за бугра. Очень подозрительно и спамом попахивает.


  9. Полный код с кодирование и декодированием
     

    static void Main(string[] args)
            {
                string LuaText = @"\206\240\243\230\232\229 \209\236\229\240\242\232";
                string TextLua = @"<t> Добро Пожаловать!<n><t>Приходи ко мне, если у тебя есть вопросы относительно классов персонажей. И обдумывай свой выбор по мнению кем быть.<n><t>Ещё я хочу тебе поведать где продаётся неплохое оружие в <pАтланте>.<n><t>Теперь когды ты поднимаешь драгоценные уровни нажимай клавиши Ctrl + A, для того чтобы зайти в окно своих характеристик. Каждый поднятый тобой уровень даёт тебе очки характеристик. <n><t>У тебя в расположении имеется 5 видов антрибутов, таких как: Сила ,которая увеличивает твою атаку в ближнем бою; Ловкость, которая увеличивает твою скорость боя и уворот; Точность, которая увеличивает твоё шанс на попадение и усиливает твою мощь; Дух, который увеличивает твой максимальноый запас маны и магический урон;И Телесложение, которое увеличивает твой запас жизни и Брони.";
    
                char[] a = LuaText.ToCharArray();
                char[] charTextLua = TextLua.ToCharArray();
    
                List<byte> bytes = new List<byte>();
                byte[] bytesTextLua = System.Text.Encoding.GetEncoding(1251).GetBytes(charTextLua);
    
                string chars = "";
                for (int i = 0; i < a.Length; i++)
                {
                    if (Char.IsNumber(a[i]) && a[i] != '\\')
                    {
                        chars += a[i];
                    }
                    else if (Char.IsWhiteSpace(a[i]))
                    {
                        bytes.Add(Convert.ToByte(a[i]));
                    }
                    else if (Char.IsPunctuation(a[i]) && a[i] != '\\')
                    {
                        bytes.Add(Convert.ToByte(a[i]));
                    }
                    if (chars.Length == 3)
                    {
                        byte t = Convert.ToByte(chars);  
                        bytes.Add(t);
                        chars = "";
                    }
                }
                Console.WriteLine(DecoderLua(bytes.ToArray()));
    
                foreach (var item in CoderLua(charTextLua))
                {
                    Console.Write(item);
                }
            }
    
            public static string DecoderLua(byte[] byteArray)
            {
                return System.Text.Encoding.GetEncoding(1251).GetString((byteArray));
            }
    
            public static string[] CoderLua(char[] charArray)
            {
                byte[] byteArray = System.Text.Encoding.GetEncoding(1251).GetBytes(charArray);
                List<string> strList = new List<string>();
                for (int i = 0; i < byteArray.Length; i++)
                {
                    strList.Add("\\");
                    strList.Add(byteArray[i].ToString());
                }
                return strList.ToArray();
            }
        }

     

    • Like 1
    • Thanks 1

  10. разобрался можно закрывать..

     

    Если кому интересно получилось вот так:
     

    static void Main(string[] args)
            {
                string LuaText = @"\206\240\243\230\232\229 \209\236\229\240\242\232"; // Входная строка
                char[] a = LuaText.ToCharArray(); // Переводим строку в массив символов
                List<byte> bytes = new List<byte>(); // Создаем массив байт
                string chars = ""; // создаем переменную для запеси символов
                for (int i = 0; i < a.Length; i++) // Проходим в цикле по массиву символов
                {
                    if (Char.IsNumber(a[i]) && a[i] != '\\') // Если символ равен числу И НЕ РАВЕН \ то записываем его в переменную chars
                    {
                        chars += a[i];
                    }
                    else if (Char.IsWhiteSpace(a[i])) // Если символ является пробелом то записываем сразу в массив байт
                    {
                        bytes.Add(Convert.ToByte(a[i]));
                    }
                    else if (Char.IsPunctuation(a[i]) && a[i] != '\\') // Если символ является знаком пунктуации то сразу записываем в массив байт
                    {
                        bytes.Add(Convert.ToByte(a[i]));
                    }
                    if (chars.Length == 3) // Доп условие если длина переменной равна 3 то конвертируем ее в байт и записываем в массив поле очищаяем.
                    {
                        byte t = Convert.ToByte(chars);  
                        bytes.Add(t);
                        chars = "";
                    }
                }
                Console.WriteLine(DecoderLua(bytes.ToArray())); // Вызываем метод перевода массива байтов в символы
            }
    
            public static string DecoderLua(byte[] byteArray)
            {
                return System.Text.Encoding.GetEncoding(1251).GetString((byteArray)); // Переводим массив байтов в символы
            }

     

    Код костыльный но вроде рабочий(Ну и над названием переменных поработать нужно)

    • Like 1
    • Thanks 1

  11. Всем привет, многие знают что я пишу некий Server Manager. Для упращения работы с сервером и его разработки.

    И в процессе я сталкнулся с такой задачей.

    Как все знают Сервер с Кририлицей работает не очень хорошо.

    И многие прибегают к кодированию Русского текста в байткод.

    Типа токого:

    \196\238\225\240\238 \239\238\230\224\235\238\226\224\242\252!

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

     

    Но задача Server Manager Объеденить весь этот софт в одном приложении.

    И так перейдем к сути.

     

    С толкнулся я с тем что не могу разобраться в данной строке.

    Понятно что она основывается на таблице ASCII

    И написав вот такой небольшой код на C# У меня получилось адекватно декадировать данную строку.

            static void Main(string[] args)
            {
                string LuaText = @"\196\238\225\240\238 \239\238\230\224\235\238\226\224\242\252!";
                byte[] buffer = new byte[] { 196, 238, 225, 240, 238, 32, 239, 238, 230, 224, 235, 238, 226, 224, 242, 252 };
                Console.WriteLine(DecoderLua(buffer));
            }
    
            public static string DecoderLua(byte[] byteArray)
            {
                return System.Text.Encoding.GetEncoding(1251).GetString((byteArray));
            }

    Вывод в консоль:

    image.png.c9dfb842ed22ebe9391a155570ac032b.png

     

    не смог придумать адекватного способа избавляться от '\' - слэшэй и простовлять пробелы.

    Может быть есть какаято библиотека для работы с подобными строками.

    Так как штатными методами по типу replace, split и.д. особо выходит.

     

    Зарание спасибо за помощь.


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

    Проще будет найти какую-то либку типа text editor, которая будет подсвечивать. Ручками писать подсветку будет тяжко и долго (если мы говорим о качественном и полностью рабочем коде).

    Я нашел библеотеку ICSharpCode.TextEditor
    Но не понял как в ней сделать подсветку. Посути как то можно но я не нашел.


  13. 11 часов назад, V3ct0r сказал:

    Привет, @Ropedann!

     

    Хочу внести свой вклад в твой проект. Написал редактор списков NPC (файлов GameServer\resource\<map>\<map>npc.txt ). Pull Request отправлен на GitHub.

     

    npc_manager.png

     

    Я не силен в C#, поэтому мой код может быть не очень качественным. Также хочу поблагодарить @champ за оказанную помощь в решении проблем, с которыми я столкнулся в ходе разработки.

     

    Надеюсь, ты не забросишь этот проект.

    Огромное спасибо. Очень мотивирует что комьюнити интересно и оно делает свой вклад)
    Главное что бы оно работало без ошибок и вреда для чужих txt файлов в качестве кодировки и формата который у них заведен. Так как сейчас у многих есть исходники нашей игры и многие txt файлов могут имень немного другой формат нежеле стандартный.
    Один человек из компьюнити предлогал мне присоединять не отдельные файлы, а сразу папку ресурс и с одним условием что все txt файлы в шапке будет расписанн формат и по нему будут генирироваться все ячейки для изменени. Но это довольно долгая и кропотливая работа. И такую реализацию можно будет прикрутить в дольнейшем.

     

    • Like 1
    • Thanks 2

  14. Да блин это гениально! =D Я писал лаунчер на основе идеии что клиент лежит на фтп сервере и есть софт который гененрирует хэш суммы для каждого файла и измененые файлы заносит в отдельный список после игрок уже получает список этих файлов и качает. а используя гит это все можно опустить)

     

    19 часов назад, champ сказал:

    Согласен с Вами. Не знаю, почему мне данная идея не пришла в голову, когда был свой сервер 🤷‍♂️ В любом случае, надеюсь, что кому-то пригодится.

     

×
×
  • Create New...