random player

Тема в разделе "Программирование / Скриптинг", создана пользователем Вова Галик 552892780, 23 сен 2014.

  1. Вова Галик 552892780

    Вова Галик 552892780

    Сообщения:
    173
    Симпатии:
    37
    Помогите исправить ошибку:
    Код:
    [SM] Native "IsClientInGame" reported: Client index 0 is invalid 
    [SM] Displaying call stack trace for plugin "1112045.smx": 
    [SM]   [0]  Line 17, 1112045.sp::r_d()
    Вот плагин:
    #include <sourcemod>
    #include <cstrike>
    #include <sdktools>
    #include <sdkhooks>

    #pragma semicolon 1

    new com_t;
    new com_ct;

    public OnPluginStart() {
    HookEvent("player_death", r_d); }

    public Action:r_d(Handle:event, const String:name[], bool:dontBroadcast) {
    new client = GetClientOfUserId(GetEventInt(event, "client"));
    com_t = GetRandomClientT();
    if (IsClientInGame(client) && client == com_t)
    {
    ChangeClientTeam(client, 2);
    }
    com_ct = GetRandomClientCT();
    if (IsClientInGame(client) && client == com_ct)
    {
    ChangeClientTeam(client, 2);
    }
    return Plugin_Handled;
    }

    GetRandomClientT()
    {
    new indexes[MaxClients+1], players = 0;
    for (new i = 1; i <= MaxClients; i++)
    {
    if (i > 0 && IsClientInGame(i) && IsPlayerAlive(i) && IsValidEntity(i) && GetClientTeam(i) == 1) indexes[players++] = i;
    }
    if (players > 0) return indexes[GetRandomInt(0, players-1)];
    return 0;
    }

    GetRandomClientCT()
    {
    new indexes[MaxClients+1], players = 0;
    for (new i = 1; i <= MaxClients; i++)
    {
    if (IsClientInGame(i) && IsPlayerAlive(i) && IsValidEntity(i) && GetClientTeam(i) == 2) indexes[players++] = i;
    }
    if (players > 0) return indexes[GetRandomInt(0, players-1)];
    return 0;
    }
     
  2. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.512
    Симпатии:
    1.963
    if (IsClientInGame(client) && client == com_t)
    поменяй на:
    if (client && client == com_t)
     
  3. Вова Галик 552892780

    Вова Галик 552892780

    Сообщения:
    173
    Симпатии:
    37
    Помогло, но плагин почему то не работает.
     
  4. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.512
    Симпатии:
    1.963
    Скомпилировал? Закинул в папку с плагинами? Сервер перезагрузил?
    Старый тоже удалить.
     
  5. Вова Галик 552892780

    Вова Галик 552892780

    Сообщения:
    173
    Симпатии:
    37
    Все так и сделал, но игрока не перекидывает за Т
     
  6. WeSTMan

    WeSTMan *Просто я - есть я*

    Сообщения:
    214
    Симпатии:
    39
    Посмотри что за команды ты ищешь.
    GetClientTeam(i) == 1
    и GetClientTeam(i) == 2
    1 = спектара.
     
  7. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.512
    Симпатии:
    1.963
    Оффтоп
     
  8. Вова Галик 552892780

    Вова Галик 552892780

    Сообщения:
    173
    Симпатии:
    37
    Сделал другой:
    #include <sourcemod>
    #include <cstrike>
    #include <sdktools>
    #include <sdkhooks>

    #pragma semicolon 1

    public OnPluginStart()
    {
    HookEvent("round_end", End, EventHookMode:1);
    return 0;
    }

    public Action:End(Handle:event, String:name[], bool:dontBroadcast)
    {
    new i = 1;
    while (i <= MaxClients)
    {
    if (GetClientTeam(i) == 2)
    {
    ChangeClientTeam(i, 3);
    i++;
    }
    else
    {
    if (GetClientTeam(i) == 3)
    {
    ChangeClientTeam(i, 2);
    i++;
    }
    i++;
    }
    i++;
    }
    return Action:0;
    }
    Только теперь перекидывает всю команду, как сделать что бы только 1 игрока?
     
  9. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.973
    Симпатии:
    2.980
    Вова Галик 552892780, а ты сам посмотри. Ты не выбираешь рандом игрока, а перемещаешь каждого..
    нужна ф-я..
     
  10. dron216

    dron216

    Сообщения:
    112
    Симпатии:
    27
    GetClientOfUserId(GetEventInt(event, "client"));
    Ничего не смущает?

    Оффтоп
     
    Последнее редактирование: 23 сен 2014