Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

HLTV иммунитет

, иммунитет
Статус пользователя vertex627
сообщение 3.6.2012, 8:40
Сообщение #1
Стаж: 14 лет

Сообщений: 104
Благодарностей: 4
Полезность: < 0

Имеется плагин балансировки КСДМ. Пролема в том что он зачем то ХЛТВ которое висит в спектрах балансирует за одну из команд. Может ли кто добавить в код иммунитет для хлтв что бы его не трогало.

Код
#include <amxmodx>
#include <cstrike>

#define PLUGIN  "CSDM Teambalancer"
#define AUTHOR  "DA"
#define VERSION "1.1"

new counter=0;

public plugin_precache()
{
        if      ((get_cvar_num("amx_tsound")) != 1)
                return PLUGIN_CONTINUE;
      
        precache_sound("misc/massteleporttarget.wav");
        return PLUGIN_CONTINUE;
}


public on_death()
{
        counter++;
        if      (counter >= (get_cvar_num("amx_tmaxfreq")))
        {
                if      (get_playersnum() >= (get_cvar_num("amx_tmaxplayers")))
                {
                        counter = 0;
                        transfer_player();
                }
        }
}


transfer_player()
{
        new name[32], players[32], scores[32];
        new player, playercount, bestscore, theone, i;
        new CTCount = 0, TCount = 0;
      
        get_players ( players, playercount, "c" );
      
        for ( i = 0; i < playercount; ++i )
        {
                if ( cs_get_user_team( players[i] ) == CS_TEAM_CT )
                {
                        ++CTCount;
                }
              
                else
                {
                        ++TCount;
                }
        }
      
        new CsTeams:WhichTeam;
        if ( ( CTCount - TCount ) >= 2 )
        {
                WhichTeam = CS_TEAM_CT;
        }
      
        else if ( ( TCount - CTCount ) >= 2 )
        {
                WhichTeam = CS_TEAM_T;
        }
      
        else
        {
                return PLUGIN_CONTINUE;
        }
      
        for     (i=0; i<playercount; i++)
        {
                player = players[i];
              
                if ( cs_get_user_team( player ) == WhichTeam )
                {
                        scores[i] = get_user_frags(player) - get_user_deaths(player);
                }
        }
      
        bestscore = -9999;
        for     (i=0; i<playercount; i++)
        {
                if      (scores[i] > bestscore)
                {
                        bestscore = scores[i];
                        theone = players[i];
                }
        }
      
        cs_set_user_team(theone, WhichTeam == CS_TEAM_T ? CS_TEAM_CT : CS_TEAM_T);
        if      (get_cvar_num("amx_tsound") == 1)
                client_cmd(theone, "speak misc/MassTeleportTarget");
        set_hudmessage(255, 140, 0, -1.0, 0.40, 2, 0.02, 5.0, 0.01, 0.1, 2);
        show_hudmessage(theone,"You have been transfered to %s", WhichTeam == CS_TEAM_T ? "CT" : "Terrorist");
        get_user_name(theone,name,31);
        client_print(0,print_chat,"%s has been transfered to %s.", name, WhichTeam == CS_TEAM_T ? "CT" : "Terrorist");
        console_print(0,"%s has been transfered to %s.", name, WhichTeam == CS_TEAM_T ? "CT" : "Terrorist");
      
        return PLUGIN_CONTINUE;
}



public plugin_init()
{
        register_plugin(PLUGIN, VERSION, AUTHOR);
        register_cvar("amx_tmaxfreq", "50");
        register_cvar("amx_tmaxplayer", "4");
        register_cvar("amx_tsound", "0");
        register_event("DeathMsg", "on_death", "a");
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1031\\ f0\\ fs16 \n\\ par }
*/


Буду очень благодарен тому кто поможет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Andrei
сообщение 6.6.2012, 19:51
Сообщение #2


Стаж: 15 лет

Сообщений: 1335
Благодарностей: 693
Полезность: 740

Для цикла по всем игрокам используется:

get_players ( players, playercount, "c" );

Где флаг c - пропуск ботов.

Синтаксис get_players http://www.amxmodx.org/funcwiki.php?go=func&id=174

Флаг "h" - Skip HLTV - Пропуск HLTV

Значит заменяем на get_players ( players, playercount, "ch" );
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
noskill
сообщение 6.6.2012, 19:56
Сообщение #3
Стаж: 14 лет

