Добавлен , опубликован
Если вы хотели бы использовать в своей карте нестандартное, оригинальное заклинание, но у вас не хватает знаний для его реализации, то эта тема специально для вас. В данной теме вы можете, в определённом правилами формате, оставить заявку на создание необходимого вам заклинания или системы.
Если вы считаете, что у вас есть возможность выполнить какую-либо из имеющихся заявок, то вы можете оставить сообщение в определённом правилами формате, в котором указать какую из заявок собираетесь исполнить.

Правила темы

  • Запрещается дублирование заявок.
  • Любая заявка, написанная непонятным языком (обилие орфографических ошибок, орфоарт, отсутствие знаков препинания, использование рядов восклицательных и вопросительных знаков) будет удалена.
  • Обсуждение технических нюансов исполнения спелла или багов просьба вести через систему личных сообщений.
  • Для составления заявок используйте формы.
Заявки, не удовлетворяющие правилам, будут удалены !

Как составить заявку

Необходимо, используя форму составить сообщение в данной теме, где указать:
  • Желаемое название заклинания
  • Желаемый метод исполнения (GUI/Jass/cJass/vJass)
  • Требуется ли возможность использовать спелл несколькими юнитами одновременно (MUI)
  • Цель применения способности
  • Количество уровней
  • Описание (Смысловое, а не художественное)
  • Технические характеристики (кол-во маны, параметры урона, перезарядки, время действия и т.п.) для каждого из уровней
Форма для составления заявки
Заказ
=
**Название:** Название способности (или системы)
**Метод:** GUI/Jass/cJass/vJass
**MUI:** Обязательно/Не обязательно
**Цель:** Другой юнит / Сам юнит / Точка/ Область/Нет цели/Прочее (указать что именно)
**Количество уровней:** Целое число
**Описание:** Ваше описание. Можно слить со следующим.
**Технические характеристики:** Ваше описание. Можно слить с предыдущим.

Как принимать заказ

Необходимо, используя форму составить сообщение в данной теме, где указать:
  • Никнейм заказчика
  • Название выбранного вами заклинания
  • Примерные сроки исполнения (конечно, их соблюдение не критично, но желательно)
Форма для принятия заявки
Заказ принят
=
**Заказчик:** Никнейм заказчика
**Способность:** Название способности
((центр
**Спелл будет завершен к [дата в формате дд.мм.гггг. без скобок]**
))
[ дата принятия заявки в формате дд.мм.гггг / дата, к которой спелл предположительно будет готов в формате дд.мм.гггг ]

Как сообщить о не/выполнении заказа

Необходимо, используя форму составить сообщение в данной теме, где указать:
  • Никнейм заказчика
  • Название выбранного вами заклинания
  • Выполнен ли заказ
  • В случае, если заказ невыполним/не выполнен полностью, рекомендуется описать, что именно вам удалось/не удалось сделать.

  • Предоставить карту
Форма для не/выполненного заказа
Заклинание готово! [Если заказ выполнен успешно] / Не удалось выполнить заклинание [Если по каким-либо причинам вы не способны его выполнить] (1 из 2)
=
**Заказчик:** Никнейм заказчика
**Способность:** Название способности
**Выполнено:** Да/Нет
-
[Сюда добавить инструкцию по импорту, или описать что у вас не/получилось, если не удалось выполнить заказ]
За качественно выполненный заказ вы получите дополнительно 200 единиц опыта.

Дополнительно: как приобрести спелл, не прибегая к этой теме

A. Для начала загляните в Архив готовых спеллов. Возможно, спелл, аналогичный вашему, уже был сделан.
B. Проверьте, нет-ли нужного спелла в Библиотеке заклинаний. Проверенные спелл-мейкеры изготавливали заклинания специально для общественного использования.
C. Поищите общедоступные для открытия карты - там тоже бывают полезные вещи.
D. Если ничего не помогает, пройдитесь поиском по Академии - вероятно, что такие спеллы уже пытались делать и спрашивали как.
E. Если поиски не помогли, попробуй сделать его сам:
  • Осваиваем триггеры в Базе статей, F.A.Q., если не имеем понятия о них.
  • Существуют специальные статьи по созданию спеллов и баффов: 1, 2, 3, 4, 5
  • Поскольку ваши спеллы будут неоптимизированы, и более того, с кучей утечек - настоятельно рекомендуется читать статьи\темы про JASS. Тяжело читать? Легко делать!
  • Если ну никак не выходит сделать то что требуется, заходим в Академию и используем ее по основному назначению - задаем вопросы.

