есть такой код
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"
upd
проблема была с массивами, были массивы HText[12][9], изменил на HText[12][10] и все стало нормально
0
21
7 лет назад
0
if GetLocalPlayer() == Player(p) { a = 0 }
т.е. текст невидим для нужного игрока? 0 альфы это же 100% прозрачность
а текст неверный потому что накладывается мб от разных игроков
0
26
7 лет назад
Отредактирован Hate
0
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"
upd
проблема была с массивами, были массивы HText[12][9], изменил на HText[12][10] и все стало нормально
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.