Различные вопросы к кодерам от непонимающего Санька!

Тема в разделе "Программирование / Скриптинг", создана пользователем Саша Шеин, 10 июн 2015.

  1. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    Всем привет.
    Хочу добавить ещё одну колонку в БД. Но как это сделать без потери данных и проблем для пользователей без SqlLiteStudio.
    Проблемо восновном в том, что я не знаю как это реализовать через плагин. А именно , как проверить есть она или база ещё голая, как добавить если база есть, а колонки нет.
     
    Последнее редактирование: 10 июл 2015
  2. R1KO

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

    Сообщения:
    5.988
    Симпатии:
    2.986
    Re: Как работать с базами данных?

    Саша Шеин,
    Код:
    ALTER TABLE table_name ADD field_name parametrs
     
    Саша Шеин и Серый™ нравится это.
  3. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    Re: Как работать с базами данных?

    Спасибо, но ещё вопрос как узнать есть этот столбец в базе или его нет?

    Добавлено через 46 секунд
    И дабы не создавать кучу тем напишу здесь.

    Надо убрать нумерацию из меню, но как это сделать?
     
    Последнее редактирование: 15 июн 2015
  4. R1KO

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

    Сообщения:
    5.988
    Симпатии:
    2.986
    Re: Как работать с базами данных?

    PHP:
    SHOW TABLES;
    или

    PHP:
    IF NOT EXISTS(SELECT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME 'table_name' AND COLUMN_NAME 'some_column') ...
    панель
     
    Последнее редактирование: 15 июн 2015
  5. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    Re: Как работать с базами данных?

    Дабы не создовать много тем.
    Напишу сдесь.

    SELECT `name`,
    `kills`,`irank`,`deaths`,(kills/deaths)
    FROM `army_ranks` ORDER BY 3
    DESC LIMIT %d, 7;

    %d = g_iTemp[iClient]*7

    Сдесь идёт сортировка по irank,
    но первый идёт тот кто попал
    первым под этот запрос надо как
    то добавить условие: Если irank
    одинаковый то проверяем kills (У
    кого килов больше тот и первее) Вот так. Заранее спасибо!
     
  6. DexKekcuk #13

    DexKekcuk #13

    Сообщения:
    638
    Симпатии:
    70
    Re: Как работать с базами данных?

    Вот данный код который скидывал Шеин, только в нормальном виде..

    PHP:
    SendTopPanel(iClient)
    {
        
    decl String:sQuery[256];
        
    KvRewind(hKv);
        
    g_iTopType KvGetNum(hKv,"TopType",1);
        switch(
    g_iTopType)
        {
            case 
    0Format(sQuerysizeof(sQuery), "SELECT `name`, `kills`,`irank`,`deaths`,(kills/deaths) FROM `army_ranks` ORDER BY 2 DESC LIMIT %d, 7;"g_iTemp[iClient]*7);
            case 
    1Format(sQuerysizeof(sQuery), "SELECT `name`, `kills`,`irank`,`deaths`,(kills/deaths) FROM `army_ranks` ORDER BY 3 DESC LIMIT %d, 7;"g_iTemp[iClient]*7);
            case 
    2Format(sQuerysizeof(sQuery), "SELECT `name`, `kills`,`irank`,`deaths`,(kills/deaths) FROM `army_ranks` ORDER BY 5 DESC LIMIT %d, 7;"g_iTemp[iClient]*7);
        }    
        
    SQL_TQuery(g_hSQLdbSQLT_OnTopDisplaysQueryGetClientUserId(iClient));
    }

    public 
    SQLT_OnTopDisplay(Handle:hOwnerHandle:hQuery, const String:sError[], any:iUserId)
    {
        new 
    iClient GetClientOfUserId(iUserId);
        if ( !
    iClient )
        {
            return;
        }
        
        if ( !
    hQuery )
        {
            
    LogError("SQLT_OnTopDisplay: %s"sError);
        }
        
        new 
    Handle:hTopPanel CreatePanel(), iCount 0;
        
        
    decl String:sBuffer[256];
        
    decl String:Name[256];
        
    Format(sBuffersizeof(sBuffer), "%T""Top Title",iClient);
        
    SetPanelTitle(hTopPanelsBuffer);
        
        
    decl String:sRank[32], iRankiKills,iDeath,Float:KshareD;
        while ( 
    SQL_FetchRow(hQuery) )
        {
            
    SQL_FetchString(hQuery0Namesizeof(Name));
            
    iKills SQL_FetchInt(hQuery1);
            
    iRank  SQL_FetchInt(hQuery2);
            
    iDeath  SQL_FetchInt(hQuery3);
            
    KshareD  SQL_FetchFloat(hQuery4);
            if(
    iRank GetArraySize(g_hArray_iKills)-1)GetArrayString(g_hArray_sRanksiRanksRanksizeof(sRank));
            else 
    GetArrayString(g_hArray_sRanksiRank-1sRanksizeof(sRank));
            
    Format(sBuffersizeof(sBuffer), "%T""Top Menu",iClientg_iTemp[iClient]*iCount 1NamesRankKshareD,iKills,iDeath);
            
    DrawPanelText(hTopPanelsBuffer);
            
            
    iCount++;
        }
        
    DrawPanelText(hTopPanel" ");
        
    SetPanelCurrentKey(hTopPanel8);
        
    DrawPanelItem(hTopPanel"Назад");
        if(
    iCount>=7)
        {
            
    SetPanelCurrentKey(hTopPanel9);
            
    DrawPanelItem(hTopPanel"Далее");
        }
        else 
    DrawPanelText(hTopPanel" ");
        
    SetPanelCurrentKey(hTopPanel10);
        
    DrawPanelItem(hTopPanel"Выход");
        
    SendPanelToClient(hTopPanel,iClient,Handle_TopMenu,MENU_TIME_FOREVER);
    }
     
    Саша Шеин нравится это.
  7. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    Вообщем дабы не создавать новые темы переименную эту.

    Вопросы:
    1) Как защититься от декомпила?
    Знаю что можно это сделать подобным кодом:
    Код:
    new var = 1;
    if (var != var)
    {
    do {
    if (var == 1)
    {
    var = 2;
    }
    else
    {
    if (var == 2)
    {
    var = 1;
    }
    }
    }
    }
    Но вот интересно проверка типа 1!=1 будет грузить сервак?

    Добавлено через 4 минуты
    2) Как граматно сделать проверку на то какая игра? Пробывал через SDK:
    Код:
    switch(GetEngineVersion())
    {
    case Engine_Source SDK2006: return
    GAME_CSS_34;
    case Engine_CSS: return GAME_CSS;
    case Engine_CSGO: return
    GAME_CSGO;
    }
     
    Последнее редактирование: 10 июл 2015
  8. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.718
    Симпатии:
    458
    Если ты ее поставишь в OnGameFrame то я думаю ответ на твой вопрос будет очевиден.
     
    Саша Шеин нравится это.
  9. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    :) Это понятно. А что можешь сказать про второй вопрос?
     
  10. AlmazON

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

    Сообщения:
    4.527
    Симпатии:
    1.974
    Всякое действие будет "грузить" сервер, ибо оно - операция для процессора. Другое дело, что проверка эта столь проста (редко исполняемая), что нагрузка не выразится и в миллиардных долях от общей.
    Ещё со старых версий SM использовали GetGameFolderName.
     
    TWRP и Саша Шеин нравится это.
  11. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    AlmazON, а как тогда понять что это css v34?
     
  12. R1KO

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

    Сообщения:
    5.988
    Симпатии:
    2.986
    Саша Шеин, зависит от см.

    Из VIP
    PHP:
    UTIL_GetGameType()
    {
        if (
    GetFeatureStatus(FeatureType_Native"GetEngineVersion") == FeatureStatus_Available)
        {
            switch(
    GetEngineVersion())
            {
                case 
    Engine_SourceSDK2006:    return GAME_CSS_34;
                case 
    Engine_CSS:                    return GAME_CSS;
                case 
    Engine_CSGO:                return GAME_CSGO;
            }
        }
        else if (
    GetFeatureStatus(FeatureType_Native"GuessSDKVersion") == FeatureStatus_Available)
        {
            switch(
    GetEngineVersion())
            {
                case 
    SOURCE_SDK_EPISODE1:            return GAME_CSS_34;
                case 
    SOURCE_SDK_CSS:            return GAME_CSS;
                case 
    SOURCE_SDK_CSGO:            return GAME_CSGO;
            }
        }

        return 
    GAME_UNKNOWN;
    }
    и не забудь
    PHP:
    MarkNativeAsOptional("GuessSDKVersion");
        
    MarkNativeAsOptional("GetEngineVersion");
     
    Серый™ и AlmazON нравится это.
  13. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    Почему не вмещается такое название сервера:
    | Army Ranks | Паблик нового поколения | DD2 Only |
     
  14. максимка27

    максимка27

    Сообщения:
    517
    Симпатии:
    170
    Саша Шеин, представь что 1 русская буква равняются к 2 английским, вот и не влазит название в нормы
     
  15. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    максимка27, я это понимаю, но какие нормы то? :)
     
  16. AlmazON

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

    Сообщения:
    4.527
    Симпатии:
    1.974
    Впиши много английских, пересчитай, сколько вместилось и узнаешь.
    Обычно hostname принимают равным 64.
     
    TWRP нравится это.
  17. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    Объясните что делают выделенные фрагменты?

    Код:
    //1
    stock OffsLib_AddEntityFlag(entity, flag)
    {
        new flags = GetEntityFlags(entity);
    
    [B]    if (flag & ~flags)
            flags |= flag;[/B]
        
        SetEntProp(entity, Prop_Data, "m_fFlags", flags);
    }
    //2
    stock OffsLib_RemoveEntityFlag(entity, flag)
    {
        new flags = GetEntityFlags(entity);
    
    [B]    if (flags & flag)
            flags &= ~flag;[/B]
        
        SetEntProp(entity, Prop_Data, "m_fFlags", flags);
    }
    
     
    Последнее редактирование: 17 авг 2015
  18. R1KO

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

    Сообщения:
    5.988
    Симпатии:
    2.986
    Саша Шеин,
    Это кажется тоже самое что и
    PHP:
    if (!(flags flag))
    Это
    Добавляет flag в flags.

    Наоборот. Если оно было - удаляет.
     
  19. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    Спасибо!

    А как сделать этот эффект на стороне SM на всегда?
    https://www.youtube.com/watch?v=fKb17oVkqk0&feature=youtu.be
     
  20. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
    AlmazON, а как? Я имею ввиду чтобы он остался когда убирут такую фитчу.