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 удаляю таймер
ну по поводу пафоса я согласен с гаретом, также согласен с "пропитано неким средним между "злостью" и "фу, нуб!"" =)
ну т.е. я как бы не против дополнения статьи сергея, но написано как так... ну это необъяснимо, это сложно назвать обучающей статьей, вообщем склоняюсь ко мнению что адольф просто неможет(неумеет) писать статьи на эту тему)
я слышал что все строки сбрасываются после перезагрузки карты, потому их номера меняются, но не проверял, и мне лень проверять, но чтобы наверняка всеже перезаполняю масивы
ScorpioT1000 в смысле не со всеми числами? если про то что не все символы указаны то - ну дык...
добавил... PlayerDark потому что стек строк после загрузки карты формируется заного
в Определение ближайшего юнита замените входящий параметр юнита на видгет, так будет правельнее...
ну и от себя настаиваю добавить это, проверено, работает...
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
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
ну удаление абилки через время это что-то не то, зачем это? да и это просто элементарнейшая переброска через кеш, вообщем нет никакой цености...
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
это что такое? ты очищаеш хендл таймера а потом береш его и используеш его как ключ к очищению кеша? это ведь не будет работать...
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Математический подход к движению
» WarCraft 3 / Математический подход к движению
» WarCraft 3 / Математический подход к движению
» WarCraft 3 / Математический подход к движению
» WarCraft 3 / Библиотека функций
set m = null
set h = null
endfunction...
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Осваиваем JASS - исправления и дополнения
невыдаст
» WarCraft 3 / Осваиваем JASS - исправления и дополнения
» WarCraft 3 / Осваиваем JASS - исправления и дополнения
ну т.е. я как бы не против дополнения статьи сергея, но написано как так... ну это необъяснимо, это сложно назвать обучающей статьей, вообщем склоняюсь ко мнению что адольф просто неможет(неумеет) писать статьи на эту тему)
» WarCraft 3 / Библиотека функций
хотя не мешает перепроверить)
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Библиотека функций
добавил...
PlayerDark потому что стек строк после загрузки карты формируется заного
» WarCraft 3 / Осваиваем JASS - исправления и дополнения
» WarCraft 3 / Библиотека функций
DEC&HEX&ASCII
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Библиотека функций
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
это что такое? ты очищаеш хендл таймера а потом береш его и используеш его как ключ к очищению кеша? это ведь не будет работать...