PDA

Просмотр полной версии : SpellWork C#


LordJZ
17.04.2010, 20:35
Мы тут с Konctantin начали переписывать SpellWork на C#.

Репозиторий тут: http://github.com/LordJZ/spellwork_cs/

Пока что реализованы не все функции оригинального spell_work-а, но вроде бы все работает.
Скриншоты: (пока что не все реализовано)

http://ru-mangos.ru/attachment.php?attachmentid=286&stc=1&d=1271616752

http://ru-mangos.ru/attachment.php?attachmentid=287&stc=1&d=1271616752


Ссылка на скомпилированный файл во вложении.
Пожалуйста пишите свои пожелания и баг-репорты.

Konctantin
17.04.2010, 20:38
Ждем баг-репортов и пожеланий :)

xmolex
17.04.2010, 21:01
Хотел спросить, имена в 3.3.3 в Spell.dbc уже не используются? Использую enGB. Вроде всегда имена были, а тут не видно.

Konctantin
17.04.2010, 21:13
у нас тут автодетект, проверялось только на русских, щас проверю не английски

====
Поправлено, спасибо.

TOM_RUS
17.04.2010, 22:44
Небольшой патчик http://paste2.org/p/778934, добавлен sln файл для VS2010 (компиляция в VS2008 не проверялась, теоретически должно компилится с варнингами о неподдерживаемой версии .NET Framework), перенесена часть кода в класс Extensions...

xmolex
17.04.2010, 22:51
Поправлено, спасибо.

Если не сложно, можно бинарник, а то C# не стоит.

TOM_RUS
17.04.2010, 23:03
Кстати, содержимое файла Utility.cs тоже можно переделать в Extensions (хотя эти методы все равно не используются)...

Если не сложно, можно бинарник, а то C# не стоит.

А что мешает поставить? Если VS установлена (не Express), то даже места на винте дополнительного не потребуется...

Konctantin
17.04.2010, 23:11
Патч накатил, и сразу пришлось null на "" менять, кстати вопрос, а зачем было делать в структуре приват переменные пабликами, я их специально скрыл, чтоб недоступны были из списка выбора, а то там и так всего много, да и null устраивал :)
Пока пускай будет, мало ли.

исходник прилепил

TOM_RUS
17.04.2010, 23:14
кстати вопрос, а зачем было делать в структуре приват переменные пабликами

Ну хотя бы для того чтобы компилятор не ругался :)

Konctantin
17.04.2010, 23:19
Есть один баг, не правильно отображаются Stances и Not Stances, пока не знаю как поправить

TOM_RUS
17.04.2010, 23:27
В GenerateSpellDesc не лучше ли заменить str += ... на StringBuilder? А то выглядит ужасно :)


return String.Format("SpellRange: ID - {0} {1} (unk = {2}) MinRange = {3}, MinRangeFriendly = {4}, MaxRange = {5}, MaxRangeFriendly = {6}\r\n",
q.Key, q.Value.Description1, q.Value.Description2, q.Value.Field5, q.Value.MinRange,
q.Value.MinRangeFriendly, q.Value.MaxRange, q.Value.MaxRangeFriendly);


Неверное количество аргументов.


