Ну опшем все просто есть 7 магазинов в которых продаются разные предметы, предметы в магазин я добавляю кодом,
но сегодня запустил ВИ и вот что увидел, даже без добавления кодом итемов в магазин, и создание бекап версии карты, и отключение всего, создание нового дами магазина, все остается как на скрине, в каждый магазин добавляются неактивные итемы которые невозможно купить.
Когда потом кодом добавляю предметы на продажу или выставляю в магазине в РО эти просто остаются
Вот код из-за которого баг и возник, ну сутьь в том что аналогичный код под зарез нужен в мапе. а блокируя строку SetUnitOwner саму суть кода баг пропадает или я его просто невижу тогда
 struct SetFrendTreider
    private static timer t = CreateTimer()
    private static integer Data[]
    private static integer Count = -1
unit CasterA, TreiderA
integer o,KDTreider=2400
string EfektZinatosti="Abilities\\Spells\\Human\\InnerFire\\InnerFireTarget.mdl"
effect ef
integer a=160
rect r
    private method StopAction takes integer j returns nothing
        set Data[j] = Data[Count]
        set Count =Count-1
        if Count == -1 then
            call PauseTimer(t)
        endif
    endmethod
 
    private static method SetFrendTreiderTaimer takes nothing returns nothing
        local thistype this
        local integer i = 0
        loop
            exitwhen i > Count
            set this = Data[i]
            o++
    
            
            r= Rect( GetUnitX( TreiderA ) - a, GetUnitY( TreiderA ) - a, GetUnitX( TreiderA ) + a, GetUnitY( TreiderA ) + a )
            if o>=KDTreider or GetUnitState(CasterA,UNIT_STATE_LIFE)<=0 or (((GetRectMinX(r) <= GetUnitX( CasterA )) and (GetUnitX( CasterA ) <= GetRectMaxX(r)) and (GetRectMinY(r) <= GetUnitY( CasterA )) and (GetUnitY( CasterA ) <= GetRectMaxY(r)))!=true){
            call SetUnitOwner( TreiderA, Player(PLAYER_NEUTRAL_PASSIVE), false )
            call DestroyEffect(ef)
            UnitRemoveAbility(TreiderA,'Aneu')
            ef=null
            r=null
                call StopAction(i)
                call destroy()
              }
           r=null
            set i=i+1
        endloop
    endmethod

    public static method An takes unit Caster,unit Treider  returns nothing
       local thistype this = thistype.create()
        set Count=Count+1
        set Data[Count] = this
        CasterA=Caster 
        TreiderA=Treider
        o=0
        if GetOwningPlayer(Treider) == Player(PLAYER_NEUTRAL_PASSIVE){
        call SetUnitOwner( Treider, GetOwningPlayer(Caster), false )
        ef = AddSpecialEffectTarget(EfektZinatosti, TreiderA, "overhead")
        UnitAddAbility(TreiderA,'Aneu')
        if Count == 0 then
            call TimerStart(t, 0.05, true, function thistype.SetFrendTreiderTaimer)
        endif
        }else{
        call DisplayTimedTextToPlayer(GetOwningPlayer(Caster), 0, 0, 1, "В торговец занят")
        }
    endmethod
endstruct
ЗЫ если поставить нейтрально пасивного то даного бага нет но мне нужно именно под играка менять(для продаж позарядно предметов)
ЗЫЫ, Баг тока в определеной карте(версии самой карты я тоже менял) на нароботке все работает как часики и подобного бага нет
ЗЫЫ заметил закономерность все мои предметы поделены на типы и в определеном магазине этот баг вызывает тока определеные предметы тогож типа что и продаваймые там когдато, при том что код могу хоть всей удалить(тойсть ничего никуда добавлятся не будет)
Может кто раньше стыкался с таким может кто просто знает как править

Принятый ответ

стемы
Я удалял всеь код кроме етой системы все ефект тотже. также я писал что переносил наработку на иную мапу и там все работало. понятно что проблема не в коде..по тому как баг в том что рынок(юнит) меняет владельца, на красного скажем, еслиб не менял багаб небыло, но есть карта где он есть.. на разных мапах при абсолютно едентичных настройках юнитов, и коде(никакого второстепенного кода нет тока тот что в 1м посту)
опшем так я психанул и начал отрезать куски из мапы, сначала в 10 раз удалил весь код кроме наработки, затем удалил итемы, и вернул код и вот чудо баг пропал,
=============================================================================
думаю проблема была в том что иды предметам я в ручную прописывал, там была своя закономерность, но увы теперь придется периписать все иды предметов, и заминить их в коде что очень ни удобно и моторно=(
0
28
9 лет назад
0
выруби весь остальной код в карте и попробуй ещё раз
0
15
9 лет назад
0
nvc123:
выруби весь остальной код в карте и попробуй ещё раз
я же писал пробывал. баг злачается серавно.
даже если магазин поставить в редакторе а потом зайти в мапу.
нету тока когда владелец магазина нейтрально пасивный, но мне нужно чтобы в магазина был игрок. код рабочий так как на тестовой мапе иной где я создавал наработку (код что выше) все работает
0
28
9 лет назад
0
velmir, если код рабочий значит проблема в другом коде
попробуй закоментить всё(вообще всё) кроме этой системы
0
15
9 лет назад
Отредактирован velmir
0
стемы
Я удалял всеь код кроме етой системы все ефект тотже. также я писал что переносил наработку на иную мапу и там все работало. понятно что проблема не в коде..по тому как баг в том что рынок(юнит) меняет владельца, на красного скажем, еслиб не менял багаб небыло, но есть карта где он есть.. на разных мапах при абсолютно едентичных настройках юнитов, и коде(никакого второстепенного кода нет тока тот что в 1м посту)
опшем так я психанул и начал отрезать куски из мапы, сначала в 10 раз удалил весь код кроме наработки, затем удалил итемы, и вернул код и вот чудо баг пропал,
=============================================================================
думаю проблема была в том что иды предметам я в ручную прописывал, там была своя закономерность, но увы теперь придется периписать все иды предметов, и заминить их в коде что очень ни удобно и моторно=(
Принятый ответ
0
28
9 лет назад
0
velmir, если бы написал код нормально то подобного бы небыло
Чтобы оставить комментарий, пожалуйста, войдите на сайт.