Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 5 из 5

Тема: strcmp

  1. #1
    Аватар для Pawn.Dima
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.04.2020
    Сообщений
    37
    Репутация:
    0 ±

    strcmp

    Здравствуйте помогите разобраться со функцией strcmp не могу выдать определенный цвет для владельцев квартир

    есть функция:

    PHP код:
    forward LoadKvartir();
    public 
    LoadKvartir()
    {
        new 
    rdstring[90];
        
    cache_get_data(rd);
        for(new 
    ik_idri++)
        {
            
    k_id cache_get_field_content_int(i"k_id"mysql_connect_ID);
            if(!(
    <= k_id MAX_KVARTIR))
            {
                continue;
            }
            
    Iter_Add(iKvartirk_id);
            
    cache_get_field_content(i"kOwner"KvartInfo[k_id][kOwner], mysql_connect_ID32);
            
    KvartInfo[k_id][kX] = cache_get_field_content_float(i"kX"mysql_connect_ID);
            
    KvartInfo[k_id][kY] = cache_get_field_content_float(i"kY"mysql_connect_ID);
            
    KvartInfo[k_id][kZ] = cache_get_field_content_float(i"kZ"mysql_connect_ID);
            
    KvartInfo[k_id][kLock] = cache_get_field_content_int(i"kLock"mysql_connect_ID);
            
    KvartInfo[k_id][kWorld] = cache_get_field_content_int(i"kWorld"mysql_connect_ID);
            
    KvartInfo[k_id][kWVMir] = cache_get_field_content_int(i"kWVMir"mysql_connect_ID);
            
    KvartInfo[k_id][kBalance] = cache_get_field_content_int(i"kBalance"mysql_connect_ID);
            if(!
    strcmp(KvartInfo[k_id][kOwner], "None"true))//Если квартира пуста
            
    {
                
    format(stringsizeof(string), "{0076FC}Комната #%d\nПродаётся: 100000 вирт\nЧтобы войти, нажмите кнопку 'ENTER'"k_id);
            }
            else if(
    strcmp(KvartInfo[i][kOwner], KvartInfo[k_id][kOwner], true))//Если Владелец есть и совпадает имя
            
    {
                
    format(stringsizeof(string), "{006400}Комната #%d\nВладелец: %s\nЧтобы войти, нажмите кнопку 'ENTER'"k_idKvartInfo[k_id][kOwner]);
            }
            else
            {
                
    format(stringsizeof(string), "{DEB887}Комната #%d\nВладелец: %s\nЧтобы войти, нажмите кнопку 'ENTER'"k_idKvartInfo[k_id][kOwner]);
            }
            
    KvartInfo[k_id][kLabel] = Create3DTextLabel(stringCOLOR_BLUEKvartInfo[k_id][kX], KvartInfo[k_id][kY], KvartInfo[k_id][kZ]+15.0KvartInfo[k_id][kWorld], 1);
            
    Create3DTextLabel("Чтобы выйти используйте клавишу 'Enter'\nДля входа в меню квартиры 'ALT'"COLOR_BLUE2282.9211,-1140.2861,1050.89845.0k_id1);
        }
        print(
    "=============================================================");
        print(
    "Результат загрузки Квартир:");
        
    printf("Найдено строк в БД:[%i]"r);
        
    printf("ID начала массива:[%i]"KvartInfo[0][kID]);
        if(
    == MAX_KVARTIRprintf("Загружены строк: [%i/%i][ГОТОВО]"rMAX_KVARTIR);
        else 
    printf("Загружены строк: [%i/%i][ОШИБКА]"rMAX_KVARTIR);
        print(
    "[Загрузка...]: Квартиры успешно загружены");
        print(
    "=============================================================");
        return 
    1;

    Например есть 2 квартиры одной из квартир я владелец должно подсвечиваться (Зеленым) цветом а если подхожу к другой квартире подсветка другим цветом как это можно реализовать я уже все перепробывал и на Wiki смотрел что то не допетрю как сделать :( помогите
    Последний раз редактировалось Pawn.Dima; 29.11.2021 в 10:05.

  2. #2
    Аватар для Shaolinka
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.01.2020
    Сообщений
    69
    Репутация:
    8 ±
    Цитата Сообщение от Pawn.Dima Посмотреть сообщение
    Здравствуйте помогите разобраться со функцией strcmp не могу выдать определенный цвет для владельцев квартир

    есть функция:

    PHP код:
    forward LoadKvartir();
    public 
    LoadKvartir()
    {
        new 
    rdstring[90];
        
    cache_get_data(rd);
        for(new 
    ik_idri++)
        {
            
    k_id cache_get_field_content_int(i"k_id"mysql_connect_ID);
            if(!(
    <= k_id MAX_KVARTIR))
            {
                continue;
            }
            
    Iter_Add(iKvartirk_id);
            
    cache_get_field_content(i"kOwner"KvartInfo[k_id][kOwner], mysql_connect_ID32);
            
    KvartInfo[k_id][kX] = cache_get_field_content_float(i"kX"mysql_connect_ID);
            
    KvartInfo[k_id][kY] = cache_get_field_content_float(i"kY"mysql_connect_ID);
            
    KvartInfo[k_id][kZ] = cache_get_field_content_float(i"kZ"mysql_connect_ID);
            
    KvartInfo[k_id][kLock] = cache_get_field_content_int(i"kLock"mysql_connect_ID);
            
    KvartInfo[k_id][kWorld] = cache_get_field_content_int(i"kWorld"mysql_connect_ID);
            
    KvartInfo[k_id][kWVMir] = cache_get_field_content_int(i"kWVMir"mysql_connect_ID);
            
    KvartInfo[k_id][kBalance] = cache_get_field_content_int(i"kBalance"mysql_connect_ID);
            if(!
    strcmp(KvartInfo[k_id][kOwner], "None"true))//Если квартира пуста
            
    {
                
    format(stringsizeof(string), "{0076FC}Комната #%d\nПродаётся: 100000 вирт\nЧтобы войти, нажмите кнопку 'ENTER'"k_id);
            }
            else if(
    strcmp(KvartInfo[i][kOwner], KvartInfo[k_id][kOwner], true))//Если Владелец есть и совпадает имя
            
    {
                
    format(stringsizeof(string), "{006400}Комната #%d\nВладелец: %s\nЧтобы войти, нажмите кнопку 'ENTER'"k_idKvartInfo[k_id][kOwner]);
            }
            else
            {
                
    format(stringsizeof(string), "{DEB887}Комната #%d\nВладелец: %s\nЧтобы войти, нажмите кнопку 'ENTER'"k_idKvartInfo[k_id][kOwner]);
            }
            
    KvartInfo[k_id][kLabel] = Create3DTextLabel(stringCOLOR_BLUEKvartInfo[k_id][kX], KvartInfo[k_id][kY], KvartInfo[k_id][kZ]+15.0KvartInfo[k_id][kWorld], 1);
            
    Create3DTextLabel("Чтобы выйти используйте клавишу 'Enter'\nДля входа в меню квартиры 'ALT'"COLOR_BLUE2282.9211,-1140.2861,1050.89845.0k_id1);
        }
        print(
    "=============================================================");
        print(
    "Результат загрузки Квартир:");
        
    printf("Найдено строк в БД:[%i]"r);
        
    printf("ID начала массива:[%i]"KvartInfo[0][kID]);
        if(
    == MAX_KVARTIRprintf("Загружены строк: [%i/%i][ГОТОВО]"rMAX_KVARTIR);
        else 
    printf("Загружены строк: [%i/%i][ОШИБКА]"rMAX_KVARTIR);
        print(
    "[Загрузка...]: Квартиры успешно загружены");
        print(
    "=============================================================");
        return 
    1;

    Например есть 2 квартиры одной из квартир я владелец должно подсвечиваться (Зеленым) цветом а если подхожу к другой квартире подсветка другим цветом как это можно реализовать я уже все перепробывал и на Wiki смотрел что то не допетрю как сделать :( помогите
    PHP код:
    forward LoadKvartir(); 
    public 
    LoadKvartir() 
    {    
       new 
    rdstring[90];     
       
    cache_get_data(rd);     
       for(new 
    ik_idri++)     
       {         
           
    k_id cache_get_field_content_int(i"k_id"mysql_connect_ID);         
           if(!(
    <= k_id MAX_KVARTIR))         
           {             
               continue;         
           }         
           
    Iter_Add(iKvartirk_id);         
           
    cache_get_field_content(i"kOwner"KvartInfo[k_id][kOwner], mysql_connect_ID32);         
           
    KvartInfo[k_id][kX] = cache_get_field_content_float(i"kX"mysql_connect_ID);        
           
    KvartInfo[k_id][kY] = cache_get_field_content_float(i"kY"mysql_connect_ID);         
           
    KvartInfo[k_id][kZ] = cache_get_field_content_float(i"kZ"mysql_connect_ID);        
           
    KvartInfo[k_id][kLock] = cache_get_field_content_int(i"kLock"mysql_connect_ID);        
           
    KvartInfo[k_id][kWorld] = cache_get_field_content_int(i"kWorld"mysql_connect_ID);        
           
    KvartInfo[k_id][kWVMir] = cache_get_field_content_int(i"kWVMir"mysql_connect_ID);         
           
    KvartInfo[k_id][kBalance] = cache_get_field_content_int(i"kBalance"mysql_connect_ID);        
           if(!
    strcmp(KvartInfo[k_id][kOwner], "None"true))//Если квартира пуста       
          
    {             
              
    format(stringsizeof(string), "{0076FC}Комната #%d\nПродаётся: 100000 вирт\nЧтобы войти, нажмите кнопку 'ENTER'"k_id);         
          }       
         else          
         {           
             if(
    sizeof KvartInfo[k_id][kOwner] > 0)            
            {                 
                
    format(stringsizeof(string), "{006400}Комната #%d\nВладелец: %s\nЧтобы войти, нажмите кнопку 'ENTER'"k_idKvartInfo[k_id][kOwner]);         
            }                   
            
    KvartInfo[k_id][kLabel] = Create3DTextLabel(stringCOLOR_BLUEKvartInfo[k_id][kX], KvartInfo[k_id][kY], KvartInfo[k_id][kZ]+15.0KvartInfo[k_id][kWorld], 1);         
            
    Create3DTextLabel("Чтобы выйти используйте клавишу 'Enter'\nДля входа в меню квартиры 'ALT'"COLOR_BLUE2282.9211,-1140.2861,1050.89845.0k_id1); 
         }
         print(
    "=============================================================");     
         print(
    "Результат загрузки Квартир:");    
         
    printf("Найдено строк в БД:[%i]"r);     
         
    printf("ID начала массива:[%i]"KvartInfo[0][kID]);    
         if(
    == MAX_KVARTIRprintf("Загружены строк: [%i/%i][ГОТОВО]"rMAX_KVARTIR);   
         else 
    printf("Загружены строк: [%i/%i][ОШИБКА]"rMAX_KVARTIR);    
         print(
    "[Загрузка...]: Квартиры успешно загружены");     
         print(
    "=============================================================");     
         return 
    1

    Принцип работы твоего кода:
    1. Если имя владельца равно none, не соблюдая регистр, то квартира будет подсвечиваться синим цветом.
    2. Если имя владельца из i ячейки не совпадает с именем владельца из k_id ячейки, без соблюдения регистра, то подсвечивается зёленый цвет. Проще говоря, это неработающий участок кода. Ведь имя из i ячейки будет абсолютно другим, нежели у k_id, по той причине, что k_id - ид квартиры в базе данных, который начинается от 1-го, i же от 0. Можно ведь поступить гораздо иначе, без такой воды.
    3. Если код, описанный выше не сработал, в силу вступает третий, подсвечивая квартиру в телесный цвет.

    Мой же код:
    1. Не убирал.
    2. Если массив kOwner не пустой и, как мы знаем, не равен none, то такая квартира будет подсвечиваться зёленым.
    3. Убрал.
    Возможно, я где-то ошибся или неправильно тебя понял.

  3. #3
    Аватар для Pawn.Dima
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.04.2020
    Сообщений
    37
    Репутация:
    0 ±
    Хорошо попробую как дома буду сейчас на работе)

  4. #4
    Аватар для Pawn.Dima
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.04.2020
    Сообщений
    37
    Репутация:
    0 ±
    Оказалось проблема не решена!

    Объясню еще раз что я хочу сделать

    Например есть 2 квартиры моя квартира должна подсвечиваться Зеленым Цветом а Другого игрока например Желтым а которая продается по стандарту синим

    Данный момент код такой у меня при загрузке
    PHP код:
            if(!strcmp(KvartInfo[k_id][kOwner], "None"false))
            {
    //0076FC - Синий
                
    format(stringsizeof(string), "{0076FC}Комната #%d\nПродаётся: 100000 вирт\nЧтобы войти, нажмите кнопку 'ENTER'"k_id);
            }
            else if(!
    strcmp(KvartInfo[k_id][kOwner], KvartInfo[k_id][kOwner]))
            {
    //006400 - Зеленый
                
    format(stringsizeof(string), "{006400}Комната #%d\nВладелец: %s\nЧтобы войти, нажмите кнопку 'ENTER'"k_idKvartInfo[k_id][kOwner]);
            }
            else
            {
    //DEB887 - Желный (тут другой цвет ну я потом поменяю на какой мне нужно)
                
    format(stringsizeof(string), "{DEB887}Комната #%d\nВладелец: %s\nЧтобы войти, нажмите кнопку 'ENTER'"k_idKvartInfo[k_id][kOwner]);
            }
            
    KvartInfo[k_id][kLabel] = Create3DTextLabel(stringCOLOR_BLUEKvartInfo[k_id][kX], KvartInfo[k_id][kY], KvartInfo[k_id][kZ]+15.0KvartInfo[k_id][kWorld], 1); 
    Последний раз редактировалось Pawn.Dima; 05.12.2021 в 16:03.

  5. #5
    Аватар для Pawn.Dima
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.04.2020
    Сообщений
    37
    Репутация:
    0 ±
    Когда покупаешь квартиру все хорошо работает как надо но как я перезапускаю сервер все дома которые заняты красятся в зеленый цвет а нужно чтобы только мой был зеленый (т.к это моя собственность) а другого игрока был телесный т.к это не моя квартира

    PHP код:
    stock UpdateKvartir(k_id)
    {
        new 
    string[90];
        if(!
    strcmp(KvartInfo[k_id][kOwner], "None"true))//Если квартира пуста
        
    {
            
    format(stringsizeof(string), "{0076FC}Комната #%d\nПродаётся: 100000 вирт\nЧтобы войти, нажмите кнопку 'ENTER'"k_id);
        }
        else if(!
    strcmp(KvartInfo[k_id][kOwner], KvartInfo[k_id][kOwner]))//Если Владелец есть и совпадает имя
        
    {
            
    format(stringsizeof(string), "{006400}Комната #%d\nВладелец: %s\nЧтобы войти, нажмите кнопку 'ENTER'"k_idKvartInfo[k_id][kOwner]);
        }
        else
        {
            
    format(stringsizeof(string), "{DEB887}Комната #%d\nВладелец: %s\nЧтобы войти, нажмите кнопку 'ENTER'"k_idKvartInfo[k_id][kOwner]);
        }
        
    Update3DTextLabelText(KvartInfo[k_id][kLabel], COLOR_BLUEstring);
        return 
    1;

    - - - Добавлено - - -

    Решил проблему реализовал все через таймер все работает можно закрывать тему!

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •