Сейчас 02:19:31 Суббота, 2 июля, 2022 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 10
  • 1
  • 2
  • 3
  • 9
  • 10
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [ВАЖНО] Jass: Полезные функции
[ВАЖНО] 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
Блокировки:
Я имел ввиду вызвать сразу нативку, а не пихать функцию в функцию.
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [ВАЖНО] Jass: Полезные функции
  • Страница 1 из 10
  • 1
  • 2
  • 3
  • 9
  • 10
  • »
Поиск:

Copyright © 2006 - 2022 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz