XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
wupse
Tomato
offline
Опыт: 2,344
Активность:
Как Добавить Новые функции
//////////////////////////////////////////////////////////////////////////////////////////
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@     SetUnitMaxState
//@=======================================================================================
//@ Credits:
//@---------------------------------------------------------------------------------------
//@     Written by:
//@         Earth-Fury
//@     Based on the work of:
//@         Blade.dk
//@
//@ If you use this system, please credit all of the people mentioned above in your map.
//@=======================================================================================
//@ SetUnitMaxState Readme
//@---------------------------------------------------------------------------------------
//@
//@ SetUnitMaxState() is a function origionally written by Blade.dk. It takes advantage of
//@ a bug which was introduced in one of the patches: Bonus life and mana abilitys will
//@ only ever add the bonus ammount for level 1. However, when removed, they will remove
//@ the ammount they should have added at their current level. This allows you to change a
//@ units maximum life and mana, without adding a perminent ability to the unit.
//@
//@---------------------------------------------------------------------------------------
//@ Adding SetUnitMaxState to your map:
//@ 
//@ Simply copy this library in to a trigger which has been converted to custom text.
//@ After that, you must copy over the abilitys. This is made easy by the ObjectMerger in
//@ JASS NewGen. Distributed with this system are //! external calls to the ObjectMerger.
//@ Simply copy both of them in to your map, save your map, close and reopen your map in
//@ the editor, and remove the external calls. (Or otherwise disable them. Removing the !
//@ after the // works.)
//@
//@---------------------------------------------------------------------------------------
//@ Using SetUnitMaxState:
//@
//@ nothing SetUnitMaxState(unit <target>, unitstate <state>, real <new value>)
//@
//@     This function changes <target>'s unitstate <state> to be eqal to <new value>. Note
//@ that the only valid unitstates this function will use are UNIT_STATE_MAX_MAN and
//@ UNIT_STATE_MAX_LIFE. Use SetUnitState() to change other unitstates.
//@
//@ nothing AddUnitMaxState(unit <target>, unitstate <state>, real <add value>)
//@
//@     This function adds <add value> to <target>'s <state> unitstate. <add value> can be
//@ less than 0, making this function reduce the specified unitstate. This function will
//@ only work with the unitstates UNIT_STATE_MAX_LIFE and UNIT_STATE_MAX_MANA.
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//////////////////////////////////////////////////////////////////////////////////////////
library SetUnitMaxState initializer Initialize
globals
//========================================================================================
// Configuration
//========================================================================================

    // The rawcode of the life ability:
    private constant integer MAX_STATE_LIFE_ABILITY = 'Zx01'
    
    // The rawcode of the mana ability:
    private constant integer MAX_STATE_MANA_ABILITY = 'Zx00'
    
    // The maximum power of two the abilitys use:
    private constant integer MAX_STATE_MAX_POWER = 8
endglobals

//========================================================================================
// System Code
//----------------------------------------------------------------------------------------
// Do not edit below this line unless you wish to change the way the system works.
//========================================================================================

globals
    private integer array PowersOf2
endglobals

function SetUnitMaxState takes unit u, unitstate state, real newValue returns nothing
    local integer stateAbility
    local integer newVal = R2I(newValue)
    local integer i = MAX_STATE_MAX_POWER
    local integer offset
    
    if state == UNIT_STATE_MAX_LIFE then
        set stateAbility = MAX_STATE_LIFE_ABILITY
    elseif state == UNIT_STATE_MAX_MANA then
        set stateAbility = MAX_STATE_MANA_ABILITY
    else
        debug call BJDebugMsg(" " )
        return
    endif
    
    set newVal = newVal - R2I(GetUnitState(u, state))
    
    if newVal > 0 then
        set offset = MAX_STATE_MAX_POWER + 3
    elseif newVal < 0 then
        set offset = 2
        set newVal = -newVal
    else
        return
    endif
    
    loop
        exitwhen newVal == 0 or i < 0
        if newVal >= PowersOf2[i] then
            call UnitAddAbility(u, stateAbility)
            call SetUnitAbilityLevel(u, stateAbility, offset + i)
            call UnitRemoveAbility(u, stateAbility)
            set newVal = newVal - PowersOf2[i]
        else
            set i = i - 1
        endif
    endloop
endfunction

function AddUnitMaxState takes unit u, unitstate state, real addValue returns nothing
    call SetUnitMaxState(u, state, GetUnitState(u, state) + addValue)
endfunction

private function Initialize takes nothing returns nothing
    local integer i = 1
    
    set PowersOf2[0] = 1
    loop
        set PowersOf2[i] = PowersOf2[i - 1] * 2
        set i = i + 1
        exitwhen i == MAX_STATE_MAX_POWER + 3
    endloop
endfunction
endlibrary
А то я добавляю и оно пишет что несушествует
Тут есть MANA и LIFE, мне нужен еше добавить
DEFENSE = Защита
ATTASK = Атака
STR = Сила
INT = Разум
AGI = Ловкость
SPA = Скорость Атаки
SPP = Скорость Передвижение

