Логотип игрового форума RF-Cheats.ru    
Новости онлайн игр Обход античитов Чёрный рынок Реклама и привилегии Разработка читов Арбитраж

Регистрация Бан-лист Сообщество ПОПУЛЯРНОЕ
Вернуться   RF-Cheats.ru - форум читеров и ботоводов > > >

Установка и поддержка RFO сервера

: Обсуждение RFO серверов, их установки, конфигурации, устранения ошибок, а также поддержке. Уголок Администратора.
Читы и обход фроста для RF Online без хайдаБоты и читы для Perfect World бесплатно без хайдаМоды и читы для World of Tanks (WoT) бесплатно без хайдаМоды и читы для Armored Warfare бесплатно без хайдаБоты и читы для DOTA 2 бесплатно без хайдаБоты и читы для Black Desert Online бесплатно без хайдаЧиты на ArcheAge бесплатно без хайдаЧиты для Warface бесплатно без хайдаВзлом ВКонтакте и ОдноклассниковСписок разделов со всеми играмиЧиты для онлайн игр






Ответ
 
Опции темы
Старый 26.06.2017, 22:40   #1
g00dw1n
Эксперт
Аватар для g00dw1n
OFFLINE
Регистрация: 30.01.2016
Возраст: 32
Сообщений: 2,265
Благодарностей:
355 всего
Мнения: + 1104
Репутация: 1066
Отправить сообщение для g00dw1n с помощью Skype™

[GU] Фикс аукцион


Фикс для вот этой вариации дюпа

Код:
void WINAPIV CUnmannedTraderUserInfoTable::CompleteBuy(
            CUnmannedTraderUserInfoTable * pObj, 
            char byRet,
            char * pLoadData, 
            CUnmannedTraderTradeInfo * pkTaradInfo)
        {
            UNREFERENCED_PARAMETER(byRet);

            do
            {
                CPlayer* ppkBuyPlayer = nullptr;
                CUnmannedTraderUserInfo* ppkBuyUser = nullptr;

                _qry_case_unmandtrader_buy_update_wait *pkQuery = (_qry_case_unmandtrader_buy_update_wait*)pLoadData;
                if (!pObj->SubCompleteBuyFindBuyer(pkQuery, &ppkBuyUser, &ppkBuyPlayer))
                    break;

                if (!ppkBuyUser)
                    break;

                if (!ppkBuyPlayer)
                    break;

                ppkBuyUser->ClearRequest();

                _unmannedtrader_buy_item_result_zocl Dst;
                _qry_case_unmandtrader_buy_update_complete pQryData;

                memset(&Dst, 0, sizeof(Dst));
                memset(&pQryData, 0, sizeof(pQryData));

                Dst.byRetCode = 0;
                Dst.byNum = pkQuery->byNum;

                pQryData.wInx = ppkBuyPlayer->m_ObjID.m_wIndex;
                pQryData.dwBuyer = pkQuery->dwBuyer;
                pQryData.byRace = ppkBuyPlayer->m_Param.GetRaceCode();
                pQryData.byType = pkQuery->byType;

                int nSucceeded = 0, nFailed = 0;
                for (int j = 0; j < pkQuery->byNum; ++j)
                {
                    int indx = pQryData.byNum;
                    if (pObj->SubCompleteBuyProcBuy(
                        ppkBuyPlayer,
                        ppkBuyUser,
                        pkQuery->tResultTime,
                        &pkQuery->List[j],
                        &Dst.List[j],
                        &pQryData.List[indx],
                        &pQryData.byNum,
                        &Dst.dwPayDalant,
                        pkTaradInfo))
                    {
                        ++nSucceeded;
                    }
                    else if (pQryData.List[indx].byUpdateState == 8)
                    {
                        ++nFailed;
                    }
                }

                if (nFailed > 0 || nSucceeded > 0)
                    pObj->SubCompleteBuyIncreaseVesion(pkQuery->byDivision, pkQuery->byClass);

                if (pQryData.byNum > 0)
                    g_MainThread->PushDQSData(0xFFFFFFFF, 0i64, 68, (char *)&pQryData, sizeof(pQryData));

                if (nSucceeded < Dst.byNum)
                    Dst.byRetCode = -1;

                Dst.dwLeftDalant = ppkBuyPlayer->m_Param.GetDalant();
                char pbyType[] = { 30, 31 };
                g_NetProcess[(uint8_t)e_type_line::client]->LoadSendMsg(ppkBuyPlayer->m_ObjID.m_wIndex, pbyType, (char *)&Dst, Dst.size());
            } while (false);
        }

