Сейчас 15:34:13 Четверг, 26 декабря, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
SetHeroAgi/Str/Int не добавляет статы
Samedy_Дата: Воскресенье, 11 Октября 2015, 14:31:19 | Сообщение # 1
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:

Почему не статы не добавляются? Самое странное, что ModifyHeroStat - работает, а это - нет.


Сообщение отредактировал Samedy_ - Воскресенье, 11 Октября 2015, 14:37:20
 

ExtrematorДата: Четверг, 15 Октября 2015, 14:21:23 | Сообщение # 2
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
ну факт оно не добавляет, а устанавливает стату на нужное значение
если ты хочешь повысить на N от того что уже есть, то надо складывать ( то что есть + число ) так же как с ХПшками
 

Samedy_Дата: Пятница, 16 Октября 2015, 12:12:53 | Сообщение # 3
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Extremator, за ответ спасибо, но я уже разобрался.) Там просто вместо двойки была единица и значения не умножались, а я слеповат))
 

KaotikaДата: Пятница, 16 Октября 2015, 13:12:34 | Сообщение # 4
5 уровень
Группа: Проверенные
Сообщений: 144
Награды: 0
Репутация: 20
Блокировки:
Не оптимизированный код.. BJ + Location

Добавлено (16 Октября 2015, 13:12:34)
---------------------------------------------
Лучше использовать нативки. А вместо локации - точки!


Тискаю клаву... остальных пока некогда!
 

ExtrematorДата: Пятница, 16 Октября 2015, 13:57:08 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
а локации это не точки?) можт ты имел ввиду координаты?
 

KaotikaДата: Пятница, 16 Октября 2015, 14:08:35 | Сообщение # 6
5 уровень
Группа: Проверенные
Сообщений: 144
Награды: 0
Репутация: 20
Блокировки:
Цитата Extremator ()
а локации это не точки?) можт ты имел ввиду координаты?

Хмх... точно)


Тискаю клаву... остальных пока некогда!
 

ExtrematorДата: Пятница, 16 Октября 2015, 19:00:52 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
у него там идёт смещение юнита в точку
в какую? - возврат точки из под юнита ( GetUnitLoc(u) )
идёт обращение и получение точки... но.. она ж никак не записана и удаляться не будет
так?

Добавлено (16 Октября 2015, 19:00:52)
---------------------------------------------
ты записываешь старые статы, даёшь новые, а потом возвращаешь старое значение?

это может привести к багу
если статы героя с того момента изменятся, либо до того

например герой получит уровень за время действия скилла и +2 Силы за это
при завершении скилла он получит Силу до этих +2, т.е. он их потеряет...

тебе надо посчитать сколько ты хочешь дать, записать это число
выдать его... а потом уже именно это число снять... всё

 

KaotikaДата: Пятница, 16 Октября 2015, 19:09:05 | Сообщение # 8
5 уровень
Группа: Проверенные
Сообщений: 144
Награды: 0
Репутация: 20
Блокировки:
Ххах вот невнимательность, а?

Тискаю клаву... остальных пока некогда!
 

Samedy_Дата: Пятница, 16 Октября 2015, 21:53:31 | Сообщение # 9
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Это страя версия кода) В новой уже все поправлено, и все BJшки удалены))
 

KaotikaДата: Суббота, 17 Октября 2015, 06:09:19 | Сообщение # 10
5 уровень
Группа: Проверенные
Сообщений: 144
Награды: 0
Репутация: 20
Блокировки:
Ты JNGP юзаешь?

Тискаю клаву... остальных пока некогда!
 

Samedy_Дата: Суббота, 17 Октября 2015, 10:19:56 | Сообщение # 11
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Kaotika, да, именно благодаря ему перестал использовать BJ))
 

ExtrematorДата: Суббота, 17 Октября 2015, 15:15:58 | Сообщение # 12
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
BJ не так уж и страшны
в основном они сделаны для удобства использования того что внутри
точно так же ка мы сами пишемфункции для того что бы не повторять написание одних и тех же нативок по 100500 раз в коде..
 

