Собственно, хотел в свой мод добавить такую штуку: В мэпбрифинге рядом с описанием карты чтобы был скриншотик. Написал такой вот код:
C++ Source Code:
1
if (gEngfuncs.pfnGetLevelName() == "map1")
2
plab->setImage(vgui_LoadTGA("maps/map1.tga"));
3
elseif (gEngfuncs.pfnGetLevelName() == "map2")
4
plab->setImage(vgui_LoadTGA("maps/map2.tga"));
5
elseif (gEngfuncs.pfnGetLevelName() == "map3")
6
plab->setImage(vgui_LoadTGA("maps/map3.tga"));
7
else
8
plab->setImage(vgui_LoadTGA("maps/zero.tga"));
Далее само собой разумеется разметка типа размера и расположения но это не важно. В общем, проблема в том что всегда высвечивается картинка из условия else. Почему так - не могу понять.
__________________
Fight for Peace, Fight for Love
В общем сделал с strcmp, убрал else ради эксперимента, теперь грузится на всех картах картинка третей. когда третью карту переименовал, не грузится никакая картинка. Я по-прежнему не знаю как довести до ума это(
Добавлено 16-07-2016 в 17:03:
вот код:
C++ Source Code:
1
if (!strcmp (gEngfuncs.pfnGetLevelName(), "map1")==0)
2
plab->setImage(vgui_LoadTGA("maps/map1.tga"));
3
if (strcmp (gEngfuncs.pfnGetLevelName(), "map2")==0)
4
plab->setImage(vgui_LoadTGA("maps/map2.tga"));
5
if (!strcmp (gEngfuncs.pfnGetLevelName(), "map3")==0)
6
plab->setImage(vgui_LoadTGA("maps/map3.tga"));
__________________
Fight for Peace, Fight for Love
Shadow762
Копай в сторону функции strcmp. А именно, как правильно её использовать. Примеров вагон, в том числе в SDK.
Хотя я бы рекомендовал использовать _stricmp, т.к. емнип, в халфе имена карт не чувствительны к регистру.
Добавлено 16-07-2016 в 20:40:
Цитата:
Shadow762 писал: if (!strcmp (gEngfuncs.pfnGetLevelName(), "map1")==0)
Я не шучу. Если ты ленишься почитать учебник по Си, или хотя бы тупо загуглить, и предпочитаешь экспериментировать - экспериментируй! Я могу дать тебе рабочий код, но какой в этом смысл, если ты не желаешь учиться. Таким образом, время будет потрачено зря.
Ты можешь возразить - но ведь на написание всех этих постов времени ушло в разы больше? Верно. Но я пишу их один раз, а отвечать на вопросы не желающего учиться человека потом придётся постоянно. Теперь же ты, возможно, задумаешься и таки откроешь учебник. Или - как вариант - обругаешь меня про себя плохими словами и пойдёшь спрашивать на другой ресурс. Оба варианта ок.
XaeroX писал: обругаешь меня про себя плохими словами и пойдёшь спрашивать на другой ресурс
Не вижу в этом никакого смысла. За рабочий код буду благодарен. А на счет новичка, который будет иждивенчески требовать код от опытных, я не из таких. На форум я иду когда уже не вижу никаких вариантов решения проблемы. До этого запилил массу фишек, быть может не совсем оригинальных, но тем не менее не копипастой. Врать не стану, частенько ссылался на здешние туторы.
Вернусь к теме.
C++ Source Code:
if (!strcmp (gEngfuncs.pfnGetLevelName(), "map1")==0)
plab->setImage(vgui_LoadTGA("maps/map1.tga"));
. Вначале я сделал ровно так как ты сказал - с функцией strcmp: прочитал про функцию, применил ее как следует. В итоге на месте картинки я получил пустоту. Подумал, ну может что сотворил там не так, продолжил гуглить, на каком-то сайте нашел вариант с отрицанием ("!"), подставил, появилась ТГАшка, та что после первого условия, то есть которая для первой карты. _stricmp тоже не дает результатов.
Добавлено 16-07-2016 в 20:58:
Насколько я понимаю, gEngfuncs.pfnGetLevelName возвращает название уровня не в том виде.
C++ Source Code:
f (strcmp (gEngfuncs.pfnGetLevelName(), "map1")==0)
plab->setImage(vgui_LoadTGA("maps/map1.tga"));
Иначе бы работало.
__________________
Fight for Peace, Fight for Love
Shadow762 ф-я возвращает то ли число разных знаков, то ли позицию, вощем, если это 0, то строки одинаковые. Конструкция if (strcmp(szString, "WTF") == 0) {} как раз это проверяет и код в фиг. скобках выполнится, когда таки строки совпадут. Конструкция if (!strcmp(szString, "WTF")) {} менее очевидная/грамотная, но, по сути, делает то же самое поскольку "!" - логический оператор "не" (т.е. инвертирует 0 в 1 и обратно). Когда ты пишешь всё вкучу, "не" нейтрализует твоё условие.
Вообще, не скрою, я сам учил Си по халве. Но ЭТО... можно просечь своей головой даже без учебников...