Добавлен ofeerist,
опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
vJass
Тип:
Наработка
Версия Warcraft:
1.26, 1.27a, 1.27b, 1.28f
По просьбе loliconshik3
Выбор героя на фреймах
Пора уже забыть о тавернах и виспах, пора идти в ногу с мемхаком, именно для этого данная наработка.
Выбор героя на фреймах
Пора уже забыть о тавернах и виспах, пора идти в ногу с мемхаком, именно для этого данная наработка.
Функционал
- Кнопки в виде любой иконки юнита/ предмета/ спелла.
- Поддержка одного из 5-ти красивых селекторов.
- Название и описание для любого юнита.
- Быстрый отклик на нажатие фрейма, с помощью всего 5-ти юнитов.
- Полная поддержка мультиплеера.
- Кнопки в виде любой иконки юнита/ предмета/ спелла.
- Поддержка одного из 5-ти красивых селекторов.
- Название и описание для любого юнита.
- Быстрый отклик на нажатие фрейма, с помощью всего 5-ти юнитов.
- Полная поддержка мультиплеера.
Проверка на десинхрон.
Требования
- Уверенное пользование jass.
- Мемхак анрайза. (>1.3)
- pjass для работы мемхака. (Закинуть в JNGP/jasshelper)
- Уверенное пользование jass.
- Мемхак анрайза. (>1.3)
- pjass для работы мемхака. (Закинуть в JNGP/jasshelper)
Использование
1. Скачиваем пример.
2. Копируем папку триггеров HeroChoose и кидаем к себе в карту.
3. Экспортируем text.fdf, uitoc.toc и кидаем к себе в карту.
4. Настраиваем это дело.
5. Радуемся. (optional)
1. Скачиваем пример.
2. Копируем папку триггеров HeroChoose и кидаем к себе в карту.
3. Экспортируем text.fdf, uitoc.toc и кидаем к себе в карту.
4. Настраиваем это дело.
5. Радуемся. (optional)
Принцип работы
- Все также используется быстрый синх булевых через локальный выбор.
- Но я довел до ума схему и теперь это позволяет синхронизировать 5-ти битные целочисленные. Именно поэтому, 32 героя максимум
- По примеру, можно сделать синх 8/16/32 битных, но это имеет мало смысла.
- Скорость синха одного бита - 100мс, скорость синха 5-ти бит - 500мс и дальше по аналогии.
- Все также используется быстрый синх булевых через локальный выбор.
- Но я довел до ума схему и теперь это позволяет синхронизировать 5-ти битные целочисленные. Именно поэтому, 32 героя максимум
- По примеру, можно сделать синх 8/16/32 битных, но это имеет мало смысла.
- Скорость синха одного бита - 100мс, скорость синха 5-ти бит - 500мс и дальше по аналогии.
Код
- Использую кастомный чат, как основу, уже 4ый раз.
- Но здесь, обновленный MouseEvent, не то, что он лучшее, он просто красивее.
- Использую кастомный чат, как основу, уже 4ый раз.
- Но здесь, обновленный MouseEvent, не то, что он лучшее, он просто красивее.
Init
globals
integer HeroChooseBackdrop
integer array HeroChoose[31]
integer array HeroChooseBut[31]
integer Title
integer Desc
string array HeroChoosePath[31]
integer array HeroId[31]
string array HeroTitle[31]
string array HeroDesc[31]
integer Selector
unit array Bit[4]
unit EndTrans
endglobals
function InitChoosePathes takes nothing returns nothing
set HeroChoosePath[0] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[1] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[2] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[3] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[4] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[5] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[6] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[7] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[8] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[9] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[10] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[11] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[12] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[13] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[14] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[15] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[16] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[17] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[18] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[19] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[20] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[21] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[22] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[23] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[24] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[25] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[26] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[27] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[28] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[29] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[30] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[31] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroTitle[0] = "Работяга"
set HeroDesc[0] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[1] = "Работяга"
set HeroDesc[1] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[2] = "Работяга"
set HeroDesc[2] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[3] = "Работяга"
set HeroDesc[3] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[4] = "Работяга"
set HeroDesc[4] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[5] = "Работяга"
set HeroDesc[5] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[6] = "Работяга"
set HeroDesc[6] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[7] = "Работяга"
set HeroDesc[7] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[8] = "Работяга"
set HeroDesc[8] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[9] = "Работяга"
set HeroDesc[9] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[10] = "Работяга"
set HeroDesc[10] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[11] = "Работяга"
set HeroDesc[11] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[12] = "Работяга"
set HeroDesc[12] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[13] = "Работяга"
set HeroDesc[13] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[14] = "Работяга"
set HeroDesc[14] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[15] = "Работяга"
set HeroDesc[15] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[16] = "Работяга"
set HeroDesc[16] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[17] = "Работяга"
set HeroDesc[17] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[18] = "Работяга"
set HeroDesc[18] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[19] = "Работяга"
set HeroDesc[19] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[20] = "Работяга"
set HeroDesc[20] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[21] = "Работяга"
set HeroDesc[21] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[22] = "Работяга"
set HeroDesc[22] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[23] = "Работяга"
set HeroDesc[23] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[24] = "Работяга"
set HeroDesc[24] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[25] = "Работяга"
set HeroDesc[25] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[26] = "Работяга"
set HeroDesc[26] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[27] = "Работяга"
set HeroDesc[27] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[28] = "Работяга"
set HeroDesc[28] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[29] = "Работяга"
set HeroDesc[29] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[30] = "Работяга"
set HeroDesc[30] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[31] = "Работяга"
set HeroDesc[31] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroId[0] = 'hpea'
set HeroId[1] = 'hpea'
set HeroId[2] = 'hpea'
set HeroId[3] = 'hpea'
set HeroId[4] = 'hpea'
set HeroId[5] = 'hpea'
set HeroId[6] = 'hpea'
set HeroId[7] = 'hpea'
set HeroId[8] = 'hpea'
set HeroId[9] = 'hpea'
set HeroId[10] = 'hpea'
set HeroId[11] = 'hpea'
set HeroId[12] = 'hpea'
set HeroId[13] = 'hpea'
set HeroId[14] = 'hpea'
set HeroId[15] = 'hpea'
set HeroId[16] = 'hpea'
set HeroId[17] = 'hpea'
set HeroId[18] = 'hpea'
set HeroId[19] = 'hpea'
set HeroId[20] = 'hpea'
set HeroId[21] = 'hpea'
set HeroId[22] = 'hpea'
set HeroId[23] = 'hpea'
set HeroId[24] = 'hpea'
set HeroId[25] = 'hpea'
set HeroId[25] = 'hpea'
set HeroId[26] = 'hpea'
set HeroId[27] = 'hpea'
set HeroId[28] = 'hpea'
set HeroId[29] = 'hpea'
set HeroId[30] = 'hpea'
set HeroId[31] = 'hpea'
endfunction
function CreateSelector takes nothing returns nothing
set Selector = CreateFrame("Selector4", pGameUI, 80) // Selector 1-5
call SetFrameSize(Selector, .05, .05)
call SetFrameAbsolutePoint(Selector, 0, .2, .2 + .05)
call HideFrame(Selector)
endfunction
function CreateButtons takes nothing returns nothing
local integer i = 0
local real x = .255
local real y = .36
loop
exitwhen i == 32
set HeroChoose[i] = CreateFrame("HeroBackdrop", HeroChooseBackdrop, 2 + i)
call SetCBackDropFrameTexture(HeroChoose[i], HeroChoosePath[i], false)
call SetFrameSize(HeroChoose[i], .05, .05)
call SetFrameAbsolutePoint(HeroChoose[i], 4, x , y)
set HeroChooseBut[i] = CreateFrame("ButtonChat", HeroChooseBackdrop, 34 + i)
call SetFrameSize(HeroChooseBut[i], .05, .05)
call SetFrameAbsolutePoint(HeroChooseBut[i], 4, x , y)
call SetFrameAlpha(HeroChooseBut[i], 0)
set x = x + .041
if i == 7 or i == 15 or i == 23 then
set y = y + .041
set x = .255
endif
set i = i + 1
endloop
endfunction
function Trig_Init_Actions takes nothing returns nothing
local integer i = 0
local real x = .255
local real y = .36
call LoadTOCFile("uitoc.toc")
call InitChoosePathes()
set HeroChooseBackdrop = CreateFrame("ChatHistoryBackdrop", pGameUI, 0)
call SetFrameSize(HeroChooseBackdrop, .4, .3)
call SetFrameAbsolutePoint(HeroChooseBackdrop, 4, .4, .365)
set Title = CreateFrame("ChatText2", HeroChooseBackdrop, 81)
call SetFrameAbsolutePoint(Title, 0, .225, .33)
call SetFrameText(Title, "test")
call HideFrame(Title)
set Desc = CreateFrame("ChatText1", HeroChooseBackdrop, 82)
call SetFrameAbsolutePoint(Desc, 0, .225, .31)
call SetFrameText(Desc, "test2")
call HideFrame(Desc)
call CreateSelector()
call ExecuteFunc("CreateButtons") // Я хз как, но без него не работает
// Юниты для синха
set x = 0
set y = 0
set Bit[0] = CreateUnit(Player(13),'hfoo',x, y, 0)
set Bit[1] = CreateUnit(Player(13),'hfoo',x, y, 0)
set Bit[2] = CreateUnit(Player(13),'hfoo',x, y, 0)
set Bit[3] = CreateUnit(Player(13),'hfoo',x, y, 0)
set Bit[4] = CreateUnit(Player(13),'hfoo',x, y, 0)
set EndTrans = CreateUnit(Player(13),'hfoo',x, y, 0)
endfunction
//===========================================================================
function InitTrig_Init takes nothing returns nothing
set gg_trg_Init = CreateTrigger( )
call TriggerRegisterTimerEventSingle( gg_trg_Init, 0.10 )
call TriggerAddAction( gg_trg_Init, function Trig_Init_Actions )
endfunction
Sync
function Mod2 takes integer n returns integer
local real num = I2R(n) / I2R(2)
local integer i = 0
loop
exitwhen i > StringLength(R2S(num)) - 2
if SubString(R2S(num), i, i + 2) == ".0" then
return 0
endif
set i = i + 1
endloop
return 1
endfunction
function ToBin takes integer n returns string
local integer bin = 0
local integer i = 0
local string s = ""
local string ts = ""
if n == 0 then
return "0"
endif
loop
exitwhen not (n > 0)
set bin = Mod2(n)
set n = n / 2
set s = s + I2S(bin)
set i = i + 1
endloop
// Переворот
set i = StringLength(s)
loop
exitwhen StringLength(ts) == StringLength(s)
set ts = ts + SubString(s, i - 1, i)
set i = i - 1
endloop
return ts
endfunction
function ToDec takes string n returns integer
local integer temp = 0
local integer sum = 0
local integer i = 0
local integer j = StringLength(n) - 1
loop
exitwhen i == StringLength(n)
set temp = S2I(SubString(n, i, i + 1)) * PowI(2, j)
set sum = sum + temp
set j = j - 1
set i = i + 1
endloop
return sum
endfunction
globals
string array TempTrans[1][4]
endglobals
function CreateHero takes integer n, player p, real x, real y returns nothing
local unit u = CreateUnit(p, HeroId[n], x, y, 0)
set u = null
endfunction
function Trig_Sync_Actions takes nothing returns nothing
local integer pid = GetPlayerId(GetTriggerPlayer())
local integer i = 0
local string num = ""
loop
exitwhen i == 5
if GetTriggerUnit() == Bit[i] then
set TempTrans[pid][i] = "1"
endif
set i = i + 1
endloop
if GetTriggerUnit() == EndTrans then
set i = 0
loop
exitwhen i == 5
set num = num + TempTrans[pid][i]
set TempTrans[pid][i] = "0"
set i = i + 1
endloop
call CreateHero(ToDec(num), GetTriggerPlayer(), 0, 0)
endif
endfunction
//===========================================================================
function InitTrig_Sync takes nothing returns nothing
local integer i = 0
local integer j = 0
loop
exitwhen i == 2
set j = 0
loop
exitwhen j == 5
set TempTrans[i][j] = "0"
set j = j + 1
endloop
set i = i + 1
endloop
set gg_trg_Sync = CreateTrigger( )
call TriggerRegisterPlayerSelectionEventBJ( gg_trg_Sync, Player(0), true )
call TriggerRegisterPlayerSelectionEventBJ( gg_trg_Sync, Player(1), true )
call TriggerAddAction( gg_trg_Sync, function Trig_Sync_Actions )
endfunction
MouseEvent
globals
boolean KeySpan
endglobals
function SyncChoose takes integer n returns nothing
local string bin = ToBin(n)
local integer i = 0
loop
exitwhen StringLength(bin) == 5
set bin = "0" + bin
endloop
set i = 0
loop
exitwhen i == 5
if SubString(bin, i, i + 1) == "1" then
call SelectUnit(Bit[i], true)
call ClearSelection()
endif
set i = i + 1
endloop
call SelectUnit(EndTrans, true)
call ClearSelection()
endfunction
function Trig_MouseEvent_Actions takes nothing returns nothing
local integer i = 0
local integer j = 0
local real x = .255
local real y = .36
local integer b = 0
loop
exitwhen i == 2
if GetLocalPlayer() == Player(i) then
set j = 0
loop
exitwhen j == 32
if FindCLayerUnderCursor() == HeroChooseBut[j] then
call ShowFrame(Title)
call ShowFrame(Desc)
call SetFrameText(Title, HeroTitle[j])
call SetFrameText(Desc, HeroDesc[j])
call ShowFrame(Selector)
call SetFrameAbsolutePoint(Selector, 0, x, y + .05)
set b = b + 1
if IsKeyPressed(0x01) and KeySpan then
call HideFrame(HeroChooseBackdrop)
call SyncChoose(j)
endif
endif
set x = x + .041
if j == 7 or j == 15 or j == 23 then
set y = y + .041
set x = .255
endif
set j = j + 1
endloop
if b == 0 then
call HideFrame(Selector)
call HideFrame(Title)
call HideFrame(Desc)
endif
if IsKeyPressed(0x01) then
set KeySpan = false
else
set KeySpan = true
endif
endif
set i = i + 1
endloop
endfunction
//===========================================================================
function InitTrig_MouseEvent takes nothing returns nothing
set gg_trg_MouseEvent = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_MouseEvent, 0.10 )
call TriggerAddAction( gg_trg_MouseEvent, function Trig_MouseEvent_Actions )
endfunction
Небольшой оффтопик
Опоздал с выпуском на 4 часа, так как фреймы подкинули неожиданный сюрприз,
Подробнее, в будущей статье (Скоро будет, наверно)
Подробнее, в будущей статье (Скоро будет, наверно)
Если вам нужна помощь с фреймами прямо сейчас, можете писать в лс.
Я либо могу помогу вам разобраться,
Либо сделаю вот такой ресурс специально под ваши требования.
Я либо могу помогу вам разобраться,
Либо сделаю вот такой ресурс специально под ваши требования.
Завтра мне уже нечего выпускать, поэтому вряд-ли что-нибудь сделаю.
v 1.1
Init
globals
integer HeroChooseBackdrop
integer array HeroChoose[31]
integer array HeroChooseBut[31]
integer Title
integer Desc
string array HeroChoosePath[31]
integer array HeroId[31]
string array HeroTitle[31]
string array HeroDesc[31]
integer Selector
unit array Bit[4]
unit EndTrans
endglobals
function InitChoosePathes takes nothing returns nothing
set HeroChoosePath[0] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[1] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[2] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[3] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[4] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[5] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[6] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[7] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[8] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[9] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[10] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[11] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[12] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[13] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[14] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[15] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[16] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[17] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[18] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[19] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[20] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[21] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[22] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[23] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[24] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[25] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[26] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[27] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[28] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[29] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[30] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroChoosePath[31] = "ReplaceableTextures\\CommandButtons\\BTNPeasant.blp"
set HeroTitle[0] = "Работяга"
set HeroDesc[0] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[1] = "Работяга"
set HeroDesc[1] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[2] = "Работяга"
set HeroDesc[2] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[3] = "Работяга"
set HeroDesc[3] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[4] = "Работяга"
set HeroDesc[4] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[5] = "Работяга"
set HeroDesc[5] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[6] = "Работяга"
set HeroDesc[6] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[7] = "Работяга"
set HeroDesc[7] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[8] = "Работяга"
set HeroDesc[8] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[9] = "Работяга"
set HeroDesc[9] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[10] = "Работяга"
set HeroDesc[10] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[11] = "Работяга"
set HeroDesc[11] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[12] = "Работяга"
set HeroDesc[12] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[13] = "Работяга"
set HeroDesc[13] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[14] = "Работяга"
set HeroDesc[14] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[15] = "Работяга"
set HeroDesc[15] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[16] = "Работяга"
set HeroDesc[16] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[17] = "Работяга"
set HeroDesc[17] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[18] = "Работяга"
set HeroDesc[18] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[19] = "Работяга"
set HeroDesc[19] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[20] = "Работяга"
set HeroDesc[20] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[21] = "Работяга"
set HeroDesc[21] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[22] = "Работяга"
set HeroDesc[22] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[23] = "Работяга"
set HeroDesc[23] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[24] = "Работяга"
set HeroDesc[24] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[25] = "Работяга"
set HeroDesc[25] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[26] = "Работяга"
set HeroDesc[26] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[27] = "Работяга"
set HeroDesc[27] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[28] = "Работяга"
set HeroDesc[28] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[29] = "Работяга"
set HeroDesc[29] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[30] = "Работяга"
set HeroDesc[30] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroTitle[31] = "Работяга"
set HeroDesc[31] = "|c00FFFFFFУбийца пеонов, каменьщик, мастер на все руки, ловкач, силач, две ульты|r"
set HeroId[0] = 'hpea'
set HeroId[1] = 'hpea'
set HeroId[2] = 'hpea'
set HeroId[3] = 'hpea'
set HeroId[4] = 'hpea'
set HeroId[5] = 'hpea'
set HeroId[6] = 'hpea'
set HeroId[7] = 'hpea'
set HeroId[8] = 'hpea'
set HeroId[9] = 'hpea'
set HeroId[10] = 'hpea'
set HeroId[11] = 'hpea'
set HeroId[12] = 'hpea'
set HeroId[13] = 'hpea'
set HeroId[14] = 'hpea'
set HeroId[15] = 'hpea'
set HeroId[16] = 'hpea'
set HeroId[17] = 'hpea'
set HeroId[18] = 'hpea'
set HeroId[19] = 'hpea'
set HeroId[20] = 'hpea'
set HeroId[21] = 'hpea'
set HeroId[22] = 'hpea'
set HeroId[23] = 'hpea'
set HeroId[24] = 'hpea'
set HeroId[25] = 'hpea'
set HeroId[25] = 'hpea'
set HeroId[26] = 'hpea'
set HeroId[27] = 'hpea'
set HeroId[28] = 'hpea'
set HeroId[29] = 'hpea'
set HeroId[30] = 'hpea'
set HeroId[31] = 'hpea'
endfunction
function CreateSelector takes nothing returns nothing
set Selector = CreateFrame("Selector4", pGameUI, 80) // Selector 1-5
call SetFrameSize(Selector, .05, .05)
call SetFrameAbsolutePoint(Selector, 0, .2, .2 + .05)
call HideFrame(Selector)
endfunction
function CreateButtons takes nothing returns nothing
local integer i = 0
local real x = -.143
local real y = -.01
loop
exitwhen i == 32
set HeroChoose[i] = CreateFrame("HeroBackdrop", HeroChooseBackdrop, 2 + i)
call SetCBackDropFrameTexture(HeroChoose[i], HeroChoosePath[i], false)
call SetFrameSize(HeroChoose[i], .05, .05)
call SetFramePoint(HeroChoose[i], 4, HeroChooseBackdrop, 4, x , y)
set HeroChooseBut[i] = CreateFrame("ButtonChat", HeroChooseBackdrop, 34 + i)
call SetFrameSize(HeroChooseBut[i], .05, .05)
call SetFramePoint(HeroChooseBut[i], 4, HeroChooseBackdrop, 4, x , y)
call SetFrameAlpha(HeroChooseBut[i], 0)
set x = x + .041
if i == 7 or i == 15 or i == 23 then
set y = y + .041
set x = -.143
endif
set i = i + 1
endloop
endfunction
function Trig_Init_Actions takes nothing returns nothing
local integer i = 0
local real x = .255
local real y = .36
call LoadTOCFile("uitoc.toc")
call InitChoosePathes()
set HeroChooseBackdrop = CreateFrame("ChatHistoryBackdrop", pGameUI, 0)
call SetFrameSize(HeroChooseBackdrop, .4, .3)
call SetFrameAbsolutePoint(HeroChooseBackdrop, 4, .4, .365)
set Title = CreateFrame("ChatText2", HeroChooseBackdrop, 81)
call SetFramePoint(Title, 0, HeroChooseBackdrop, 4, -.18, -.035)
call SetFrameText(Title, "test")
call HideFrame(Title)
set Desc = CreateFrame("ChatText1", HeroChooseBackdrop, 82)
call SetFramePoint(Desc, 0, HeroChooseBackdrop, 4, -.18, -.052)
call SetFrameText(Desc, "test2")
call HideFrame(Desc)
call CreateSelector()
call ExecuteFunc("CreateButtons") // Я хз как, но без него не работает
// Юниты для синха
set x = 0
set y = 0
set Bit[0] = CreateUnit(Player(13),'hfoo',x, y, 0)
set Bit[1] = CreateUnit(Player(13),'hfoo',x, y, 0)
set Bit[2] = CreateUnit(Player(13),'hfoo',x, y, 0)
set Bit[3] = CreateUnit(Player(13),'hfoo',x, y, 0)
set Bit[4] = CreateUnit(Player(13),'hfoo',x, y, 0)
set EndTrans = CreateUnit(Player(13),'hfoo',x, y, 0)
endfunction
//===========================================================================
function InitTrig_Init takes nothing returns nothing
set gg_trg_Init = CreateTrigger( )
call TriggerRegisterTimerEventSingle( gg_trg_Init, 0.10 )
call TriggerAddAction( gg_trg_Init, function Trig_Init_Actions )
endfunction
MouseEvent
globals
boolean KeySpan
endglobals
function SyncChoose takes integer n returns nothing
local string bin = ToBin(n)
local integer i = 0
loop
exitwhen StringLength(bin) == 5
set bin = "0" + bin
endloop
set i = 0
loop
exitwhen i == 5
if SubString(bin, i, i + 1) == "1" then
call SelectUnit(Bit[i], true)
call ClearSelection()
endif
set i = i + 1
endloop
call SelectUnit(EndTrans, true)
call ClearSelection()
endfunction
function Trig_MouseEvent_Actions takes nothing returns nothing
local integer i = 0
local integer j = 0
local real x = -.143
local real y = -.01
local integer b = 0
loop
exitwhen i == 2
if GetLocalPlayer() == Player(i) then
set j = 0
loop
exitwhen j == 32
if FindCLayerUnderCursor() == HeroChooseBut[j] then
call ShowFrame(Title)
call ShowFrame(Desc)
call SetFrameText(Title, HeroTitle[j])
call SetFrameText(Desc, HeroDesc[j])
call ShowFrame(Selector)
call SetFramePoint(Selector, 0, HeroChooseBackdrop, 4, x , y + .05)
set b = b + 1
if IsKeyPressed(0x01) and KeySpan then
call HideFrame(HeroChooseBackdrop)
call SyncChoose(j)
endif
endif
set x = x + .041
if j == 7 or j == 15 or j == 23 then
set y = y + .041
set x = -.143
endif
set j = j + 1
endloop
if b == 0 then
call HideFrame(Selector)
call HideFrame(Title)
call HideFrame(Desc)
endif
if IsKeyPressed(0x01) then
set KeySpan = false
else
set KeySpan = true
endif
endif
set i = i + 1
endloop
endfunction
//===========================================================================
function InitTrig_MouseEvent takes nothing returns nothing
set gg_trg_MouseEvent = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_MouseEvent, 0.10 )
call TriggerAddAction( gg_trg_MouseEvent, function Trig_MouseEvent_Actions )
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Почему нельзя было сделать мемхак по другому:
Сам мемхак это лишь основа для подгрузки dll в память и сама dll. Сильно ли она большая вышла бы?
Это предлажили еще очень давно - Шарп крафт, тому яркий пример, там в бородатых нулевых были событие на мышку и прочее, но шарпкрафт это не для игроков, для платформ - а платформам в то время оно не усралось, впрочем как и сейчас...
Потом был и айсфог и китайцы со своим нетизом и еще с десятком клонов, потом анрайз сделал свою WFE и на основе работ китацев тоже сделал WFE лаунчер, в котором поддерживаются новые нативки (включая тех что у китацев нет) и полный функционал мемхака в виде нативок, быстрая скорость,защита от читов + какие хочешь кеи,квик касты и камеры - пробник стоит 500 баксов, пока в снг нет желающих...
Вот такие пироги.