21.10.2010, 19:16 | #121 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
|
30.10.2010, 13:55 | #122 |
Пользователь
Регистрация: 09.03.2010
Сообщений: 37
Сказал(а) спасибо: 4
Поблагодарили 63 раз(а) в 21 сообщениях
|
Иногда бывает необходимо получить таблицу заклинаний в виде SQL.
Есть конвертеры dbc в CSV , dbc в SQL. К сожалению, на выходе получается только заготовка, использовать которую достаточно затруднительно. В выходных файлах нет заголовков полей, их типов. Кроме того, dbc2sql.exe путает типы полей, в итоге выходной файл не полностью соответствует действительности. Предлагаю патч для добавления функционала по выгрузке заклинаний в SQL скрипт. Данные для скрипта строятся динамически на основе структуры SpellEntry. При добавлении новых типов данных (не полей) в SpellEntry , код потребует некоторой доработки. Часть сформированного скрипта:
|
3 пользователя(ей) сказали cпасибо: |
30.10.2010, 15:11 | #123 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
можно доработать, чтоб выгружать все используемые дбц.
предоставить список выбора пользователю, а таблицы называть именем структуры или как угодно... |
30.10.2010, 17:06 | #124 |
Пользователь
Регистрация: 09.03.2010
Сообщений: 37
Сказал(а) спасибо: 4
Поблагодарили 63 раз(а) в 21 сообщениях
|
Сделаю. Тогда займу следующую страничку в tabControl. И сделаю настройки экспорта.
|
30.10.2010, 17:10 | #125 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Зачем изобретать велосипед? И SpellWork это программа для работы со спеллами (внезапно!), а не комплекс для работы с DBC
|
30.10.2010, 20:25 | #126 | |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Цитата:
|
|
31.10.2010, 15:57 | #128 |
Администратор
|
Не надо распыляться на все подряд, программа для работы со спеллами, надо в этой области добить по-максимуму.
Если не ошибаюсь, то новая прок-система до сих пор не реализована. Когда программа будет полнофункциональной, тогда уже желающие от нечего делать могут заняться ее модернизацией. |
31.10.2010, 16:03 | #129 | |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Цитата:
|
|
06.11.2010, 23:10 | #130 |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
Что-то с масками школ напутано во вкладке Spell proc event, допустим HOLY считается как 0x04, а в мангосе она вообще другая :/ по-моему инфа устарела, так ещё и заменяет новым значением вместо сложения в случае когда у нас уже отмечен, допустим Holy и Nature, мы тыкаем пару раз на HOLY и выдает неверный подсчет.
Также нехватает ещё одного procEx, который не так давно добавили
__________________
Если ты видишь это сообщение то ты просто обязан нажать "Спасибо" |
06.11.2010, 23:22 | #131 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
По поводу проков пилите шура^W Konctantin-а.
|
08.12.2010, 21:16 | #132 | |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
Не могли бы Вы починить поиск по BasePointEffect(67) Ищет спеллы не совсем верно. Ввожу в поиск БП 10, а находит он
Цитата:
|
|
08.12.2010, 21:17 | #133 |
Администратор
|
Попробуй искать значение на 1 меньше, не раз помогало.
10 + 1 => BasePoints = 11 ... |
08.12.2010, 21:24 | #134 |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
Спасибо! Проблема возникает наверно из-за того,что есть БП 0, и в представлении программы БП0 - 1, БП1 - 2 и т.д
|
08.12.2010, 21:39 | #135 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Нет, в клиенте данные так хранятся, см. DBCStructure.h, struct SpellEntry
|
08.12.2010, 22:01 | #136 |
Администратор
|
int32 CalculateSimpleValue(SpellEffectIndex eff) const { return EffectBasePoints[eff] + int32(1); }
|
10.12.2010, 12:16 | #137 |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
Добавьте пожалуйста поиск по pereodic. Очень бы помогло искать аура с определенным временем тика
|
10.12.2010, 13:22 | #138 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
Зачем? он и так там есть,
Выбираете колонку EffectAmplitude в дополнительном фильтре, задаете ей значение и будет вам счастье. Последний раз редактировалось Konctantin; 10.12.2010 в 13:31. |
Пользователь сказал cпасибо: | Lordronn (10.12.2010) |
20.03.2011, 23:37 | #139 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Пришел мне на почту патчик, добавляющий тип сравнения для Advanced Filter. Спасибо автору!
https://github.com/LordJZ/spellwork_...b2949b5afac91a Скомпиленный бинарник где и всегда. |
28.03.2011, 22:23 | #140 |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
Изменение функции проверки подключения на булевую. Замена некоторых foreach на LINQ
И замена некоторых простых условий на выражение ? : Код:
--- /SpellWork/DataBase/MySQLConnect.cs Sun Mar 20 14:33:12 2011 +++ /SpellWork/DataBase/MySQLConnect.cs Mon Mar 28 20:42:46 2011 @@ -11,7 +11,6 @@ private static MySqlConnection _conn; private static MySqlCommand _command; - public static bool Connected { get; private set; } public static List<string> Dropped = new List<string>(); public static List<SpellProcEventEntry> SpellProcEvent = new List<SpellProcEventEntry>(); @@ -31,9 +30,7 @@ private static String GetSpellName(uint id) { if (DBC.Spell.ContainsKey(id)) - { return DBC.Spell[id].SpellNameRank; - } else { Dropped.Add(String.Format("DELETE FROM `spell_proc_event` WHERE `entry` IN ({0});\r\n", id.ToUInt32())); @@ -158,24 +155,21 @@ return items; } - public static void TestConnect() + public static bool Connected() { if (!Settings.Default.UseDbConnect) - { - Connected = false; - return; - } + return false; try { _conn = new MySqlConnection(ConnectionString); _conn.Open(); - _conn.Close(); - Connected = true; + _conn.Close(); + return true; } - catch - { - Connected = false; + catch + { + return false; } } } Код:
--- /SpellWork/Extensions/LinqExtensions.cs Sun Mar 20 14:33:12 2011 +++ /SpellWork/Extensions/LinqExtensions.cs Mon Mar 28 20:50:57 2011 @@ -1,4 +1,5 @@ -using System; +using System; +using System.Linq; using System.Reflection; namespace SpellWork @@ -40,52 +41,17 @@ return Compare(basicValue.ToUlong(), val.ToUlong(), compareType); case "String": return Compare(basicValue.ToString(), val.ToString(), compareType); - case @"UInt32[]": - { - foreach (uint el in (uint[])basicValue) - { - if (Compare(el.ToUInt32(), val.ToUInt32(), compareType)) - return true; - } - return false; - } - case @"Int32[]": - { - foreach (int el in (int[])basicValue) - { - if (Compare(el.ToInt32(), val.ToInt32(), compareType)) - return true; - } - return false; - } - case @"Single[]": - { - foreach (float el in (float[])basicValue) - { - if (Compare(el.ToFloat(), val.ToFloat(), compareType)) - return true; - } - return false; - } - case @"UInt64[]": - { - foreach (ulong el in (ulong[])basicValue) - { - if (Compare(el.ToUlong(), val.ToUlong(), compareType)) - return true; - } - return false; - } - case @"String[]": - { - foreach (uint el in (uint[])basicValue) - { - if (Compare(el.ToString(), val.ToString(), compareType)) - return true; - } - return false; - } - // todo: more + case @"UInt32[]": + return ((uint[]) basicValue).Any(el => Compare(el.ToUInt32(), val.ToUInt32(), compareType)); + case @"Int32[]": + return ((int[]) basicValue).Any(el => Compare(el.ToInt32(), val.ToInt32(), compareType)); + case @"Single[]": + return ((float[]) basicValue).Any(el => Compare(el.ToFloat(), val.ToFloat(), compareType)); + case @"UInt64[]": + return ((ulong[]) basicValue).Any(el => Compare(el.ToUlong(), val.ToUlong(), compareType)); + case @"String[]": + return ((uint[]) basicValue).Any(el => Compare(el.ToString(), val.ToString(), compareType)); + // todo: more default: return false; } } Код:
--- /SpellWork/Spell/SpellCompare.cs Sun Mar 20 14:33:12 2011 +++ /SpellWork/Spell/SpellCompare.cs Mon Mar 28 20:54:03 2011 @@ -35,20 +35,9 @@ rtb1.Select(pos - str.Length - 1, pos - 1); if (rtb2.Find(str, RichTextBoxFinds.WholeWord) != -1) - { - if (str.ContainsText(words)) - { - rtb1.SelectionBackColor = rtb1.BackColor; - } - else - { - rtb1.SelectionBackColor = Color.Cyan; - } - } + rtb1.SelectionBackColor = str.ContainsText(words) ? rtb1.BackColor : Color.Cyan; else - { rtb1.SelectionBackColor = Color.Salmon; - } } pos = 0; @@ -58,20 +47,9 @@ rtb2.Select(pos - str.Length - 1, pos - 1); if (rtb1.Find(str, RichTextBoxFinds.WholeWord) != -1) - { - if (str.ContainsText(words)) - { - rtb2.SelectionBackColor = rtb2.BackColor; - } - else - { - rtb2.SelectionBackColor = Color.Cyan; - } - } + rtb2.SelectionBackColor = str.ContainsText(words) ? rtb2.BackColor : Color.Cyan; else - { rtb2.SelectionBackColor = Color.Salmon; - } } } } Код:
--- /SpellWork/Spell/SpellInfo.cs Sun Mar 20 14:33:12 2011 +++ /SpellWork/Spell/SpellInfo.cs Mon Mar 28 20:44:21 2011 @@ -445,7 +445,7 @@ private void AppendItemInfo() { - if (!MySQLConnect.Connected) + if (!MySQLConnect.Connected()) return; var items = from item in DBC.ItemTemplate --- /SpellWork/Forms/FormMain.cs Sun Mar 20 14:33:12 2011 +++ /SpellWork/Forms/FormMain.cs Mon Mar 28 20:44:30 2011 @@ -90,9 +90,7 @@ private void ConnStatus() { - MySQLConnect.TestConnect(); - - if (MySQLConnect.Connected) + if (MySQLConnect.Connected()) { _dbConnect.Text = "Connection is successfully"; _dbConnect.ForeColor = Color.Green; @@ -108,9 +106,7 @@ private void _Connected_Click(object sender, EventArgs e) { - MySQLConnect.TestConnect(); - - if (MySQLConnect.Connected) + if (MySQLConnect.Connected()) MessageBox.Show("Connection is successfully!", "MySQL Connections!", MessageBoxButtons.OK, MessageBoxIcon.Information); else MessageBox.Show("Connection is failed!", "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error); @@ -477,7 +473,7 @@ private void SqlToBase_Click(object sender, EventArgs e) { - if (MySQLConnect.Connected) + if (MySQLConnect.Connected()) MySQLConnect.Insert(_rtbSqlLog.Text); else MessageBox.Show("Can't connect to database!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); @@ -531,7 +527,7 @@ private void Select_Click(object sender, EventArgs e) { - if (!MySQLConnect.Connected) + if (!MySQLConnect.Connected()) { MessageBox.Show("Can't connect to database!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; @@ -586,7 +582,7 @@ _rtbSqlLog.AppendText(comment + "\r\n" + drop + "\r\n" + insert + "\r\n\r\n"); _rtbSqlLog.ColorizeCode(); - if (MySQLConnect.Connected) + if (MySQLConnect.Connected()) MySQLConnect.Insert(drop + insert); ((Button)sender).Enabled = false; --- /SpellWork/Forms/FormSettings.cs Sun Mar 20 14:33:12 2011 +++ /SpellWork/Forms/FormSettings.cs Mon Mar 28 20:44:28 2011 @@ -31,11 +31,9 @@ Settings.Default.Db_mangos = _tbBase.Text; Settings.Default.UseDbConnect = _cbUseDBConnect.Checked; - MySQLConnect.TestConnect(); - if (((Button)sender).Text != "Save") { - if (MySQLConnect.Connected) + if (MySQLConnect.Connected()) { MessageBox.Show("Connection is successfully!", "MySQL Connections!", MessageBoxButtons.OK, MessageBoxIcon.Information); |
28.03.2011, 22:35 | #141 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Ну тогда уж надо было делать Connected() свойством, а не методом
Код:
public static bool Connected { get { // insert code here } } |
29.03.2011, 01:53 | #142 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
По поводу LINQ, их вообще надо прибить, а использовать обычные циклы for, так как LINQ работают в 3-4 раза медленней чем обычные циклы.
foreach - работает в 1,5 раза медленней чем for |
Пользователь сказал cпасибо: | Lordronn (29.03.2011) |
29.03.2011, 12:02 | #143 | |
Умный
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
|
Цитата:
Но! как всегда у каждой медали есть обратная сторона. Инструменты подобные LINQ сокращают время написания программ и если быстродействие не критично то почему бы и не использовать. |
|
05.04.2011, 18:02 | #145 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Добавил поддержку SpellDifficulty.dbc, немного переработал типы сравнения Advanced Filter. Теперь AndStrict — это строгая проверка установленности указаных битов на 1, а And проверяет на хотя бы один установленный бит.
Последние бинарники для версии 3.3.5а как всегда в том же месте: https://github.com/LordJZ/spellwork_.../SpellWork.exe https://github.com/LordJZ/spellwork_...MySql.Data.dll |
3 пользователя(ей) сказали cпасибо: |
05.04.2011, 18:19 | #146 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Также обновлена века 400 (работает с 4.0.3—4.0.6 билдами). Есть какие-либо предложения по ней?
https://github.com/LordJZ/spellwork_.../SpellWork.exe https://github.com/LordJZ/spellwork_...MySql.Data.dll |
4 пользователя(ей) сказали cпасибо: |
07.04.2011, 11:52 | #147 | ||
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Цитата:
Цитата:
|
||
Пользователь сказал cпасибо: | Konctantin (07.04.2011) |
30.04.2011, 11:07 | #149 |
Умный
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
|
Версия 4.0.6
С некоторой вероятности при выборе спелла из списка(прок закладка) ловим краш К примеру: спелл 16492 Код:
************** Exception Text ************** System.NullReferenceException: Object reference not set to an instance of an object. at SpellWork.Extensions.ContainsElement(UInt32[] array, UInt32[] value) at SpellWork.ProcInfo..ctor(TreeView familyTree, SpellFamilyNames spellfamily) at SpellWork.FormMain._tvFamilyTree_SelectedIndexChanged(Object sender, EventArgs e) at System.Windows.Forms.ComboBox.OnSelectedIndexChanged(EventArgs e) at System.Windows.Forms.ComboBox.set_SelectedIndex(Int32 value) at System.Windows.Forms.ListControl.set_SelectedValue(Object value) at SpellWork.FormMain.SetProcAtribute(SpellEntry spell) at SpellWork.FormMain._lvProcSpellList_SelectedIndexChanged(Object sender, EventArgs e) at System.Windows.Forms.ListView.OnSelectedIndexChanged(EventArgs e) at System.Windows.Forms.ListView.WmReflectNotify(Message& m) at System.Windows.Forms.ListView.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) |
10.05.2011, 03:28 | #150 |
Гость
Сообщений: n/a
|
Я немного поковырял SpellWork и добавил кнопочку загрузки dbc из любой папки. Несколько криво вышло, да и много лишнего, но лично я доволен тем, что я достиг задачи.
Буду рад заняться Spell Work'ом. И наконец-то таки сделать его всеядным по отношению к DBC разных версий. Знаю, что такое делегаты и ивенты. Начал изучать LINQ, но пока лишь => - освоен. Слаб в работе с WinForms, но учусь быстро ЗЫ В планах сделать порт под Mono. Аддед: вышел чуточку некропостинг, но вдруг автору всё ещё интересен этот проект. Added: можно поглазеть что вышло на релизе. Последний раз редактировалось AlexBolotsin; 10.05.2011 в 04:29. |
10.05.2011, 12:51 | #151 |
Гость
Сообщений: n/a
|
Таки удалось не только запустить готовый exe под моно, но и скомпилить, однако появилась проблема с System.Deployment. Думаю для повышения навыка переписать GUI под wxWidget или gtk
|
10.05.2011, 19:00 | #153 |
Гость
Сообщений: n/a
|
К великому сожалению он не сильно кроссплатформенный. Да, запустить можно, но это не его заслуга, а скорее 3rd party разрабов.
Можете сравнивать это с полит. убеждениями Да и что там этот WPF, написать более менее годный интерфейс я смогу, а в GUI-dev я не стремлюсь. |
10.05.2011, 22:34 | #154 |
Ученый
Регистрация: 02.04.2010
Сообщений: 237
Сказал(а) спасибо: 41
Поблагодарили 99 раз(а) в 44 сообщениях
|
Qt в плане кроссплатформенности лучше)
http://ru-mangos.ru/showthread.php?t=3501 конечно не фонтан функционал как у Константина, но основное есть и собирается под разными платформами
__________________
SpellWork Qt4 |
18.06.2011, 09:30 | #155 |
Новичок
Регистрация: 07.03.2010
Адрес: Украина
Сообщений: 26
Сказал(а) спасибо: 28
Поблагодарили 26 раз(а) в 8 сообщениях
|
Есть интересный спел Running Wild (рассовая способность у воргенов бегать).
http://www.wowhead.com/spell=87840 На вовхеде показывает 3 эффекта, а в спелворке всего лишь 2. Где здесь загвоздка? Использовал этот бинарник http://ru-mangos.ru/showpost.php?p=20665&postcount=146
__________________
Opcode значения правы, понюхал Фрум официально. |
27.09.2011, 19:21 | #156 |
Пользователь
Регистрация: 09.03.2010
Сообщений: 37
Сказал(а) спасибо: 4
Поблагодарили 63 раз(а) в 21 сообщениях
|
Добработал SpellWork до загрузки спелов из таблицы spell_dbc.
Исходники и двоичный файл лежат по ссылке https://github.com/Warlord123/spellwork_cs . Кроме того, обновлены атрибуты заклинаний, названия аур. Увеличил объем информации в аурах и спелл-эффектах. Добавлена информация о стоимости заклинания в рунах ДК. Добавлена загрузка о зоне, в которой можно использовать заклинание (Взято из репозитория Shauren). В планах сделать формирование sql-запросов изменных заклинаний в таблицу spell_dbc . Пока программа формирует данные для функционала DBC_Patcher http://ru-mangos.ru/showthread.php?t=1544 . Редактор \ эксплорер спелов находиться на последней закладке программы. Во вложенном файле скомпилированная программа. |
28.09.2011, 18:47 | #157 |
Пользователь
Регистрация: 09.03.2010
Сообщений: 37
Сказал(а) спасибо: 4
Поблагодарили 63 раз(а) в 21 сообщениях
|
Добавил формирование SQL запроса в таблицу .
Исходники программы находятся в репозитории из моего последнего сообщения, скомпилированный исполняемы файл в архиве. В конце формируемого запроса программа в комментариях к SQL программа выдает список полей. которые не найдены в структуре SpellEntry . (Если все нормально, то в этом списке должно быть только поле Comment). Сопоставление идет по именам столбцов при загрузке из таблицы spell_dbc и при формировании SQL. Изменение структуры таблицы изменяет число загружаемых\сохраняемых столбцов. Об ошибках прошу сообщать сюда . |
02.10.2011, 21:40 | #158 |
Пользователь
Регистрация: 09.03.2010
Сообщений: 37
Сказал(а) спасибо: 4
Поблагодарили 63 раз(а) в 21 сообщениях
|
Поправил enum CombatRating и отображение механик для ауры SPELL_AURA_MECHANIC_IMMUNITY_MASK.
В первом приближении починил загрузку данных о проках спелов во вкладку Spell Prc Event. Формируемый этой вкладкой sql запрос теперь тоже правильно формирует данные spell proc event для первого эффекта заклинания. Обновленный исполняемый файл содержиться во вложении. |
4 пользователя(ей) сказали cпасибо: |
05.10.2011, 18:50 | #159 |
Пользователь
Регистрация: 09.03.2010
Сообщений: 37
Сказал(а) спасибо: 4
Поблагодарили 63 раз(а) в 21 сообщениях
|
Обновил немного атрибутов спелов.
Поправил загрузку имен спелов из spell_dbc. Часть повторяющегося кода вынес в методы. |
11.10.2011, 22:18 | #160 |
Пользователь
Регистрация: 09.03.2010
Сообщений: 37
Сказал(а) спасибо: 4
Поблагодарили 63 раз(а) в 21 сообщениях
|
Добавил расшифровку SpellInterruptFlags флагов и возможность вводить в поля шестнадцатеричные числа в формате 0x....
|