Разумные поиски и тщательное изучение помогут вам добиться результата.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
27
3 года назад
0

Заказ принят

Заказчик: Roy Mustang
Способность: Come over here
Примерный срок выполнения: завтра 28.06
1
27
3 года назад
Отредактирован rsfghd
1

Заклинание готово!

Заказчик: Roy Mustang
Способность: Come over here
Выполнено: Да

Инструкция по импорту:
Копируешь библиотеку mylib (в шапке карты) куда угодно и переименовываешь если нужно. Копируешь первые 3 триггера - каст абилки, регистрация получения юнитом урона и реагирование на получение урона (2 последних для своих действий, если ты не планируешь ничего добавлять (спецэффекты к примеру), то можешь удалить эти триггеры). По коду, в самом верху mylib, нужно вписать равкоды ауры и её заклинания, выбрать свободную ячейку хэш-таблицы для юнита и указать периодичность таймера истечения ауры, так же указать равкод неиспользуемого предмета. Если у тебя уже есть хэш-таблица с названием H, можешь стереть строку с инициализацией хэш-таблицы. Если нужна будет дополнительная помощь или что-то не работает/работает не так, как хотел - пиши
Текущие настройки:
  1. Периодичность
  2. Скорость эффекта от точки каста
  3. Скорость эффекта к точке каста (притяжение)
  4. Задержка появления притягивания
  5. Дистанция прохождения эффекта от кастера
  6. Радиус
  7. Урон
  8. Дистанция начала эффекта от кастера
  9. Сила расталкивания
  10. Точка начала притягивания от кастера
  11. Дистанция прохождения эффекта к кастеру
  12. Время замедления
  13. Тип атаки
  14. Тип урона
  15. Кол-во притягиваемых юнитов
  16. Значение переменной TF для своих действий
  17. Эффекты (дамми)
  18. Кого притягивать
  19. Кого расталкивать
  20. Отдавать ли приказ "стоп"
Код:
library mylib initializer init
    globals
        private constant hashtable H = InitHashtable()
        private constant group TempG = CreateGroup()
        private constant group TempG1 = CreateGroup()
        private constant integer ItemID = 'spsh' // любой нигде не использующийся предмет (для проверки проходимости точки)
        private constant integer UnitH = 0 // свободная ячейка юнита для ауры
        private constant integer AbilityID = 'A001'// равкод ауры
        private constant integer AbilityID1 = 'BOae'// равкод заклинания ауры
        private constant real TimerPeriodic = 1.00 // периодичность таймера для ауры
        private boolean TempB
        private integer TempI
        private attacktype At
        private damagetype Dt
        private group TempG2
        private group TempG3
        private item TempIt
        private unit CUEX
        private real TempR
        private real TempR1
        private real MaxX
        private real MinX
        private real MaxY
        private real MinY
    endglobals

    private function DBC takes real x, real y, real x1, real y1 returns real
       return SquareRoot((x-x1)*(x-x1)+(y-y1)*(y-y1)) 
    endfunction 
    
    private function SetUnitPositionEx1 takes unit u, real x, real y returns nothing
        if x < MinX then
            set x = MinX
        elseif x > MaxX then
            set x = MaxX
        endif
        if y < MinY then
            set y = MinY
        elseif y > MaxY then
            set y = MaxY
        endif
        
        call SetUnitX(u,x)
        call SetUnitY(u,y)
    endfunction
    
    private function SetUnitPositionEx takes unit u, real x, real y returns nothing
        call SetItemPosition(TempIt,x,y)
        call SetItemVisible(TempIt,false)
        if DBC(x,y,GetItemX(TempIt),GetItemY(TempIt)) > 10 then
            set x = GetItemX(TempIt)
            set y = GetItemY(TempIt)
        endif
        call SetUnitX(u,x)
        call SetUnitY(u,y)
    endfunction

    private function CreateUnitEx takes player id, integer unitid, real x, real y, real face returns unit
        set CUEX = CreateUnit(id,unitid,x,y,face*bj_RADTODEG)
        call UnitAddAbility(CUEX,'Arav')
        call SetUnitPathing(CUEX,false)
        call SetUnitPositionEx1(CUEX,x,y)
        return CUEX
    endfunction
    
    function CopyGroup takes group g returns group
        set bj_groupAddGroupDest = CreateGroup()
        call ForGroup(g, function GroupAddGroupEnum)
        return bj_groupAddGroupDest
    endfunction
    
    private function GetDirection takes unit u, unit targ returns boolean
        local real alpha = GetUnitFacing(u)
        local real gamma = bj_RADTODEG * Atan2(GetUnitY(targ)-GetUnitY(u), GetUnitX(targ)-GetUnitX(u))
        if gamma < 0 then
            set gamma = 360. + gamma
        endif
        if (alpha < 180. and not(gamma > alpha and gamma < alpha + 180.)) or (alpha > 180. and gamma > alpha - 180. and gamma < alpha) then
            return false
        else
            return true
        endif
    endfunction
    
    private struct First
        unit dummy
        real a
        real x
        real y
        real speed
        real dist
    endstruct
    
    private struct ComeOverHereInfo
        unit caster
        unit dummy
        real a
        real x
        real y
        real dist
        real periodic
        boolean on
        boolean b2
        boolexpr b
        boolexpr b1
        group g
        
        real radius
        real damage
        integer AttackType
        integer DamageType
        
        integer count
        integer count1 = 0
        
        integer tf
        integer tf1
        integer tf2
        integer tf3
        
        real speed
        real speed1
        
        real time
    endstruct
    
    private function FirstMove takes nothing returns nothing
        local timer t = GetExpiredTimer()
        local First A = LoadInteger(H,GetHandleId(t),0)
        
        set A.dist = A.dist-A.speed
        set A.x = A.x+A.speed*Cos(A.a)
        set A.y = A.y+A.speed*Sin(A.a)
        call SetUnitPositionEx1(A.dummy,A.x,A.y)
        
        if A.dist <= 0 then
            call FlushChildHashtable(H,GetHandleId(t))
            call PauseTimer(t)
            call DestroyTimer(t)
            call KillUnit(A.dummy)
            set A.dummy = null
            call A.destroy()
        endif
        
        set t = null
    endfunction
    
    private function mycond takes nothing returns boolean
        return not IsUnitInGroup(GetFilterUnit(),TempG2)
    endfunction

    private function MoveSide takes nothing returns nothing
        local unit u = GetEnumUnit()
        local real x = GetUnitX(u)
        local real y = GetUnitY(u)
        local real a
        if GetDirection(CUEX,u) then
            set a = TempR+(90*bj_DEGTORAD)
        else
            set a = TempR-(90*bj_DEGTORAD)
        endif
        call SetUnitPositionEx(u,x+TempR1*Cos(a),y+TempR1*Sin(a))
        if TempB then
            call IssueImmediateOrder(u,"stop")
        endif
        call UnitDamageTarget(bj_lastCreatedUnit,u,0,false,false,null,null,null)
        set u = null
    endfunction
    
    private function Move takes nothing returns nothing
        local unit u = GetEnumUnit()
        call SetUnitPositionEx(u,GetUnitX(u)+TempR1*Cos(TempR),GetUnitY(u)+TempR1*Sin(TempR))
        if TempB then
            call IssueImmediateOrder(u,"stop")
        endif
        call UnitDamageTarget(bj_lastCreatedUnit,u,0,false,false,null,null,null)
        set u = null
    endfunction
    
    private function RemoveAura takes nothing returns nothing
        local timer t = GetExpiredTimer()
        local unit u = LoadUnitHandle(H,GetHandleId(t),0)
        local integer i = GetHandleId(u)
        local real a = LoadReal(H,i,UnitH)-TimerPeriodic
        
        if a <= 0 then
            call FlushChildHashtable(H,GetHandleId(t))
            call RemoveSavedReal(H,i,UnitH)
            call PauseTimer(t)
            call DestroyTimer(t)
            call UnitRemoveAbility(u,AbilityID)
            call UnitRemoveAbility(u,AbilityID1)
        else
            call SaveReal(H,i,UnitH,a)
        endif
        
        set u = null
        set t = null
    endfunction
    
    private function End takes nothing returns nothing
        local unit u = GetEnumUnit()
        local integer i = GetHandleId(u)
        local timer t
        call UnitDamageTarget(bj_lastCreatedUnit,u,TempR,false,false,At,Dt,null)
        if LoadReal(H,i,UnitH) <= 0 then
            set t = CreateTimer()
            call UnitAddAbility(u,AbilityID)
            call SaveUnitHandle(H,GetHandleId(t),0,u)
            call TimerStart(t,TimerPeriodic,true,function RemoveAura)
            set t = null
        endif
        call SaveReal(H,i,UnitH,TempR1)
        set u = null
    endfunction
    
    private function sp takes nothing returns nothing
        if IsUnitInGroup(GetEnumUnit(),TempG2) or IsUnitInGroup(GetEnumUnit(),TempG1) then
            call GroupRemoveUnit(TempG,GetEnumUnit())
        endif
    endfunction
    
    private function ComeOverHereMove takes nothing returns nothing
        local timer t = GetExpiredTimer()
        local unit u
        local unit u1 = null
        local ComeOverHereInfo A = LoadInteger(H,GetHandleId(t),0)
        
        set A.dist = A.dist-A.speed
        set A.x = A.x+A.speed*Cos(A.a)
        set A.y = A.y+A.speed*Sin(A.a)
        call SetUnitPositionEx1(A.dummy,A.x,A.y)
        
        if A.on then
            set A.on = false
            call ShowUnit(A.dummy,true)
            call UnitRemoveAbility(A.dummy,'Aloc')
            call UnitAddAbility(A.dummy,'Aloc')
            call TimerStart(t,A.periodic,true,function ComeOverHereMove)
        endif
        
        set TempB = A.b2
        set bj_lastCreatedUnit = A.caster
        call GroupEnumUnitsInRange(TempG1,A.x,A.y,A.radius,A.b1)
        if A.count > 0 then
            set TempG2 = A.g
            call GroupEnumUnitsInRange(TempG,A.x,A.y,A.radius,A.b)
            call ForGroup(TempG,function sp)
            loop
                exitwhen FirstOfGroup(TempG) == null or A.count < 1
                set TempG3 = CopyGroup(TempG)
                set TempR = 0.
                loop
                    set u = FirstOfGroup(TempG3)
                    if u == null then
                        if u1 != null then
                            call GroupRemoveUnit(TempG,u1)
                            call GroupAddUnit(A.g,u1)
                            set A.count = A.count-1
                            set u1 = null
                        endif
                        exitwhen true
                    endif
                    if IsUnitInGroup(u,TempG) and GetWidgetLife(u) > TempR then
                        set TempR = GetWidgetLife(u)
                        set u1 = u
                    endif
                    call GroupRemoveUnit(TempG3,u)
                endloop
                call DestroyGroup(TempG3)
            endloop
            set u = null
            set u1 = null
            call GroupClear(TempG)
        endif
        set CUEX = A.dummy
        set TempR = A.a
        set TempR1 = A.speed1
        set udg_TF = A.tf2
        call ForGroup(TempG1,function MoveSide)
        call GroupClear(TempG1)
        set TempR1 = A.speed
        set udg_TF = A.tf1
        call ForGroup(A.g,function Move)
        
        if A.dist <= 0 then
            call FlushChildHashtable(H,GetHandleId(t))
            call PauseTimer(t)
            call DestroyTimer(t)
            call KillUnit(A.dummy)
            set udg_TF = A.tf
            set TempR = A.damage
            set TempR1 = A.time
            set At = ConvertAttackType(A.AttackType)
            set Dt = ConvertDamageType(A.DamageType)
            call ForGroup(A.g,function End)
            call GroupClear(A.g)
            call DestroyGroup(A.g)
            set A.dummy = null
            set A.caster = null
            set A.g = null
            set A.b = null
            set A.b1 = null
            call A.destroy()
        endif
        set udg_TF = A.tf3
        set t = null
    endfunction
    
    function ComeOverHere takes nothing returns nothing
        local timer t = CreateTimer()
        local ComeOverHereInfo A = ComeOverHereInfo.create()
        local First A1 = First.create()
        local real x = GetSpellTargetX()
        local real y = GetSpellTargetY()
        
        set A.caster = GetTriggerUnit()
        set A.periodic = udg_Real[0]
        set A.x = GetUnitX(A.caster)
        set A.y = GetUnitY(A.caster)
        set A.a = Atan2(A.y-y,A.x-x)
        set A.g = CreateGroup()
        set A.radius = udg_Real[5]
        set A.damage = udg_Real[6]
        set A.AttackType = GetHandleId(udg_AttackType)
        set A.DamageType = GetHandleId(udg_DamageType)
        set A.speed = udg_Real[2]
        set A.speed1 = udg_Real[8]
        set A.dist = udg_Real[10]
        set A.on = true
        set A.b = udg_Bool[0]
        set A.b1 = udg_Bool[1]
        set A.b2 = udg_Boolean
        set A.count = udg_Int[0]
        set A.tf = udg_Int[1]
        set A.tf1 = udg_Int[2]
        set A.tf2 = udg_Int[3]
        set A.tf3 = udg_Int[4]
        set A.time = udg_Real[11]
        
        call SaveInteger(H,GetHandleId(t),0,A)
        call TimerStart(t,udg_Real[3],false,function ComeOverHereMove)
        
        set t = CreateTimer()
        set A1.a = Atan2(y-A.y,x-A.x)
        set A1.x = A.x+udg_Real[7]*Cos(A1.a)
        set A1.y = A.y+udg_Real[7]*Sin(A1.a)
        set A1.dummy = CreateUnitEx(GetOwningPlayer(A.caster),udg_DummyID[1],A1.x,A1.y,A1.a)
        set A1.speed = udg_Real[1]
        set A1.dist = udg_Real[4]
        call SaveInteger(H,GetHandleId(t),0,A1)
        call TimerStart(t,udg_Real[0],true,function FirstMove)
        
        set A.x = A.x+udg_Real[9]*Cos(A1.a)
        set A.y = A.y+udg_Real[9]*Sin(A1.a)
        set A.dummy = CreateUnitEx(GetOwningPlayer(A.caster),udg_DummyID[0],A.x,A.y,A.a)
        call ShowUnit(A.dummy,false)
        
        set t = null
    endfunction
    
    private function init takes nothing returns nothing
        set TempIt = CreateItem(ItemID,0,0)
        call SetItemVisible(TempIt,false)
        set MaxX = GetRectMaxX(GetWorldBounds())
        set MinX = GetRectMinX(GetWorldBounds())
        set MaxY = GetRectMaxY(GetWorldBounds())
        set MinY = GetRectMinY(GetWorldBounds())
    endfunction
