Добавлен Hate
есть такой код
private void C2S(int h, int p){
int row = 1, to = 0, full, from = 0
string s = Hint_Content[h][p]
full = StringLength(s)
//msg("for player "+ I2S(p) +" string length" + I2S(full) + " original string " + s)
while(to <= full) {
if SubString(s, to, to+1) == "$" {
msg("empty string on row " + I2S(row))
HText[row][p] = " "
//msg(s)
row++
to+=1
from = to
msg("begin from "+I2S(from))
}
elseif SubString(s, to, to+1) == "@" {
msg("divide string on row " + I2S(row))
HText[row][p] = SubString(s, from, to)
//msg(s)
row++
from = to + 1
}
elseif to == full {
HText[row][p] = SubString(s, from, to)
msg("end of string is "+HText[row][p])
msg("row is "+ I2S(row))
//msg(s)
break
}
//msg(I2S(row) + HText[row][p])
to++
}
}
по сообщениям он показывает все ок, все то что нужно
введешь "щпаовапа", и он разбивает строку по форматированию, до 12 строк на каждый тексттаг
однако при выводе этих разбитых строк в текстаг этим кодом
public void ShowText(int h, int p){
int row = 1, a = 255, c = 0
real start_y = Tooltip_Y(Hint_Width[h], p) - 16.
while(c++ < 12){ DestroyTextTag(Hint_Text[c][p]) }
if GetLocalPlayer() == Player(p) { a = 0 }
Hint_Text[1][p] = CreateTextTag()
SetTextTagPos(Hint_Text[1][p], Tooltip_X(0, p) + 16., start_y - (1 * 22.), 40.)
SetTextTagColor(Hint_Text[1][p], 255, 255, 255, a)
SetTextTagText(Hint_Text[1][p], HText[1][p], (7.8 * 0.023) / 10.)
Hint_Text[2][p] = CreateTextTag()
SetTextTagPos(Hint_Text[2][p], Tooltip_X(0, p) + 16., start_y - (2 * 22.), 40.)
SetTextTagColor(Hint_Text[2][p], 255, 255, 255, a)
SetTextTagText(Hint_Text[2][p], HText[2][p], (7.8 * 0.023) / 10.)
Hint_Text[3][p] = CreateTextTag()
SetTextTagPos(Hint_Text[3][p], Tooltip_X(0, p) + 16., start_y - (3 * 22.), 40.)
SetTextTagColor(Hint_Text[3][p], 255, 255, 255, a)
SetTextTagText(Hint_Text[3][p], HText[3][p], (7.8 * 0.023) / 10.)
msg(HText[1][p])
msg(HText[2][p])
msg(HText[3][p])
получаю дубликаты, тоесть создается 3 тексттага "щпаовапа" вместо одного, первого.
если попытаться ввести "текст 1 текст 2"
получится в тексттагах 2 штуки "текст 1" и только трейтий будет "текст 2"
Принятый ответ
biridius:
if GetLocalPlayer() == Player(p) { a = 0 }
т.е. текст невидим для нужного игрока? 0 альфы это же 100% прозрачность
а текст неверный потому что накладывается мб от разных игроков
хз насчет альфы
дело в том, что когда ты выводишь текст напрямую в дебаг сообщение на экран в функции C2S, там все нормально, а когда из функции с тексттагом, он уже продублирован
либо я невнимательно где то посмотрел, либо лыжи не едут
если вывести сообщения в конце C2S, получим все нормально,
msg(HText[1][p]+" " + I2S(p))
msg(HText[2][p]+" " + I2S(p))
msg(HText[3][p]+" " + I2S(p))
покажет
"щпаовапа 0"
"0"
"0"
"щпаовапа 0"
"0"
"0"
если так же вывести сообщения в функции с тексттагом, то уже получится
"щпаовапа 0"
"щпаовапа 0"
"0"
"щпаовапа 0"
"щпаовапа 0"
"0"
upd
проблема была с массивами, были массивы HText[12][9], изменил на HText[12][10] и все стало нормально
проблема была с массивами, были массивы HText[12][9], изменил на HText[12][10] и все стало нормально
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
т.е. текст невидим для нужного игрока? 0 альфы это же 100% прозрачность
а текст неверный потому что накладывается мб от разных игроков
Отредактирован Hate
"щпаовапа 0"
"0"
"0"
"щпаовапа 0"
"щпаовапа 0"
"0"
проблема была с массивами, были массивы HText[12][9], изменил на HText[12][10] и все стало нормально