Сообщений: 3086
Благодарностей: 1493
Полезность: 0

какой ужасный код
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Surf
сообщение 6.6.2012, 19:59
Сообщение #4


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

Цитата(csnetua @ 6.6.2012, 20:56) *
какой ужасный код

ну да, куда уж то до вас с адрьюз)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
noskill
сообщение 6.6.2012, 20:03
Сообщение #5
Стаж: 14 лет

Сообщений: 3086
Благодарностей: 1493
Полезность: 0

Цитата(Surf @ 6.6.2012, 20:59) *
ну да, куда уж то до вас с адрьюз)

шел бы ты отсюда, петушок

тс, держи, пробуй
Скрытый текст
Код
#include <amxmodx>
#include <cstrike>

#define PLUGIN  "CSDM Teambalancer"
#define AUTHOR  "DA"
#define VERSION "1.1"

new counter=0;

public plugin_precache()
{
        if      ((get_cvar_num("amx_tsound")) != 1)
                return PLUGIN_CONTINUE;
      
        precache_sound("misc/massteleporttarget.wav");
        return PLUGIN_CONTINUE;
}

public plugin_init()
{
        register_plugin(PLUGIN, VERSION, AUTHOR);
        register_cvar("amx_tmaxfreq", "50");
        register_cvar("amx_tmaxplayer", "4");
        register_cvar("amx_tsound", "0");
        register_event("DeathMsg", "on_death", "a");
}

public on_death()
{
        counter++;
        if      (counter >= (get_cvar_num("amx_tmaxfreq")))
        {
                if      (get_playersnum() >= (get_cvar_num("amx_tmaxplayers")))
                {
                        counter = 0;
                        transfer_player();
                }
        }
}


transfer_player()
{
        new name[32], scores[32];
        new playercount, bestscore, theone, i;
        new CTCount = 0, TCount = 0;
      
      
        for ( i = 0; i < playercount; i++ )
        {
        if(!is_user_bot(i))
        {
            if(!is_user_hltv(i))
            {
                if ( cs_get_user_team(i) == CS_TEAM_CT )
                {
                    ++CTCount;
                }
              
                else
                {
                    ++TCount;
                }
            }
        }
        }
      
        new CsTeams:WhichTeam;
        if ( ( CTCount - TCount ) >= 2 )
        {
                WhichTeam = CS_TEAM_CT;
        }
      
        else if ( ( TCount - CTCount ) >= 2 )
        {
                WhichTeam = CS_TEAM_T;
        }
      
        else
        {
                return PLUGIN_CONTINUE;
        }
      
        for     (i=0; i<playercount; i++)
        {
              
                if ( cs_get_user_team( i ) == WhichTeam )
                {
                        scores[i] = get_user_frags(i) - get_user_deaths(i);
                }
        }
      
        bestscore = -9999;
        for     (i=0; i<playercount; i++)
        {
        if(!is_user_bot(i))
        {
            if(!is_user_hltv(i))
            {
                if      (scores[i] > bestscore)
                {
                    bestscore = scores[i];
                    theone = i;
                }
            }
        }
        }
      
        cs_set_user_team(theone, WhichTeam == CS_TEAM_T ? CS_TEAM_CT : CS_TEAM_T);
        if      (get_cvar_num("amx_tsound") == 1)
                client_cmd(theone, "speak misc/MassTeleportTarget");
        set_hudmessage(255, 140, 0, -1.0, 0.40, 2, 0.02, 5.0, 0.01, 0.1, 2);
        show_hudmessage(theone,"You have been transfered to %s", WhichTeam == CS_TEAM_T ? "CT" : "Terrorist");
        get_user_name(theone,name,31);
        client_print(0,print_chat,"%s has been transfered to %s.", name, WhichTeam == CS_TEAM_T ? "CT" : "Terrorist");
        console_print(0,"%s has been transfered to %s.", name, WhichTeam == CS_TEAM_T ? "CT" : "Terrorist");
      
        return PLUGIN_CONTINUE;
}


Отредактировал: csnetua, - 6.6.2012, 20:08
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Surf
сообщение 6.6.2012, 20:11
Сообщение #6


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

Цитата(csnetua @ 6.6.2012, 22:03) *
шел бы ты отсюда, петушок

тс, держи, пробуй
Скрытый текст
Код
#include <amxmodx>
#include <cstrike>