endlibrary




















library HC initializer init
    globals
    private leaderboard HB
    endglobals
    private function HCU takes nothing returns nothing
        local integer i = 0
        local integer id
        local location array P
        local real result = 0
        loop
            exitwhen i >= 50
            set i = i+1
            set P[i] = Location(0,0)
            set id = GetHandleId(P[i])
            set result = result+(id-0x100000)
        endloop
        set result = result/i-i/2
        loop
            call RemoveLocation(P[i])
            set P[i] = null
            exitwhen i <= 1
            set i = i-1
        endloop
        call LeaderboardSetItemValue(HB,0,R2I(result))
    endfunction

    private function HCA takes nothing returns nothing
        set HB = CreateLeaderboard()
        call LeaderboardSetLabel(HB,"Handle Counter")
        call PlayerSetLeaderboard(GetLocalPlayer(),HB)
        call LeaderboardDisplay(HB,true)
        call LeaderboardAddItem(HB,"Handles",0,Player(0))
        call LeaderboardSetSizeByItemCount(HB,1)
        call HCU()
        call TimerStart(GetExpiredTimer(),.05,true,function HCU)
    endfunction

    private function init takes nothing returns nothing
        call TimerStart(CreateTimer(),0,false,function HCA)
    endfunction
endlibrary
Если по пути попадётся юнит у которого больше хп, оно не начнёт его притягивать, если достигнуто макс кол-во, а так же оно не заменит самого раненого юнита из притягиваемых на нового

Загруженные файлы
0
1
3 года назад
Отредактирован AltDream
0

Заказ

Название: Summon Limit
Метод: GUI
MUI: Обязательно
Цель: Точка
Количество уровней: 2
Описание: В выбраной точке вызывается Вард который просто наблюдает за областью пока его не убьют враги. Максимальноe количество Вардов 4 (Level 1), 6 (Level 2). Если максимальное количество Вардов было достигнуто и при этом героем вызывается очередной Вард, старейший Вард удаляется из игры.
Технические характеристики: Мне нужна эта система лимита саммонов чтобы подстроить к своим спеллам в мапе, я работать умею только с GUI! Спасибо и кредит в Мапе будет оствален в форме: Programming and Code: CreatorName (XGM.GURU)
0
6
3 года назад
Отредактирован mistwood
0

Заказ

Название: Продажа предметов союзникам
Метод: GUI/Jass
MUI: Обязательно (будут использовать разные игроки)
**Версия* 1.26 classica
Цель: Другой юнит / Прочее (магазин\лавка союзников)
Количество уровней: 1
Описание: При продаже в союзную лавку предмета, союзник получает 50% золота за предмет.
Технические характеристики: Нужна система, когда в лавку союзника продается предмет, неважно какой, чтоб союзник получил 50% от стоимости. В стандарте 50% пропадают просто (налог) и 50% вы получаете обратно. Нужно сделать так, чтоб союзнику возвращались эти 50% и вам тоже 50%.
p.s. сам ковыряюсь уже третий день в тригерах... нужна ваша помощь. хочу заставлять игроков в игре не просто продавать в нейтральные лавки предметы, но и восстанавливать экономику союзника при необходимости, совершать более выгодные действия.
Очень надеюсь что кто-то поможет с этим.
0
27
3 года назад
Отредактирован rsfghd
0
mistwood, ты типо привязываешься к союзнику и за каждый проданный тобой предмет он получает 50%? Или это только для его лавки, когда туда продают предмет он получает голду? Или нужно привязаться к нему и продать в его лавку?
2
22
3 года назад
Отредактирован ofeerist
2
mistwood:
Может я чего-то не понял, но можно же просто выдать половину стоимости предмета владельцу лавки, ведь так?
Ну и проверить, является ли он союзником
0
6
3 года назад
Отредактирован mistwood
0
ofeerist:
mistwood:
Может я чего-то не понял, но можно же просто выдать половину стоимости предмета владельцу лавки, ведь так?
Ну и проверить, является ли он союзником
Вот это примерно я и хочу, да. Только Не могу тригер склепать правильно. У меня анг. редактор.
Если сможешь такое сделать буду очень благодарен, хочу глянуть где я застрял и что не так делаю...

