←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

PaintBall - usuwanie kulek

  • +
  • -
Scorpion Flail - zdjęcie Scorpion Flail 09.02.2014

Witam.

Od czasu do czasu na serwerze PB zdarzają się crashe. Podejrzewam, że mają one związek z usuwaniem kulek.

W kodzie znalazlem pewną nieścisłość: kulki nie do końca są usuwane, jedynie ich rozmiar, miejsce i renderowanie jest zmieniane

public paint_reset(ent)
{
    remove_task(ent);
    ent -= TASK_PB_RESET;
    new a, findpb = 1;
    while (a++ <= g_pbcount && findpb)
        if (g_paintballs[a] == ent)
            findpb = g_pbstatus[a] = 0

    set_pev(ent, pev_effects, pev(ent, pev_effects) | EF_NODRAW);
    engfunc(EngFunc_SetSize, ent, Float:{0.0, 0.0, 0.0}, Float:{0.0, 0.0, 0.0});
    set_pev(ent, pev_velocity, Float:{0.0, 0.0, 0.0});
    engfunc(EngFunc_SetOrigin, ent, Float:{-2000.0, -2000.0, -2000.0});
    if (pev(ent, pev_renderfx) != kRenderFxNone)
        set_rendering(ent);
        
}

Ktoś doradził mi, aby zastosować coś takiego:

public paint_reset(ent)
{
    remove_task(ent);
    ent -= TASK_PB_RESET;
    new a, findpb = 1;
    while (a++ <= g_pbcount && findpb)
        if (g_paintballs[a] == ent)
            findpb = g_pbstatus[a] = 0;
    
    engfunc(EngFunc_RemoveEntity, ent)
        
}

Niestety po tym, przy pełnym serwerze crashe występują co chwilę (co około 30 sec)

 

Ma ktoś jeszcze jakieś pomysły?

Odpowiedz

  • +
  • -
Ogen Dogen - zdjęcie Ogen Dogen 09.02.2014

Chodzi o czystego paintball mod'a ? Nie Real ?

Jeśli tak to crashe są spowodowane przez granaty. Gdy się rzuci granat pod koniec rundy i czasami wybucha na początku to wtedy jest crash. Może o to chodzi ?

Odpowiedz

  • +
  • -
Scorpion Flail - zdjęcie Scorpion Flail 10.02.2014

Chodzi o czystego paintball mod'a ? Nie Real ?

Jeśli tak to crashe są spowodowane przez granaty. Gdy się rzuci granat pod koniec rundy i czasami wybucha na początku to wtedy jest crash. Może o to chodzi ?

 

Tak, rzeczywiście to było przyczyną crashy.

 

Jednak czy ktoś potrafi mi wyjaśnić czemu akurat w ten sposób są usuwane kulki oraz czemu zastosowana przeze mnie druga metoda nie działa? (powoduje crashe przy próbie wyczyszczenia kulek)?

Odpowiedz

  • +
  • -
Klakier - zdjęcie Klakier 10.02.2014

public paint_reset(ent)
{
    ent -= TASK_PB_RESET;
    
    new a = 0, findpb = 1;
    while (a++ <= g_pbcount && findpb)
        if (g_paintballs[a] == ent)
            findpb = g_pbstatus[a] = 0;
    
    remove_entity(ent)
        
}
Odpowiedz