0
27
15 лет назад
0

» WarCraft 3 / Библиотека функций

print_b (b) = {
if b { DisplayTimedTextToPlayer(GetLocalPlayer(), 0., 0., 64., "bool |c00007f7f"+b+"|r is |c007f007ftrue|r") }
else { DisplayTimedTextToPlayer(GetLocalPlayer(), 0., 0., 64., "bool |c00007f7f"+b+"|r is |c007f007ffalse|r") }
}
  1. = некрасиво
  2. первый уровень скобочек относится к дефайному тексту, или только как разметка многострочного дефайна?
  3. b непривычно и сложно различимо с 'b', чем тебе непонравелись #b?
1
27
15 лет назад
1

» WarCraft 3 / Библиотека функций

Hellfim я круче
constant native GetObjectName takes integer objectId returns string
0
27
15 лет назад
0

» WarCraft 3 / Библиотека функций

Hanabishi плохо, зачем точки? зачем углы? да еще и в градусах =|, не оптимально
function Func takes real Speed, x1, real y1, real z1, real x2, real y2, real z2 returns nothing
    local real len
    set x1 = x2-x1
    set y1 = y2-y1
    set z1 = z2-z1
    set len = SquareRoot(x1*x1+y1*y1+z1*z1)/Speed;
    set x1 = x1/len;
    set y1 = y1/len;
    set z1 = z1/len;
    //
    // x1 //Скорость по оси X
    // y1 //Скорость по оси Y
    // z1 //Скорость по оси Z
    // (int)len сколько раз нужно прибавить эти скорость чтобы переместить точку 1 в точку 2
    //
endfunction
я сам часто пользуюсь этим методом, если нужно сдвинуть юнита, передаю в таймер скорости вместе со счетчиком, и декрементирую счетчик, когда он == 0 удаляю таймер
[size=1][i]J добавил:[/i][/size]
также напомню что
set r = (z2-z1)/dist
set r = AtanBJ(r)
это делает тоже самое что и это:
set r = Atan2(z2-z1, dist)
как думаешь что оптимальнее?
0
27
15 лет назад
0

» WarCraft 3 / Библиотека функций

ELDAR тогдауж это не биты а байты
0
27
15 лет назад
0

» WarCraft 3 / Математический подход к движению

давно бы исправил бы нежели оправдываться, опять низачет
0
27
15 лет назад
0

» WarCraft 3 / Математический подход к движению

соль должна быть в статье а не в примерах
0
27
15 лет назад
0

» WarCraft 3 / Математический подход к движению

эх... я бы даже бы настоял на отправке статьи на перемодерацию, но мне лень
0
27
15 лет назад
0

» WarCraft 3 / Математический подход к движению

афтар статьи так и не исправил того что я ему говорил, низачет
0
27
15 лет назад
0

» WarCraft 3 / Библиотека функций

return h + ":" + m + ":" + s
set s = null
set m = null
set h = null
endfunction...
[size=1][i]J добавил:[/i][/size]
учитесь =)
globals
    timer TTimer = CreateTimer()
    string array TSTime
    integer Tsec = 0  
    integer Tmin = 0
    integer Thour = 0
endglobals 

function Time_RunTimer takes nothing returns nothing
    set Tsec = Tsec + 1
    if (Tsec > 59) then
        set Tsec = 0
        set Tmin = Tmin + 1 
        if (Tmin > 59) then
            set Tmin = 0
            set Thour = Thour + 1
        endif
    endif
endfunction

function Time_GetTime takes nothing returns string
    return TSTime[Thour] + ":" + TSTime[Tmin] + ":" + TSTime[Tsec]
endfunction

function Time_StartTimer takes nothing returns nothing 
    local integer i = 0 
    loop
        exitwhen i > 9
        set TSTime[i] = "0"+I2S(i)
        set i = i + 1
    endloop
    loop
        exitwhen i > 59
        set TSTime[i] = I2S(i)
        set i = i + 1
    endloop    
    call TimerStart(TTimer, 1.0, true, function Time_RunTimer)
endfunction
0
27
15 лет назад
0

» WarCraft 3 / Библиотека функций

IceInfernal 23.59 != 23 часа 59 минут
1
27
15 лет назад
1