rsfghd:
mistwood, ты типо привязываешься к союзнику и за каждый проданный тобой предмет он получает 50%? Или это только для его лавки, когда туда продают предмет он получает голду? Или нужно привязаться к нему и продать в его лавку?
Типа если ты продаешь в лавку союзника предмет, то он лутает 50% от его стоимости. Если в нейтральную лавку, то никто нечего не лутает.
2
22
3 года назад
2
mistwood:
У меня нет ни варкрафта, ни редактора, так что, тебе придется ждать помощь от rsfghd
*Передал эстафету*
2
27
3 года назад
Отредактирован rsfghd
2
mistwood, держи
Тут 2 версии, одна на гуи и другая на джассе, используй удобную для себя. Отличие версии на джассе в том, что она само собой оптимизированнее

тут придётся через ифы ибо для обычных смертных не завезли функцию узнать стоимость предмета
Загруженные файлы
2
6
3 года назад
2
rsfghd:
mistwood, держи
Тут 2 версии, одна на гуи и другая на джассе, используй удобную для себя. Отличие версии на джассе в том, что она само собой оптимизированнее

тут придётся через ифы ибо для обычных смертных не завезли функцию узнать стоимость предмета
Спасибо большое. Понял что я тупой, и можно даже на гуи сделать проще чем я хотел... И за код спасибо, попробую в него все шмотки занести и настроить. Респект тебе еще раз!
2
6
3 года назад
Отредактирован mistwood
2
rsfghd:
mistwood, держи
Тут 2 версии, одна на гуи и другая на джассе, используй удобную для себя. Отличие версии на джассе в том, что она само собой оптимизированнее

тут придётся через ифы ибо для обычных смертных не завезли функцию узнать стоимость предмета
Слушай, я тут своего рода Баг/абуз нашел. Есть предметы с зарядами, при их использовании цена предмета падает. Следовательно тебе при продаже возвращается 50% от этой самой цены предмета. А в твоих версиях возвращается фиксированная цена за предмет. Можно ли как-то возвращать именно 50% от стоимости предмета? Именно половину? У меня зарядов может быть и по 10 и по 40. Следовательно цена за продажу может быть высокой.
Грубо говоря суть абуза, что имея предмет с зарядами, ты можешь его использовать и оставить 1 ед. заряда, а потом продать его и вернуть союзнику 50% стоимости всей шмотки (как со всеми зарядами).
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.