Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] Działanie precache_model, itp.


  • Zamknięty Temat jest zamknięty
2 odpowiedzi w tym temacie

#1 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 14.08.2013 13:21

Jeśli dla jakiegoś, np. modelu dwa razy dam "precache_model", to o ile zmniejszy się limit niestandardowych plików do użycia w pluginach? Amxmodx ma coś w sobie co blokuje takie podwójne precache?
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#2 Cypis'

    Master

  • Przyjaciel

Reputacja: 1 161
Super Hero

  • Postów:965
  • GG:
  • Steam:steam
  • Lokalizacja:polska
Offline

Napisano 14.08.2013 13:44

Jeżeli kilka razy zrobisz precache modelu tego samego modelu, to liczy go i tak jeden raz.

@Edit
Dla potwierdzenia podam dowód:
int __cdecl PF_precache_model_I(int a1)
{
  int v1; // esi@1
  signed int v2; // edi@3
  int v3; // ebx@6
  int v4; // eax@8
  int v5; // eax@15

  v1 = a1;
  if ( !a1 )
    Host_Error("PF_precache_model_I: NULL pointer");
  if ( *(_BYTE *)a1 <= 32 )
    Host_Error("PF_precache_model_I: Bad string '%s'", a1);
  v2 = 0;
  if ( *(_BYTE *)a1 == 33 )
  {
    v1 = a1 + 1;
    v2 = 1;
  }
  if ( *(_DWORD *)&sv[244836] == 1 )
  {
    v3 = 0;
    while ( 1 )
    {
      v5 = *(_DWORD *)&sv[4 * v3 + 196936];
      if ( !v5 )
        break;
      if ( !Q_stricmp(v5, v1) )
        return v3;
      ++v3;
      if ( v3 == 512 )
        Host_Error(
          "PF_precache_model_I: Model '%s' failed to precache because the item count is over the %d limit.\nReduce the number of brush models and/or regular models in the map to correct this.",
          v1,
          512);
    }
    *(_DWORD *)&sv[4 * v3 + 196936] = v1;
    *(_DWORD *)&sv[4 * v3 + 198984] = Mod_ForName(v1, 1, 1);
    if ( !v2 )
      sv[v3 + 201032] |= 1u;
  }
  else
  {
    v3 = 0;
    while ( 1 )
    {
      while ( 1 )
      {
        v4 = *(_DWORD *)&sv[4 * v3 + 196936];
        if ( v4 )
          break;
        ++v3;
        if ( v3 == 512 )
          goto LABEL_11;
      }
      if ( !Q_stricmp(v4, v1) )
        break;
      ++v3;
      if ( v3 == 512 )
LABEL_11:
        Host_Error("PF_precache_model_I: '%s' Precache can only be done in spawn functions", v1);
    }
  }
  return v3;
}

if ( !Q_stricmp(v5, v1) )
return v3;

Jeżeli v5 i v1 będą te same to zwróci return v3, czyli funkcja zwróci ID modelu, a nie doda go kilka razy.

Użytkownik Cypis' edytował ten post 14.08.2013 13:49

  • +
  • -
  • 1

#3 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 14.08.2013 15:18

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych