PDA

Просмотр полной версии : [Вопрос] strcmp



Pawn.Dima
29.11.2021, 09:50
Здравствуйте помогите разобраться со функцией strcmp не могу выдать определенный цвет для владельцев квартир

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



forward LoadKvartir();
public LoadKvartir()
{
new r, d, string[90];
cache_get_data(r, d);
for(new i, k_id; i < r; i++)
{
k_id = cache_get_field_content_int(i, "k_id", mysql_connect_ID);
if(!(0 <= k_id < MAX_KVARTIR))
{
continue;
}
Iter_Add(iKvartir, k_id);
cache_get_field_content(i, "kOwner", KvartInfo[k_id][kOwner], mysql_connect_ID, 32);
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(string, sizeof(string), "{0076FC}Комната #%d\nПродаётся: 100000 вирт\nЧтобы войти, нажмите кнопку 'ENTER'", k_id);
}
else if(strcmp(KvartInfo[i][kOwner], KvartInfo[k_id][kOwner], true))//Если Владелец есть и совпадает имя
{
format(string, sizeof(string), "{006400}Комната #%d\nВладелец: %s\nЧтобы войти, нажмите кнопку 'ENTER'", k_id, KvartInfo[k_id][kOwner]);
}
else
{
format(string, sizeof(string), "{DEB887}Комната #%d\nВладелец: %s\nЧтобы войти, нажмите кнопку 'ENTER'", k_id, KvartInfo[k_id][kOwner]);
}
KvartInfo[k_id][kLabel] = Create3DTextLabel(string, COLOR_BLUE, KvartInfo[k_id][kX], KvartInfo[k_id][kY], KvartInfo[k_id][kZ]+1, 5.0, KvartInfo[k_id][kWorld], 1);
Create3DTextLabel("Чтобы выйти используйте клавишу 'Enter'\nДля входа в меню квартиры 'ALT'", COLOR_BLUE, 2282.9211,-1140.2861,1050.8984, 5.0, k_id, 1);
}
print("=============================================================");
print("Результат загрузки Квартир:");
printf("Найдено строк в БД:[%i]", r);
printf("ID начала массива:[%i]", KvartInfo[0][kID]);
if(r == MAX_KVARTIR) printf("Загружены строк: [%i/%i][ГОТОВО]", r, MAX_KVARTIR);
else printf("Загружены строк: [%i/%i][ОШИБКА]", r, MAX_KVARTIR);
print("[Загрузка...]: Квартиры успешно загружены");
print("=============================================================");
return 1;
}
Например есть 2 квартиры одной из квартир я владелец должно подсвечиваться (Зеленым) цветом а если подхожу к другой квартире подсветка другим цветом как это можно реализовать я уже все перепробывал и на Wiki смотрел что то не допетрю как сделать :( помогите

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

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



forward LoadKvartir();
public LoadKvartir()
{
new r, d, string[90];
cache_get_data(r, d);
for(new i, k_id; i < r; i++)
{
k_id = cache_get_field_content_int(i, "k_id", mysql_connect_ID);
if(!(0 <= k_id < MAX_KVARTIR))
{
continue;
}
Iter_Add(iKvartir, k_id);
cache_get_field_content(i, "kOwner", KvartInfo[k_id][kOwner], mysql_connect_ID, 32);
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(string, sizeof(string), "{0076FC}Комната #%d\nПродаётся: 100000 вирт\nЧтобы войти, нажмите кнопку 'ENTER'", k_id);
}
else if(strcmp(KvartInfo[i][kOwner], KvartInfo[k_id][kOwner], true))//Если Владелец есть и совпадает имя
{
format(string, sizeof(string), "{006400}Комната #%d\nВладелец: %s\nЧтобы войти, нажмите кнопку 'ENTER'", k_id, KvartInfo[k_id][kOwner]);
}
else
{
format(string, sizeof(string), "{DEB887}Комната #%d\nВладелец: %s\nЧтобы войти, нажмите кнопку 'ENTER'", k_id, KvartInfo[k_id][kOwner]);
}
KvartInfo[k_id][kLabel] = Create3DTextLabel(string, COLOR_BLUE, KvartInfo[k_id][kX], KvartInfo[k_id][kY], KvartInfo[k_id][kZ]+1, 5.0, KvartInfo[k_id][kWorld], 1);
Create3DTextLabel("Чтобы выйти используйте клавишу 'Enter'\nДля входа в меню квартиры 'ALT'", COLOR_BLUE, 2282.9211,-1140.2861,1050.8984, 5.0, k_id, 1);
}
print("=============================================================");
print("Результат загрузки Квартир:");
printf("Найдено строк в БД:[%i]", r);
printf("ID начала массива:[%i]", KvartInfo[0][kID]);
if(r == MAX_KVARTIR) printf("Загружены строк: [%i/%i][ГОТОВО]", r, MAX_KVARTIR);
else printf("Загружены строк: [%i/%i][ОШИБКА]", r, MAX_KVARTIR);
print("[Загрузка...]: Квартиры успешно загружены");
print("=============================================================");
return 1;
}
Например есть 2 квартиры одной из квартир я владелец должно подсвечиваться (Зеленым) цветом а если подхожу к другой квартире подсветка другим цветом как это можно реализовать я уже все перепробывал и на Wiki смотрел что то не допетрю как сделать :( помогите


forward LoadKvartir();
public LoadKvartir()
{
new r, d, string[90];
cache_get_data(r, d);
for(new i, k_id; i < r; i++)
{
k_id = cache_get_field_content_int(i, "k_id", mysql_connect_ID);
if(!(0 <= k_id < MAX_KVARTIR))
{
continue;
}
Iter_Add(iKvartir, k_id);
cache_get_field_content(i, "kOwner", KvartInfo[k_id][kOwner], mysql_connect_ID, 32);
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(string, sizeof(string), "{0076FC}Комната #%d\nПродаётся: 100000 вирт\nЧтобы войти, нажмите кнопку 'ENTER'", k_id);
}
else
{
if(sizeof KvartInfo[k_id][kOwner] > 0)
{
format(string, sizeof(string), "{006400}Комната #%d\nВладелец: %s\nЧтобы войти, нажмите кнопку 'ENTER'", k_id, KvartInfo[k_id][kOwner]);
}
KvartInfo[k_id][kLabel] = Create3DTextLabel(string, COLOR_BLUE, KvartInfo[k_id][kX], KvartInfo[k_id][kY], KvartInfo[k_id][kZ]+1, 5.0, KvartInfo[k_id][kWorld], 1);
Create3DTextLabel("Чтобы выйти используйте клавишу 'Enter'\nДля входа в меню квартиры 'ALT'", COLOR_BLUE, 2282.9211,-1140.2861,1050.8984, 5.0, k_id, 1);
}
print("=============================================================");
print("Результат загрузки Квартир:");
printf("Найдено строк в БД:[%i]", r);
printf("ID начала массива:[%i]", KvartInfo[0][kID]);
if(r == MAX_KVARTIR) printf("Загружены строк: [%i/%i][ГОТОВО]", r, MAX_KVARTIR);
else printf("Загружены строк: [%i/%i][ОШИБКА]", r, MAX_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. Убрал.
Возможно, я где-то ошибся или неправильно тебя понял.

Pawn.Dima
01.12.2021, 00:06
Хорошо попробую как дома буду сейчас на работе)

Pawn.Dima
04.12.2021, 14:26
Оказалось проблема не решена!

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

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

Данный момент код такой у меня при загрузке

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

Pawn.Dima
05.12.2021, 16:40
Когда покупаешь квартиру все хорошо работает как надо но как я перезапускаю сервер все дома которые заняты красятся в зеленый цвет а нужно чтобы только мой был зеленый (т.к это моя собственность) а другого игрока был телесный т.к это не моя квартира


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

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

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