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

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

Ответ
 
SID69
DET
offline
Опыт: 19,693
Активность:
Vadik29, Лол, сам не шарит. Если ты не понял, это был стеб, я в курсе, что такое оптимизация "~Arti, А не то что ты скинул".
Старый 18.08.2012, 00:59
DualShock

offline
Опыт: 5,023
Активность:
Время закидывать автора какашками! :)
  • Героя каждого игрока нужно вносить в переменную.
  • У каждого игрока должно быть не больше 1-го героя.
  • Респавнятся только те нейтралы которые стоят на карте изначально.
  • Такую системку нужно было делать на гуи, ибо никаких удобных настроек нет.
  • Велосипед.
Старый 18.08.2012, 01:34
beril
Доктор ЗЛО!!!
offline
Опыт: 3,204
Активность:
Ух пасибо мне такое надо ,вот бы еще монстры возрождались в зависимости от левела героя .И оописания побольше в функциях
Больше комментов однозначно на каждую строку!!!
Легче наверно триггерами респаун сделать.не каждый сможет настроить эту систнему
Старый 18.08.2012, 03:39
Vadik29
Choice Battle 1.6а
offline
Опыт: 15,845
Активность:
DualShock,
У каждого игрока должно быть не больше 1-го героя.
Это потому что у героя есть суммон и когда он добивает, непонятно от какого коэффециэнта давать опыт, элементарно исправляется триггерным призывом и сохранением на его хэндл его владельца.
Героя каждого игрока нужно вносить в переменную.
Опять же относиться к первой фитче.
Респавнятся только те нейтралы которые стоят на карте изначально.
Могу исправить, но я не видел карты где динамично создаются нейтралы...
Такую системку нужно было делать на гуи, ибо никаких удобных настроек нет.
Написал же, что делал для себя и просто выложил сюда мб. кому-то пригодиться, могу помочь настроить эту систему любому.
Да и удобную настройку можно сделать на vJass, но вся суть в обычном WE
Велосипед.
Спасибо кэп.
Vadik29 добавил:
MMIceStar, Возможно.

Отредактировано Vadik29, 18.08.2012 в 09:10.
Старый 18.08.2012, 08:53
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Bornikkeny, мы стараемся конечно для себя, но и о других не забываем, так что не тебе на нас срать.
Обрати внимание на число закачек ссылка
А потом суди только для себя мы это сделали или для кого то еще, ок?
quq_CCCP добавил:
Vadik29, теперь у людей будет альтернатива что же им качать, мою или твою наработки...
Старый 18.08.2012, 08:57
Vadik29
Choice Battle 1.6а
offline
Опыт: 15,845
Активность:
beril,
вот бы еще монстры возрождались в зависимости от левела героя.
В смысле?
Старый 18.08.2012, 09:05
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Vadik29:
beril,
вот бы еще монстры возрождались в зависимости от левела героя.
В смысле?
Ага допустим на 1 лв 60 сек респаун а на 10 уровне, 1 сек респаун, а чё норм для карт типа доты где когда герой раскачался ему лесные мобы на 2 удара...
Старый 18.08.2012, 09:08
Vadik29
Choice Battle 1.6а
offline
Опыт: 15,845
Активность:
quq_CCCP, Ну это вообще элементарно.
Vadik29 добавил:
Что я хочу добавить:
  1. Дроп с боссов в виде сундука с предметами для каждого героя, но взять можно только 1. +
  2. Исправить некоторые фитчи сказанные DualShock, +
  3. Монстры возрождались в зависимости от левела героя
(стартовое время 35 сек. за каждые 3 лвл героя убившего его -1 секунда.) +
  1. Цветной текст на экране. +
  2. Протект предметов. +

Отредактировано Vadik29, 18.08.2012 в 14:17.
Старый 18.08.2012, 09:14
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Vadik29, с текстагом могу помочь, у меня как раз есть в моей система текстаг настроенный как оригинальный, при критах, или награде за убийство...
2 функции и хештаблица, а атак же советую посмотреть вот это чтобы не парится с цветами
quq_CCCP добавил:
» Texttag Alpha
Вот система тегсттагов на обычном jass
((код jass
function TextTagAlpha takes nothing returns nothing
local timer t = GetExpiredTimer( )
local integer h = GetHandleId( t )
local texttag tt = LoadTextTagHandle( bj_lastCreatedHashtable, h, 0 )
local integer Alpha = LoadInteger( bj_lastCreatedHashtable, h, 1 )

if ( Alpha >= 255 ) then
call PauseTimer( t )
call FlushChildHashtable( bj_lastCreatedHashtable, h )
call DestroyTextTag( tt )
call DestroyTimer( t )
else
set Alpha = Alpha + 3
if Alpha > 255 then
set Alpha = 255
endif
call SetTextTagColor( tt, 255, 255, 255, 255 - Alpha )
call SaveInteger( bj_lastCreatedHashtable, h, 1, Alpha )
endif


set t = null
set tt = null
endfunction
function FloatingTextFadeout takes player pl, unit fp_uUnit, string st returns nothing
local texttag tt = CreateTextTag( )
local timer t = CreateTimer( )

call SetTextTagText( tt, st, 0.023 )
call SetTextTagPos( tt, GetUnitX( fp_uUnit ), GetUnitY( fp_uUnit ), 60.00 )
call SetTextTagVelocity( tt, 0.00, 0.035 )
call SetTextTagColor( tt, 0, 0, 0, 255 )
call SetTextTagPermanent( tt, false )

if ( GetLocalPlayer( ) == pl and pl != Player( 12 ) ) then
call SetTextTagVisibility( tt, true )
elseif ( pl == Player( 12 ) ) then
call SetTextTagVisibility( tt, true )
endif

call SaveTextTagHandle( bj_lastCreatedHashtable, GetHandleId( t ), 0, tt )
call SaveInteger( bj_lastCreatedHashtable, GetHandleId( t ), 1, 7 )

call TimerStart( t, 0.05, true, function TextTagAlpha )

set t = null
set tt = null
endfunction
))
юзаеш
function FloatingTextFadeout takes player pl, unit fp_uUnit, string st returns nothing
где pl это игрок для кого виден текст, fp_uUnit над кем виден текст, ну и строчка сам текст...
Старый 18.08.2012, 09:23
Vadik29
Choice Battle 1.6а
offline
Опыт: 15,845
Активность:
quq_CCCP, спасибо, но у меня в карте есть 12 перменных со своим цветом, их юзать проще.
Vadik29 добавил:
В данном событии нету утечек? Просто когда я обнуляю переменную rectRegion и ремуваю ее событие не срабатывает.
//===========================================================================
function InitTrig_AddCreepToSystem takes nothing returns nothing
    local region rectRegion = CreateRegion()
    call RegionAddRect(rectRegion,GetWorldBounds())
    set gg_trg_AddCreepToSystem = CreateTrigger(  )
    call TriggerRegisterEnterRegion(gg_trg_AddCreepToSystem, rectRegion, null)
    call TriggerAddCondition( gg_trg_AddCreepToSystem, Condition( function Trig_AddCreepToSystem_Conditions ) )
    call TriggerAddAction( gg_trg_AddCreepToSystem, function Trig_AddCreepToSystem_Actions )
endfunction
Старый 18.08.2012, 11:13
NIKZ
Изучаю Jass
offline
Опыт: 6,036
Активность:
А зачем такой велосипед? По моему стандартное получение лучше. Или оно зависает и лагает? Кстати можно было возрожденние на гуи в 2 триггера сделать и в плюс читабельно все. Код нечитабельный. Куча локалок лишних. Ну вобщем новый вело вело =)
Старый 19.08.2012, 19:41
Vadik29
Choice Battle 1.6а
offline
Опыт: 15,845
Активность:
NIKZ,
По моему стандартное получение лучше.
Нет, 1) Есть текстаг 2) Дроп 3) Распределение
Кстати можно было возрожденние на гуи в 2 триггера сделать и в плюс читабельно все.
а для тебя что-то ничего не хочется сделать. Нужно на гуи - сделай. (c) Doc,
Код нечитабельный.
Что я могу сделать?
Куча локалок лишних.
Например? Локалка есть, если функция вызывается минимум 2 раза и я за этим следил.
Ну вобщем новый вело вело =)
В последнее время кэпов прям развелось.
Или оно зависает и лагает?
На моем калькуляторе не лагает + маленькое подвисание может быть только при дропое с босса, но это потому что он циклом ищет 1 предмет из 500, как бы добавить предметов 40 и все будет ок.
От себя: данная система хорошо подойдет для рпг система т.к. в ней фактически есть все необходимое для прокачки на нейтралах.

Отредактировано Vadik29, 19.08.2012 в 23:18.
Старый 19.08.2012, 23:09
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Vadik29, юзай вот эту прогу...
И старайся использовать понятные имена функций и и переменных и расставлять комментарии, это в разы повысит популярность сей системы...
» пример кода
((код jass
function Trig_Wind_Strike_Conditions takes nothing returns boolean
return GetRandomInt( 0, 100 ) <= 20 and GetUnitAbilityLevel( GetAttacker( ), 'A02B' ) > 0 проверка шанса и наличия способности 'A02B' у нападающего юнита..
endfunction
function Trig_EnemySlashed_Conditions takes nothing returns boolean
return GetEventDamageSource( ) == LoadUnitHandle( udg_hash, GetHandleId( GetTriggeringTrigger( ) ), 0 ) and GetUnitAbilityLevel( GetTriggerUnit( ), 'B00B' ) > 0 or GetUnitAbilityLevel( GetTriggerUnit( ), 'B00C' ) > 0 проверка получения удара по баффу
endfunction
function Group_Wind_Strike_Actions takes nothing returns nothing наносит урон по группе противников...
local unit enemy = GetEnumUnit( )
if IsUnitType( enemy, UNIT_TYPE_GIANT ) or GetUnitLevel(enemy)>15 then
call UnitDamageTarget( udg_TempUnit, enemy, udg_TempReal / 1.65, true, false, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_METAL_HEAVY_SLICE )
call FloatingTextFadeout( GetOwningPlayer( udg_TempUnit ), enemy, GetColoredString( 0, "-" + I2S( R2I( udg_TempReal / 1.75 ) ) +"!" ) )
else
call UnitDamageTarget( udg_TempUnit, enemy, udg_TempReal, true,false, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_METAL_HEAVY_SLICE )
endif
if GetUnitAbilityLevel(udg_TempUnit,'BUav') > 0 or GetUnitAbilityLevel( udg_TempUnit, 'Blpv' ) > 0 then
call SetUnitState(udg_TempUnit,UNIT_STATE_LIFE, GetUnitState(udg_TempUnit,UNIT_STATE_LIFE) + udg_TempReal*0.25)
endif
call AddSpecialEffectTargetToTimed( "Abilities\\Spells\\Other\\Stampede\\StampedeMissileDeath.mdl", enemy, "chest", 2.00 )
set enemy = null
endfunction
function Trig_Wind_Strike_Slash takes nothing returns nothing
сектор обьявления локальных переменных
local unit WindMaster = GetEventDamageSource( )
local unit Enemy = GetTriggerUnit( )
local real Damage = 0.33 * GetUnitAbilityLevel( WindMaster, 'A02B' )
local trigger trg = GetTriggeringTrigger( )
local group grp = CreateGroup( )


call DisableTrigger( trg )

удаляем вспогогательные способности и баффы
call UnitRemoveAbility( Enemy, 'B00B' ) удаляем бафф N 1 с цели
call UnitRemoveAbility( Enemy, 'B00C' ) удаляем бафф № 2 с цели
call UnitRemoveAbility( WindMaster, 'A00B' ) удаляем спеллбук у атаковавшего, там + скорости атаки и яд
сектор урон вторичным целям
call GroupEnumUnitsInRange( grp, GetUnitX( Enemy ), GetUnitY( Enemy ), 225.00, GetAliveEnemy( GetOwningPlayer( WindMaster ) ) ) ищем наземных, живиых, огранических врагов в радиусе 255.
set udg_TempReal = GetHeroAgi( WindMaster, true ) * Damage + 15.00 задаём урон для вторичных целей
set udg_TempUnit = WindMaster
call ForGroup( grp, function Group_Wind_Strike_Actions ) наносим урон вторичным целям
call DestroyGroup( grp ) удяляем группу
сектор удаляение триггра и очистка памяти хешьтаблицы
call FlushChildHashtable( udg_hash, GetHandleId( trg ) ) чистим хеш, там сохрянён атакер.

call TriggerClearActions( trg ) удялем деиствия
call TriggerClearConditions( trg ) удяляем условия
call DestroyTrigger( trg ) удаляем локальный триггер
сектор обнуления переменных
set WindMaster = null
set Enemy = null
set grp = null
set trg = null
endfunction
function Trig_Wind_Strike_Actions takes nothing returns nothing
local unit WindMaster = GetAttacker( )
local unit Enemy = GetTriggerUnit( )
local trigger trg = CreateTrigger( )
local timer t = CreateTimer( )
даём атаковавшему впомогательные скилы и устанавливаем анимацию
call UnitAddAbility( WindMaster, 'A00B' )
call SetUnitAnimation( WindMaster, "attack walk stand spin" )
сохраняем необходимые данные в Хеш
call SaveTriggerHandle( udg_hash, GetHandleId( t ), 0, trg )
call SaveUnitHandle( udg_hash, GetHandleId( trg ), 0, WindMaster )
создаём локальный триггер и запускаем таёмер...
call TriggerRegisterUnitEvent( trg, Enemy, EVENT_UNIT_DAMAGED )
call TriggerAddCondition( trg, Condition( function Trig_EnemySlashed_Conditions ) )
call TriggerAddAction( trg, function Trig_Wind_Strike_Slash )
call TimerStart( t, 0.330, false, function RemoveTrigger )
set WindMaster = null
set Enemy = null
set trg = null
set t = null
endfunction
===========================================================================
function InitTrig_Wind_Strike takes nothing returns nothing
set gg_trg_Wind_Strike = CreateTrigger( )
call AbilityPreload( 'A02B' )
call TriggerRegisterPlayerUnitEvent( gg_trg_Wind_Strike, Player( 12 ), EVENT_PLAYER_UNIT_ATTACKED, null )
call TriggerAddCondition( gg_trg_Wind_Strike, Condition( function Trig_Wind_Strike_Conditions ) )
call TriggerAddAction( gg_trg_Wind_Strike, function Trig_Wind_Strike_Actions )
endfunction
))
Прикрепленные файлы
Тип файла: rar Script Language Aligner.rar (359.6 Кбайт, 2 просмотров )
Старый 20.08.2012, 08:37
Vadik29
Choice Battle 1.6а
offline
Опыт: 15,845
Активность:
quq_CCCP, Я им уже давно по коду прошелся, ладно как время появится добавлю коменты во все нужные места)
Старый 20.08.2012, 12:35
NIKZ
Изучаю Jass
offline
Опыт: 6,036
Активность:
а для тебя что-то ничего не хочется сделать
Не навязывай чувачело. Перепрочитай текст и найди слово "для меня"
Нужно на гуи - сделай
Да хоть на cjass
Что я могу сделать?
Поправить все что сказали пользователи XGM
Например? Локалка есть, если функция вызывается минимум 2 раза и я за этим следил.
Старый 20.08.2012, 13:20
Vadik29
Choice Battle 1.6а
offline
Опыт: 15,845
Активность:
NIKZ,
xgm.ru/forum/showthread.php?t=18742 считывай
Ты мне в коде конкретно скажи, а не статьями разбрасывайся. Jass-мастер нашелся
Старый 20.08.2012, 13:54
NIKZ
Изучаю Jass
offline
Опыт: 6,036
Активность:
Vadik29, опять навязываешь. Я не jass мастер, до него мне далеко. Я даю советы, а ты себе навязываешь, что я такой то мастер...В заголовке "еще немного о переменных" прочитай, мне помогло
Старый 20.08.2012, 14:25
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
Vadik29:
NIKZ,
xgm.ru/forum/showthread.php?t=18742 считывай
Ты мне в коде конкретно скажи, а не статьями разбрасывайся. Jass-мастер нашелся
» -_-
function Trig_Protect_Item_Actions takes nothing returns nothing
    local unit u = GetTriggerUnit()
    local item it = GetManipulatedItem()
    local player p = GetLocalPlayer()
    local unit c = LoadUnitHandle(udg_Hash, GetHandleId(it), 0)
    local player pc = GetOwningPlayer(c)
    if u != c and c != null and GetUnitTypeId(u) != 'e000' then
        call UnitRemoveItem(u, it)
        if p == GetOwningPlayer(u) then
            call DisplayTextToPlayer(p, 0, 0, "Этот предмет принадлежит игроку " + udg_Color[GetPlayerId(pc)] + GetPlayerName(pc))
        endif
    endif
    set u = null
    set c = null
    set p = null
    set pc = null
    set it = null
