Выключить KnifeFight на определенном уровне в GunGame

valerikov

Участник
Сообщения
4
Реакции
2
Приветствую всех!
Есть такой плагин http://hlmod.ru/forum/showthread.php?t=243 который мне хотелось бы изменить под gungame, а именно запретить схватку один на один если один из игроков находится на определенном уровне. Вот сижу сейчас и втыкаю)) для меня там темный лес.. может кто подскажет какие строки (или строку) править? Как вытащить уровень игрока для дальнейшей обработки и т.п. я знаю, меня интересуют строки к которым нужно всё это дело прикрутить. :)
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
valerikov, подключаешь в KnifeFight индклуд gungame и в цикле проверки игроков чекаешь гг лвл
 

valerikov

Участник
Сообщения
4
Реакции
2
в цикле проверки игроков чекаешь гг лвл
Вот про это я и писал, только вот цикл найти не могу)) нужна строка, а дальше я сам.. я просто потерялся там малость.

Добавлено через 1 час 19 минут
Я вот думаю, случаем не тут нужно править?

PHP:
public Action:StartFight()
{    
    // check if one player left server
    if (ctid == 0 || tid == 0)
    {
        return;
    }
    
    // check if there are only two players
    alivect = 0, alivet = 0;
    for (new i = 1; i <= MaxClients; i++)
    {
        new team;
        if (IsClientInGame(i) && IsPlayerAlive(i))
        {
            team = GetClientTeam(i);
            if (team == 3) { alivect++; }
            else if (team == 2) { alivet++; }
        }
    }
    
    // check if there are only two players and round has 
    // not ended or bomb is not planted
    if (alivect != 1 || alivet != 1 || bombplanted)
    {
        return;
    }
    
    // start fight
    isFighting = true;
    Trace("Fight is started.");
    if (!IsPlayerAlive(ctid) || !IsPlayerAlive(tid) || (GetClientCount() < g_minplayers))
    {
        CancelFight();
        return;
    }
    
    Trace("Removing all weapons on the map.");
    
    // remove all weapons from the map
    RemoveAllWeapons();
    
    // play fight song
    if (songsfound > 0)
    {
        new randomsong = 0;
        if (songsfound > 1)
        {
            randomsong = GetRandomInt(0, songsfound - 1);
        }
        strcopy(song, sizeof(song), fightsong[randomsong]);
        
        new clients[MaxClients];
        new total = 0;
        for (new i=1; i<=MaxClients; i++)
        {
            if (IsClientInGame(i) && g_soundPrefs[i])
            {
                clients[total++] = i;
            }
        }

        if (total)
        {
            Trace("Starting fight song.");
            EmitSound(clients, total, song, 
                _, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, SNDVOL_NORMAL, SNDPITCH_NORMAL);
        }
    }
    
    Trace("Starting beacons.");
    // start beacons
    CreateTimer(2.0, StartBeacon, ctid, TIMER_REPEAT);
    CreateTimer(1.0, StartBeaconT, tid);

    // remove weapons from players
    PrintHintTextToAll("%t", "Removing weapons");
    WeaponHandler(ctid, 3);
    WeaponHandler(tid, 2);
    
    // switch alltalk
    if (g_alltalk) 
    {
        g_alltalkenabled = GetConVarBool(sv_alltalk);
        if ( !g_alltalkenabled )
        {
            SetConVarInt(sv_alltalk, 1);
        }
        g_alltalkenabled = !g_alltalkenabled;
    }
    
    // switch blocking
    if ( g_block )
    {
        if ( sm_noblock == INVALID_HANDLE )
        {
            sm_noblock = FindConVar("sm_noblock");
        }
        if ( sm_noblock != INVALID_HANDLE )
        {
            g_blockenabled = !GetConVarBool(sm_noblock);
            if ( !g_blockenabled )
            {
                SetConVarInt(sm_noblock, 0);
            }
            g_blockenabled = !g_blockenabled;
        }
    }
    
    // teleport players
    if (g_useteleport)
    {
        SetEntData(ctid, g_iHealth, 400);
        SetEntData(tid, g_iHealth, 400);
        new Float:ctvec[3];
        new Float:tvec[3];
        new Float:distance[1];
        GetClientAbsOrigin(ctid,Float:ctvec);
        GetClientAbsOrigin(tid,Float:tvec);
        distance[0] = GetVectorDistance(ctvec, tvec, true);
        if (distance[0] >= 600000.0)
        {
            teleloc = ctvec;
            CreateTimer(0.1, SlapTimer, _, TIMER_REPEAT);
            CreateTimer(0.5, TeleportTimer);
        }
        else if (g_locatorbeam)
        {
            CreateTimer(0.1, DrawBeamsTimer, _, TIMER_REPEAT);
        }
    }
    else if (g_locatorbeam)
    {
        CreateTimer(0.1, DrawBeamsTimer, _, TIMER_REPEAT);
    }
    
    // display prepare to fight
    CreateTimer(1.0, Countdown, _, TIMER_REPEAT);
}
Или я ошибаюсь?))
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #6
Строка 1212 и далее:
PHP:
for (new i = 1; i <= MaxClients; i++)
        {
            new team;
            if (IsClientInGame(i) && IsPlayerAlive(i))
            {
                team = GetClientTeam(i);
                if (team == 3) { ctid = i; alivect++; }
                else if (team == 2) { tid = i; alivet++; }
            }
        }
// тут вставляешь проверку на уровни гг
        if (alivect == 1 && alivet == 1 && !bombplanted)
        {
            CreateTimer(0.5, VerifyConditions);
        }
 
Сверху Снизу