Мне нужно сделать так, что имя предмета, которое в редакторе (I023/I01X) и подобное выводилось на экране через string. Я попробовал сделать через name item, но как понял, он хочет вывести имя предмета которое прописано в названии. Пробовал поэкспериментировать с I2S т.к. прдмет по сути, это обычное число, но всё равно не выводило.

Принятый ответ

Hate:
это вам нужно взять ItemTypeId и затем конвертировать его в нужный тип исчисления, или как он там называется
В JASS'e совершенно недавно, и работаю только со стандартными BJ функциями, если не сложно, можно как-то расписать, что бы понять и запонмить что-то новое.
Если так, мне нужно
Узнать что за ид предмета в 1 слоте у героя и вывести его.
I2R(ItemTypeId(UnitItemInSlotBJ(u, 1))) Типо такого, но это не работает )
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
26
6 лет назад
0
это вам нужно взять ItemTypeId и затем конвертировать его в нужный тип исчисления, или как он там называется
0
7
6 лет назад
Отредактирован Reform
0
Hate:
это вам нужно взять ItemTypeId и затем конвертировать его в нужный тип исчисления, или как он там называется
В JASS'e совершенно недавно, и работаю только со стандартными BJ функциями, если не сложно, можно как-то расписать, что бы понять и запонмить что-то новое.
Если так, мне нужно
Узнать что за ид предмета в 1 слоте у героя и вывести его.
I2R(ItemTypeId(UnitItemInSlotBJ(u, 1))) Типо такого, но это не работает )
Принятый ответ
0
26
6 лет назад
0
0
27
6 лет назад
Отредактирован MpW
0
вот
I2R(ItemTypeId(UnitItemInSlotBJ(u, 1))) - кажется, если не ошибаюсь, выведет в десятичной системе счисления, а чтобы в 256-ричную, надо будет переводить из 10-чной в 256-ричную.
4
21
6 лет назад
Отредактирован scopterectus
4
Автор : Vexorian
	function RAW2S takes integer value returns string
        local string charMap = ".................................!.#$%&'()*+,-./0123456789:;<=>.@ABCDEFGHIJKLMNOPQRSTUVWXYZ[.]^_`abcdefghijklmnopqrstuvwxyz{|}~................................................................................................................................."
        local string result = ""
        local integer remainingValue = value
        local integer charValue
        local integer byteno = 0

        loop
            set charValue = ModuloInteger(remainingValue, 256)
            set remainingValue = remainingValue / 256
            set result = SubString(charMap, charValue, charValue + 1) + result
     
            set byteno = byteno + 1
            exitwhen ( byteno == 4 )
        endloop

        return result
    endfunction 
0
27
6 лет назад
Отредактирован MpW
0
кстати, автору нужно чтобы из строки из 4 символов перевести в число. эту строку так понял вводит через чат, а потом по этим символам создает итем. Проблема в том, что у меня не хочет создавать. Дебагом вывожу, вроде все правильно (число правильное: онлайн-калькулятором проверял и сравнивал с тем. что выдавал дебаг), а итем не создается. Не понимаю почему
пример 1
function Char2Id takes string c returns integer
    local integer i = 0
    local string abc = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    local string t

    loop
        set t = SubString(abc,i,i + 1)
        exitwhen t == null or t == c
        set i = i + 1
    endloop
    if i < 10 then
        return i + 48
    elseif i < 36 then
        return i + 65 - 10
    endif
    return i + 97 - 36
endfunction

function String2Id takes string s returns integer
    return ((Char2Id(SubString(s,0,1)) * 256 + Char2Id(SubString(s,1,2))) * 256 + Char2Id(SubString(s,2,3))) * 256 + Char2Id(SubString(s,3,4))
endfunction

function Id2Char takes integer i returns string
    local string abc = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"

    if i >= 97 then
        return SubString(abc,i - 97 + 36,i - 96 + 36)
    elseif i >= 65 then
        return SubString(abc,i - 65 + 10,i - 64 + 10)
    endif
    return SubString(abc,i - 48,i - 47)
endfunction

function Id2String takes integer id1 returns string
    local integer t = id1 / 256
    local string r = Id2Char(id1 - 256 * t)
    set id1 = t / 256
    set r = Id2Char(t - 256 * id1) + r
    set t = id1 / 256
    return Id2Char(t) + Id2Char(id1 - 256 * t) + r
endfunction

function Chat_Actions takes nothing returns nothing
    local string S0 = "I0" + SubStringBJ(GetEventPlayerChatString(), 3, 4)
    local integer N = String2Id(S0)
    call BJDebugMsg(S0)
    call BJDebugMsg(I2S(N))
    call UnitAddItemById(gg_unit_Hpal_0001, N)
endfunction

//===========================================================================
function InitTrig_Chat takes nothing returns nothing
    set gg_trg_Chat = CreateTrigger(  )
    call TriggerRegisterPlayerChatEvent( gg_trg_Chat, Player(0), "I0", false )
    call TriggerAddAction( gg_trg_Chat, function Chat_Actions )
endfunction
код скорпа у меня не работает - xgm.guru/p/wc3/hex-to-dec-to-ascii
ошибка в этом месте
function S2Ix takes string s returns integer
    //return GetHandleId(s) // changed, 20.03.2012
    //return StringHash(s) // changed by ScorpioT1000, 03.04.2012
    // wrong fixes =(
    return s
    return 0
endfunction

function ASCII2DEC takes string num256 returns integer
    local integer num10 = 0
    local integer i = 0
    local integer len = StringLength(num256)
    loop
        exitwhen i >= len
        set num10 = num10 + CharInx256[S2Ix(SubString(num256, i, i+1))] * Pow256x[len-i-1]
        set i = i + 1
    endloop
    return num10
endfunction
беру функцию ASCII2DEC, вставляю. А вот функция S2Ix выводит мне ошибку с ретурном. пробовал сам исправить, теперь функция S2Ix нули мне выдает при тесте. не шарю в счислениях. можно ли это как-то пофиксить?
нашел ответ вот здесь здесь карта пример на гуи
Чтобы оставить комментарий, пожалуйста, войдите на сайт.