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

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

Ответ
 
PUVer
За GW!
online
Опыт: 114,169
Активность:
MBI (Мультибоардный Инвентарь для Сингл РПГ)
Название наработки: MBI
Автор: PUVer
Версия: 0.3
Метод исполнения: GUI
Описание:
Мультибоардный инвентарь для синг рпг.
Особенности:
  • Вмещает до 41 предмета.
  • Нельзя одевать более одного щита, меча и т.п.
  • 6 слотов под зелья и свитки.
  • Легко настраивается.
Что будет:
  • Улучшение системы одевания предметов (Кликаешь на предмет он одевается, а одетый становиться на его место)
  • Гибкая система торговли
  • Система обыска сундуков
Изменения:
v0.2
-Добавлены комментарии к триггерам
-Исправлены некоторые баги
v0.3
-Добавлено ещё 5 строк для описания
-Расширены строки описания
-Переделано выбрасывание предметов
-Добавлена кнопка скрытия/показывания мультибоарда
-Способности для управления инвентарём помещены в спеллбук
Миниатюры
Кликните на картинку для увеличения
Название:  12!.jpg
Просмотров: 451
Размер:  92.8 Кбайт  
Прикрепленные файлы
Тип файла: w3x MBI.w3x (70.1 Кбайт, 127 просмотров )
Старый 09.08.2011, 17:45
z1i2p3

offline
Опыт: 9,821
Активность:
Хорошо бы тебе для твоей наработки добавить систему, которая возвращает камеру если нажимается стрелка на клаве, но, чтобы мышкой камеру можно было двигать свободно.
Старый 09.08.2011, 19:23
PUVer
За GW!
online
Опыт: 114,169
Активность:
Цитата:
Сообщение от z1i2p3
Хорошо бы тебе для твоей наработки добавить систему, которая возвращает камеру если нажимается стрелка на клаве, но, чтобы мышкой камеру можно было двигать свободно.

Там же специальная способность есть для регулирования прикрепления камеры к юниту.
Старый 09.08.2011, 19:25
z1i2p3

offline
Опыт: 9,821
Активность:
PUVer, Я видел, но на мой взгляд, так как я сказал было бы удобнее, не прёт как то тыкать способности, охота сразу открыть мультиборд и делать что хочешь, но чтобы камера не уходила.
Старый 09.08.2011, 19:28
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
По правде говоря это просто ужас:

» раскрыть

[code]
function Trig_Coordinate_Func001C takes nothing returns boolean
if ( not ( udg_x == 1 ) ) then
return false
endif
if ( not ( udg_y == 6 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func002C takes nothing returns boolean
if ( not ( udg_x == 1 ) ) then
return false
endif
if ( not ( udg_y == 7 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func003C takes nothing returns boolean
if ( not ( udg_x == 1 ) ) then
return false
endif
if ( not ( udg_y == 8 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func004C takes nothing returns boolean
if ( not ( udg_x == 1 ) ) then
return false
endif
if ( not ( udg_y == 9 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func005C takes nothing returns boolean
if ( not ( udg_x == 1 ) ) then
return false
endif
if ( not ( udg_y == 10 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func006C takes nothing returns boolean
if ( not ( udg_x == 2 ) ) then
return false
endif
if ( not ( udg_y == 6 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func007C takes nothing returns boolean
if ( not ( udg_x == 2 ) ) then
return false
endif
if ( not ( udg_y == 7 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func008C takes nothing returns boolean
if ( not ( udg_x == 2 ) ) then
return false
endif
if ( not ( udg_y == 8 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func009C takes nothing returns boolean
if ( not ( udg_x == 2 ) ) then
return false
endif
if ( not ( udg_y == 9 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func010C takes nothing returns boolean
if ( not ( udg_x == 2 ) ) then
return false
endif
if ( not ( udg_y == 10 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func011C takes nothing returns boolean
if ( not ( udg_x == 3 ) ) then
return false
endif
if ( not ( udg_y == 6 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func012C takes nothing returns boolean
if ( not ( udg_x == 3 ) ) then
return false
endif
if ( not ( udg_y == 7 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func013C takes nothing returns boolean
if ( not ( udg_x == 3 ) ) then
return false
endif
if ( not ( udg_y == 8 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func014C takes nothing returns boolean
if ( not ( udg_x == 3 ) ) then
return false
endif
if ( not ( udg_y == 9 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func015C takes nothing returns boolean
if ( not ( udg_x == 3 ) ) then
return false
endif
if ( not ( udg_y == 10 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func016C takes nothing returns boolean
if ( not ( udg_x == 4 ) ) then
return false
endif
if ( not ( udg_y == 6 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func017C takes nothing returns boolean
if ( not ( udg_x == 4 ) ) then
return false
endif
if ( not ( udg_y == 7 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func018C takes nothing returns boolean
if ( not ( udg_x == 4 ) ) then
return false
endif
if ( not ( udg_y == 8 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func019C takes nothing returns boolean
if ( not ( udg_x == 4 ) ) then
return false
endif
if ( not ( udg_y == 9 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func020C takes nothing returns boolean
if ( not ( udg_x == 4 ) ) then
return false
endif
if ( not ( udg_y == 10 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func021C takes nothing returns boolean
if ( not ( udg_x == 5 ) ) then
return false
endif
if ( not ( udg_y == 6 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func022C takes nothing returns boolean
if ( not ( udg_x == 5 ) ) then
return false
endif
if ( not ( udg_y == 7 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func023C takes nothing returns boolean
if ( not ( udg_x == 5 ) ) then
return false
endif
if ( not ( udg_y == 8 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func024C takes nothing returns boolean
if ( not ( udg_x == 5 ) ) then
return false
endif
if ( not ( udg_y == 9 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func025C takes nothing returns boolean
if ( not ( udg_x == 5 ) ) then
return false
endif
if ( not ( udg_y == 10 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func026C takes nothing returns boolean
if ( not ( udg_x == 1 ) ) then
return false
endif
if ( not ( udg_y == 1 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func027C takes nothing returns boolean
if ( not ( udg_x == 1 ) ) then
return false
endif
if ( not ( udg_y == 2 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func028C takes nothing returns boolean
if ( not ( udg_x == 1 ) ) then
return false
endif
if ( not ( udg_y == 3 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func029C takes nothing returns boolean
if ( not ( udg_x == 1 ) ) then
return false
endif
if ( not ( udg_y == 4 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func030C takes nothing returns boolean
if ( not ( udg_x == 1 ) ) then
return false
endif
if ( not ( udg_y == 5 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func031C takes nothing returns boolean
if ( not ( udg_x == 2 ) ) then
return false
endif
if ( not ( udg_y == 1 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func032C takes nothing returns boolean
if ( not ( udg_x == 2 ) ) then
return false
endif
if ( not ( udg_y == 2 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func033C takes nothing returns boolean
if ( not ( udg_x == 2 ) ) then
return false
endif
if ( not ( udg_y == 3 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func034C takes nothing returns boolean
if ( not ( udg_x == 2 ) ) then
return false
endif
if ( not ( udg_y == 4 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func035C takes nothing returns boolean
if ( not ( udg_x == 2 ) ) then
return false
endif
if ( not ( udg_y == 5 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func036C takes nothing returns boolean
if ( not ( udg_x == 4 ) ) then
return false
endif
if ( not ( udg_y == 1 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func037C takes nothing returns boolean
if ( not ( udg_x == 4 ) ) then
return false
endif
if ( not ( udg_y == 2 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func038C takes nothing returns boolean
if ( not ( udg_x == 4 ) ) then
return false
endif
if ( not ( udg_y == 3 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func039C takes nothing returns boolean
if ( not ( udg_x == 5 ) ) then
return false
endif
if ( not ( udg_y == 1 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func040C takes nothing returns boolean
if ( not ( udg_x == 5 ) ) then
return false
endif
if ( not ( udg_y == 2 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Func041C takes nothing returns boolean
if ( not ( udg_x == 5 ) ) then
return false
endif
if ( not ( udg_y == 3 ) ) then
return false
endif
return true
endfunction

function Trig_Coordinate_Actions takes nothing returns nothing
if ( Trig_Coordinate_Func001C() ) then
set udg_z = 1
else
endif
if ( Trig_Coordinate_Func002C() ) then
set udg_z = 2
else
endif
if ( Trig_Coordinate_Func003C() ) then
set udg_z = 3
else
endif
if ( Trig_Coordinate_Func004C() ) then
set udg_z = 4
else
endif
if ( Trig_Coordinate_Func005C() ) then
set udg_z = 5
else
endif
if ( Trig_Coordinate_Func006C() ) then
set udg_z = 6
else
endif
if ( Trig_Coordinate_Func007C() ) then
set udg_z = 7
else
endif
if ( Trig_Coordinate_Func008C() ) then
set udg_z = 8
else
endif
if ( Trig_Coordinate_Func009C() ) then
set udg_z = 9
else
endif
if ( Trig_Coordinate_Func010C() ) then
set udg_z = 10
else
endif
if ( Trig_Coordinate_Func011C() ) then
set udg_z = 11
else
endif
if ( Trig_Coordinate_Func012C() ) then
set udg_z = 12
else
endif
if ( Trig_Coordinate_Func013C() ) then
set udg_z = 13
else
endif
if ( Trig_Coordinate_Func014C() ) then
set udg_z = 14
else
endif
if ( Trig_Coordinate_Func015C() ) then
set udg_z = 15
else
endif
if ( Trig_Coordinate_Func016C() ) then
set udg_z = 16
else
endif
if ( Trig_Coordinate_Func017C() ) then
set udg_z = 17
else
endif
if ( Trig_Coordinate_Func018C() ) then
set udg_z = 18
else
endif
if ( Trig_Coordinate_Func019C() ) then
set udg_z = 19
else
endif
if ( Trig_Coordinate_Func020C() ) then
set udg_z = 20
else
endif
if ( Trig_Coordinate_Func021C() ) then
set udg_z = 21
else
endif
if ( Trig_Coordinate_Func022C() ) then
set udg_z = 22
else
endif
if ( Trig_Coordinate_Func023C() ) then
set udg_z = 23
else
endif
if ( Trig_Coordinate_Func024C() ) then
set udg_z = 24
else
endif
if ( Trig_Coordinate_Func025C() ) then
set udg_z = 25
else
endif
if ( Trig_Coordinate_Func026C() ) then
set udg_z = 30
else
endif
if ( Trig_Coordinate_Func027C() ) then
set udg_z = 31
else
endif
if ( Trig_Coordinate_Func028C() ) then
set udg_z = 32
else
endif
if ( Trig_Coordinate_Func029C() ) then
set udg_z = 33
else
endif
if ( Trig_Coordinate_Func030C() ) then
set udg_z = 34
else
endif
if ( Trig_Coordinate_Func031C() ) then
set udg_z = 35
else
endif
if ( Trig_Coordinate_Func032C() ) then
set udg_z = 36
else
endif
if ( Trig_Coordinate_Func033C() ) then
set udg_z = 37
else
endif
if ( Trig_Coordinate_Func034C() ) then
set udg_z = 38
else
endif
if ( Trig_Coordinate_Func035C() ) then
set udg_z = 39
else
endif
if ( Trig_Coordinate_Func036C() ) then
set udg_z = 40
else
endif
if ( Trig_Coordinate_Func037C() ) then
set udg_z = 41
else
endif
if ( Trig_Coordinate_Func038C() ) then
set udg_z = 42
else
endif
if ( Trig_Coordinate_Func039C() ) then
set udg_z = 43
else
endif
if ( Trig_Coordinate_Func040C() ) then
set udg_z = 44
else
endif
if ( Trig_Coordinate_Func041C() ) then
set udg_z = 45
else
endif
endfunction

//===========================================================================
function InitTrig_Coordinate takes nothing returns nothing
set gg_trg_Coordinate = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_Coordinate, 0.01 )
call TriggerAddAction( gg_trg_Coordinate, function Trig_Coordinate_Actions )
endfunction

[code]

Индийский код детектед.
Старый 09.08.2011, 19:57
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
То был конверт гуи, да и вся система на гуи. Сделано весьма нерационально.PUVer, за столько лет мог бы и научится жассу.
Старый 09.08.2011, 20:24
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
Цитата:
Сообщение от PUVer
Ну что я могу вам ответить?Да быдло-гуи. Ну и чо?=D


Тут дело не в гуи даже, просто те 100500 строк можно было свернуть с помощью цикла. Я уже не говорю о скорости работы всего этого...

Для сравнения, сча вот пишу для себя:

» раскрыть

Код:
library SkillSys initializer Init
{
    private string array Skill_Name
    private int array Skill_Levels[11][200]
    private int index = 0
    private constant int statbylvl = 6
    private int array notlearned
    private int array usedstat
    private bool array IsLearnedStats
    private bool array IsLearnedMastery
    private constant int masterybylvl = 20
    private int array usedmastery
    private multiboard array MB
    private bool array IsCreatedMB
    private int MB_Rows // строки
    private int MB_Cols // столбцы
    private multiboarditem mbitem
    private constant int LVLUP_SPELL = 'A00E'
    private int array Player_Arrow
    private int array Buff_Param[11][20]
    private int array Buff_Mastery[11][20]
    private bool array isBackspase
    
    private unit array Cam
    
    private constant int Value = 1
    private constant int Icon = 2
    private constant int None = 3
    
    private constant int STR = 2
    private constant int AGI = 3
    private constant int INT = 4
    
    private constant int CONT = 7
    private constant int EXIT = 8
    
    private int ROW
    private int COL
    
    private void MBSS(int row,int col,bool showValue, bool showIcon)
    {
        mbitem = MultiboardGetItem(MB[index], row-1, col-1)
        MultiboardSetItemStyle(mbitem, showValue, showIcon)
        MultiboardReleaseItem(mbitem)
    }
    
    private void advMBSS(int val1,int val2,int val3,int val4,int val5)
    {
        int array vals
        vals[0] = val1
        vals[1] = val2
        vals[2] = val3
        vals[3] = val4
        vals[4] = val5
        int i =0
        while(i < 5)
        {
            mbitem = MultiboardGetItem(MB[index],ROW-1, i)
            if vals[i] == Value {MultiboardSetItemStyle(mbitem,true,false)}
            elseif vals[i] == Icon {MultiboardSetItemStyle(mbitem,false,true)}
            elseif vals[i] == None {MultiboardSetItemStyle(mbitem,false,false)}
            MultiboardReleaseItem(mbitem)
            i++
        }
    }
    
    private void MBSC(int row,int col,real red, real green, real blue, real transparency)
    {
        mbitem = MultiboardGetItem(MB[index], row-1, col-1)
        MultiboardSetItemValueColor(mbitem, PercentToInt(red,255), PercentToInt(green,255), PercentToInt(blue,255), PercentToInt(100.0-transparency,255))
        MultiboardReleaseItem(mbitem)
    }  
    
    private void MBSW(int row,int col,real width)
    {
        mbitem = MultiboardGetItem(MB[index], row-1, col-1)
        MultiboardSetItemWidth(mbitem, width/100.0)
        MultiboardReleaseItem(mbitem)
    }
    
    private void advMBSW(float width1,float width2,float width3,float width4,float width5)
    {
        mbitem = MultiboardGetItem(MB[index], ROW-1, 0)
        MultiboardSetItemWidth(mbitem, width1/100.0)
        MultiboardReleaseItem(mbitem)
        
        mbitem = MultiboardGetItem(MB[index], ROW-1, 1)
        MultiboardSetItemWidth(mbitem, width2/100.0)
        MultiboardReleaseItem(mbitem)
        
        mbitem = MultiboardGetItem(MB[index], ROW-1, 2)
        MultiboardSetItemWidth(mbitem, width3/100.0)
        MultiboardReleaseItem(mbitem)
        
        mbitem = MultiboardGetItem(MB[index], ROW-1, 3)
        MultiboardSetItemWidth(mbitem, width4/100.0)
        MultiboardReleaseItem(mbitem)
        
        mbitem = MultiboardGetItem(MB[index], ROW-1, 4)
        MultiboardSetItemWidth(mbitem, width5/100.0)
        MultiboardReleaseItem(mbitem)
    }
    
    private void MBSI(int col,string iconFileName)
    {
        mbitem = MultiboardGetItem(MB[index], ROW-1, col-1)
        MultiboardSetItemIcon(mbitem, iconFileName)
        MultiboardReleaseItem(mbitem)
    }
    
    private void MBST(int col,string val)
    {
        mbitem = MultiboardGetItem(MB[index], ROW-1, col-1)
        MultiboardSetItemValue(mbitem, val)
        MultiboardReleaseItem(mbitem)
    }
    
    private void sMBST(int row, int col,string val)
    {
        mbitem = MultiboardGetItem(MB[index], row-1, col-1)
        MultiboardSetItemValue(mbitem, val)
        MultiboardReleaseItem(mbitem)
    }
    
    private int HeroStr()
    {
        return GetHeroStr(udg_Geroi[index],false)
    }
    
    private int HeroAgi()
    {
        return GetHeroAgi(udg_Geroi[index],false)
    }
    
    private int HeroInt()
    {
        return GetHeroInt(udg_Geroi[index],false)
    }
    
    private void Backspace()
    {
        isBackspase[ROW] = true
        advMBSS(None,None,None,None,None)
        advMBSW(0.0, 0.0, 0.0, 0.0, 0.0 )
    }
    
    private void MB2()
    {
        index = GetPlayerId(GetTriggerPlayer())
        IsLearnedMastery[index] = true
        Player_Arrow[index] = 2
        MB[index] = CreateMultiboard()
           
        MB_Rows = 11
        MB_Cols = 5
        
        int i =0
        
        while(i< MB_Rows)
        {
            isBackspase[i] = false
            i++
        }
        
        MultiboardSetRowCount(MB[index], MB_Rows)
        MultiboardSetColumnCount(MB[index], MB_Cols)
        MultiboardSetTitleText(MB[index], "Характеристики")

        if GetLocalPlayer() == Player(index)
        {
            MultiboardDisplay(MB[index], true )
        }
            
        ROW = 1
            
        advMBSS(Value,None,None,None,None)
        advMBSW(15.0,  0.0, 0.0, 0.0, 0.0)
        MBST(1, "Таланты")
        
        ROW = 2
            
        advMBSS(Value,Icon,Value,Value,Value)
        advMBSW(1.0,  2.0, 6.0,  2.0,  2.0  )
        MBST(1,">")
        MBSI(2,"FireSymbol.blp")
        MBST(3,"Огонь")
        MBST(4,I2S(MASTERY[index][FIRE]))
        MBST(5,I2S(Buff_Mastery[index][FIRE]))
        
        ROW = 3
            
        advMBSS(Value,Icon,Value,Value,Value)
        advMBSW(1.0,  2.0, 6.0,  2.0,  2.0  )
        MBSI(2,"WindSymbol.blp")
        MBST(3,"Ветер")
        MBST(4,I2S(MASTERY[index][WIND]))
        MBST(5,I2S(Buff_Mastery[index][WIND]))
            
        ROW = 4
            
        advMBSS(Value,Icon,Value,Value,Value)
        advMBSW(1.0,  2.0, 6.0,  2.0,  2.0  )
        MBSI(2,"WaterSymbol.blp")
        MBST(3,"Вода")
        MBST(4,I2S(MASTERY[index][WATER]))
        MBST(5,I2S(Buff_Mastery[index][WATER]))
        
        ROW = 5
            
        advMBSS(Value,Icon,Value,Value,Value)
        advMBSW(1.0,  2.0, 6.0,  2.0,  2.0  )
        MBSI(2,"RaitonSymbol.blp")
        MBST(3,"Молния")
        MBST(4,I2S(MASTERY[index][LIGHTING]))
        MBST(5,I2S(Buff_Mastery[index][LIGHTING]))
        
        ROW = 6
            
        advMBSS(Value,Icon,Value,Value,Value)
        advMBSW(1.0,  2.0, 6.0,  2.0,  2.0  )
        MBSI(2,"EarthSymbol.blp")
        MBST(3,"Земля")
        MBST(4,I2S(MASTERY[index][EARTH]))
        MBST(5,I2S(Buff_Mastery[index][EARTH]))
            
        ROW = 7
        
        Backspace()
        
        ROW = 8
            
        advMBSS(Value,None,Value,None,Value)
        advMBSW(1.0,  2.0, 6.0, 2.0, 2.0 )
        isBackspase[ROW] = true
        MBST(3, "Очков для распределения")
        MBST(5, I2S(notlearned[index]*masterybylvl-usedmastery[index]))
            
        ROW = 9
            
        advMBSS(Value,None,Value,None,None)
        advMBSW(1.0,  2.0, 6.0, 2.0, 2.0 )
        MBST(3, "Готово")
        
        ROW = 10
            
        advMBSS(Value,None,Value,None,None)
        advMBSW(1.0,  2.0, 6.0, 2.0, 2.0 )
        MBST(3, "Назад")
            
        ROW = 11
            
        advMBSS(Value,None,Value,None,None)
        advMBSW(1.0,  2.0, 6.0, 2.0, 2.0 )
        MBST(3, "Выход")
            
    }
    
    private void MB1()
    {
        index = GetPlayerId(GetTriggerPlayer())
        if !IsCreatedMB[index]
        {
            Player_Arrow[index] = 2
            Cam[index] = CreateUnit(Player(index), 'h004', GetCameraTargetPositionX(), GetCameraTargetPositionY(), 0)
            if (GetLocalPlayer() == Player(index)){SetCameraTargetController(Cam[index], 0.00, 0.00, false)}
            MB[index] = CreateMultiboard()
            IsLearnedStats[index] = true
            IsCreatedMB[index] = true
            
            MB_Rows = 8
            MB_Cols = 5
            int i = 0
            while( i< MB_Rows)
            {
                isBackspase[i] = false
                i++
            }
            
            MultiboardSetRowCount(MB[index], MB_Rows)
            MultiboardSetColumnCount(MB[index], MB_Cols)
            MultiboardSetTitleText(MB[index], "Характеристики")

            if GetLocalPlayer() == Player(index)
            {
                MultiboardDisplay(MB[index], true )
            }
            
            ROW = 1
            
            advMBSS(Value,None,None,None,None)
            advMBSW(15.0,  0.0, 0.0, 0.0, 0.0)
            MBST(1, "Основные характеристики")
            
            ROW = 2
            
            advMBSS(Value,Icon,Value,Value,Value)
            advMBSW(1.0,  2.0, 6.0,  2.0,  2.0  )
            MBST(1,">")
            MBSI(2,"ReplaceableTextures\\CommandButtons\\BTNDeathPact.blp")
            MBST(3,"Сила")
            MBST(4,I2S(HeroStr()))
            MBST(5,I2S(Buff_Param[index][STR]))
            
            ROW = 3
            
            advMBSS(Value,Icon,Value,Value,Value)
            advMBSW(1.0,  2.0, 6.0,  2.0,  2.0  )
            MBSI(2,"ReplaceableTextures\\CommandButtons\\BTNEvasion.blp")
            MBST(3,"Ловкость")
            MBST(4,I2S(HeroAgi()))
            MBST(5,I2S(Buff_Param[index][AGI]))
            
            ROW = 4
            
            advMBSS(Value,Icon,Value,Value,Value)
            advMBSW(1.0,  2.0, 6.0,  2.0,  2.0  )
            MBSI(2,"ReplaceableTextures\\CommandButtons\\BTNSpellBookBLS.blp")
            MBST(3,"Интелект")
            MBST(4,I2S(HeroInt()))
            MBST(5,I2S(Buff_Param[index][INT]))
            
            ROW = 5
            
            Backspace()
            
            ROW = 6
            
            advMBSS(Value,None,Value,None,Value)
            advMBSW(1.0,  2.0, 6.0, 2.0, 2.0 )
            isBackspase[ROW] = true
            MBST(3, "Очков для распределения")
            MBST(5, I2S(notlearned[index]*statbylvl-usedstat[index]))
            
            ROW = 7
            
            advMBSS(Value,None,Value,None,None)
            advMBSW(1.0,  2.0, 6.0, 2.0, 2.0 )
            MBST(3, "Далее")
            
            ROW = 8
            
            advMBSS(Value,None,Value,None,None)
            advMBSW(1.0,  2.0, 6.0, 2.0, 2.0 )
            MBST(3, "Выход")
        }
    }
    
    private void Up()
    {
        index = GetPlayerId(GetTriggerPlayer())
        sMBST(Player_Arrow[index],1,null)
        loop{Player_Arrow[index]--;exitwhen(!isBackspase[Player_Arrow[index]])}
        if Player_Arrow[index] <= 1{Player_Arrow[index] = 2}
        sMBST(Player_Arrow[index],1,">")
    }
    
    private void Down()
    {
        index = GetPlayerId(GetTriggerPlayer())
        sMBST(Player_Arrow[index],1,null)
        loop{Player_Arrow[index]++;exitwhen(!isBackspase[Player_Arrow[index]])}
        if Player_Arrow[index] >= MB_Rows{Player_Arrow[index] = MB_Rows}
        sMBST(Player_Arrow[index],1,">")
    }
    
    private void ClearBuff()
    {
        int i = 0
        usedmastery[index] = 0
        usedstat[index] = 0
        notlearned[index] = 0
        while(i < 12)
        {
            Buff_Param[index][i] = 0
            Buff_Mastery[index][i] = 0
            i++
        }
    }
    
    private void SetStats()
    {
        SetHeroStr(udg_Geroi[index],HeroStr()+Buff_Param[index][STR], true)
        SetHeroAgi(udg_Geroi[index],HeroAgi()+Buff_Param[index][AGI], true)
        SetHeroInt(udg_Geroi[index],HeroInt()+Buff_Param[index][INT], true)
        MASTERY[index][FIRE] = MASTERY[index][FIRE] + Buff_Mastery[index][FIRE]
        MASTERY[index][WIND] = MASTERY[index][WIND] + Buff_Mastery[index][WIND]
        MASTERY[index][WATER] = MASTERY[index][WATER] + Buff_Mastery[index][WATER]
        MASTERY[index][LIGHTING] = MASTERY[index][LIGHTING] + Buff_Mastery[index][LIGHTING]
        MASTERY[index][EARTH] = MASTERY[index][EARTH] + Buff_Mastery[index][EARTH]
        DestroyMultiboard(MB[index])
        UnitRemoveAbility(udg_Geroi[index],LVLUP_SPELL)
        IsCreatedMB[index] = false
        IsLearnedMastery[index] = false
        ClearBuff()
    }
    
    private void Right()
    {
        index = GetPlayerId(GetTriggerPlayer())
        if IsLearnedStats[index]
        {
            if usedstat[index] < notlearned[index]*statbylvl && Player_Arrow[index] == STR or Player_Arrow[index] == AGI or Player_Arrow[index] == INT
            {
                usedstat[index]++
                sMBST(6,5, I2S(notlearned[index]*statbylvl-usedstat[index]))
                if     Player_Arrow[index] == STR
                {
                    Buff_Param[index][STR]++
                    sMBST(STR,5,I2S(Buff_Param[index][STR]))
                }
                elseif Player_Arrow[index] == AGI
                {
                    Buff_Param[index][AGI]++
                    sMBST(AGI,5,I2S(Buff_Param[index][AGI]))
                }
                elseif Player_Arrow[index] == INT
                {
                    Buff_Param[index][INT]++
                    sMBST(INT,5,I2S(Buff_Param[index][INT]))
                }   
            }
            if     Player_Arrow[index] == CONT
            {
                if usedstat[index] == notlearned[index]*statbylvl
                {
                    Player_Arrow[index] = 2
                    IsLearnedStats[index] = false
                    DestroyMultiboard(MB[index])
                    UnitRemoveAbility(udg_Geroi[index],LVLUP_SPELL)
                    MB2() 
                }
            }
            elseif Player_Arrow[index] == EXIT
            {
                DestroyMultiboard(MB[index])
                RemoveUnit(Cam[index])
                IsCreatedMB[index] = false
                UnitAddAbility(udg_Geroi[index],LVLUP_SPELL)
            }
        }
        elseif IsLearnedMastery[index]
        {
            if Player_Arrow[index] == 2 or Player_Arrow[index] == 3 or Player_Arrow[index] == 4 or Player_Arrow[index] == 5 or Player_Arrow[index] == 6  && usedmastery[index] < notlearned[index]*masterybylvl
            {
                if     Player_Arrow[index] == 2 && Buff_Mastery[index][FIRE] < 100
                {
                    usedmastery[index]++
                    Buff_Mastery[index][FIRE]++
                    sMBST(2,5,I2S(Buff_Mastery[index][FIRE]))
                }
                elseif Player_Arrow[index] == 3 && Buff_Mastery[index][WIND] < 100
                {
                    usedmastery[index]++
                    Buff_Mastery[index][WIND]++
                    sMBST(3,5,I2S(Buff_Mastery[index][WIND]))
                }
                elseif Player_Arrow[index] == 4 && Buff_Mastery[index][WATER] < 100
                {
                    usedmastery[index]++
                    Buff_Mastery[index][WATER]++
                    sMBST(4,5,I2S(Buff_Mastery[index][WATER]))
                }  
                elseif Player_Arrow[index] == 5 && Buff_Mastery[index][LIGHTING] < 100
                {
                    usedmastery[index]++
                    Buff_Mastery[index][LIGHTING]++
                    sMBST(5,5,I2S(Buff_Mastery[index][LIGHTING]))
                }
                elseif Player_Arrow[index] == 6 && Buff_Mastery[index][EARTH] < 100
                {
                    usedmastery[index]++
                    Buff_Mastery[index][EARTH]++
                    sMBST(6,5,I2S(Buff_Mastery[index][EARTH]))
                } 
                sMBST(8,5, I2S(notlearned[index]*masterybylvl-usedmastery[index]))
            }
            if Player_Arrow[index] == 9 // готово
            {
                if usedmastery[index] == notlearned[index]*masterybylvl
                {
                    SetStats()
                }
            }
            elseif Player_Arrow[index] == 10 // назад
            {
                DestroyMultiboard(MB[index])
                IsCreatedMB[index] = false
                IsLearnedMastery[index] = false
                MB1()
            }
            elseif Player_Arrow[index] == 11 // выход
            {
                DestroyMultiboard(MB[index])
                RemoveUnit(Cam[index])
                IsCreatedMB[index] = false
                IsLearnedMastery[index] = false
                UnitAddAbility(udg_Geroi[index],LVLUP_SPELL)
            }
        }
    }
    
    private void Left()
    {
        index = GetPlayerId(GetTriggerPlayer())
        if IsLearnedStats[index]
        {
            if usedstat[index] > 0 && (Player_Arrow[index] == STR or Player_Arrow[index] == AGI or Player_Arrow[index] == INT)
            {
                if     Player_Arrow[index] == STR && Buff_Param[index][STR] > 0
                {
                    usedstat[index]--
                    Buff_Param[index][STR]--
                    sMBST(STR,5,I2S(Buff_Param[index][STR]))
                }
                elseif Player_Arrow[index] == AGI && Buff_Param[index][AGI] > 0
                {
                    usedstat[index]--
                    Buff_Param[index][AGI]--
                    sMBST(AGI,5,I2S(Buff_Param[index][AGI]))
                }
                elseif Player_Arrow[index] == INT && Buff_Param[index][INT] > 0
                {
                    usedstat[index]--
                    Buff_Param[index][INT]--
                    sMBST(INT,5,I2S(Buff_Param[index][INT]))
                }   
                sMBST(6,5, I2S(notlearned[index]*statbylvl-usedstat[index]))
            }
            if     Player_Arrow[index] == CONT
            {
                if usedstat[index] == notlearned[index]*statbylvl
                {
                    Player_Arrow[index] = 2
                    IsLearnedStats[index] = false
                    DestroyMultiboard(MB[index])
                    UnitRemoveAbility(udg_Geroi[index],LVLUP_SPELL)
                    MB2() 
                }
            }
            elseif Player_Arrow[index] == EXIT
            {
                DestroyMultiboard(MB[index])
                RemoveUnit(Cam[index])
                IsCreatedMB[index] = false
                UnitAddAbility(udg_Geroi[index],LVLUP_SPELL)
            }
        }
        elseif IsLearnedMastery[index]
        {
            if (Player_Arrow[index] == 2 or Player_Arrow[index] == 3 or Player_Arrow[index] == 4 or Player_Arrow[index] == 5 or Player_Arrow[index] == 6)  && usedmastery[index] > 0
            {
                if     Player_Arrow[index] == 2 && Buff_Mastery[index][FIRE] > 0
                {
                    usedmastery[index]--
                    Buff_Mastery[index][FIRE]--
                    sMBST(2,5,I2S(Buff_Mastery[index][FIRE]))
                }
                elseif Player_Arrow[index] == 3 && Buff_Mastery[index][WIND] > 0
                {
                    usedmastery[index]--
                    Buff_Mastery[index][WIND]--
                    sMBST(3,5,I2S(Buff_Mastery[index][WIND]))
                }
                elseif Player_Arrow[index] == 4 && Buff_Mastery[index][WATER] > 0
                {
                    usedmastery[index]--
                    Buff_Mastery[index][WATER]--
                    sMBST(4,5,I2S(Buff_Mastery[index][WATER]))
                }  
                elseif Player_Arrow[index] == 5 && Buff_Mastery[index][LIGHTING] > 0
                {
                    usedmastery[index]--
                    Buff_Mastery[index][LIGHTING]--
                    sMBST(5,5,I2S(Buff_Mastery[index][LIGHTING]))
                }
                elseif Player_Arrow[index] == 6 && Buff_Mastery[index][EARTH] > 0
                {
                    usedmastery[index]--
                    Buff_Mastery[index][EARTH]--
                    sMBST(6,5,I2S(Buff_Mastery[index][EARTH]))
                }
                sMBST(8,5, I2S(notlearned[index]*masterybylvl-usedmastery[index]))
            }
            if Player_Arrow[index] == 9 // готово
            {
                if usedmastery[index] == notlearned[index]*masterybylvl
                {
                    SetStats()
                }
            }
            elseif Player_Arrow[index] == 10 // назад
            {
                DestroyMultiboard(MB[index])
                IsCreatedMB[index] = false
                IsLearnedMastery[index] = false
                MB1()
            }
            elseif Player_Arrow[index] == 11 // выход
            {
                DestroyMultiboard(MB[index])
                RemoveUnit(Cam[index])
                IsCreatedMB[index] = false
                IsLearnedMastery[index] = false
                UnitAddAbility(udg_Geroi[index],LVLUP_SPELL)
            }
        }
    }
    
    private void AddLvlUpSkill()
    {
        index = GetPlayerId(GetTriggerPlayer())
        notlearned[index]++
        if GetUnitAbilityLevel(udg_Geroi[index],LVLUP_SPELL) == 0
        {
            UnitAddAbility(udg_Geroi[index],LVLUP_SPELL)
        }
    }
    
    private bool NotInDialoge(){return !udg_In_Dialoge[GetPlayerId(GetTriggerPlayer())]}
    
    private bool LvlUpSkill(){return GetSpellAbilityId() == LVLUP_SPELL}

    private void Init()
    {
    
        int i = 0
        
        trigger init_spell = CreateTrigger(),trig = CreateTrigger(),up = CreateTrigger(),\
        down = CreateTrigger(),left = CreateTrigger(),right = CreateTrigger()
        
        while(i < 12)
        {
            TriggerRegisterPlayerUnitEvent(init_spell,Player(i),EVENT_PLAYER_UNIT_SPELL_EFFE  CT,null)
            TriggerRegisterPlayerUnitEvent(trig, Player(i),EVENT_PLAYER_HERO_LEVEL,null)
            TriggerRegisterPlayerEvent(up, Player(i), EVENT_PLAYER_ARROW_UP_DOWN)
            TriggerRegisterPlayerEvent(down, Player(i), EVENT_PLAYER_ARROW_DOWN_DOWN)
            TriggerRegisterPlayerEvent(left, Player(i), EVENT_PLAYER_ARROW_LEFT_DOWN)
            TriggerRegisterPlayerEvent(right, Player(i), EVENT_PLAYER_ARROW_RIGHT_DOWN)
            i++
        }
        
        TriggerAddCondition(init_spell, Condition(function LvlUpSkill))
        TriggerAddCondition(up, Condition(function NotInDialoge))
        TriggerAddCondition(down, Condition(function NotInDialoge))
        TriggerAddCondition(left, Condition(function NotInDialoge))
        TriggerAddCondition(right, Condition(function NotInDialoge))
        
        TriggerAddAction(init_spell, function MB1)
        TriggerAddAction(trig, function AddLvlUpSkill)
        TriggerAddAction(up, function Up)
        TriggerAddAction(down, function Down)
        TriggerAddAction(left, function Left)
        TriggerAddAction(right, function Right)
         
        init_spell = null;trig = null;up = null
        down = null;left = null;right = null
    }
}



В целом тоже самое что у тебя, только там идет прокачка стат и талантов, т.е. как бэ 2 даже мультибоарда.

Кол-во кода сам видишь, в разы меньше(можно еще сократить), работает офк все оч быстро, ну и это еще муишно.

В общем учи жасс.
Старый 09.08.2011, 20:31
Master_chan
Полуночный командир
offline
Опыт: 15,660
Активность:
На скриншоте в мультиборде слишком много незанятого пространства. То есть нерационально расположены все объекты и надписи.
Старый 10.08.2011, 07:42
Suite
┌_____┐
offline
Опыт: 11,222
Активность:
ну кому как, вообщем годиться это хеморная системка на кампании? надобы сделать mui.
Старый 10.08.2011, 07:59
PUVer
За GW!
online
Опыт: 114,169
Активность:
Цитата:
Сообщение от Master_chan
На скриншоте в мультиборде слишком много незанятого пространства. То есть нерационально расположены все объекты и надписи.

Я специально оставил свободное место для системы магазинов и обыска сундуков.
Старый 10.08.2011, 18:46
BNKTOPIII
Благодарю Aws за иконки=)
offline
Опыт: 7,147
Активность:
Я в своей карте добавил способность вызывать переносчика на 15 сек, чтобы продать предметы.
Старый 10.08.2011, 19:00
Ответ

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

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

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

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



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