Индекс в RequestPreviewItem

Rolo

Верховньій Интерлюд Викинг
Викинги Рулона
Знаток Diablo
Орден Непоколебимого Компаса
Победитель в номинации 2023
Старожил I степени
Признанный автор
Знаток Lineage2
Разработчик
За знание датапака
За знание ядра
Просветитель
Медаль Благодарности
За заслуги перед форумом
Преподаватель
За веру и верность форуму
Веселый флудер
Медаль за активность на Форуме
Клиент разработчик
Магистр реакций
Стальной Визионер
Знаток письма
Архивариус
Победитель в номинации 2022
Победитель в номинации 2021
Мастер реакций
Стратег Данных
Любитель реакций
Куратор Данных
Неукротимое пламя
Победитель в номинации 2020
Сообщения
915
Розыгрыши
6
Решения
28
Репутация
1 960
Реакции
2 307
Баллы
1 063
Здравствуйте! Подскажите, пожалуйста, что я не так делаю, никак не могу понять где ошибаюсь.
Пример подглядел в классе ShopWnd:
C:
                ParamAdd(param, "merchant", string(m_merchantID));
                ParamAdd(param, "npc", string(m_npcID));
                ParamAddINT64(param, "num", num);
                for(index = 0; index < Int64ToInt(num); ++index)
                {
                    m_PreviewBottomListHandle.GetItem(index, info);
                    ParamAddItemIDWithIndex(param, info.ID, index);
                }

                RequestPreviewItem( param );
Сделал себе аналог, только захардкорил туда нужные мне параметры, а сам итем и индекс тяну с глобальных параметров:
C:
    ParamAdd(param, "merchant", string(456994));
    ParamAdd(param, "npc", string(10));
    ParamAddINT64(param, "num", IntToInt64(1));
    ParamAddItemIDWithIndex(param, PreviewItemInfo.ID, PreviewItemIndex);
Подкинул туда "дебаг"
C:
   MessageBox( "Item id:    "$PreviewItemInfo.ID.ClassID$"                     Item index:     "$PreviewItemIndex$"" );

И чекает оно все как положено, ид и индекс отображает какие надо:

Но работает все только на предмете с индексом ноль. С предметами и прочим точно порядок, ибо достаточно поменять первый со вторым местами, и отобразиться опять тот, что с индексом 0. В чем я косячу, почему оно мои индексы игнорит? )
 
Решение
default_npc, понял, принял, тут Вы правы. )

На 176 строке все начинается.
ну во первых то, что "не работает" - вы ему в самом начале отдаёте пустое iteminfo, которое лишь единожды (локально) объявлено в 113 строке
вам нужно получить итеминфо предмета исходя из индекса, когда по коду вы пришли в "зажатый шифт"

C#:
if( IsKeyDown( IK_Shift ) && ItemList.GetItem(index, info))
{
    sdfwefw(info);
}

ну, а то, что работает - вполне логично, там то вы итеминфо получаете, но просто делаете не нужный костыль через пустышку
Можно решить вопрос добавлением предмета на невидимое ItemWindow через OnSelectItemWithHandle, и тут же отправлять с него RequestPreviewItem, в целом даже работает. :ROFLMAO: Но буду безгранично рад и благодарен более адекватной информации, все еще интересно, почему отпадает индкес. )
 
а можно более понятное пояснение, что это и зачем?

а тот как то не очень ясно в чём суть задумки
 
default_npc, да костыль на примерку с мультиссела. ))
Посмотреть вложение 2021-08-05 09-03-24.mp4

В целом все хорошо, и вполне себе работает вариант с предварительным выносом предмета в вирутальный слот, который просто убит по высоте и оттого невидим. Но меня все еще мучает вопрос, почему туда не удается захардкорить индекс от руки, чтобы он работоспособный оставался. )
 
я чёто совсем не понял - а зачем куда то что то выносить, если нужна просто примерка по клику в один из слотов ItemWindow?

C#:
event OnClickItem(String, int); / GetSelectedItem

разве то, что вам надо не решается этим?

я плоховато помню как там примерка работает, честно говоря
 
  • Мне нравится
Реакции: Rolo
default_npc, в том-то и дело, что не решается, почему-то идет примерка только самого первого предмета с листа. )
Может я чего наговнокодил ночью по невнимательности, надо перепроверить, конечно. Ну ладно, с момента публикации топика костыльное временное решение нашел, вроде как проблем оно не вызывает, пока что "и так сойдет". ) Как всегда спасибо за отзывчивость!
 
в след. раз цепляйте полный сорец, с ним было бы проще понять, где ошибка (а я уверен - просто ошибка)
 
  • Мне нравится
Реакции: Rolo
default_npc, понял, принял, тут Вы правы. )

На 176 строке все начинается.
 

Вложения

  • Downloads.zip
    6,7 КБ · Просмотры: 5
default_npc, понял, принял, тут Вы правы. )

На 176 строке все начинается.
ну во первых то, что "не работает" - вы ему в самом начале отдаёте пустое iteminfo, которое лишь единожды (локально) объявлено в 113 строке
вам нужно получить итеминфо предмета исходя из индекса, когда по коду вы пришли в "зажатый шифт"

C#:
if( IsKeyDown( IK_Shift ) && ItemList.GetItem(index, info))
{
    sdfwefw(info);
}

ну, а то, что работает - вполне логично, там то вы итеминфо получаете, но просто делаете не нужный костыль через пустышку
 
Решение
default_npc, что и требовалось доказать, невнимательность меня погубит. )) Спасибо большое за помощь!
 
Назад
Сверху Снизу