The New Future :: FOnline, Half-life 2 :: Roleplay It!  

Вернуться   The New Future :: FOnline, Half-life 2 :: Roleplay It! > Прочее > FOmod > TNF

TNF сервер и частично документация

Ответ
 
Опции темы Опции просмотра
Старый 13.01.2015, 17:39   #1
PowerMagic
Lost Overseer
 
Аватар для PowerMagic
 
Специализация: ест детей.
Регистрация: 29.01.2010
Сообщений: 1,000
Вес репутации: 571
PowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond reputePowerMagic has a reputation beyond repute
По умолчанию [doc] Расы. Бонусы и Штрафы

Обсчет бонусов \ штрафов при регистрации происходит в parameters.fos(на данный момент на репе лежит parameters_new.fos, позже будет переименован.)

во-первых, ф-ц
Код:
#ifdef __CLIENT
...
// Check valid of input data
bool CritterGenerateCheck( int[]& data ) // Export to client_main@player_data_check
#endif //__CLIENT

#ifndef __CLIENT
bool CritterGenerateCheck(Critter& cr, int[]& data ) // Export to client_main@player_data_check
#endif //!__CLIENT
переведена также в серверную, для дополнительной защиты при генерации персонажа.

во-вторых, по некоторым соображениям, в окне регистрации(нашем) базовые параметры, которые повышаются трейтами записываются в пространство ST_STENGTH_EXT -> ST_LUCK_EXT, вернее значения повышения.

поэтому было добавлено следущие в ф-ц
Код:
#ifndef __CLIENT
# define _param_    cr.ParamBase
void CritterGenerate( Critter& cr ) // Export to main@critter_init
#endif
#ifdef __CLIENT
# define _param_    data
void CritterGenerate( int[]& data ) // Export to client_main@player_data_generate
#endif
Код:
int        st_str = (_param_[ST_STRENGTH]+_param_[ST_STRENGTH_EXT]),
            st_per = (_param_[ST_PERCEPTION]+_param_[ST_PERCEPTION_EXT]),
            st_edu = (_param_[ST_ENDURANCE]+_param_[ST_ENDURANCE_EXT]),
            st_cha = (_param_[ST_CHARISMA]+_param_[ST_CHARISMA_EXT]),
            st_int = (_param_[ST_INTELLECT]+_param_[ST_INTELLECT_EXT]),
            st_agl = (_param_[ST_AGILITY]+_param_[ST_AGILITY_EXT]),
            st_lck = (_param_[ST_LUCK]+_param_[ST_LUCK_EXT]);

    _param_[ SK_SMALL_GUNS ] += 5 + 4 * st_agl;                                         //_param_[ ST_AGILITY ];
    _param_[ SK_BIG_GUNS ] += 0 + 2 * st_agl;                                           //_param_[ ST_AGILITY ];
    _param_[ SK_ENERGY_WEAPONS ] += 0 + 2 * st_agl;                                     //_param_[ ST_AGILITY ];
    _param_[ SK_UNARMED ] += 30 + 2 * (st_agl + st_str);                                //( _param_[ ST_AGILITY ] + _param_[ ST_STRENGTH ] );
    _param_[ SK_MELEE_WEAPONS ] += 20 + 2 * (st_agl + st_str);                          //( _param_[ ST_AGILITY ] + _param_[ ST_STRENGTH ] );
    _param_[ SK_THROWING ] += 0 + 4 * st_agl;                                           //_param_[ ST_AGILITY ];
    _param_[ SK_FIRST_AID ] += 0 + 2 * (st_per + st_int);                               //( _param_[ ST_PERCEPTION ] + _param_[ ST_INTELLECT ] );
    _param_[ SK_DOCTOR ] += 5 + st_per + st_int;                                        //_param_[ ST_PERCEPTION ] + _param_[ ST_INTELLECT ];
    _param_[ SK_SNEAK ] += 5 + 3 * st_agl;                                              //_param_[ ST_AGILITY ];
    _param_[ SK_LOCKPICK ] += 10 + st_per + st_agl;                                     //_param_[ ST_PERCEPTION ] + _param_[ ST_AGILITY ];
    _param_[ SK_STEAL ] += 0 + 3 * st_agl;                                              //_param_[ ST_AGILITY ];
    _param_[ SK_TRAPS ] += 10 + st_per + st_agl;                                        //_param_[ ST_PERCEPTION ] + _param_[ ST_AGILITY ];
    _param_[ SK_SCIENCE ] += 0 + 4 * st_int;                                            //_param_[ ST_INTELLECT ];
    _param_[ SK_REPAIR ] += 0 + 3 * st_int;                                             //_param_[ ST_INTELLECT ];
    _param_[ SK_SPEECH ] += 0 + 5 * st_cha;                                             //_param_[ ST_CHARISMA ];
    _param_[ SK_BARTER ] += 0 + 4 * st_cha;                                             //_param_[ ST_CHARISMA ];
    _param_[ SK_GAMBLING ] += 0 + 5 * st_lck;                                           //_param_[ ST_LUCK ];
    _param_[ SK_OUTDOORSMAN ] += 0 + 2 * st_edu + st_int;                               //( _param_[ ST_ENDURANCE ] + _param_[ ST_INTELLECT ] );
    _param_[ SK_FARMING] += 0 + 2 * st_int;                                             //(_param_[ST_INTELLECT]);
    _param_[ SK_COOKING] += 0 + 2 * st_agl;                                             //(_param_[ST_AGILITY]);
непосредственно штрафы\бонусы перечислены в убогенькой if-else-switch конструкции. ниже в этой же ф-ц :

Код:
//races bonuses
    if(_param_[ST_GENDER] == GENDER_SUPERMUTANT){
        _param_[ST_MAX_LIFE] += 150;
        _param_[ST_MELEE_DAMAGE] += 8;
        _param_[ST_ARMOR_CLASS] -= 15;
        _param_[ST_NORMAL_RESIST] += 20;
    }else
    if(_param_[ST_GENDER] == GENDER_GHOUL){
        _param_[ST_MAX_LIFE] += 100;
        _param_[ST_RADIATION_RESISTANCE] += 40;
        _param_[ST_POISON_RESISTANCE] += 40;
        _param_[ST_HEALING_RATE] += 8;
    }else
    if(_param_[ST_GENDER] == GENDER_IT){
        _param_[ST_HEALING_RATE] = 0;
        _param_[ST_RADIATION_RESISTANCE] = 95;
        _param_[ST_POISON_RESISTANCE] = 95;
        _param_[ST_NORMAL_RESIST] += 40;
        _param_[ST_EMP_RESIST] = 0;
        _param_[ST_EMP_ABSORB] = 0;
        _param_[ST_CARRY_WEIGHT] += LBS_TO_GRAMM(275);
        _param_[ ST_ACTION_POINTS ] += 3;
    }
разброс базовых характеристик вынесен в отдельную ф-ц:
Код:
bool RaceParamCheck(uint8 gender, uint paramId, int paramVal){

    bool r = true;

    if(gender == GENDER_MALE || gender == GENDER_FEMALE){
        r = (paramVal >= 1 && paramVal <= 10);
    }else
    if(gender == GENDER_SUPERMUTANT){
        switch(paramId){
            case ST_STRENGTH    : r = (paramVal >= 8 && paramVal <= 13); break;
            case ST_PERCEPTION  : r = (paramVal >= 3 && paramVal <= 7); break;
            case ST_ENDURANCE   : r = (paramVal >= 8 && paramVal <= 13); break;
            case ST_CHARISMA    : r = (paramVal >= 1 && paramVal <= 3); break;
            case ST_INTELLECT   : r = (paramVal >= 1 && paramVal <= 4); break;
            case ST_AGILITY     : r = (paramVal >= 3 && paramVal <= 7); break;
            case ST_LUCK        : r = (paramVal >= 1 && paramVal <= 10); break;
            default             : r = false; break;
        }
    }else
    if(gender == GENDER_GHOUL){
        switch(paramId){
            case ST_STRENGTH    : r = (paramVal >= 3 && paramVal <= 6); break;
            case ST_PERCEPTION  : r = (paramVal >= 5 && paramVal <= 12); break;
            case ST_ENDURANCE   : r = (paramVal >= 3 && paramVal <= 8); break;
            case ST_CHARISMA    : r = (paramVal >= 1 && paramVal <= 3); break;
            case ST_INTELLECT   : r = (paramVal >= 5 && paramVal <= 14); break;
            case ST_AGILITY     : r = (paramVal >= 3 && paramVal <= 8); break;
            case ST_LUCK        : r = (paramVal >= 1 && paramVal <= 10); break;
            default             : r = false; break;
        }
    }else
    if(gender == GENDER_IT){
        switch(paramId){
            case ST_STRENGTH    : r = (paramVal >= 4 && paramVal <= 13); break;
            case ST_PERCEPTION  : r = (paramVal >= 10 && paramVal <= 15); break;
            case ST_ENDURANCE   : r = (paramVal >= 4 && paramVal <= 13); break;
            case ST_CHARISMA    : r = (paramVal == 1); break;
            case ST_INTELLECT   : r = (paramVal >= 10 && paramVal <= 15); break;
            case ST_AGILITY     : r = (paramVal >= 3 && paramVal <= 8); break;
            case ST_LUCK        : r = (paramVal == 1); break;
            default             : r = false; break;
        }
    }

    return r;
}
забыл написать : добавил несколько новых полов.
Код:
#define GENDER_SUPERMUTANT                       ( 3 )
#define GENDER_GHOUL                             ( 4 )
они всеравно бесполые, в разработку окна мне чуть упростили. да и вообщем-то никто не машает при окончании регистрации сбрасывать на GENDER_MALE, например.
__________________
Jet Rock's
PowerMagic вне форума   Ответить с цитированием
Данный человек сказал спасибо PowerMagic за этот пост:
Покемон (08.09.2015)
Ответ

Опции темы
Опции просмотра

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

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

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


Часовой пояс GMT +4, время: 00:57.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot
Для внутреннего пользования