Procurement Medved Edition[2.0.0]

Обновлено до 1.9.9:
https://github.com/medvedttn/Procurement/releases/tag/1.9.9

-Изменен алгоритм вычисления хеш-функций для предметов на SHA1. Теперь текущие цены подгружаются вне зависимости от окружения (машина/.NET).
Нужно переустановить цены для предметов.
-Обновлена база предметов (Data.xml)
-Добавлена настройка масштабирования окна ("WindowScale") в xml и начальный экран.
-Добавлена кнопка текущей даты/времени, при нажатии добавляет дату в поле Заметки для окна установки цены.
-Добавлен таймер времени от последнего нажатия на кнопку "Апнуть тему".
-Исправлен поиск по камням в фильтрах "Все камни", "Камни с уровнем", "Камни поддержки" - теперь показыват предметы со вставленными камнями.

Procurement Medved Edition:
https://web.poe.garena.ru/forum/view-thread/1606/

medved inside ;)
Last edited by avpttn#6895 on Aug 15, 2015, 2:41:23 PM
"
avpttn wrote:
Обновлено до 1.9.9:
-Изменен алгоритм вычисления хеш-функций для предметов на SHA1. Теперь текущие цены подгружаются вне зависимости от окружения (машина/.NET).


Кстати почему просто не сделать

"
protected abstract string getConcreteHash();


виртуальным и запихнуть

"

string str_hash_data = this.IconURL + this.Name + this.TypeLine + this.DescrText + this.X + this.Y + this.InventoryId;
return getHashSHA1(str_hash_data);


Или вам нравится дублировать код? Или считаете, что эта строка не достаточно уникальна для всех наследников класса item. Кстати не понятно, чем не угодило стандартное переопределение GetHashCode и создание getConcreteHash?
"
avpttn wrote:
Обновлено до 1.9.9:
Теперь текущие цены подгружаются вне зависимости от окружения (машина/.NET).


Что это означает?
Как убрать всю валюту?
"
PanKalgot wrote:

"

string str_hash_data = this.IconURL + this.Name + this.TypeLine + this.DescrText + this.X + this.Y + this.InventoryId;
return getHashSHA1(str_hash_data);


Или вам нравится дублировать код? Или считаете, что эта строка не достаточно уникальна для всех наследников класса item. Кстати не понятно, чем не угодило стандартное переопределение GetHashCode и создание getConcreteHash?


Эта кусок кода из getConcreteHash() для валюты, а не из item. И она неуникальна, т.к. как минимум отсутствует League. Особо времени перекраивать всю архитуктуру и проверять уникальность у меня просто нет).
Привязываться к координатам X,Y не есть хорошо, при перемещении предмета в сундуке уже будет другой хеш. Видимо автор считал что валюту особо не перемещают и не продают.

Стандартная функция GetHashCode не гарантирует один и тот же результат даже при последовательных запусках, не говоря уже о другой версии .NET. Подробнее https://msdn.microsoft.com/en-us/library/system.string.gethashcode.aspx.

Насчет создания getConcreteHash не понял, данная функция переопределяется для каждого конкретного типа предмета (экипировка, гемы, карты, валюта) и уже была изначально реализована, я ее не кодил с нуля.

"
Что это означает?

Если используется Procurement только на одной машине, то ничего. Кто то отписывался, что при переносе всей папки Procurement на работу(т.е. другая машина/версия .NET) перестают загружаться цены из buyouts.xml. Теперь все должно подгружаться нормально.

"
Как убрать всю валюту?

Снимите галку со вкладки сундука, где храните валюту.
Procurement Medved Edition:
https://web.poe.garena.ru/forum/view-thread/1606/

medved inside ;)
"
Эта кусок кода из getConcreteHash() для валюты, а не из item. И она неуникальна, т.к. как минимум отсутствует League. Особо времени перекраивать всю архитуктуру и проверять уникальность у меня просто нет).
Привязываться к координатам X,Y не есть хорошо, при перемещении предмета в сундуке уже будет другой хеш. Видимо автор считал что валюту особо не перемещают и не продают.


Я эту функцию взял из твоего коммита. Зато плюс, нашли баг, что лучше юзать Лигу, чем номер инвентаря.

"
для валюты, а не из item

class Currency : Item

Я просто не знал, что x,y ты не можешь юзать (забыл про buyouts). А так и правду будет эффективнее для каждого типа свой хеш, чем пилить 1 большой общий с проверками на нул.



"
Стандартная функция GetHashCode не гарантирует

Я в том сообщении имел ввиду override, сделай override и будет гарантировать.

"
Кто то отписывался, что при переносе всей папки Procurement на работу(т.е. другая машина/версия .NET) перестают загружаться цены из buyouts.xml.

Я смотрел только ласт коммит ради этой смешной фразы. Различаться могли хеши у анонимных классов, только где есть стринги(разная реализация для x86 и x64) при билде anycpu, по версии - нет, так как ты сбилдил по определенную сборку.

пока разбираешься в функционале проги, можно за это время создать вручную тему и оформить ее :)
При наведении курсором на редкую броню в сундуке "Трупный подбой доспех гладиатора" вылетает ошибка и программа закрывается. На все остальные вещи навожу курсором, ошибка не возникает (специально проверял на всех предметах, что есть в сундуке), только почему то на этом редком доспехе возникает ошибка.
В добавок, приложение намертво зависает при наведение курсором на гадальные карты (примерно на 30 секунд), а потом отвисает.


Код ошибки
Spoiler
[18-08-2015 5:45] Application Version: Procurement 1.9.9
[18-08-2015 5:45]
CurrentCulture: ru-RU
CurrentUICulture: ru-RU
Operating System: Microsoft Windows NT 6.2.9200.0
Current League: Отряды

[18-08-2015 5:45] System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в Procurement.ViewModel.DivinationCardItemHoverViewModel..ctor(Item item)
в Procurement.ViewModel.ItemHoverViewModelFactory.Create(Item item)
в Procurement.ViewModel.ItemDisplayViewModel.<>c__DisplayClass18.<CreateItemPopup>b__15(Object o, MouseEventArgs e)
в System.Windows.Input.MouseEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
в System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
в System.Windows.MouseOverProperty.FireNotifications(UIElement uie, ContentElement ce, UIElement3D uie3D, Boolean oldValue)
в System.Windows.ReverseInheritProperty.FirePropertyChangeInAncestry(DependencyObject element, Boolean oldValue, DeferredElementTreeState treeState, Action`2 originChangedAction)
в System.Windows.ReverseInheritProperty.OnOriginValueChanged(DependencyObject oldOrigin, DependencyObject newOrigin, IList`1 otherOrigins, DeferredElementTreeState& oldTreeState, Action`2 originChangedAction)
в System.Windows.Input.MouseDevice.ChangeMouseOver(IInputElement mouseOver, Int32 timestamp)
в System.Windows.Input.MouseDevice.PreNotifyInput(Object sender, NotifyInputEventArgs e)
в System.Windows.Input.InputManager.ProcessStagingArea()
в System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
в System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
в System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
в System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
в System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
Last edited by Makoto-Ito#1421 on Aug 17, 2015, 7:31:02 PM
"
Makoto-Ito wrote:
При наведении курсором на редкую броню в сундуке "Трупный подбой доспех гладиатора" вылетает ошибка и программа закрывается. На все остальные вещи навожу курсором, ошибка не возникает (специально проверял на всех предметах, что есть в сундуке), только почему то на этом редком доспехе возникает ошибка.
В добавок, приложение намертво зависает при наведение курсором на гадальные карты (примерно на 30 секунд), а потом отвисает.




При наведении на гадальную карту происходит запрос через инет картинки-арта этой карты и сохранение ее в кеше. Возможно инет отключен/заблочен доступ к серверу (вроде раздел "https:\\p7p4m6s5.ssl.hwcdn.net\image\Art\2DItems\Divination\") и подвисает на 30сек таймаута.
Возможно ссылка на RU версии имеет другой формат/отличия.

Оформите баг на GitHub и приложите туда файлы *.bin из папки "NoEmail"(или заархивируйте, залейте куда-нить в облачное хранилище(например Яндекс.Диск) и скиньте мне в ЛС ссылку на архив).
Procurement Medved Edition:
https://web.poe.garena.ru/forum/view-thread/1606/

medved inside ;)
В программе есть функция "Выбран вручную", так вот очень часто при выборе этой опции программа зависает.
В чем может быть причина?
В продаже появился новый питомец, обезьяна!

Report Forum Post

Report Account:

Report Type

Additional Info