» WarCraft 3 / Осваиваем JASS - исправления и дополнения

"Первое, строка integer(s) это чисто для видимости, иначе JASSHelper выдаст ошибку, реально же это и есть integer."
невыдаст
2
27
15 лет назад
2

» WarCraft 3 / Осваиваем JASS - исправления и дополнения

какое личное отношение?
6
27
15 лет назад
6

» WarCraft 3 / Осваиваем JASS - исправления и дополнения

ну по поводу пафоса я согласен с гаретом, также согласен с "пропитано неким средним между "злостью" и "фу, нуб!"" =)
ну т.е. я как бы не против дополнения статьи сергея, но написано как так... ну это необъяснимо, это сложно назвать обучающей статьей, вообщем склоняюсь ко мнению что адольф просто неможет(неумеет) писать статьи на эту тему)
0
27
15 лет назад
0

» WarCraft 3 / Библиотека функций

ой, я прогнал, тперь должно быть нормальна...
хотя не мешает перепроверить)
0
27
15 лет назад
0

» WarCraft 3 / Библиотека функций

PlayerDark сделал на тяп ляп, обновил пост что выше, протести
0
27
15 лет назад
0

» WarCraft 3 / Библиотека функций

я слышал что все строки сбрасываются после перезагрузки карты, потому их номера меняются, но не проверял, и мне лень проверять, но чтобы наверняка всеже перезаполняю масивы
0
27
15 лет назад
0

» WarCraft 3 / Библиотека функций

ScorpioT1000 в смысле не со всеми числами? если про то что не все символы указаны то - ну дык...
добавил...
PlayerDark потому что стек строк после загрузки карты формируется заного
5
27
15 лет назад
5
0
27
15 лет назад
0

» WarCraft 3 / Библиотека функций

в Определение ближайшего юнита замените входящий параметр юнита на видгет, так будет правельнее...
ну и от себя настаиваю добавить это, проверено, работает...
DEC&HEX&ASCII
globals
    integer array Pow16x
    integer array Pow256x
    string  array CharMap16
    string  array CharMap256
    integer array CharInx16
    integer array CharInx256
endglobals

function S2Ix takes string s returns integer
    //return GetHandleId(s) // changed, 20.03.2012
    return StringHash(s) // changed by ScorpioT1000, 03.04.2012
    //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

function DEC2ASCII takes integer num10 returns string
    local string num256 = ""
    local integer i = 3
    local integer CodeCh
    loop
        exitwhen i < 0
        set CodeCh = 0
        loop
            exitwhen num10 < Pow256x[i]
            set CodeCh = CodeCh + 1
            set num10 = num10 - Pow256x[i]
        endloop
        if CodeCh > 0 then
            set num256 = num256 + CharMap256[CodeCh]
        endif
        set i = i - 1
    endloop
    return num256
endfunction

function HEX2DEC takes string num16 returns integer
    local integer num10 = 0
    local integer i = 0
    local integer len = StringLength(num16)
    loop
        exitwhen i >= len
        set num10 = num10 + CharInx16[S2Ix(SubString(num16, i, i+1))] * Pow16x[len-i-1]
        set i = i + 1
    endloop
    return num10
endfunction

function DEC2HEX takes integer num10 returns string
    local string num16 = ""
    local integer i = 7
    local integer CodeCh
    loop
        exitwhen i < 0
        set CodeCh = 0
        loop
            exitwhen num10 < Pow16x[i]
            set CodeCh = CodeCh + 1
            set num10 = num10 - Pow16x[i]
        endloop
        if CodeCh > 0 then
            set num16 = num16 + CharMap16[CodeCh]
        endif
        set i = i - 1
    endloop
    return num16
endfunction

//-

function ForLoadMap takes nothing returns nothing
    set CharInx16[S2Ix("0")] = 0
    set CharInx16[S2Ix("1")] = 1
    set CharInx16[S2Ix("2")] = 2
    set CharInx16[S2Ix("3")] = 3
    set CharInx16[S2Ix("4")] = 4
    set CharInx16[S2Ix("5")] = 5
    set CharInx16[S2Ix("6")] = 6
    set CharInx16[S2Ix("7")] = 7
    set CharInx16[S2Ix("8")] = 8
    set CharInx16[S2Ix("9")] = 9
    set CharInx16[S2Ix("A")] = 10
    set CharInx16[S2Ix("a")] = 10
    set CharInx16[S2Ix("B")] = 11
    set CharInx16[S2Ix("b")] = 11
    set CharInx16[S2Ix("C")] = 12
    set CharInx16[S2Ix("c")] = 12
    set CharInx16[S2Ix("D")] = 13
    set CharInx16[S2Ix("d")] = 13
    set CharInx16[S2Ix("E")] = 14
    set CharInx16[S2Ix("e")] = 14
    set CharInx16[S2Ix("F")] = 15
    set CharInx16[S2Ix("f")] = 15
    set CharInx256[S2Ix("!")] = 33
    set CharInx256[S2Ix(" ")] = 34
    set CharInx256[S2Ix("#")] = 35
    set CharInx256[S2Ix("$")] = 36
    set CharInx256[S2Ix("%")] = 37
    set CharInx256[S2Ix("&")] = 38
    set CharInx256[S2Ix("'")] = 39
    set CharInx256[S2Ix("(")] = 40
    set CharInx256[S2Ix(")")] = 41
    set CharInx256[S2Ix("*")] = 42
    set CharInx256[S2Ix("+")] = 43
    set CharInx256[S2Ix(",")] = 44
    set CharInx256[S2Ix("-")] = 45
    set CharInx256[S2Ix(".")] = 46
    set CharInx256[S2Ix("/")] = 47
    set CharInx256[S2Ix("0")] = 48
    set CharInx256[S2Ix("1")] = 49
    set CharInx256[S2Ix("2")] = 50
    set CharInx256[S2Ix("3")] = 51
    set CharInx256[S2Ix("4")] = 52
    set CharInx256[S2Ix("5")] = 53
    set CharInx256[S2Ix("6")] = 54
    set CharInx256[S2Ix("7")] = 55
    set CharInx256[S2Ix("8")] = 56
    set CharInx256[S2Ix("9")] = 57
    set CharInx256[S2Ix(":")] = 58
    set CharInx256[S2Ix(";")] = 59
    set CharInx256[S2Ix("<")] = 60
    set CharInx256[S2Ix("=")] = 61
    set CharInx256[S2Ix(">")] = 62
    set CharInx256[S2Ix(".")] = 63
    set CharInx256[S2Ix("@")] = 64
    set CharInx256[S2Ix("A")] = 65
    set CharInx256[S2Ix("B")] = 66
    set CharInx256[S2Ix("C")] = 67 
    set CharInx256[S2Ix("D")] = 68 
    set CharInx256[S2Ix("E")] = 69 
    set CharInx256[S2Ix("F")] = 70 
    set CharInx256[S2Ix("G")] = 71 
    set CharInx256[S2Ix("H")] = 72 
    set CharInx256[S2Ix("I")] = 73 
    set CharInx256[S2Ix("J")] = 74 
    set CharInx256[S2Ix("K")] = 75 
    set CharInx256[S2Ix("L")] = 76 
    set CharInx256[S2Ix("M")] = 77 
    set CharInx256[S2Ix("N")] = 78 
    set CharInx256[S2Ix("O")] = 79 
    set CharInx256[S2Ix("P")] = 80 
    set CharInx256[S2Ix("Q")] = 81 
    set CharInx256[S2Ix("R")] = 82 
    set CharInx256[S2Ix("S")] = 83 
    set CharInx256[S2Ix("T")] = 84 
    set CharInx256[S2Ix("U")] = 85 
    set CharInx256[S2Ix("V")] = 86 
    set CharInx256[S2Ix("W")] = 87 
    set CharInx256[S2Ix("X")] = 88  
    set CharInx256[S2Ix("Y")] = 89  
    set CharInx256[S2Ix("Z")] = 90  
    set CharInx256[S2Ix("[")] = 91
    set CharInx256[S2Ix("]")] = 93  
    set CharInx256[S2Ix("^")] = 94  
    set CharInx256[S2Ix("_")] = 95   
    set CharInx256[S2Ix("`")] = 96   
    set CharInx256[S2Ix("a")] = 97   
    set CharInx256[S2Ix("b")] = 98   
    set CharInx256[S2Ix("c")] = 99   
    set CharInx256[S2Ix("d")] = 100  
    set CharInx256[S2Ix("e")] = 101   
    set CharInx256[S2Ix("f")] = 102   
    set CharInx256[S2Ix("g")] = 103   
    set CharInx256[S2Ix("h")] = 104   
    set CharInx256[S2Ix("i")] = 105   
    set CharInx256[S2Ix("j")] = 106   
    set CharInx256[S2Ix("k")] = 107   
    set CharInx256[S2Ix("l")] = 108   
    set CharInx256[S2Ix("m")] = 109   
    set CharInx256[S2Ix("n")] = 110   
    set CharInx256[S2Ix("o")] = 111   
    set CharInx256[S2Ix("p")] = 112   
    set CharInx256[S2Ix("q")] = 113   
    set CharInx256[S2Ix("r")] = 114   
    set CharInx256[S2Ix("s")] = 115   
    set CharInx256[S2Ix("t")] = 116    
    set CharInx256[S2Ix("u")] = 117     
    set CharInx256[S2Ix("v")] = 118     
    set CharInx256[S2Ix("w")] = 119     
    set CharInx256[S2Ix("x")] = 120     
    set CharInx256[S2Ix("y")] = 121     
    set CharInx256[S2Ix("z")] = 122     
    set CharInx256[S2Ix("{")] = 123     
    set CharInx256[S2Ix("|")] = 124     
    set CharInx256[S2Ix("}")] = 125     
    set CharInx256[S2Ix("~")] = 126
