sm_ban первый бан 15 минут, следующий навсегда - найти причину

Тема в разделе "Программирование / Скриптинг", создана пользователем Primo, 4 фев 2015.

  1. Primo

    Primo Где мои манеры

    Сообщения:
    1.192
    Симпатии:
    310
    В общем, есть такая проблема. Пишу voteban \ votekick для своих нужд. Возникла проблема, причину которой я не вижу. Первое голосование за бан проходит удачно, бан даётся на 15 минут, однако следующее даётся навсегда.

    P.S. это сухой грубый код, на штрихи, вроде if\else if прошу не обращать внимание. Мне нужна помощь по теме, а не по оптимизации.

    PHP:
    ShowVoteBanMenu(client)
    {
        new 
    Handle:menu CreateMenu(Select_VBanMenu); 
        
    SetMenuTitle(menu"Выберите Игрока:\n \n"); 
        
    decl String:userid[15], String:name[32]; 
        for (new 
    1<= MaxClientsi++) 
        { 
            if (
    IsClientInGame(i)) 
            { 
                
    IntToString(GetClientUserId(i), userid15); 
                
    GetClientName(iname32); 
                
    AddMenuItem(menuuseridname); 
            } 
        }
        
    DisplayMenu(menuclient0); 
    }

    public 
    Select_VBanMenu(Handle:menuMenuAction:actionclientoption
    {
        if (
    action == MenuAction_End
        { 
            
    CloseHandle(menu); 
            return; 
        } 
        if (
    action != MenuAction_Select) return; 
        
    decl String:userid[15];
        
    GetMenuItem(menuoptionuserid15);
        new 
    target GetClientOfUserId(StringToInt(userid)); 
        if (
    target 0
        { 
            new 
    String:NameV[200];
            
    GetClientName(clientNameVsizeof(NameV));
            new 
    String:NameB[200];
            
    GetClientName(targetNameBsizeof(NameB));
            
    PrintToChatAll(" \x05%s\x01 начал голосование за изгнание игрока\x07 %s\x01. Голосование будет завершено через\x04 15сек."NameVNameB);
            
    Voted target;
            
    CreateTimer(15.0TimerVoteBan);
            for(new 
    i=1i<=GetMaxClients(); i++) DisplayPVoteBanMenu(i)
            
        }    
        else
        {
            
    PrintToChat(client"Игрок не найден"); 
        }
    }

    DisplayPVoteBanMenu(client)
    {

        new 
    Handle:menu CreateMenu(Select_PVMenu); 
        new 
    String:NameB[200];
        
    GetClientName(VotedNameBsizeof(NameB));
        if(
    VoteStatus == 1SetMenuTitle(menu"Бан %s:\n \n"NameB);
        if(
    VoteStatus == 2SetMenuTitle(menu"Кик %s:\n \n"NameB);
        new 
    String:Text[255];
        
    Format(Textsizeof(Text), "Нет");
        
    AddMenuItem(menu""Text); 
        
    Format(Textsizeof(Text), "Да");
        
    AddMenuItem(menu""Text);    
        
    DisplayMenu(menuclient0); 
    }



    public 
    Select_PVMenu(Handle:menuMenuAction:actionclientoption

        if (
    action == MenuAction_End
        { 
            
    CloseHandle(menu); 
            return; 
        } 
        if (
    action != MenuAction_Select) return; 
        switch(
    option)
        {
            case 
    0:
            {
                new 
    String:NameB[200];
                
    GetClientName(clientNameBsizeof(NameB));
                
    PrintToChatAll("%s против"NameB);
                
    VoteCount--;
            }
            case 
    1:
            {
                new 
    String:NameB[200];
                
    GetClientName(clientNameBsizeof(NameB));
                
    PrintToChatAll("%s за"NameB);
                
    VoteCount++;
            }    
        }
        
    PrintToChatAll("Всего набрано %d голосов"VoteCount);
        
    //if (action == MenuAction_Select) CloseHandle(menu); 
    }

    public 
    Action:TimerVoteBan(Handle:timer)
    {
        if(
    VoteCount >= 3)
        {
            new 
    String:NameB[200];
            
    GetClientName(VotedNameBsizeof(NameB));
            if(
    VoteStatus == 1ServerCommand("sm_ban %s 15 votedoff"NameB);
            if(
    VoteStatus == 2ServerCommand("sm_kick %s"NameB);
        }
        
    VoteStatus = -1;
    }
     
  2. artyrka94

    artyrka94

    Сообщения:
    182
    Симпатии:
    36
    так попробуй
    PHP:
    .
    .
    .
    .
    PrintToChatAll(" \x05%s\x01 начал голосование за изгнание игрока\x07 %s\x01. Голосование будет завершено через\x04 15сек."NameVNameB);
            
    //Voted = target;
            
    Voted StringToInt(userid);
    .
    .
    .
    .
    .
    public 
    Action:TimerVoteBan(Handle:timer)
    {
        if(
    VoteCount >= 3)
        {
            if(
    VoteStatus == 1ServerCommand("sm_ban #%d 15 votedoff"Voted);
            if(
    VoteStatus == 2ServerCommand("sm_kick #%d"Voted);
        }
        
    VoteStatus = -1;
    }  
     
  3. R1KO

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

    Сообщения:
    6.000
    Симпатии:
    2.992
    Primo, юзай не имя, а #userid
    А если имя - бери в кавычки