Злобный программист
 
Ответить с цитированием
Сказали спасибо:
AsteriaGame (30.06.2017)


Старый 04.07.2017, 17:26   #2
primerb
Продвинутый читер
Аватар для primerb
OFFLINE
Регистрация: 15.04.2014
Сообщений: 241
Благодарностей:
89 всего
Мнения: + 453
Репутация: 268
Отправить сообщение для primerb с помощью Skype™

Что за do{} while(false)???
 
Ответить с цитированием
Старый 04.07.2017, 19:38   #3
g00dw1n
Эксперт
Аватар для g00dw1n
OFFLINE
Регистрация: 30.01.2016
Возраст: 32
Сообщений: 2,265
Благодарностей:
355 всего
Мнения: + 1104
Репутация: 1066
Отправить сообщение для g00dw1n с помощью Skype™

Цитата:
Сообщение от primerb Посмотреть сообщение
Что за do{} while(false)???
стандартный финт ушами для того чтобы не писать кучи return и снизить цикломатическую сложность
вообще его не обязательно юзать, у меня это уже привычка и большую часть кода, где есть условия, я пишу так

Злобный программист
 
Ответить с цитированием
Старый 04.07.2017, 22:44   #4
primerb
Продвинутый читер
Аватар для primerb
OFFLINE
Регистрация: 15.04.2014
Сообщений: 241
Благодарностей:
89 всего
Мнения: + 453
Репутация: 268
Отправить сообщение для primerb с помощью Skype™

чем это
Код:
do {
    if (!ppkBuyUser)
        break;
    if (!ppkBuyPlayer)
        break;
while(false);
хуже чем
Код:
if (!ppkBuyUser)
    return;
if (!ppkBuyPlayer)
    return;
Добавлено через 1 минуту
Я не говорю что способ с непонятным циклом плох, но дурно воняет чистым С с приправкой костылем...)

Добавлено через 2 минуты
Хотя если тип возврата не войд, то тогда действительно return null; 10 раз смотрится хуже чем 10 брейков и return чето_там;

Последний раз редактировалось primerb; 04.07.2017 в 22:46. Причина: Добавлено сообщение
 
Ответить с цитированием
Старый 04.07.2017, 23:14   #5
g00dw1n
Эксперт
Аватар для g00dw1n
OFFLINE
Регистрация: 30.01.2016
Возраст: 32
Сообщений: 2,265
Благодарностей:
355 всего
Мнения: + 1104
Репутация: 1066
Отправить сообщение для g00dw1n с помощью Skype™

Цитата:
Сообщение от primerb Посмотреть сообщение
чем это
Код:
do {
    if (!ppkBuyUser)
        break;
    if (!ppkBuyPlayer)
        break;
while(false);
хуже чем
Код:
if (!ppkBuyUser)
    return;
if (!ppkBuyPlayer)
    return;
Добавлено через 1 минуту
Я не говорю что способ с непонятным циклом плох, но дурно воняет чистым С с приправкой костылем...)

Добавлено через 2 минуты
Хотя если тип возврата не войд, то тогда действительно return null; 10 раз смотрится хуже чем 10 брейков и return чето_там;
Это дело вкуса и привычки, бессмысленный холивар который я даже начинать не хочу. Ты спросил - я ответил зачем и почему.

Злобный программист
 
Ответить с цитированием
Ответ



Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аукцион KrabArchi Продам, Куплю, Обменяю в Bless Online 5 21.01.2017 12:45
Аукцион gleb1234 Архив 7 07.03.2013 22:16
Аукцион manstrrr Обсуждение багов 4 24.11.2011 18:55

Мир танков | Проект "Армата" | ArcheAge | Black Desert | РФ Онлайн | Айон | Майнкрафт | Браузерные игры
Элдер скролс | Р2 Онлайн | Реквием Онлайн | ПУБГ | Роял Квест | ГТА Санадреас | Контра | Дота 2
Мир кораблей | Лост Арк | Arma2 DayZ mod | The War Z | Карос: Начало | Tera Online
Читы для всех Онлайн-игр