endfunction
Старый 20.08.2012, 14:27
NIKZ
Изучаю Jass
offline
Опыт: 6,036
Активность:
call GroupEnumUnitsInRange(g,0,0,10000000,b)
Каждую крошечку мапы хочешь энумить? да еще и луп, ректом энумь))
NIKZ добавил:
((код jass
function Trig_Init_Actions takes nothing returns nothing
local group g = CreateGroup()
local unit e = null
local integer i = 0
))
NIKZ добавил:
((код jass
function Trig_GetExp_Actions takes nothing returns nothing
))
Увидев что там написано(внутри функции) я стал твоим фанатом
Старый 20.08.2012, 14:41
Vadik29
Choice Battle 1.6а
offline
Опыт: 15,845
Активность:
NIKZ,
local unit e = null
это рак, там и без того 0
local integer i = 0
тут что не так?
local group g = CreateGroup()
и тут?
call GroupEnumUnitsInRange(g,0,0,10000000,b)
все норм
function Trig_GetExp_Actions takes nothing returns nothing
жду твою версию
Vadik29 добавил:
Hate,
local unit u = GetTriggerUnit() - 3 раза
local item it = GetManipulatedItem() - 2 раза
local player p = GetLocalPlayer() - 2 раза
local unit c = LoadUnitHandle(udg_Hash, GetHandleId(it), 0) - 2 раза
local player pc = GetOwningPlayer(c) - 2 раза
можно тут убрать пару штук, тут я тупанул.
Старый 20.08.2012, 15:34
Ответ

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

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

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

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



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