endfunction

function ForInitializationMap takes nothing returns nothing
    local trigger trig = CreateTrigger()
    call TriggerRegisterGameEvent(trig, EVENT_GAME_LOADED)
    call TriggerAddAction( trig, function ForLoadMap)
    call ForLoadMap()
    set Pow256x[0] = 0x00000001
    set Pow256x[1] = 0x00000100
    set Pow256x[2] = 0x00010000
    set Pow256x[3] = 0x01000000
    set Pow16x[0] = 0x00000001
    set Pow16x[1] = 0x00000010
    set Pow16x[2] = 0x00000100
    set Pow16x[3] = 0x00001000
    set Pow16x[4] = 0x00010000
    set Pow16x[5] = 0x00100000
    set Pow16x[6] = 0x01000000
    set Pow16x[7] = 0x10000000
    set CharMap16[0] = "0"
    set CharMap16[1] = "1"
    set CharMap16[2] = "2"
    set CharMap16[3] = "3"
    set CharMap16[4] = "4"
    set CharMap16[5] = "5"
    set CharMap16[6] = "6"
    set CharMap16[7] = "7"
    set CharMap16[8] = "8"
    set CharMap16[9] = "9"
    set CharMap16[10] = "a"
    set CharMap16[11] = "b"
    set CharMap16[12] = "c"
    set CharMap16[13] = "d"
    set CharMap16[14] = "e"
    set CharMap16[15] = "f"
    set CharMap256[33] = "!"
    set CharMap256[34] = " "
    set CharMap256[35] = "#"
    set CharMap256[36] = "$"
    set CharMap256[37] = "%"
    set CharMap256[38] = "&"
    set CharMap256[39] = "'"
    set CharMap256[40] = "("
    set CharMap256[41] = ")"
    set CharMap256[42] = "*"
    set CharMap256[43] = "+"
    set CharMap256[44] = ","
    set CharMap256[45] = "-"
    set CharMap256[46] = "."
    set CharMap256[47] = "/"
    set CharMap256[48] = "0"
    set CharMap256[49] = "1"
    set CharMap256[50] = "2"
    set CharMap256[51] = "3"
    set CharMap256[52] = "4"
    set CharMap256[53] = "5"
    set CharMap256[54] = "6"
    set CharMap256[55] = "7"
    set CharMap256[56] = "8"
    set CharMap256[57] = "9"
    set CharMap256[58] = ":"
    set CharMap256[59] = ";"
    set CharMap256[60] = "<"
    set CharMap256[61] = "="
    set CharMap256[62] = ">"
    set CharMap256[63] = "."
    set CharMap256[64] = "@"
    set CharMap256[65] = "A"
    set CharMap256[66] = "B"
    set CharMap256[67] = "C"
    set CharMap256[68] = "D"
    set CharMap256[69] = "E" 
    set CharMap256[70] = "F"
    set CharMap256[71] = "G"
    set CharMap256[72] = "H"
    set CharMap256[73] = "I" 
    set CharMap256[74] = "J"
    set CharMap256[75] = "K" 
    set CharMap256[76] = "L" 
    set CharMap256[77] = "M" 
    set CharMap256[78] = "N"
    set CharMap256[79] = "O"
    set CharMap256[80] = "P"
    set CharMap256[81] = "Q"
    set CharMap256[82] = "R"
    set CharMap256[83] = "S"
    set CharMap256[84] = "T"
    set CharMap256[85] = "U" 
    set CharMap256[86] = "V"
    set CharMap256[87] = "W"
    set CharMap256[88] = "X" 
    set CharMap256[89] = "Y" 
    set CharMap256[90] = "Z"
    set CharMap256[91] = "["
    set CharMap256[93] = "]" 
    set CharMap256[94] = "^"
    set CharMap256[95] = "_" 
    set CharMap256[96] = "`" 
    set CharMap256[97] = "a" 
    set CharMap256[98] = "b" 
    set CharMap256[99] = "c" 
    set CharMap256[100] = "d"  
    set CharMap256[101] = "e"
    set CharMap256[102] = "f" 
    set CharMap256[103] = "g"  
    set CharMap256[104] = "h"   
    set CharMap256[105] = "i" 
    set CharMap256[106] = "j"  
    set CharMap256[107] = "k"
    set CharMap256[108] = "l"  
    set CharMap256[109] = "m"
    set CharMap256[110] = "n"
    set CharMap256[111] = "o"
    set CharMap256[112] = "p"
    set CharMap256[113] = "q" 
    set CharMap256[114] = "r" 
    set CharMap256[115] = "s" 
    set CharMap256[116] = "t"  
    set CharMap256[117] = "u" 
    set CharMap256[118] = "v"  
    set CharMap256[119] = "w"
    set CharMap256[120] = "x"
    set CharMap256[121] = "y"
    set CharMap256[122] = "z"
    set CharMap256[123] = "{"  
    set CharMap256[124] = "|"  
    set CharMap256[125] = "}"  
    set CharMap256[126] = "~"
    set trig = null