Отредактировано ScorpioT1000, 10.01.2013 в 20:15.
Старый 10.01.2013, 20:07
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
где форматирование? кат?? где все??? Х_Х
Hate добавил:
конечно не существует, это же система работает только с хп и мп
"пасаны я сую карточку от сбербанка в банкомат от СТБ банка, и оно не принимает, как сделать что бы он принимал от сбербанка?"
Старый 10.01.2013, 20:17
wupse
Tomato
offline
Опыт: 2,344
Активность:
Hate, А как мне добавлять атаки, защиту я не буду давать способность "Зашиту" 1-1000 Уровня. Зависнет игру=(
Старый 10.01.2013, 20:21
ScorpioT1000
Работаем
offline
Опыт: отключен
Hate, должно принимать, вообщето)
wupse, здесь надо дописать систему под нужные статы, но вся суть в абилках. Ты для старых создавал их?
ScorpioT1000 добавил:
Я так понял, там надо не от 1 до 1000, а в логарифмической последовательности, которые дают +1, +2, +4 ... +1024
Старый 10.01.2013, 20:23
wupse
Tomato
offline
Опыт: 2,344
Активность:
ScorpioT1000, В абилке уже все сделаны но система я добавлял MAX_STATE_MANA_ABILITY на новые пишет ошибка
wupse добавил:
В абилке уже сделано +1 +2 +4 +8 +16 +32 +64 +128 +256 и минуса
Старый 10.01.2013, 20:24
ScorpioT1000
Работаем
offline
Опыт: отключен
хотя нет, там все еще хитрее
It takes advantage of a bug which was introduced in one of the patches: Bonus life and mana abilitys will only ever add the bonus ammount for level 1. However, when removed, they will remove the ammount they should have added at their current level. This allows you to change a units maximum life and mana, without adding a perminent ability to the unit.
Старый 10.01.2013, 20:25
wupse
Tomato
offline
Опыт: 2,344
Активность:
ScorpioT1000, Я описал какие я сделал Доп. Статы
DEFENSE = Защита
ATTASK = Атака
STR = Сила
INT = Разум
AGI = Ловкость
SPA = Скорость Атаки
SPP = Скорость Передвижение
wupse добавил:
ScorpioT1000, А другую Логику ни как?
wupse добавил:
ScorpioT1000, Вот стандартная карта ХП и МП
Прикрепленные файлы
Тип файла: w3x UnitMaxState (1).w3x (10.1 Кбайт, 4 просмотров )
Старый 10.01.2013, 20:27
ScorpioT1000
Работаем
offline
Опыт: отключен
Проще написать заного. Но мне кажется, это уже кто-то да писал
Старый 10.01.2013, 20:28
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
согласен, пример не очень удачный) суть в том что бы работало, нужно было бы с чем работать. в данном случае нужно написать ручками свои функции по обработке.
Старый 10.01.2013, 20:29
wupse
Tomato
offline
Опыт: 2,344
Активность:
А как я напишу на гуи НЕ смогу такую перебор +1 +2 +4...+256
Джас 0((
Старый 10.01.2013, 20:30
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
так идите изучайте. или статьи для слабых?
Старый 10.01.2013, 20:31
wupse
Tomato
offline
Опыт: 2,344
Активность:
Hate, Я Прошу=) Другую Логика Возможно? Я GUI хорошо разбираюсь но подбор абилок +1 ... +256 не смогу =(
Старый 10.01.2013, 20:34
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
щто?...
Старый 10.01.2013, 20:53
wupse
Tomato
offline
Опыт: 2,344
Активность:
Hate, Ты добрый? =) Есть другие Наработки, При добавление Защиту и Атаки и другие?
Старый 10.01.2013, 20:54
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
несмотря на ник я добрый :)
незнаю, можешь поискать на хайве, или тут. в крайнем случае можно сделать такую системку самому.
Старый 10.01.2013, 21:00
wupse
Tomato
offline
Опыт: 2,344
Активность:
Но я не смогу)) А то ломаю голову год учу на джасе и толку 0 =( Только GUI Могу но такой перебор +1 +2 +4 ... +256 Не знаю как делать
wupse добавил:
Вот Я сделал И удобно и акуратно но когда я даю способность "Зашиту" и зависает игру , потому что способность
10000 уровень так нельзя=) Другую хз
Миниатюры
Кликните на картинку для увеличения
Название:  screenshot.5.png
Просмотров: 23
Размер:  26.7 Кбайт  
Старый 10.01.2013, 21:07
DimanTOoBS

offline
Опыт: 5,791
Активность:
wupse, изучай разложение чисел по степеням двойки, добавляешь все абилки на хп ( или чо у тя там) на тех разрядах где 0 удаляешь абилки, занесённые заранее в базу данных...
Старый 10.01.2013, 21:10
DualShock

offline
Опыт: 5,023
Активность:
wupse, если у тебя есть опыт использования буржуйских наработок (в том числе их импорт), то могу посоветовать эту:
В карте библиотека StatusModifier
wupse:
DEFENSE = Защита
ATTASK = Атака
STR = Сила
INT = Разум
AGI = Ловкость
SPA = Скорость Атаки
SPP = Скорость Передвижение
из этого всего в библиотеке можно работать с armor, damage, attack speed. совместима с либой в первом посту
как юзать - все в описании либы
Старый 10.01.2013, 21:11
wupse
Tomato
offline
Опыт: 2,344
Активность:
в абилке у меня вот атрибут на все статы
wupse добавил:
DualShock, Ну да только Пугает много способность иначе перпепутаю=)
Миниатюры
Кликните на картинку для увеличения
Название:  screenshot.7.png
Просмотров: 24
Размер:  3.6 Кбайт  
Старый 10.01.2013, 21:17
DualShock

offline
Опыт: 5,023
Активность:
вот еще либа, на этот раз здесь есть все что тебе нужно. Требуется лишь прямые руки чтобы использовать ее
Старый 10.01.2013, 21:24
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 01:27.