|
|
|
|
[ВАЖНО] Jass: Полезные функции
|
|
[DUОS] | Дата: Четверг, 24 Февраля 2011, 08:33:52 | Сообщение # 1 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| В этой теме публикуйте свои Jass-функции. Уверен,тема будет полезна начинающим и прогрессирующим кодерам. FadingTextSingle. Функция, которая умеет создавать затемняющиеся тексттаги в определённой точке. Code function FadingTextSingle takes player p, string msg, integer red, integer green, integer blue, real x, real y, real vel, real fade, real life returns nothing local texttag t=CreateTextTag() call SetTextTagText(t,msg,0.024) call SetTextTagPos(t,x,y, 0.00) call SetTextTagColor(t,red,green,blue,255) call SetTextTagVelocity(t,0,vel) call SetTextTagVisibility(t,(GetLocalPlayer() == p)) call SetTextTagFadepoint(t, fade) call SetTextTagLifespan(t, life) call SetTextTagPermanent(t, false) set t = null endfunction GetPlayerNameColored. Позволяет получить имя игрока в цвете. Поддерживает все 16 игроков. Code function GetPlayerNameColored takes player p returns string local playercolor col=GetPlayerColor(p) local string r=GetPlayerName(p) if GetPlayerId(p) == 12 then set r="the |CFF333429"+r+"|r" elseif GetPlayerId(p) == 13 then set r="the |cffc1c1ff"+r+"|r" elseif GetPlayerId(p) == 14 then set r="the |CFF333429"+r+"|r" elseif GetPlayerId(p) == 15 then set r="the |CFF333429"+r+"|r" elseif col == PLAYER_COLOR_RED then set r="|CFFFF0303"+r+"|r" elseif col == PLAYER_COLOR_BLUE then set r="|CFF0042FF"+r+"|r" elseif col == PLAYER_COLOR_CYAN then set r="|CFF1CE6B9"+r+"|r" elseif col == PLAYER_COLOR_PURPLE then set r="|CFF540081"+r+"|r" elseif col == PLAYER_COLOR_YELLOW then set r="|CFFFFFC00"+r+"|r" elseif col == PLAYER_COLOR_ORANGE then set r="|CFFFE8A0E"+r+"|r" elseif col == PLAYER_COLOR_GREEN then set r="|CFF20C000"+r+"|r" elseif col == PLAYER_COLOR_PINK then set r="|cffff80c0"+r+"|r" elseif col == PLAYER_COLOR_LIGHT_GRAY then set r="|CFF959697"+r+"|r" elseif col == PLAYER_COLOR_LIGHT_BLUE then set r="|CFF7FBFF1"+r+"|r" elseif col == PLAYER_COLOR_AQUA then set r="|cFF106246"+r+"|r" elseif col == PLAYER_COLOR_BROWN then set r="|cFF4E2A04"+r+"|r" else set r="" endif set col=null return r endfunction Trackable API. Функции для патчей 1.24+, позволяющие работать с Trackable - объектами, которые ловят мышь. Code function GetTrackableX takes trackable tc, hashtable h returns real return LoadReal(h,GetHandleId(tc),0) endfunction
function GetTrackableY takes trackable tc, hashtable h returns real return LoadReal(h,GetHandleId(tc),1) endfunction
function GetTrackableZ takes trackable tc, hashtable h returns string return LoadReal(h,GetHandleId(tc),2) endfunction
function GetTrackableFacing takes trackable tc, hashtable h returns real return LoadReal(h,GetHandleId(tc),3) endfunction
function GetTrackablePath takes trackable tc, hashtable h returns string return LoadStr(h,GetHandleId(tc),4) endfunction
function GetTrackableOwner takes trackable tc, hashtable h returns player return Player(LoadInteger(h,GetHandleId(tc),5)) endfunction
function NewTrackable takes string path, real x, real y, real z, real facing, player owner, hashtable h returns trackable local trackable tc local string invisible = "" local destructable d = CreateDestructableZ('OTip', x, y, z, 0.00, 1.00, 0 ) if GetLocalPlayer() != owner then set path = invisible endif set tc = CreateTrackable(path, x, y, facing) call RemoveDestructable(d) set d = null call SaveReal(h,GetHandleId(tc),0,x) call SaveReal(h,GetHandleId(tc),1,y) call SaveReal(h,GetHandleId(tc),2,z) call SaveReal(h,GetHandleId(tc),3,facing) call SaveStr(h,GetHandleId(tc),4,path) call SaveInteger(h,GetHandleId(tc),5,GetPlayerId(owner)) return tc endfunction ReviveHeroTimed. Воскрешает героя спустя определённый промежуток времени. Code function ReviveHeroTimed_Child eakes nothing returns nothing local timer t = GetExpiredTimer() local unit hero = LoadUnitHandle(udg_Hashtable,GetHandleId(t),0) local real x = LoadReal(udg_Hashtable,GetHandleId(t),1) local real y = LoadReal(udg_Hashtable,GetHandleId(t),2) local boolean show = LoadBoolean(udg_Hashtable,GetHandleId(t),3) call ReviveHero(hero,x,y,show) call FludhChildHashtable(udg_Hashtable,GetHandleId(t)) call DestroyTimer(t) set hero = null set t = null endfunction
function ReviveHeroTimed takes unit hero, real time, real x, real y, boolean doEyeCandy returns nothing local timer t = CreateTimer() call TimerStart(t,time,false,function ReviveHeroTimed_Child) call SaveUnitHandle(udg_Hashtable,GetHandleId(t),0,hero) call SaveReal(udg_Hashtable,GetHandleId(t),1,x) call SaveReal(udg_Hashtable,GetHandleId(t),2,y) call SaveBoolean(udg_Hashtable,GetHandleId(t),3,doEyeCandy) set t = null endfunction Recipe System. Система, позволяющая скрещивать предметы одной функцией. Требует Jass New Gen Pack (vJass). Code library RecipeFunction
struct RecipeItems integer item0_id integer item1_id integer item2_id integer item3_id integer item4_id integer item5_id integer item6_id integer item7_id unit u item item1 = null item item2 = null item item3 = null item item4 = null item item5 = null item item6 = null method CheckItems2 takes nothing returns nothing local integer this_id local integer i = 0 loop set this_id = GetItemTypeId(UnitItemInSlot(.u, i)) if this_id == .item0_id then set .item1 = UnitItemInSlot(.u, i) elseif this_id == .item1_id then set .item2 = UnitItemInSlot(.u, i) endif set i = i + 1 exitwhen i >= bj_MAX_INVENTORY endloop if .item1 != null and .item2 != null then call RemoveItem(.item1) call RemoveItem(.item2) call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Items\\AIem\\AIemTarget.mdl",.u,"overhead")) call UnitAddItemById(.u, .item2_id) set .item1 = null set .item2 = null set .u = null endif endmethod method CheckItems3 takes nothing returns nothing local integer this_id local integer i = 0 loop set this_id = GetItemTypeId(UnitItemInSlot(.u, i)) if this_id == .item0_id then set .item1 = UnitItemInSlot(.u, i) elseif this_id == .item1_id then set .item2 = UnitItemInSlot(.u, i) elseif this_id == .item2_id then set .item3 = UnitItemInSlot(.u, i) endif set i = i + 1 exitwhen i >= bj_MAX_INVENTORY endloop if .item1 != null and .item2 != null and .item3 != null then call RemoveItem(.item1) call RemoveItem(.item2) call RemoveItem(.item3) call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Items\\AIem\\AIemTarget.mdl",.u,"overhead")) //adds a special effect call UnitAddItemById(.u, .item3_id) set .item1 = null set .item2 = null set .item3 = null set .u = null endif endmethod method CheckItems4 takes nothing returns nothing local integer this_id local integer i = 0 loop set this_id = GetItemTypeId(UnitItemInSlot(.u, i)) if this_id == .item0_id then set .item1 = UnitItemInSlot(.u, i) elseif this_id == .item1_id then set .item2 = UnitItemInSlot(.u, i) elseif this_id == .item2_id then set .item3 = UnitItemInSlot(.u, i) elseif this_id == .item3_id then set .item4 = UnitItemInSlot(.u, i) endif set i = i + 1 exitwhen i >= bj_MAX_INVENTORY endloop if .item1 != null and .item2 != null and .item3 != null and .item4 != null then call RemoveItem(.item1) call RemoveItem(.item2) call RemoveItem(.item3) call RemoveItem(.item4) call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Items\\AIem\\AIemTarget.mdl",.u,"overhead")) call UnitAddItemById(.u, .item4_id) set .item1 = null set .item2 = null set .item3 = null set .item4 = null set .u = null endif endmethod method CheckItems5 takes nothing returns nothing local integer this_id local integer i = 0 loop set this_id = GetItemTypeId(UnitItemInSlot(.u, i)) if this_id == .item0_id then set .item1 = UnitItemInSlot(.u, i) elseif this_id == .item1_id then set .item2 = UnitItemInSlot(.u, i) elseif this_id == .item2_id then set .item3 = UnitItemInSlot(.u, i) elseif this_id == .item3_id then set .item4 = UnitItemInSlot(.u, i) elseif this_id == .item4_id then set .item5 = UnitItemInSlot(.u, i) endif set i = i + 1 exitwhen i >= bj_MAX_INVENTORY endloop if .item1 != null and .item2 != null and .item3 != null and .item4 != null and .item5 != null then call RemoveItem(.item1) call RemoveItem(.item2) call RemoveItem(.item3) call RemoveItem(.item4) call RemoveItem(.item5) call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Items\\AIem\\AIemTarget.mdl",.u,"overhead")) call UnitAddItemById(.u, .item5_id) set .item1 = null set .item2 = null set .item3 = null set .item4 = null set .item5 = null set .u = null endif endmethod method CheckItems6 takes nothing returns nothing local integer this_id local integer i = 0 loop set this_id = GetItemTypeId(UnitItemInSlot(.u, i)) if this_id == .item0_id then set .item1 = UnitItemInSlot(.u, i) elseif this_id == .item1_id then set .item2 = UnitItemInSlot(.u, i) elseif this_id == .item2_id then set .item3 = UnitItemInSlot(.u, i) elseif this_id == .item3_id then set .item4 = UnitItemInSlot(.u, i) elseif this_id == .item4_id then set .item5 = UnitItemInSlot(.u, i) elseif this_id == .item5_id then set .item6 = UnitItemInSlot(.u, i) endif set i = i + 1 exitwhen i >= bj_MAX_INVENTORY endloop if .item1 != null and .item2 != null and .item3 != null and .item4 != null and .item5 != null and .item6 != null then call RemoveItem(.item1) call RemoveItem(.item2) call RemoveItem(.item3) call RemoveItem(.item4) call RemoveItem(.item5) call RemoveItem(.item6) call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Items\\AIem\\AIemTarget.mdl",.u,"overhead")) call UnitAddItemById(.u, .item6_id) set .item1 = null set .item2 = null set .item3 = null set .item4 = null set .item5 = null set .item6 = null set .u = null endif endmethod endstruct
function Recipe2 takes unit hero, integer i1, integer i2, integer ni returns nothing local RecipeItems IS=RecipeItems.create() set IS.item0_id = i1 set IS.item1_id = i2 set IS.item2_id = ni set IS.u = hero call IS.CheckItems2() call IS.destroy() endfunction
function Recipe3 takes unit hero, integer i1, integer i2, integer i3, integer ni returns nothing local RecipeItems IS=RecipeItems.create() set IS.item0_id = i1 set IS.item1_id = i2 set IS.item2_id = i3 set IS.item3_id = ni set IS.u = hero call IS.CheckItems3() call IS.destroy() endfunction
function Recipe4 takes unit hero, integer i1, integer i2, integer i3, integer i4, integer ni returns nothing local RecipeItems IS=RecipeItems.create() set IS.item0_id = i1 set IS.item1_id = i2 set IS.item2_id = i3 set IS.item3_id = i4 set IS.item4_id = ni set IS.u = hero call IS.CheckItems4() call IS.destroy() endfunction
function Recipe5 takes unit hero, integer i1, integer i2, integer i3, integer i4, integer i5, integer ni returns nothing local RecipeItems IS=RecipeItems.create() set IS.item0_id = i1 set IS.item1_id = i2 set IS.item2_id = i3 set IS.item3_id = i4 set IS.item4_id = i5 set IS.item5_id = ni set IS.u = hero call IS.CheckItems5() call IS.destroy() endfunction
function Recipe6 takes unit hero, integer i1, integer i2, integer i3, integer i4, integer i5, integer i6, integer ni returns nothing local RecipeItems IS=RecipeItems.create() set IS.item0_id = i1 set IS.item1_id = i2 set IS.item2_id = i3 set IS.item3_id = i4 set IS.item4_id = i5 set IS.item5_id = i6 set IS.item6_id = ni set IS.u = hero call IS.CheckItems6() call IS.destroy() endfunction
endlibrary DistanceBetweenCoords. Находит расстояние между заданными координатами. Code function DistanceBetweenCoords takes real x1, real y1, real x2, real y2 returns real return SquareRoot((x1-x2) * (x1-x2) + (y1-y2) * (y1-y2)) endfunction AngleBetweenCoords.Находит угол между заданными координатами. Code function AngleBetweenCoords takes real xa, real xb, real ya, real yb returns real return 57.295827 * Atan2(yb - ya, xb - xa) endfunction Hex to Dec. Конвертирует число из шестнадцатеричной системы в десятичную. Code function H2D takes string hex returns integer local string abc = "0123456789abcdef" local integer i = 0 local integer dec loop set i = i + 1 exitwhen( SubString(abc, (i-1), i)==SubString(hex, 0, 1) ) endloop set dec = (i-1) * 16 set i = 0 loop set i = i + 1 exitwhen( SubString(abc, (i-1), i)==SubString(hex, 1, 2) ) endloop set dec = dec + i - 1 return dec endfunction Dec to Hex. Конвертирует число из десятичной системы в шестнадцатеричную. Code function D2H takes integer i returns string local string abc = "0123456789abcdef" local string s = SubString(abc, i / 16, i / 16 + 1) + SubString(abc, ModuloInteger(i, 16), ModuloInteger(i, 16) + 1) return s endfunction GetPlayerColoredIcon.Позволяет получить иконку, заполненную цветом определённого игрока. Code function GetPlayerColoredIcon takes player p returns string local playercolor pc = GetPlayerColor(p) local integer i = GetHandleId(pc) local string s if i < 10 then set s = "0" + I2S(i) else set s = I2S(i) endif set pc = null return "ReplaceableTextures\\TeamColor\\TeamColor" + s + ".blp" endfunction DamageLine. Функция нанесения урона по линии. Полезна для спеллмейкеров. Code function DamageLine takes location a, location b, real w, real dmg, boolean ranged returns nothing local integer i = 0 local real aX = GetLocationX(a) local real bX = GetLocationX(b) local real aY = GetLocationY(a) local real bY = GetLocationY(b) local real dist = SquareRoot((bX - aX) * (bX - aX) + (bY - aY) * (bY - aY)) local real angle = 57.295827908 * Atan2(bY - aY, bX - aX) local group g = CreateGroup() local group tg = CreateGroup() local unit u loop exitwhen i > 2*dist/w call GroupEnumUnitsInRange(g, aX, aY, w, null) loop set u = FirstOfGroup(g) if (IsUnitInGroup(u, tg) == false) then call UnitDamageTarget(u, u, dmg, true, ranged, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS) endif call GroupAddUnit(tg, u) call GroupRemoveUnit(g, u) exitwhen u == null endloop set aX = aX + w/2 * Cos(angle * 0.01745327) set aY = aY + w/2 * Sin(angle * 0.01745327) set i = i + 1 endloop call DestroyGroup(g) call DestroyGroup(tg) set g = null set u = null endfunction
|
|
|
|
pirat9629 | Дата: Четверг, 24 Февраля 2011, 17:23:22 | Сообщение # 2 |
7 уровень
Группа: Проверенные
Сообщений: 422
Награды: 0
Репутация: 102
Блокировки:
| Code call SetDayNightModels("", "")
сделаю минекрафт сервер на заказ. платно
|
|
|
|
Faion | Дата: Четверг, 24 Февраля 2011, 18:21:13 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Топик для пользовательских функций.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
Faion | Дата: Пятница, 25 Февраля 2011, 12:12:12 | Сообщение # 4 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Quote (lawson) А сюда можно писать функции с handle они все полезные. :facemalm:Вы тупые или да? Quote (Faion) Топик для пользовательских функций. Пользовательские == те которые ВЫ написали, а не стандартные.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
lawson | Дата: Пятница, 25 Февраля 2011, 12:27:06 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Аааа Добавлено (25-02-2011, 12:27) ---------------------------------------------
Quote (|DUОS|) полезные функции для работы с Jass Я просто предложил.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
rixt7956 | Дата: Пятница, 25 Февраля 2011, 19:13:55 | Сообщение # 6 |
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
| Code function UMTUTimer takes nothing returns nothing local timer t=GetExpiredTimer() local integer th=GetHandleId(t) local unit u1=LoadUnitHandle(udg_Hash,th,0) local unit u2=LoadUnitHandle(udg_Hash,th,1) local real s=LoadReal(udg_Hash,th,2) local real x1=GetUnitX(u1) local real y1=GetUnitY(u1) local real x2=GetUnitX(u2) local real y2=GetUnitY(u2) local real f=LoadReal(udg_Hash,th,3) if SquareRoot((x1-x2)*(x1-x2)+(y1-y2-)*(y1-y2))>s then set x1=x1+s*Cos(f) set y1=y1+s*Sin(f) call SetUnitX(u1,x1) call SetUnitY(u1,y1) else call FlushChildHashtable(udg_Hash,th) call DestroyTimer(t) endif set t=null set u1=null set u2=null endfunction
function UMTU takes unit u1, unit2, real s returns nothing local timer t=CreateTimer() local integer th=GetHandleId(t) call SaveUnitHandle(udg_Hash,th,0,u1) call SaveUnitHandle(udg_Hash,th,1,u2) call SaveReal(udg_Hash,th,2,s) call SaveReal(udg_Hash,th,3,Atan2(GetUnitY(u2)-GetUnitY(u1),GetUnitX(u2)-GetUnitX(u1)) call TimerStart(t,.03,true,function UMTUTimer) set t=null endfunction function UMTU takes unit u1, unit u2, real s returns nothing Функция двигает юнита u1 к юниту u2 udg_Hash - это заранее инициализированная Хэш-таблица.
Сообщение отредактировал rixt7956 - Пятница, 25 Февраля 2011, 19:39:15 |
|
|
|
[DUОS] | Дата: Пятница, 25 Февраля 2011, 19:56:52 | Сообщение # 7 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| rixt7956, Что есть S?
|
|
|
|
rixt7956 | Дата: Пятница, 25 Февраля 2011, 19:58:34 | Сообщение # 8 |
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
| Скорость.
|
|
|
|
lawson | Дата: Пятница, 25 Февраля 2011, 22:43:48 | Сообщение # 9 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (rixt7956) SquareRoot((x1-x2)*(x1-x2)+(y1-y2-)*(y1-y2)) А это нельщзя было записать в real переменную?Добавлено (25-02-2011, 22:41) --------------------------------------------- Я думал здесь выкладывают полезные функции а не то что придумаешь. Тогда я тоже могу выложить функцию где юнит телепортируетьс из области в область. Добавлено (25-02-2011, 22:43) --------------------------------------------- rixt7956 Можно было все вычисления сделать в первой функции которая берет значения, а во второй уже просто загружать их и двигать юнита.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
rixt7956 | Дата: Пятница, 25 Февраля 2011, 22:47:52 | Сообщение # 10 |
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
| Нет нельзя, и подумай почему, не додумаешься буду вечно считать тебя нубом. Добавлено (25-02-2011, 22:47) --------------------------------------------- И не стоит выносить всё в локалки, так как они тоже хранятся в памяти)
|
|
|
|
lawson | Дата: Пятница, 25 Февраля 2011, 22:52:13 | Сообщение # 11 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (rixt7956) Нет нельзя, и подумай почему Ой неподумал. Точно.Добавлено (25-02-2011, 22:52) --------------------------------------------- Вот у меня другой вопрос зачем делать получаеться две отдельный функций? можно было вызывать функцию которая берет юнитов и в ней же делать таймер - ведь эта функция все равно будет вызываться внешним источником - в ней и делал бы таймер.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
lawson | Дата: Пятница, 25 Февраля 2011, 22:58:08 | Сообщение # 12 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (rixt7956) Нельзя запустить таймером функцию, которая берет аргументы В общем придраться не к чему, но вот зачем делать это - Давайте тогда хоть реально полезные функции (и интересные) придумывать и сюда писать
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
rixt7956 | Дата: Пятница, 25 Февраля 2011, 23:09:40 | Сообщение # 13 |
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
| Ты совсем тупой, да? Он не телепортируется, а притягивается, с возможностью указать скорость притягивания. Оптимальное значение скорости от 10 до 40.
|
|
|
|
lawson | Дата: Пятница, 25 Февраля 2011, 23:11:01 | Сообщение # 14 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (rixt7956) Ты совсем тупой, да Это наверное ты тупой прочти сообщение внимательней! Добавлено (25-02-2011, 23:11) --------------------------------------------- А вообще технически он телепортируеться (SetUnitX()) только на очень маленькое расстояние и это не заметно!!
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 25 Февраля 2011, 23:11:18 |
|
|
|
Faion | Дата: Пятница, 25 Февраля 2011, 23:13:04 | Сообщение # 15 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Так у нас тут топик полезных функций, а не школа для нубов, по изучению жасс. Смойтесь, а то засамоню модера, банхамером огребете за флуд и оффтоп. Вы явно не поинмаете суть темы.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
lawson | Дата: Пятница, 25 Февраля 2011, 23:19:52 | Сообщение # 16 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| нет она не нубская но и не полезная - это целый триггер из двух функций + функцию вызова функции которая берет значения. Это целая наработка перемещения юнита.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 25 Февраля 2011, 23:20:54 |
|
|
|
Faion | Дата: Пятница, 25 Февраля 2011, 23:21:01 | Сообщение # 17 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Я бы не назвал это функцией. Что там полезно, и что стоило выкладывать сюда, так это: Code SquareRoot((x1-x2)*(x1-x2)+(y1-y2-)*(y1-y2)) Все остальное не нужно.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
lawson | Дата: Пятница, 25 Февраля 2011, 23:25:20 | Сообщение # 18 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Вот моя "полезная функция" она сразу и создает и удаляет эффект и все в одной строке. Code call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Items\\AIem\\AIemTarget.mdl", юнит, "origin"))
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 25 Февраля 2011, 23:38:21 |
|
|
|
rixt7956 | Дата: Пятница, 25 Февраля 2011, 23:32:57 | Сообщение # 19 |
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
| Какая это наработка, и функция полезная, к примеру при создание скилов с дамиком, или магнита.
|
|
|
|
lawson | Дата: Пятница, 25 Февраля 2011, 23:33:16 | Сообщение # 20 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Вот еще одна. Все знают что ExecuteFunc() вызываеться в любом случае и не зависит от того что делает сам триггер. Я предлагаю простую но полезную функцию которая будет вызывать внешние функции но при этом будет это делать последовательно. Code function ExExecuteFunc takes string text returns nothing call ExecuteFunc(text) endfunction Вот так
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 25 Февраля 2011, 23:38:46 |
|
|
|
rixt7956 | Дата: Пятница, 25 Февраля 2011, 23:37:44 | Сообщение # 21 |
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
| Вынеси из под спойлера, у меня на телефоне спойлеры не открываются
|
|
|
|
lawson | Дата: Пятница, 25 Февраля 2011, 23:41:01 | Сообщение # 22 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Кстати если к твоей функции добавить еффект пыли то это будет 100% - наработка скилла.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
rixt7956 | Дата: Пятница, 25 Февраля 2011, 23:44:07 | Сообщение # 23 |
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
| А в чем смысл использовать твою, не легче вызвать напрямую
|
|
|
|
lawson | Дата: Пятница, 25 Февраля 2011, 23:46:35 | Сообщение # 24 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Я когда то создавал тему вот почитай Напрямую - плохо?
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
rixt7956 | Дата: Пятница, 25 Февраля 2011, 23:54:40 | Сообщение # 25 |
9 уровень
Группа: Проверенные
Сообщений: 1097
Награды: 0
Репутация: 153
Блокировки:
| Я имел ввиду вызвать сразу нативку, а не пихать функцию в функцию.
|
|
|
|
|
|
|
|
|
|
|