endfunction
0
27
16 лет назад
0

» WarCraft 3 / Библиотека функций

и вообще по хорошему надобыло бы сделать так:
function AddAbilityTemp takes unit u, integer id, real time returns nothing
    local timer t
    if UnitAddAbility(u, id) then
        set t = CreateTimer()
        call StoreString(udg_gamecache, "timerabilunit", I2S(H2I(t)), I2S(H2I(u)))
        call StoreString(udg_gamecache, "timerabil", I2S(H2I(t)), I2S(id)
        call TimerStart(t, time, false, function RemoveAbility) 
        set t = null
    endif
endfunction
ну удаление абилки через время это что-то не то, зачем это? да и это просто элементарнейшая переброска через кеш, вообщем нет никакой цености...
0
27
16 лет назад
0

» WarCraft 3 / Библиотека функций

function RemoveAbility takes nothing returns nothing
local unit u = I2U(S2I(GetStoredString(udg_gamecache, "timerabilunit", I2S(H2I(GetExpiredTimer())))))
local integer id = S2I(GetStoredString(udg_gamecache, "timerabil", I2S(H2I(GetExpiredTimer()))))
call UnitRemoveAbility(u, id)
call DestroyTimer(GetExpiredTimer())
call FlushStoredString(udg_gamecache, "timerabilunit", I2S(H2I(GetExpiredTimer())))
call FlushStoredString(udg_gamecache, "timerabil", I2S(H2I(GetExpiredTimer())))
set u = null
endfunction
это что такое? ты очищаеш хендл таймера а потом береш его и используеш его как ключ к очищению кеша? это ведь не будет работать...