#define PLUGIN  "CSDM Teambalancer"
#define AUTHOR  "DA"
#define VERSION "1.1"

new counter=0;

public plugin_precache()
{
        if      ((get_cvar_num("amx_tsound")) != 1)
                return PLUGIN_CONTINUE;
      
        precache_sound("misc/massteleporttarget.wav");
        return PLUGIN_CONTINUE;
}

public plugin_init()
{
        register_plugin(PLUGIN, VERSION, AUTHOR);
        register_cvar("amx_tmaxfreq", "50");
        register_cvar("amx_tmaxplayer", "4");
        register_cvar("amx_tsound", "0");
        register_event("DeathMsg", "on_death", "a");
}

public on_death()
{
        counter++;
        if      (counter >= (get_cvar_num("amx_tmaxfreq")))
        {
                if      (get_playersnum() >= (get_cvar_num("amx_tmaxplayers")))
                {
                        counter = 0;
                        transfer_player();
                }
        }
}


transfer_player()
{
        new name[32], scores[32];
        new playercount, bestscore, theone, i;
        new CTCount = 0, TCount = 0;
      
      
        for ( i = 0; i < playercount; i++ )
        {
        if(!is_user_bot(i))
        {
            if(!is_user_hltv(i))
            {
                if ( cs_get_user_team(i) == CS_TEAM_CT )
                {
                    ++CTCount;
                }
              
                else
                {
                    ++TCount;
                }
            }
        }
        }
      
        new CsTeams:WhichTeam;
        if ( ( CTCount - TCount ) >= 2 )
        {
                WhichTeam = CS_TEAM_CT;
        }
      
        else if ( ( TCount - CTCount ) >= 2 )
        {
                WhichTeam = CS_TEAM_T;
        }
      
        else
        {
                return PLUGIN_CONTINUE;
        }
      
        for     (i=0; i<playercount; i++)
        {
              
                if ( cs_get_user_team( i ) == WhichTeam )
                {
                        scores[i] = get_user_frags(i) - get_user_deaths(i);
                }
        }
      
        bestscore = -9999;
        for     (i=0; i<playercount; i++)
        {
        if(!is_user_bot(i))
        {
            if(!is_user_hltv(i))
            {
                if      (scores[i] > bestscore)
                {
                    bestscore = scores[i];
                    theone = i;
                }
            }
        }
        }
      
        cs_set_user_team(theone, WhichTeam == CS_TEAM_T ? CS_TEAM_CT : CS_TEAM_T);
        if      (get_cvar_num("amx_tsound") == 1)
                client_cmd(theone, "speak misc/MassTeleportTarget");
        set_hudmessage(255, 140, 0, -1.0, 0.40, 2, 0.02, 5.0, 0.01, 0.1, 2);
        show_hudmessage(theone,"You have been transfered to %s", WhichTeam == CS_TEAM_T ? "CT" : "Terrorist");
        get_user_name(theone,name,31);
        client_print(0,print_chat,"%s has been transfered to %s.", name, WhichTeam == CS_TEAM_T ? "CT" : "Terrorist");
        console_print(0,"%s has been transfered to %s.", name, WhichTeam == CS_TEAM_T ? "CT" : "Terrorist");
      
        return PLUGIN_CONTINUE;
}


другого от тебя и не ожидал, честно) картинки только пафасной не хватает
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
noskill
сообщение 6.6.2012, 20:16
Сообщение #7
Стаж: 14 лет

Сообщений: 3086
Благодарностей: 1493
Полезность: 0

Цитата(Surf @ 6.6.2012, 21:11) *
другого от тебя и не ожидал, честно) картинки только пафасной не хватает

прости, что не оправдал твоих ожиданий
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Andrei
сообщение 6.6.2012, 20:44
Сообщение #8


Стаж: 15 лет

Сообщений: 1335
Благодарностей: 693
Полезность: 740

Цитата(csnetua @ 6.6.2012, 19:56) *
какой ужасный код

У тебя еще хуже стал. Во-первых цикл с единицы начинается,так как игрока с индексом 0 нет.Во-вторых зачем делать лишнии проверки,когда с этим легко справляется get_players ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 6.6.2012, 20:52
Сообщение #9


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

new playercount, bestscore, theone, i;
new CTCount = 0, TCount = 0;


for ( i = 0; i < playercount; i++ )
впечатляет :D
ответ уже Bos93 сказал выше

p.s. а на амх-х я и не вчитался :)