static String GetFormInfo(ulong val, string name)
{
int i = 1;


Fix для Stances


public ulong Stances; // 12-13 m_shapeshiftMask
public ulong StancesNot; // 14-15 m_shapeshiftExclude

структура


"\r\n"

можно заменить на Environment.NewLine


public static StringBuilder AppendFormatLine(this StringBuilder sb, string format, params object[] args)
{
return sb.AppendFormat(format, args).AppendLine();
}

Extension метод, может пригодиться при замене "str += ..." на StringBuilder...

Для

""

есть readonly константа String.Empty либо метод String.IsNullOrEmpty(string str). При желании можно добавить Extension метод чтобы можно было делать
так:

var str = "abc";
if(str.IsNullOrEmpty())
{
...
}

вместо

var str = "abc";
if(String.IsNullOrEmpty(str))
{
...
}

это как кому больше нравится...

В файле Structure.cs опечатка curent -> current


GetAuraModTypeName()
GenerateSpellDesc()
GetProcInfo()
GetTriggerSpell()
...

и другие подобные методы, почему бы их не перенести в структуру SpellEntry...


var spell = (from s in DBC.Spell where s.Key == spellId select s.Value).First();

зачем тут LINQ вообще? Можно просто var spell = DBC.Spell[spellId] сделать...


sb.Append(Environment.NewLine);

можно просто заменить на sb.AppendLine()


sb.AppendFormat("CasterAuraState 0x{0:X8}, TargetAuraState 0x{1:X8}\r\n", spell.CasterAuraState, spell.TargetAuraState);

и подобные заканчивающиеся на "\r\n" не предлагаемый выше Extension method "public static StringBuilder AppendFormatLine(this StringBuilder sb, string format, params object[] args)"

Konctantin
18.04.2010, 01:25
Поправил, правда не все, оставил еще LordJZ, пускай и он поклацает.

TOM_RUS
18.04.2010, 12:04
Еще патчик http://paste2.org/p/779518.

LordJZ
18.04.2010, 12:34
Еще патчик http://paste2.org/p/779518.Спасибо. :)

TOM_RUS
18.04.2010, 14:16
http://paste2.org/p/779641

Konctantin
18.04.2010, 14:31
Может права на репозитарий лучше у LordJZ взять?

TOM_RUS
18.04.2010, 17:31
http://paste2.org/p/779792

Konctantin
18.04.2010, 22:20
Все-таки используем контрол, для отображения текста который допускает форматирование, начал заменять StringBuilder на расширения класса RichTextBox подобными методами.

Спасибо Kirix за замечание.

Сделал, вот как это будет примерно выглядеть: осталось только расставить стили и выделить важную информацию.

http://ru-mangos.ru/attachment.php?attachmentid=289&stc=1&d=1271620967

Konctantin
19.04.2010, 20:08
Я зашел в тупик, не знаю от куда и как берутся некоторые поля для таблицы spell_proc_event, а именно:
-ProcFlagEx - подозреваю что это spell.ProcFlags - но не уверен :(
-PPMRate - даже не представляю

с каких полей dbc составляются эти данные?

и чуточку не уверен в Cooldown, так что нужна помощь, или хотя бы намек или пинок в нужном направлении.

Вот пока последняя на данный момент скомпилированая версия SpellWork

Laise
20.04.2010, 06:44
Я зашел в тупик, не знаю от куда и как берутся некоторые поля для таблицы spell_proc_event, а именно:
-ProcFlagEx - подозреваю что это spell.ProcFlags - но не уверен :(
-PPMRate - даже не представляю

с каких полей dbc составляются эти данные?

и чуточку не уверен в Cooldown, так что нужна помощь, или хотя бы намек или пинок в нужном направлении.
SpellWork

procEx - из enum ProcFlagsEx в мангосе, в дбс этого нет
PPMRate - шанс прока в зависимости от скорости оружия, в старом спеллворке было просто поле для ввода
Cooldown - тоже было просто поле для ввода

Konctantin
20.04.2010, 07:18
Cooldown - я взял spell.RecoveryTime / 1000f - но если не устраивает можем поставить свое

PPMRate, procEx - это то чего нету в dbc но то что мы хотим видеть.

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

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

Какие есть у кого пожелания, что бы вы еще хотели видеть?

Laise
20.04.2010, 09:25
Какие есть у кого пожелания, что бы вы еще хотели видеть?
поиск по spellIconID и по attributes/attributesEx(было в старом) =)

Konctantin
20.04.2010, 10:43
Готово http://github.com/LordJZ/spellwork_cs/commit/f4bbf331e3cdc3a8e66bb77e556ee711b73fdc60

LordJZ
20.04.2010, 15:03
Кстати да, поиск было бы классно расширить и спрятать в отдельный блок

Konctantin
20.04.2010, 22:24
У меня опять вопрос, как для таблицы spell_proc_event надо брать данные по столбцам SpellFamilyMask0, SpellFamilyMask1, SpellFamilyMask2, они берутся прямо из dbc и не меняются или как-то генерируются?

Просто не нашел в исходниках СпеллВорка как это дело обрабатывается:(

Konctantin
21.04.2010, 21:36
Реализована работа с базой данных для таблицы spell_proc_event (пока немного кривовато, надо проверок натыкать).
Остался открытым вопрос с моего предыдущего поста. Необходимо проверять, но я сейчас не могу, сделал все чисто теоретически.

Прикрепил последнюю скомпилированную версию, там же и MySql.Data.dll для работы с базой данных.
http://filekeeper.org/download/shared/SpellWork_333a__11723_.rar

Konctantin
23.04.2010, 15:20
+ Добавил фильтр на выборку из базы данных
+ Добавлено несколько проверок для роботы с базой данных
+ Добавил форму для подсчета флагов
+ Добавил бинарные файлы "SpellWork.exe" и "MySql.Data.dll" в репозитарий
скачать можно тут http://github.com/LordJZ/spellwork_cs/tree/master/SpellWork/bin/Release/

Konctantin
23.04.2010, 19:03
Простите, ошибочка вышла, скомпилировал в дебаге, а залил релиз.
Поправлено.

PSZ
24.04.2010, 13:50
Предлагаю сделать не одну вкладку Spell Info, а две - удобно сравнивать спеллы.

LordJZ
24.04.2010, 14:13
А лучше сделать вкладку Compare Spell

Konctantin
24.04.2010, 20:29
Я уже работаю над этим, хочу сделать что-то на подобии TortoiseIDiff, с 2 полями, и выделение цветом разбежностей (красным) и совпадений (зеленым)

Konctantin
24.04.2010, 20:43
Предлагаю сделать не одну вкладку Spell Info, а две - удобно сравнивать спеллы.
По идее вкладки "Spell Info" и "Spell Proc Event" идентичны, информация что в них выводится одинаковая, а отборы независимые.
Если мешают дополнительные панели во вкладке "Spell Proc Event" - их легко можно сдвинуть, и они не будут мешать.

Konctantin
28.04.2010, 09:18
Помогите с задачей, для реализации расширенного фильтра в SpellWork
Есть структура:

public struct SpellEntry
{
public uint ID;
....
};

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

Я частично решил проблему, чтобы заполнить ComboBox нужными данными из структуры сделал такой метод расширения:

public static void SetStructFields<T>(this ComboBox cb) where T : struct
{
cb.Items.Clear();

DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("NAME");

var type = typeof(T).GetMembers();
int i = 0;
foreach (var str in type)
{
dt.Rows.Add(new object[]
{
str,
String.Format("({0:000}) {1}", i, str.Name)
});
i++;
}

cb.DataSource = dt;
cb.DisplayMember = "NAME";
cb.ValueMember = "ID";
}
Но появился второй вопрос, как можно теперь применить это в запросе LINQ?
все данные у меня хранятся в Dictionary<uint, SpellEntry> Spell;
Что я имею ввиду: скажем есть такой простенький запрос:

var query = from s in DBC.Spell.Value where s.SpellName == val select s;

как сделать чтобы в запрос вставить переменную из ComboBox
чтобы было что-то на подобии:

var field = ((ComboBox)sender).SelectedValue;
var query = from s in DBC.Spell.Value where s[field] == val select s;

Естественно так как я написал - не работает, по сему и прошу помощи.

И возможно ли вообще присвоение переменной в єтом участке кода:
DBC.Spell.Value where s[field]

Много гуглил но так и не нашел способа реализации данной задачи, возможно ответ очевиден, но ...

Konctantin
01.05.2010, 23:09
пока ничего серьезного не делал, но в последней версии ускорил загрузку программы, теперь ДБЦ читаются быстрее.
Так же должна показываться ошибка, если структура не подходит к ДБЦ файлу.
От нечего делать добавил иконки в SpellFamilyTree

Konctantin
12.05.2010, 01:09
Сделал сравнение спелов, сравнение идет построчно:


http://ru-mangos.ru/attachment.php?attachmentid=357&stc=1&d=1273615752

Konctantin
12.05.2010, 06:41
Есть просьба: залейте кто нибудь ДБЦ с клиентов 112 и 243

MangMan
12.05.2010, 07:27
Вот такая вот ошибка
http://ru-mangos.ru/attachment.php?attachmentid=358&stc=1&d=1273638583
Установлен .NetFramework 4
(Ранние версии NetFramework отсутствуют)

Konctantin
12.05.2010, 07:51
я собираю на 3.5 .NetFramework, попробуйте установить его.
Да и там еще библиотека для работы с базой данных, вы ее скачали?
http://github.com/LordJZ/spellwork_cs/blob/master/SpellWork/bin/Release/MySql.Data.dll

Konctantin
12.05.2010, 14:28
Реализован дополнительный фильтр, теперь можно выбрать поле и задать ему значение. Фильтр можно использовать самостоятельно и с основным фильтром.

http://ru-mangos.ru/attachment.php?attachmentid=359&stc=1&d=1273663590

Спасибо всем за идеи, жду новых пожеланий.

crAwling
12.05.2010, 14:41
Можно ли прок перенести в спел прок ивент, как было ранее сделано в старом спелл ворке?
И не могу разобраться, как выбрать маску для прока?

Konctantin
12.05.2010, 14:44
поподробней пожалуйста, что и для чего

Gerald
12.05.2010, 14:55
DBC 1.12.1 5875 enGB (http://filebeam.com/37c20b99cb84178176e76e14083324a4)

crAwling
12.05.2010, 16:39
поподробней пожалуйста, что и для чего

360

Вот так было сделано в старом спелл-ворке от Честера, было очень удобно.

Konctantin
12.05.2010, 16:43
Можно на словах - что оно дает, я картинку вижу, и видел такое наяву но для чего оно понятия не имею.

crAwling
12.05.2010, 17:00
Ну к примеру, мне нужно, чтобы спелл прокал только от другого спелла, делалось ето выбором необходимой маски + тут же сразу и прокфлаг и прок екс (у Вас они почему-то отдельно, не удобно-же) и получить необходимый прок. в Вашем спелл-ворке маску выбрать вообще нельзя

Konctantin
12.05.2010, 17:09
хм... будет сделано

Warlord123
13.05.2010, 09:06
Еще было бы замечательно сделать расшифровку атрибутов по данным SharedDefines.h. и тд.
Например :
Attributes 0x00040010 (ATTR_UNK4 ,ATTR_UNK18 )
Ex 0x00000000
Ex2 0x20000004 (SPELL_ATTR_EX2_CANT_REFLECTED ,ATTR_EX2_CANT_CRIT )

Для аур:
Aura (029) SPELL_AURA_MOD_STAT, value = 600, misc = 1 (Agility), miscB = 0, periodic = 0

Aura (189) SPELL_AURA_MOD_RATING, value = 700, misc = 917504 (CR_HASTE_MELEE , CR_HASTE_RANGED , CR_HASTE_SPELL ), miscB = 0, periodic = 0

Konctantin
13.05.2010, 15:26
Ауры и Атрибуты готовы.
По поводу аур, я просто выделил такой участок кода:

switch (aura)
{
case AuraType.SPELL_AURA_MOD_STAT: sb.Append((UnitMods)mod); break;
case AuraType.SPELL_AURA_MOD_RATING: sb.Append((CombatRating)mod); break;
case AuraType.SPELL_AURA_ADD_FLAT_MODIFIER:
case AuraType.SPELL_AURA_ADD_PCT_MODIFIER: sb.Append((SpellModOp)mod); break;

// todo: more case
default: sb.Append(mod); break;
}


Теперь сюда можно добавлять обработчики для видов аур, в общем какие надо добавить - пишите.

Konctantin
13.05.2010, 18:38
Можно ли прок перенести в спел прок ивент, как было ранее сделано в старом спелл ворке?
И не могу разобраться, как выбрать маску для прока?

Готово, но необходимо проверить все ли так.

crAwling
13.05.2010, 21:50
Готово, но необходимо проверить все ли так.

Спасибо больше :) то, что нужно
Я бегло протестил, очень удобно, глюков не увидел

update:
заметил 1 ошибку, когда делаешь прок и спеллворк (? могу ошибаться) подгружает с базы уже имеющийся, он подгружает не тот, что есть на самом деле. проверил раза 2, менял -> перезаписывал и показывал старый

Konctantin
14.05.2010, 14:09
поправлено в http://github.com/LordJZ/spellwork_cs/commit/4b89aff17145941fb1476a668b610bfa95044626

crAwling
14.05.2010, 20:15
Мб стоит сделать лимит выводимых спеллов, и чтобы его менять можно было? Т.к. прога иногда крашится из-за етого

И, Konctantin, не подскажите ли откуда взять Skill?
Skill (Id 373) "Enhancement", как пример
а, query.First().skillLineAbility.Value; - нашел)
можно по нему тоже сделать фильтр?

Konctantin
15.05.2010, 00:08
можно по нему тоже сделать фильтр? можно
Мб стоит сделать лимит выводимых спеллов, и чтобы его менять можно было? Т.к. прога иногда крашится из-за етого
нет, я сделаю через виртуальный режим
И, Konctantin, не подскажите ли откуда взять Skill?
Skill (Id 373) "Enhancement", как пример
а, query.First().skillLineAbility.Value; - нашел)
Он выбирается в нескольких местах, это смотря для чего он вам нужен.

А пока добавил небольшие всплывающие подсказки в SpellFamilyTree и оптимизировал парсинг данных SpellProcEvent

Konctantin
15.05.2010, 03:17
Сделал списки с использованием виртуального режима, теперь даже полный список спелов выводится моментально.

virusav
15.05.2010, 11:18
Было бы неплохо сделать в блоке Spell Filter напротив каждого списка поле для ввода значения параметра.
Об этом я и писал в аську, тогда Advanced Filter будет не нужен, должно быть удобнее.

Например, выбрали эффект запуск такси, ввели в поле напротив номер и получили спелл.

Если есть возможность, было бы неплохо сортировать в списках Spell Filter названия по алфавиту, т.к. поиск все равно удобнее делать по названиям, а не по кодам + возможность сортировки в таблице найденных спеллов по коду или названию.

virusav
15.05.2010, 11:34
Скачал последнюю версию: после поиска первого спелла второй можно найти только нажатием на Search, но при его выделении не обновляется информация о спелле, остается от предыдущего.

crAwling
15.05.2010, 15:15
можно

нет, я сделаю через виртуальный режим

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

А пока добавил небольшие всплывающие подсказки в SpellFamilyTree и оптимизировал парсинг данных SpellProcEvent

Нужен для фильтра поиска он.

Konctantin
15.05.2010, 20:46
ну надо добавлять отдельный так как как ключевое поле не спелл, и надо делать левое соединине и отдельную выборку между колекциями.

Вышеуказаный баг поправлен

crAwling
17.05.2010, 21:56
Заметил баг, выбераю флаг
PROC_FLAG_ON_DO_PERIODIC = 0x00040000, // 18 Successful do periodic (damage / healing, determined from 14-17 flags)
а получаю вместо 40к - 80к

Konctantin
17.05.2010, 22:31
Спасибо, поправлено в http://github.com/LordJZ/spellwork_cs/commit/4e8cc49fb1b80b036719ac80c13eab6b7f4457e1

crAwling
18.05.2010, 13:35
Еще заметил ошибку в автоопределении прок флагов, все флаги смещены на 1 вверх.

Konctantin
23.05.2010, 11:40
Спасибо, поправлено в http://github.com/LordJZ/spellwork_cs/commit/930eb9c2834741a4c6bc569283b9dd2a3dd9679b

Hellpower
23.05.2010, 22:43
Спасибо, поправлено в http://github.com/LordJZ/spellwork_cs/commit/930eb9c2834741a4c6bc569283b9dd2a3dd9679b
залейте, пожалуйста, уже скомпиленую прогу, чет с патчами этими разобратся немогу :resent:

LordJZ
23.05.2010, 22:50
залейте, пожалуйста, уже скомпиленую прогу, чет с патчами этими разобратся немогу :resent:Последняя версия всегда здесь: http://github.com/LordJZ/spellwork_cs/raw/master/SpellWork/bin/Release/SpellWork.exe

Hellpower
23.05.2010, 23:16
Последняя версия всегда здесь: http://github.com/LordJZ/spellwork_cs/raw/master/SpellWork/bin/Release/SpellWork.exe
для тринити подойдет?

NeatElves
23.05.2010, 23:25
А что, там дбц особенные ?)

LordJZ
23.05.2010, 23:35
Клиентская часть пойдет, про серверную не спрашивайте.

Konctantin
24.05.2010, 08:31
залейте, пожалуйста, уже скомпиленую прогу, чет с патчами этими разобратся немогу
какими патчами? вы что никогда не пользовались репозитарием?

seirge
28.05.2010, 15:51
В коде ошибка при выводе SpellClassMask у эффектов (и в результате некорректно показываются аффекты.


diff --git a/SpellWork/Spell/SpellInfo.cs b/SpellWork/Spell/SpellInfo.cs
index f9f4a5a..f016e69 100644
--- a/SpellWork/Spell/SpellInfo.cs
+++ b/SpellWork/Spell/SpellInfo.cs
@@ -255,9 +255,9 @@ namespace SpellWork

switch (i)
{
- case 0: ClassMask[0] = spell.EffectSpellClassMaskA[i]; break;
- case 1: ClassMask[1] = spell.EffectSpellClassMaskB[i]; break;
- case 2: ClassMask[2] = spell.EffectSpellClassMaskC[i]; break;
+ case 0: ClassMask = spell.EffectSpellClassMaskA; break;
+ case 1: ClassMask = spell.EffectSpellClassMaskB; break;
+ case 2: ClassMask = spell.EffectSpellClassMaskC; break;
}

if (ClassMask[0] != 0 || ClassMask[1] != 0 || ClassMask[2] != 0)

ispanec
13.06.2010, 09:33
Это очепятка?

public static class MySQLConneNct

spellwork_cs/SpellWork/DataBase/MySQLConneNct.cs

Vipertv
18.06.2010, 18:14
Может лучше не выходить из цикла в AppendSpellEffectInfo при текущем эффекте равным NO_SPELL_EFFECT. Ведь бывают спелы у которых первый эффект NO_SPELL_EFFECT, а остальные эффекты не отображаются. Можно посмотреть на примере http://www.wowhead.com/spell=46584 или http://www.wowhead.com/spell=66.

diff --git a/SpellWork/Spell/SpellInfo.cs b/SpellWork/Spell/SpellInfo.cs
index 740eca3..e4c01ff 100644
--- a/SpellWork/Spell/SpellInfo.cs
+++ b/SpellWork/Spell/SpellInfo.cs
@@ -220,7 +220,7 @@ namespace SpellWork
if ((SpellEffects)spell.Effect[EFFECT_INDEX] == SpellEffects.NO_SPELL_EFFECT)
{
rtb.AppendFormatLine("Effect {0}: NO EFFECT", EFFECT_INDEX);
- return;
+ continue;
}

rtb.AppendFormatLine("Effect {0}: Id {1} ({2})", EFFECT_INDEX, spell.Effect[EFFECT_INDEX], (SpellEffects)spell.Effect[EFFECT_INDEX]);

LordJZ
18.06.2010, 19:15
Спасибо, закоммитил, но забыл автора указать, указал комментарием.

Konctantin
18.06.2010, 22:14
срочно нужны dbc 2.4.3

Стартонул еще 3 ветки (0.06, 0.12 и 400) хочу, подогнать и проверить как будет работать.

guma
19.06.2010, 00:18
dbc 2.4.3

_enGB (http://filebeam.com/3e1ea440fc68671e0c66df71f541701a)

daemod
30.07.2010, 16:26
есть токаяже программа только для 2.4.3?

Konctantin
30.07.2010, 16:30
в репозитарии есть ветка, только не работает, надо структуру подправить, но вот пока не тянет туда
http://github.com/LordJZ/spellwork_cs/commit/a1db3b4b6470dcae55951b1bac44d860d6ab2f9b - надо немного подправить, а то крашится при запуске

zergtmn
01.08.2010, 22:56
http://paste2.org/p/935654

LordJZ
01.08.2010, 23:25
Добавлено: http://github.com/LordJZ/spellwork_cs/commit/135da8f1ec7ee25e50585a9c125a8004dca36c96
Спасибо.

Konctantin
02.08.2010, 18:41
а я переделал по своему (http://github.com/LordJZ/spellwork_cs/commit/9983d861a90e8c8a73aed9ca522690b281252549).... :)

по делу:
поправил структуру в ветке 0.12 (http://github.com/LordJZ/spellwork_cs/commit/209aed92eaf6adb0c6268faeecd19b722074965f), теперь все работает.

zergtmn
02.08.2010, 18:48
Добавьте эффекты 163 и 164, а то про них никто не знает :)

Konctantin
02.08.2010, 19:39
Добавьте эффекты 163 и 164, а то про них никто не знает :)

не понял, это как?

virusav
02.08.2010, 21:15
SPELL_EFFECT_163 = 163,
SPELL_EFFECT_164 = 164
Видимо, речь идет о том, чтобы данные эффекты отображались в программе.

Konctantin
02.08.2010, 21:22
так вот и вопрос, а что за эффекты? и что там должно быть?

Добавил енумы (http://github.com/LordJZ/spellwork_cs/commit/d293181df11e05be8376b2ca5803c3dd6b87b1e0)

Konctantin
02.08.2010, 22:44
Хотелось бы узнать, по какому принципу идет распределение в новой спелл прок системе:

`SpellFamilyMaskA0` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskA1` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskA2` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskB0` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskB1` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskB2` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskC0` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskC1` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskC2` int(10) UNSIGNED NOT NULL DEFAULT 0 ,

раньше это был массив из 3 элементов, а сейчас это 3 массива по 3 элемента.

Как теперь распределять значения по маске?

Neverdie
03.08.2010, 02:41
на счет этого я бы посоветовал бы словить Коса
или поглядеть у нас
с этими вещами решаюца очень много спелов и талантов ну очень много

KiriX
03.08.2010, 09:29
Хотелось бы узнать, по какому принципу идет распределение в новой спелл прок системе:

`SpellFamilyMaskA0` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskA1` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskA2` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskB0` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskB1` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskB2` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskC0` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskC1` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
`SpellFamilyMaskC2` int(10) UNSIGNED NOT NULL DEFAULT 0 ,

раньше это был массив из 3 элементов, а сейчас это 3 массива по 3 элемента.

Как теперь распределять значения по маске?
Присоединяйся! http://ru-mangos.ru/showthread.php?p=11891#post11891
Бе-бе-бе - а я раньше спросил! =)))

Lordronn
06.08.2010, 01:03
Добавь пожалуйста поиск по power display, это облегчило бы поиск спеллов для вехиклов в ЦЛК, к примеру пушки(спеллы для пушек имеют power display) абома у профессора. В улдуаре у вехиклов есть пар, и спеллы у вехиклов имеют power display

LordJZ
06.08.2010, 01:06
Оно есть в Advanced Filter

randle
10.08.2010, 15:31
Патчь - немного грамматики.

Поправил все, что считал нужным; если будут вопросы - почему там-то такая-то формулировка - спрашивайте, отвечу.

В патчь не вошли 2 мысли:
- в главной форме обращаются к ресурсу по имени:
lvi.ImageKey = str.SkillId != 0 ? "plus.ico" : "munus.ico";, тут было бы более уместно имя ресурса "minus.ico".

- в главной форме вперемешку попадаются лексемы, со словами Advanced и Advansed. Грамотнее было бы переименовать все в Advanced*.
В патчь вносить не стал, ибо имен таких там очень много, ссылок друг на друга тож немеряно. Лучше имея на руках цельный свежий код единолично пройтись поиском и сделать refactoring-rename, а потом все закоммитить.






очень немного грамматики

PSZ
12.08.2010, 09:07
Предложение новой фичи: поиск по диапазону номеров спеллов. Например, вводишь в "ID or Name" 50000-51000 - выдает все спеллы с номерами от 50000 до 51000.

randle
12.08.2010, 13:46
Предложение новой фичи: поиск по диапазону номеров спеллов. Например, вводишь в "ID or Name" 50000-51000 - выдает все спеллы с номерами от 50000 до 51000.

Вот он patch. Пытался сделать поиск по диапазону вида: "123-321" по spell.ID и spell.SpellIconID.

Если понравится - могу развить эту мысль, чтобы можно было задавать диапазоны вида: "123-321, 25, 64, 5550-6891".

Сразу скажу, как реализовывал бы такое. Добавил бы некий класс xCondition, сценарий использования которого выглядел бы приблизительно как:


private void AdvancedSearch()
{
string name = _tbSearchId.Text;
xCondition id = new xCondition(name);
xCondition ic = new xCondition(_tbSearchIcon.Text);
uint at = _tbSearchAttributes.Text.ToUInt32();

_spellList = (from spell in DBC.Spell.Values

where (
id.Matches(spell.ID) && ic.Matches(spell.SpellIconID)

&& (at == 0 || (spell.Attributes & at) != 0
|| (spell.AttributesEx & at) != 0
|| (spell.AttributesEx2 & at) != 0
|| (spell.AttributesEx3 & at) != 0
|| (spell.AttributesEx4 & at) != 0
|| (spell.AttributesEx5 & at) != 0
|| (spell.AttributesEx6 & at) != 0
|| (spell.AttributesExG & at) != 0))

&& ((id.IsSet || ic.IsSet && at != 0) || spell.SpellName.ContainsText(name))

select spell).ToList();

_lvSpellList.VirtualListSize = _spellList.Count();
if (_lvSpellList.SelectedIndices.Count > 0)
_lvSpellList.Items[_lvSpellList.SelectedIndices[0]].Selected = false;
}

Konctantin
13.08.2010, 01:41
это не выход, надо писать собственный конструктор запросов, пока не тянет его писать, да и прок систему, придумал как сделать, а вот писать неохота.

Lordronn
22.08.2010, 02:23
Не работает Advanced Filter, вернее поиск в нем по Target Aura Spell. Выбираю таргет аура спелл, вписываю Ид спелл(70002, есть спелл, у которого таргет аура спелл - 70002 -- 69674), жму ентер, и ничего. Жму еще раз и выводит список всех спеллов.

LordJZ
22.08.2010, 02:39
Не работает Advanced Filter, вернее поиск в нем по Target Aura Spell. Выбираю таргет аура спелл, вписываю Ид спелл(70002, есть спелл, у которого таргет аура спелл - 70002 -- 69674), жму ентер, и ничего. Жму еще раз и выводит список всех спеллов.У 69674 Exclude Target Aura Spell = 70002, Target Aura Spell = 0

Lordronn
22.08.2010, 02:44
Это я знал, просто надо было проверить, есть ли еще спеллы с таргет аура спелл 70002. У меня не получилось поискать. Использую последний спеллворк, из вашего репозитория. Не раскроете премудрости поиска?

LordJZ
22.08.2010, 02:50
Вы не поверите, но спеллов с Target Aura Spell = 70002 нет! Перечитайте мой предыдущий пост.

KiriX
22.08.2010, 10:23
К сожалению, так и не реализованы новые проки... С нетерпением ждём!

PSZ
20.09.2010, 15:10
Up насчет новых проков... :blush:

Konctantin
20.09.2010, 15:47
Будут, возможно даже на этой неделе...

VitRus
06.10.2010, 08:22
А можно Актуальную на сегодняшний день версию этой проги...

virusav
06.10.2010, 09:20
Зайди в репозитарий по ссылке из первого поста и скачай экзешник и длл.

TOM_RUS
07.10.2010, 18:41
Начал обновлять тулзу под 4.0.3, в данный момент насчитывается 73 ошибки компиляции.

LordJZ
07.10.2010, 19:13
Там Konctantin обещал сделать новую прок систему когда-то

Konctantin
07.10.2010, 19:13
Возможно так же стоит подключить и чтение *.db2...
Там Konctantin обещал сделать новую прок систему когда-то
робота в первую очередь...

TOM_RUS
08.10.2010, 04:35
Собственно патч для 4.0.3.13117: http://paste2.org/p/1025135. Частично работает, особо не тестировалось.

Konctantin
08.10.2010, 17:52
спасибо, http://github.com/LordJZ/spellwork_cs/commit/c0ca56c856dfc8e143060e850149bbb7c05ec345

ЗЫ. Простите, но что-то не получилось указать автора :(

Fmut
09.10.2010, 18:51
Скачал скопиленные с гита, в папку dbc положил дбц от 3.3.5а клиента, dll файл тоже присутсвует, почему ошибка такая, какой файл найти не может?

TOM_RUS
09.10.2010, 19:18
Скачал скопиленные с гита, в папку dbc положил дбц от 3.3.5а клиента, dll файл тоже присутсвует, почему ошибка такая, какой файл найти не может?

.NET Framework 3.5+ не установлен?

Lordronn
09.10.2010, 19:36
Почему бы не показывать спелл диффикл. К примеру сделал поиск по заклинанию ИД 1, нажал на него, а слева написан Ид спелла и ИД этого спелла для разных уровней сложности.

ID_10N - 1 Слово Возвращения (OLD)
ID_25N - 2 Слово Возвращения (OLD)
ID_10H - 3 Слово Возвращения (OLD)
ID_25H - 4 Слово Возвращения (OLD)
=================================================
Category = 0, SpellIconID = 1, activeIconID = 0, SpellVisual = (0,0)
Family SPELLFAMILY_GENERIC, flag 0x00000000 00000000 00000000



Эффект 77 - EffectMiscValue в списке написан так, а в описании спелла у него есть еще буковка а, т.е - EffectMiscValueA. В списке эта буква отсутствует.

Konctantin
09.10.2010, 20:08
В списке эта буква отсутствует.
Все потому, что такое имя у поля структуры, так оно написано и в коде мангоса...

Fmut
10.10.2010, 09:50
TOM_RUS стоит 4.0 это Win 2008 R2 x64

Konctantin
10.10.2010, 09:56
а попробуйте самостоятельно скомпилировать проэкт, может проблема в розрядности?

Fmut
11.10.2010, 12:24
а попробуйте самостоятельно скомпилировать проэкт, может проблема в розрядности?

Собрал под .NET 4.0, пришлось 3гб студии слить правда )))

Konctantin
11.10.2010, 12:50
ну он и под 3.5 собирается

zergtmn
14.10.2010, 16:45
Можно вас попросить добавить отсутствующие типы таргетов? http://paste2.org/p/1036814

LordJZ
17.10.2010, 17:38
Можно вас попросить добавить отсутствующие типы таргетов? http://paste2.org/p/1036814Добавил, спасибо: http://github.com/LordJZ/spellwork_cs/commit/ee890018063b80f8be71ad838b0ece7c29c2b6df

Также, для особо страждущих версии для классик клиента, существует рабочий бранч 0.6, поддержка добавлена буквально недавно: http://github.com/LordJZ/spellwork_cs/commit/2af7e7550f903e848f7b238bd43dcd6ff7cb79e3
Готовый бинарник из 0.6 ветки под любую архитектуру и .NET 3.5: http://github.com/LordJZ/spellwork_cs/raw/master/SpellWork/bin/Release/SpellWork.exe

Fmut
17.10.2010, 18:21
а под 4.0.1 / 4.0.3 ?

NeatElves
17.10.2010, 18:49
а под 4.0.1 / 4.0.3 ?

Переключите в бранч 400 и удивляйтесь...

rsa
17.10.2010, 19:59
TARGET_94 можно уже обозвать TARGET_OWNED_VEHICLE

Lordronn
21.10.2010, 16:16
Будет ли поддержка 4.0.1 или нет? На данный момент есть 4.0.3, но структуру ДБС не соответствует 4.0.1.

TOM_RUS
21.10.2010, 19:16
Будет ли поддержка 4.0.1 или нет? На данный момент есть 4.0.3, но структуру ДБС не соответствует 4.0.1.

Там разница минимальная.

Warlord123
30.10.2010, 13:55
Иногда бывает необходимо получить таблицу заклинаний в виде SQL.
Есть конвертеры dbc в CSV , dbc в SQL. К сожалению, на выходе получается только заготовка, использовать которую достаточно затруднительно. В выходных файлах нет заголовков полей, их типов.
Кроме того, dbc2sql.exe путает типы полей, в итоге выходной файл не полностью соответствует действительности.

Предлагаю патч для добавления функционала по выгрузке заклинаний в SQL скрипт.

Данные для скрипта строятся динамически на основе структуры SpellEntry.
При добавлении новых типов данных (не полей) в SpellEntry , код потребует некоторой доработки.
Часть сформированного скрипта:

CREATE TABLE spells (
ID INT(10) UNSIGNED NOT NULL DEFAULT 0,
Category INT(10) UNSIGNED NOT NULL DEFAULT 0,
Dispel INT(10) UNSIGNED NOT NULL DEFAULT 0,
Mechanic INT(10) UNSIGNED NOT NULL DEFAULT 0,
Attributes INT(10) UNSIGNED NOT NULL DEFAULT 0,
AttributesEx INT(10) UNSIGNED NOT NULL DEFAULT 0,
AttributesEx2 INT(10) UNSIGNED NOT NULL DEFAULT 0,
AttributesEx3 INT(10) UNSIGNED NOT NULL DEFAULT 0,
AttributesEx4 INT(10) UNSIGNED NOT NULL DEFAULT 0,
AttributesEx5 INT(10) UNSIGNED NOT NULL DEFAULT 0,
AttributesEx6 INT(10) UNSIGNED NOT NULL DEFAULT 0,
AttributesExG INT(10) UNSIGNED NOT NULL DEFAULT 0,
Stances INT(20) UNSIGNED NOT NULL DEFAULT 0,
StancesNot INT(20) UNSIGNED NOT NULL DEFAULT 0,
Targets INT(10) UNSIGNED NOT NULL DEFAULT 0,
TargetCreatureType INT(10) UNSIGNED NOT NULL DEFAULT 0,
RequiresSpellFocus INT(10) UNSIGNED NOT NULL DEFAULT 0, .....

Konctantin
30.10.2010, 15:11
можно доработать, чтоб выгружать все используемые дбц.
предоставить список выбора пользователю, а таблицы называть именем структуры или как угодно...

Warlord123
30.10.2010, 17:06
Сделаю. Тогда займу следующую страничку в tabControl. :) И сделаю настройки экспорта.

LordJZ
30.10.2010, 17:10
Зачем изобретать велосипед? И SpellWork это программа для работы со спеллами (внезапно!), а не комплекс для работы с DBC

TOM_RUS
30.10.2010, 20:25
Зачем изобретать велосипед? И SpellWork это программа для работы со спеллами (внезапно!), а не комплекс для работы с DBC

Тем более что уже есть тулзы (http://mywowtools.googlecode.com/svn/trunk/DBC%20Viewer/) для экспорта dbc в sql.

KiriX
31.10.2010, 15:32
Но с другой стороны, к чему иметь 43 программы, когда можно совместить в одной, наиболее удобной и часто используемой ;)

virusav
31.10.2010, 15:57
Не надо распыляться на все подряд, программа для работы со спеллами, надо в этой области добить по-максимуму.
Если не ошибаюсь, то новая прок-система до сих пор не реализована.

Когда программа будет полнофункциональной, тогда уже желающие от нечего делать могут заняться ее модернизацией.:)

LordJZ
31.10.2010, 16:03
Я сижу на XP, и все работает нормально, так что траблы на вашей стороне.У меня на WinXP программа выполняла один цикл отрисовки за 3-4 минуты, каждый раз читая файл.Но с другой стороны, к чему иметь 43 программы, когда можно совместить в одной, наиболее удобной и часто используемой ;)И получите вы Nero, или ACDSee, или Opera.

Insider42
06.11.2010, 23:10
Что-то с масками школ напутано во вкладке Spell proc event, допустим HOLY считается как 0x04, а в мангосе она вообще другая :/ по-моему инфа устарела, так ещё и заменяет новым значением вместо сложения в случае когда у нас уже отмечен, допустим Holy и Nature, мы тыкаем пару раз на HOLY и выдает неверный подсчет.

Также нехватает ещё одного procEx, который не так давно добавили

LordJZ
06.11.2010, 23:22
По поводу проков пилите шура^W Konctantin-а.

Lordronn
08.12.2010, 21:16
Не могли бы Вы починить поиск по BasePointEffect(67) Ищет спеллы не совсем верно. Ввожу в поиск БП 10, а находит он

=================================================
Effect 0: Id 58 (SPELL_EFFECT_WEAPON_DAMAGE)
BasePoints = 11 + Level * 2,00
Targets (6, 0) (TARGET_CHAIN_DAMAGE, NO_TARGET)

Effect 1: NO EFFECT

Effect 2: NO EFFECT

virusav
08.12.2010, 21:17
Попробуй искать значение на 1 меньше, не раз помогало.
10 + 1 => BasePoints = 11 ...

Lordronn
08.12.2010, 21:24
Спасибо! Проблема возникает наверно из-за того,что есть БП 0, и в представлении программы БП0 - 1, БП1 - 2 и т.д

LordJZ
08.12.2010, 21:39
Нет, в клиенте данные так хранятся, см. DBCStructure.h, struct SpellEntry

virusav
08.12.2010, 22:01
int32 CalculateSimpleValue(SpellEffectIndex eff) const { return EffectBasePoints[eff] + int32(1); }

Lordronn
10.12.2010, 12:16
Добавьте пожалуйста поиск по pereodic. Очень бы помогло искать аура с определенным временем тика

Konctantin
10.12.2010, 13:22
Зачем? он и так там есть,
Выбираете колонку EffectAmplitude в дополнительном фильтре, задаете ей значение и будет вам счастье.

LordJZ
20.03.2011, 23:37
Пришел мне на почту патчик, добавляющий тип сравнения для Advanced Filter. Спасибо автору!

https://github.com/LordJZ/spellwork_cs/commit/0e18c6aedbef4dd539e90b8215b2949b5afac91a

Скомпиленный бинарник где и всегда.

Lordronn
28.03.2011, 22:23
Изменение функции проверки подключения на булевую. Замена некоторых 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);

TOM_RUS
28.03.2011, 22:35
Ну тогда уж надо было делать Connected() свойством, а не методом

public static bool Connected
{
get
{
// insert code here
}
}

Konctantin
29.03.2011, 01:53
По поводу LINQ, их вообще надо прибить, а использовать обычные циклы for, так как LINQ работают в 3-4 раза медленней чем обычные циклы.
foreach - работает в 1,5 раза медленней чем for

Йоха
29.03.2011, 12:02
По поводу LINQ, их вообще надо прибить, а использовать обычные циклы for, так как LINQ работают в 3-4 раза медленней чем обычные циклы.
foreach - работает в 1,5 раза медленней чем for

На rsdn.ru был эпичный флейм на эту тему, по тестам в некоторых частных случаях LINQ медленнее нэйтивного кода раз в 100 или что-то вроде этого (могу наврать давно читал).
Но! как всегда у каждой медали есть обратная сторона. Инструменты подобные LINQ сокращают время написания программ и если быстродействие не критично то почему бы и не использовать.

Konctantin
29.03.2011, 12:16
Ну в нашем случае, это скорость работы фильтров, и скорость тут имеет значение.

LordJZ
05.04.2011, 18:02
Добавил поддержку SpellDifficulty.dbc, немного переработал типы сравнения Advanced Filter. Теперь AndStrict — это строгая проверка установленности указаных битов на 1, а And проверяет на хотя бы один установленный бит.

Последние бинарники для версии 3.3.5а как всегда в том же месте:
https://github.com/LordJZ/spellwork_cs/raw/master/SpellWork/bin/Release/SpellWork.exe
https://github.com/LordJZ/spellwork_cs/raw/master/SpellWork/bin/Release/MySql.Data.dll

LordJZ
05.04.2011, 18:19
Также обновлена века 400 (работает с 4.0.3—4.0.6 билдами). Есть какие-либо предложения по ней?

https://github.com/LordJZ/spellwork_cs/raw/400/SpellWork/bin/Release/SpellWork.exe
https://github.com/LordJZ/spellwork_cs/raw/400/SpellWork/bin/Release/MySql.Data.dll

TOM_RUS
07.04.2011, 11:52
По поводу LINQ, их вообще надо прибить, а использовать обычные циклы for, так как LINQ работают в 3-4 раза медленней чем обычные циклы.
foreach - работает в 1,5 раза медленней чем for


It's not that "LINQ is slow" per se, rather, it is that most LINQ scenarios create some kind of collection pressure, either by allocating an iterator, or because Join is building a table behind the scenes, or whatever. We have large, long-lived, complex data structures and we're concerned about triggering too many collections.


http://channel9.msdn.com/Shows/Checking-In-with-Erik-Meijer/Checking-In-Eric-Lippert-On-Compiler-Evolution-Designing-C-and-Blogging#c634377386510000000

Chameleon
10.04.2011, 11:49
Я пофиксил несколько мелких багов в Spell Proc Event странице. Коммит (https://github.com/SkyFire/spellwork_cs/commit/d92eba5d6827f02f40ce26c6e1c6f2613e275366). Там в форке еще несколько мелких фиксов, не знаю приглянется что или нет.

Lordronn
30.04.2011, 11:07
Версия 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_SelectedIndexChan ged(Object sender, EventArgs e)
at System.Windows.Forms.ComboBox.OnSelectedIndexChang ed(EventArgs e)
at System.Windows.Forms.ComboBox.set_SelectedIndex(In t32 value)
at System.Windows.Forms.ListControl.set_SelectedValue (Object value)
at SpellWork.FormMain.SetProcAtribute(SpellEntry spell)
at SpellWork.FormMain._lvProcSpellList_SelectedIndexC hanged(Object sender, EventArgs e)
at System.Windows.Forms.ListView.OnSelectedIndexChang ed(EventArgs e)
at System.Windows.Forms.ListView.WmReflectNotify(Mess age& m)
at System.Windows.Forms.ListView.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

AlexBolotsin
10.05.2011, 03:28
Я немного поковырял SpellWork и добавил кнопочку загрузки dbc из любой папки. Несколько криво вышло, да и много лишнего, но лично я доволен тем, что я достиг задачи.

Буду рад заняться Spell Work'ом. И наконец-то таки сделать его всеядным по отношению к DBC разных версий.
Знаю, что такое делегаты и ивенты. Начал изучать LINQ, но пока лишь => - освоен. Слаб в работе с WinForms, но учусь быстро :)

ЗЫ В планах сделать порт под Mono.

Аддед: вышел чуточку некропостинг, но вдруг автору всё ещё интересен этот проект.

Added: можно поглазеть что вышло на релизе.

AlexBolotsin
10.05.2011, 12:51
Таки удалось не только запустить готовый exe под моно, но и скомпилить, однако появилась проблема с System.Deployment. Думаю для повышения навыка переписать GUI под wxWidget или gtk

Konctantin
10.05.2011, 13:00
учите WPF здался вам этот МОНО...

AlexBolotsin
10.05.2011, 19:00
К великому сожалению он не сильно кроссплатформенный. Да, запустить можно, но это не его заслуга, а скорее 3rd party разрабов.

Можете сравнивать это с полит. убеждениями :)

Да и что там этот WPF, написать более менее годный интерфейс я смогу, а в GUI-dev я не стремлюсь.

Sid
10.05.2011, 22:34
:) Qt в плане кроссплатформенности лучше)
http://ru-mangos.ru/showthread.php?t=3501 конечно не фонтан функционал как у Константина, но основное есть и собирается под разными платформами :)
Надо было вставить же 5 копеек своего детища :)

Burned
18.06.2011, 09:30
Есть интересный спел Running Wild (рассовая способность у воргенов бегать).
http://www.wowhead.com/spell=87840
На вовхеде показывает 3 эффекта, а в спелворке всего лишь 2. Где здесь загвоздка? :)

Использовал этот бинарник http://ru-mangos.ru/showpost.php?p=20665&postcount=146

Warlord123
27.09.2011, 19:21
Добработал SpellWork до загрузки спелов из таблицы spell_dbc.
Исходники и двоичный файл лежат по ссылке https://github.com/Warlord123/spellwork_cs .

Кроме того, обновлены атрибуты заклинаний, названия аур.
Увеличил объем информации в аурах и спелл-эффектах.
Добавлена информация о стоимости заклинания в рунах ДК.
Добавлена загрузка о зоне, в которой можно использовать заклинание (Взято из репозитория Shauren).

В планах сделать формирование sql-запросов изменных заклинаний в таблицу spell_dbc . Пока программа формирует
данные для функционала DBC_Patcher http://ru-mangos.ru/showthread.php?t=1544 .
Редактор \ эксплорер спелов находиться на последней закладке программы.

Во вложенном файле скомпилированная программа.

Warlord123
28.09.2011, 18:47
Добавил формирование SQL запроса в таблицу .
Исходники программы находятся в репозитории из моего последнего сообщения, скомпилированный исполняемы файл в архиве.

В конце формируемого запроса программа в комментариях к SQL программа выдает список полей. которые не найдены в структуре SpellEntry . (Если все нормально, то в этом списке должно быть только поле Comment).

Сопоставление идет по именам столбцов при загрузке из таблицы spell_dbc и при формировании SQL. Изменение структуры таблицы изменяет число загружаемых\сохраняемых столбцов.

Об ошибках прошу сообщать сюда :).

Warlord123
02.10.2011, 21:40
Поправил enum CombatRating и отображение механик для ауры SPELL_AURA_MECHANIC_IMMUNITY_MASK.
В первом приближении починил загрузку данных о проках спелов во вкладку Spell Prc Event.
Формируемый этой вкладкой sql запрос теперь тоже правильно формирует данные spell proc event для первого эффекта заклинания.

Обновленный исполняемый файл содержиться во вложении.

Warlord123
05.10.2011, 18:50
Обновил немного атрибутов спелов.
Поправил загрузку имен спелов из spell_dbc.
Часть повторяющегося кода вынес в методы.

Warlord123
11.10.2011, 22:18
Добавил расшифровку SpellInterruptFlags флагов и возможность вводить в поля шестнадцатеричные числа в формате 0x....

Warlord123
23.10.2011, 17:53
Исправил сопоставление полей таблицы spell_dbc с полями структуры SpellEntry. Ошибка проявлялась в случае когда в SpellEntry массив был одного размера, а в spell_dbc не было полей, соответствующим всем его элементам. В PropertyGrid была добавлена возможность отображать поля, которым есть соответствие в spell_dbc.
SQL команда для каждого заклинания теперь формируется в виде
Insert`а исходных данных заклинания и оператора Update, в котором видно, какие поля были изменены.

Warlord123
26.10.2011, 22:01
В очередной раз исправил загрузку из spell_dbc. Программа правильно загружала массивы из структуры SpellEntry. А значения простых полей оставались только во временном объекте, а он не попадал в общий список заклинаний.