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

Mod Персональный ранг/класс

Тема в разделе 'Кодинг/Собственные решения', создана пользователем Doterok, 2 окт 2012.

  1. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Код:
    if (DotAPlayerSummary->GetScore() < -100)
                        player_class =  tr("lang_1058m");
          else if (DotAPlayerSummary->GetScore() >= -100 && DotAPlayerSummary->GetScore() < 100)
                        player_class =  tr("lang_1058b");
    else if (DotAPlayerSummary->GetScore() >= 100 && DotAPlayerSummary->GetScore() < 300)
                        player_class =  tr("lang_1058b");
    else if (DotAPlayerSummary->GetScore() >= 300 && DotAPlayerSummary->GetScore() < 600)
                        player_class =  tr("lang_1058c");
    else if (DotAPlayerSummary->GetScore() >= 600 && DotAPlayerSummary->GetScore() < 1000)
                        player_class =  tr("lang_1058d");
    else if (DotAPlayerSummary->GetScore() >= 1000 && DotAPlayerSummary->GetScore() < 1500)
                        player_class =  tr("lang_1058e");
    else if (DotAPlayerSummary->GetScore() >= 1500 && DotAPlayerSummary->GetScore() < 2000)
                        player_class =  tr("lang_1058f");
    else if (DotAPlayerSummary->GetScore() >= 2000 && DotAPlayerSummary->GetScore() < 2500)
                        player_class =  tr("lang_1058x");
    else if (DotAPlayerSummary->GetScore() >= 2500 && DotAPlayerSummary->GetScore() < 3000)
                        player_class =  tr("lang_1058o");
    else if (DotAPlayerSummary->GetScore() >= 3000 && DotAPlayerSummary->GetScore() < 4000)
                        player_class =  tr("lang_1058h");
    else if (DotAPlayerSummary->GetScore() >= 4000 && DotAPlayerSummary->GetScore() < 4500)
                        player_class =  tr("lang_1058k");
    else if (DotAPlayerSummary->GetScore() >= 4500 && DotAPlayerSummary->GetScore() < 5000)
                        player_class =  tr("lang_1058y");
    else if (DotAPlayerSummary->GetScore() >= 5000 && DotAPlayerSummary->GetScore() < 7000)
                        player_class =  tr("lang_1058j");
    else if (DotAPlayerSummary->GetScore() >= 7000)
                        player_class =  tr("lang_1058j");
    
    В ghost brt есть вот такой баян :)
    Я вырезал все вот это и хотел бы сделать персональный класс
    по типу ник + ранг для одного игрока)
    Когда использовал выше данный код "персональный" класс работал,
    вот наброски
    Код:
    else if(i->second->GetName( ) == "yaloh")
                        player_class = "da ti loh";
                    else if(i->second->GetName( ) == "yaneloh")
                        player_class = "ta net ti loh";
    
    поможет кто нибудь ? :)
    офк полезная штука, например награды за что-то.
    И такой вопрос надо ли будет в ланг добавлять $CLASS$ ?
    при компиляции данного "наброска" получаю ошибки
    Код:
    game.cpp(629) : error C2181: недопустимый else без парного if[code]
  2. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Вот кусок кода чуть выше, чуть ниже мб пригодится
    Код:
    uint32_t scorescount = m_GHost->ScoresCount();
     
    CGamePlayer *PlayerN = GetPlayerFromName( i->second->GetName(), true );
     
    if( PlayerN )
    {
    PlayerN->SetScore( DotAPlayerSummary->GetScore() );
    PlayerN->SetScoreS(UTIL_ToString( DotAPlayerSummary->GetScore(), 2));
    PlayerN->SetRankS(UTIL_ToString( DotAPlayerSummary->GetRank()));
    }
     
    string RankS = UTIL_ToString( DotAPlayerSummary->GetRank());
     
                    string Summary;
    string leave_games_count = UTIL_ToString( (100 * DotAPlayerSummary->GetLeaveCount()) / DotAPlayerSummary->GetTotalGames( )); // In percent
    string player_class = tr("lang_1061");
    float newbie_value = 1.5f;
     
    if (DotAPlayerSummary->GetRank()>0)
    RankS = RankS + "/" + UTIL_ToString(scorescount);
     
                    player_class = "";
     
                    Вот тут был код из 1 поста 
                      думаю где-то здесь надо добавлять  
                  
     
     
    string sd_lang = "lang_0995";
     
    if (isAdmin) 
    {
    player_class = tr("lang_1061a"); // Administrator
    sd_lang = "lang_0995a";
    }
    
    evilmaker нравится это.
  3. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Стыдно такое не знать, стыно. Логики в твоем коде нет.

    Тупо возьми и засунь свой код в переводчик. Удивишься.
  4. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    А теперь вопрос - нафига? Охватить все ники не получится. Хочешь менять название класса - меняй language
  5. Ev1lArthaS Парнишка с небывалым умом

    Сообщения:
    36
    Спасибы:
    3
    Тема актуальна?) Решили проблему? И какой код туда засовывать? Хочу сделать ранги как на айкапе (d-, d, d+) и т.д. Поможете?
  6. evilmaker Старожила

    Сообщения:
    321
    Спасибы:
    28
    Сборка бота GHost:
    brtghost rev.185
    Дата начала использования бота:
    07.07.9999
    Skype:
    Мой статус
    тут тема не про "d-, d, d+" а об "player_class = "лохи";
    в посте 31239 ужэ всё реализовано, остаёться только добавить
    ф-ции()
    int
    if pts<=1000 rank=a;
    else if pts>a&&pts<=2000 rank=b;
    else if pts>b&&pts<=3000 rank=c;
    else if pts>c&&pts<=4000 rank=d;
    cout<<"твой ранг"<<pts;
    getch()
    return ()
    и т.д.:lol:
  7. Ev1lArthaS Парнишка с небывалым умом

    Сообщения:
    36
    Спасибы:
    3
    Код:
    if (DotAPlayerSummary->GetScore() < -100)
    player_class = tr("lang_1058m");
    else if (DotAPlayerSummary->GetScore() >= -100 && DotAPlayerSummary->GetScore() < 100)
    player_class = tr("lang_1058b");
    else if (DotAPlayerSummary->GetScore() >= 100 && DotAPlayerSummary->GetScore() < 300)
    player_class = tr("lang_1058b");
    
    Видишь вот этот кусок? Хотелось бы сделать что-то наподобие этого
    Код:
    if (DotAPlayerSummary->GetScore() >= 1000)
      player_class = "D";
      else if (DotAPlayerSummary->GetScore() >= 2000)
      player_class = "D+";
    else if (DotAPlayerSummary->GetScore() >= 3000)
      player_class = "C-";
    
    нооо, к сожалению, не получается. Ну вот вопрос: как реализовать player_class правильно?
  8. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    А что не получается?
  9. Ev1lArthaS Парнишка с небывалым умом

    Сообщения:
    36
    Спасибы:
    3
    Сделал код по приведенному выше собой примеру на title1 в language.cpp (напоминаю, титл1 выдается в зависимости от килов/дезов/ассистов - атакер, суисайдер, хелпер) и вот что получилось:
    Код:
    string title1;
     if (score >="1") 
    title1 = "D-"; 
     else if (score >="1000")
    title1 = "D"; 
     else if (score >="2000")
    title1 = "D+"; 
     else if (score >="3000")
    title1 = "C-"; 
     else if (score >="4000")
    title1 = "C"; 
     else if (score >="5000")
    title1 = "C+"; 
     else if (score >="6000")
    title1 = "B-"; 
     else if (score >="7000")
    title1 = "B"; 
     else if (score >="8000")
    title1 = "B+"; 
     else if (score >="9000")
    title1 = "A-"; 
     else if (score >="10000")
    title1 = "A"; 
     else if (score >="11000")
    title1 = "A+"; 
     else if (score >="12000")
    title1 = "S";
    
    Сначало я ставил DotaPlayerSummary->getscore, компилятор жаловался на неопознанный идентификатор, потом увидел string score, и решил поставить score. Компиляция прошла гладко, но вот почему-то у всех ранги D-, то бишь где-то в коде ошибка, я думаю в переменной, которая определяет кол-во очков у игрока. В чем ошибка моя, не подскажешь?)
  10. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    DotAPlayerSummary->GetScore()
    юзай это

    string score = ""; - просто создали переменную, это не очки игрока... потому и D у всех
    Ev1lArthaS нравится это.
  11. Ev1lArthaS Парнишка с небывалым умом

    Сообщения:
    36
    Спасибы:
    3
    DotAPlayerSummary неопределенный идентификатор. >GetScore должен указывать на тип класса.
    Че за ошибки навтыкал компилятор?)
  12. Suicider Старожила

    Сообщения:
    673
    Спасибы:
    117
    Сборка бота GHost:
    Ghost++ 17.1 by w3gh
    Дата начала использования бота:
    12.07.2011
    Skype:
    Мой статус
    :facepalm:

    Вот Вам кусок из моего language.cpp
    Код:
       ???????????????????????????
    ??????????????????????????
    ???????????????????????????
    
    ??????????????????????
    ???????????????????
    ?????????????????????????
    ??????????????????????
    З.Ы. Больше не пишите такую тупость...
    Ev1lArthaS нравится это.
  13. Ev1lArthaS Парнишка с небывалым умом

    Сообщения:
    36
    Спасибы:
    3
    Все с чего-то начинают, Константин Харитонов, не обязательно ставить фейспалм и писать "больше не пишите такую тупость"
  14. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    Ну для старлеев иногда вопросы кажутся через чур тупые... я на пример просто уже на 90% вопросов молчу, так как или тупой он или скучный.
    Раньше матюкался))
    Doterok, Suicider, Ev1lArthaS и ещё 1-му нравится это.
  15. pers Ньюфаг

    Сообщения:
    16
    Спасибы:
    0
    Дата начала использования бота:
    11.11.2011
    После этого кода у меня так получилось $USERS$, Игр : 10, Ранк : #1/10, PTS : 10, Титул {D-] а вот имя игрока не пишет а пишет $USER$ все сделал как вы сказали(
  16. Suicider Старожила

    Сообщения:
    673
    Спасибы:
    117
    Сборка бота GHost:
    Ghost++ 17.1 by w3gh
    Дата начала использования бота:
    12.07.2011
    Skype:
    Мой статус
    я так рад... что с готовым кодом справиться никак не можешь... -_-
  17. pers Ньюфаг

    Сообщения:
    16
    Спасибы:
    0
    Дата начала использования бота:
    11.11.2011
    зашел в language.ccp удалил tittle1 и tittle2 за место их вставил RANG [D-] [D+] пашет ну $USER$ не пашет за место Suicider сыграл он пишет $Users$ сыграл и т.д а на !statsdota все норм ник игрока пишет компилировал без ошибок Итог удалил бота установил бота и про ранг забыл)
  18. Suicider Старожила

    Сообщения:
    673
    Спасибы:
    117
    Сборка бота GHost:
    Ghost++ 17.1 by w3gh
    Дата начала использования бота:
    12.07.2011
    Skype:
    Мой статус