KaotikaДата: Суббота, 17 Октября 2015, 18:20:51 | Сообщение # 13
5 уровень
Группа: Проверенные
Сообщений: 144
Награды: 0
Репутация: 20
Блокировки:
Лично меня бесит, когда в моём коде есть функция с суффиксом BJ. Плюс нативки как никак быстрее читаются, чем BJ-функции.

Добавлено (17 Октября 2015, 18:20:51)
---------------------------------------------
Ну это мои амбиции уже)) Я так сказать перфектционист в кодинге.


Тискаю клаву... остальных пока некогда!


Сообщение отредактировал Kaotika - Суббота, 17 Октября 2015, 18:21:47
 

ExtrematorДата: Воскресенье, 18 Октября 2015, 21:44:36 | Сообщение # 14
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
Цитата Kaotika ()
Плюс нативки как никак быстрее читаются, чем BJ-функции.
там какие то такие миллионные доли секунд ))

где то на ХГМе видел как мерили разницу между разными подходами счёта предметов в инвентаре
в итоге самым быстрым оказалось дерево ИФов, которое поочерёдно спрашивало есть ли предмет в каждом из слотов..
вот это было странно хД

Добавлено (18 Октября 2015, 21:44:36)
---------------------------------------------
я б как то так сделал

Код

function EndSupport takes nothing returns nothing
    local hashtable h = udg_Hash
    local timer t = GetExpiredTimer()
    local integer i = GetHandleId(t)
    
    local unit u = LoadUnitHandle(h,i,3)
    local unit c = LoadUnitHandle(h,i,4)
    
    local unitstate hp = UNIT_STATE_LIFE
    local unitstate HP = UNIT_STATE_MAX_LIFE
    
    call SetHeroAgi(u,GetHeroAgi(u,false)-LoadInteger(h,i,0),true)
    call SetHeroStr(u,GetHeroStr(u,false)-LoadInteger(h,i,1),true)
    call SetHeroInt(u,GetHeroInt(u,false)-LoadInteger(h,i,2),true)
    
    call SuspendHeroXP(c,false)
    call ShowUnit(c,true)
    call SetUnitState(c,hp,GetUnitState(u,HP)/ GetUnitState(u,hp)* GetUnitState(c,HP))
    
    call SetUnitX(c,GetUnitX(u))
    call SetUnitY(c,GetUnitY(u))
    
    call DestroyTimer(t)
    
    call FlushChildHashtable(h,i)
    
    set h = null
    set t = null
    set u = null
    set c = null
endfunction

Код

function Trig_Support_Actions takes nothing returns nothing
    local hashtable h = udg_Hash
    local timer t = CreateTimer()
    local integer i = GetHandleId(t)
    
    local unit c = GetTriggerUnit()
    local unit u = GetSpellTargetUnit()
    
    local real p = I2R(GetUnitAbilityLevel(c,'A03U'))*.25
    
    local integer A0 = GetHeroAgi(u,false)
    local integer A = R2I(A0*p+.5)
    local integer S0 = GetHeroStr(u,false)
    local integer S = R2I(S0*p+.5)
    local integer I0 = GetHeroInt(u,false)
    local integer I = R2I(I0*p+.5)
    
    call SetHeroAgi(u,A0+A,true)
    call SetHeroStr(u,S0+S,true)
    call SetHeroInt(u,I0+I,true)
    
    call SuspendHeroXP(c,true)
    call ShowUnit(c,false)
    call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\Avatar\\AvatarCaster.mdl",c,"origin"))
    
    call TimerStart(t,10.,false,function EndSupport)
    
    call SaveInteger(h,i,0,A)
    call SaveInteger(h,i,1,S)
    call SaveInteger(h,i,2,I)
    call SaveUnitHandle(h,i,3,u)
    call SaveUnitHandle(h,i,4,c)
    
    set h = null
    set t = null
    set c = null
    set u = null
endfunction
 

SirNikolasДата: Воскресенье, 18 Октября 2015, 22:10:50 | Сообщение # 15
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Цитата Extremator ()
где то на ХГМе видел как мерили разницу между разными подходами счёта предметов в инвентаре
в итоге самым быстрым оказалось дерево ИФов, которое поочерёдно спрашивало есть ли предмет в каждом из слотов.
Loop unrolling, все верно.


 

  • Страница 1 из 1
  • 1
Поиск:

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