Отредактировал: mazdan, - 6.6.2012, 20:55


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
noskill
сообщение 6.6.2012, 21:14
Сообщение #10
Стаж: 14 лет

Сообщений: 3086
Благодарностей: 1493
Полезность: 0

я лишь поправил что заметил, особо не вчитывался, мне это не нужно)
мне проще с нуля написать, чем править чей-то говнокод

Цитата(Bos93 @ 6.6.2012, 21:44) *
У тебя еще хуже стал. Во-первых цикл с единицы начинается,так как игрока с индексом 0 нет.Во-вторых зачем делать лишнии проверки,когда с этим легко справляется get_players ?

Код
static cell AMX_NATIVE_CALL get_players(AMX *amx, cell *params) /* 4 param */
{
    int iNum = 0;
    int ilen;
    char* sptemp = get_amxstring(amx, params[3], 0, ilen);
    int flags = UTIL_ReadFlags(sptemp);

    cell *aPlayers = get_amxaddr(amx, params[1]);
    cell *iMax = get_amxaddr(amx, params[2]);

    int team = 0;

    if (flags & 48)
    {
        sptemp = get_amxstring(amx, params[4], 0, ilen);

        if (flags & 16)
        {
            if (flags & 64)
                team = g_teamsIds.findTeamId(sptemp);
            else
                team = g_teamsIds.findTeamIdCase(sptemp);
        }
    }

    for (int i = 1; i <= gpGlobals->maxClients; ++i)
    {
        CPlayer* pPlayer = GET_PLAYER_POINTER_I(i);
        if (pPlayer->ingame)
        {
            if (pPlayer->IsAlive() ? (flags & 2) : (flags & 1))
                continue;
            if (pPlayer->IsBot() ? (flags & 4) : (flags & 8))
                continue;
            if ((flags & 16) && (pPlayer->teamId != team))
                continue;
            if ((flags & 128) && (pPlayer->pEdict->v.flags & FL_PROXY))
                continue;
            if (flags & 32)
            {
                if (flags & 64)
                {
                    if (stristr(pPlayer->name.c_str(), sptemp) == NULL)
                        continue;
                }
                else if (strstr(pPlayer->name.c_str(), sptemp) == NULL)
                    continue;
            }
            aPlayers[iNum++] = i;
        }
    }

    *iMax = iNum;
    
    return 1;
}

действительно, куда моей огромной проверке до этой жалкой проверочки

Отредактировал: csnetua, - 6.6.2012, 21:08
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Andrei
сообщение 6.6.2012, 21:39
Сообщение #11


Стаж: 15 лет

Сообщений: 1335
Благодарностей: 693
Полезность: 740

быдло кодер показал сорсы амыикса,круть.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
noskill
сообщение 6.6.2012, 21:54
Сообщение #12
Стаж: 14 лет

Сообщений: 3086
Благодарностей: 1493
Полезность: 0

Цитата(Bos93 @ 6.6.2012, 22:39) *
быдло кодер показал сорсы амыикса,круть.

ну возьми и напиши как правильно, а я посмотрю на твой хороший код, ладно? умник, блеать
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Andrei
сообщение 6.6.2012, 22:09
Сообщение #13


Стаж: 15 лет

Сообщений: 1335
Благодарностей: 693
Полезность: 740

Умник ? Я не переписываю как ты выражаешся быдло код,в быдло код. Или ты сделал его лучше ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
noskill
сообщение 6.6.2012, 22:34
Сообщение #14
Стаж: 14 лет

Сообщений: 3086
Благодарностей: 1493
Полезность: 0

Цитата(Bos93 @ 6.6.2012, 23:09) *
Умник ? Я не переписываю как ты выражаешся быдло код,в быдло код. Или ты сделал его лучше ?

так тем более, какого хрена ты в тему лезешь
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Andrei
сообщение 6.6.2012, 22:44
Сообщение #15


Стаж: 15 лет

Сообщений: 1335
Благодарностей: 693
Полезность: 740

Извиняюсь любезный !

Отредактировал: Bos93, - 6.6.2012, 22:45
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя vertex627
сообщение 7.6.2012, 19:39
Сообщение #16
Стаж: 14 лет

Сообщений: 104
Благодарностей: 4
Полезность: < 0

а че сраться то? Че мозгов уже вовсе нету да?

Отредактировал: vertex627, - 8.6.2012, 6:04
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: