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
 

TriDi21 - zdjęcie

TriDi21

Rejestracja: 04.07.2013
Aktualnie: Nieaktywny
Poza forum Ostatnio: 29.01.2014 17:38
-----

#555692 SZ_GetSpace: overflow on

Napisane przez Droso w 16.07.2013 11:43

Lolunio to dobrze wytłumaczył, ale jednak chyba lepiej pousuwać sobie CVARy, niż je ukrywać.


  • +
  • -
  • 1


#555665 SZ_GetSpace: overflow on

Napisane przez Rivit w 16.07.2013 08:35

KOMUNIAKTY BŁEDÓW

  • SZ_GetSpace: overflow on Client Datagram WARNING: msg overflowed for nickname
  • SZ_GetSpace: overflow without FSB_ALLOWOVERFLOW set on Server Reliable Datagram
  • SZ_GetSpace: overflow on SVC_RuleInfo
  • SZ_getspace: overflow on netchan->message

Błąd pojawia się gdy serwer operuje zbyt dużą ilością CVARów (są one tworzone przez pluginy, im więcej pluginów bądź im bardziej rozwinięte/ciężkie pluginy) . Zapytanie serwera z zewnątrz nie może przekraczać 2048 bajtów dlatego też informacje przesyłane nie powinny mieć więcej niż ta wartość (nie tylko CVARy ale także informacje HUD, itp).

- By pozbyć się tego błędu trzeba zoptymalizować ilość pluginów lub ten który jest ciężki i powoduje ten problem.
- Sporo osób też po prostu ignoruje ten problem.
- Można skorzystać też z pluginu który ukryje CVARY (które zdefiniujemy) i doda nam przez to miejsce dla nowych:

#include amxmodx

#define VERSION "0.1.0"

new g_szLogFile[64];

public plugin_init()
{
    register_plugin("No See Vars", VERSION, "ConnorMcLeod");

    get_localinfo("amxx_logs", g_szLogFile, charsmax(g_szLogFile));
    add(g_szLogFile, charsmax(g_szLogFile), "/no_see_vars.log");
}

public plugin_cfg()
{
    new szConfigFile[128];
    get_localinfo("amxx_configsdir", szConfigFile, charsmax(szConfigFile));
    add(szConfigFile, charsmax(szConfigFile), "/nsv.cfg");

    new fp = fopen(szConfigFile, "rt");
    if( !fp )
    {
        return 0;
    }

    new szText[256], szCvar[128], szFlags[4];
    while( !feof(fp) )
    {
        fgets(fp, szText, charsmax(szText));
        trim(szText);
        if(!szText[0] || szText[0] == ';' || szText[0] == '#' || (szText[0] == '/' && szText[1] == '/'))
        {
            continue;
        }

        parse(szText, szCvar, charsmax(szCvar), szFlags, charsmax(szFlags));
        SetCvarFlags(szCvar, str_to_num(szFlags));
    }
    fclose(fp);
    return 1;
}

SetCvarFlags( const szCvar[] , const iFlags = 0 )
{
    new pCvar = get_cvar_pointer(szCvar);
    if( pCvar )
    {
        new iOldFlags = get_pcvar_flags(pCvar);
        if( iFlags != iOldFlags )
        {
            new fp = fopen(g_szLogFile, "at");
            fprintf(fp, "^nSetting cvar ^"%s^" flags to %s^n", szCvar, Util_FCVAR(iFlags));
            fprintf(fp, "Previous ^"%s^" flags were %s^n", szCvar, Util_FCVAR(iOldFlags));
            fclose(fp);
            set_pcvar_flags( pCvar, iFlags );
        }
        return 1;
    }
    return 0;
}

Util_FCVAR( const fCvar )
{
    new szFlags[256], n;
    if( fCvar & FCVAR_ARCHIVE ) n += formatex(szFlags[n], charsmax(szFlags)-n, "FCVAR_ARCHIVE | ");
    if( fCvar & FCVAR_USERINFO ) n += formatex(szFlags[n], charsmax(szFlags)-n, "FCVAR_USERINFO | ");
    if( fCvar & FCVAR_SERVER ) n += formatex(szFlags[n], charsmax(szFlags)-n, "FCVAR_SERVER | ");
    if( fCvar & FCVAR_EXTDLL ) n += formatex(szFlags[n], charsmax(szFlags)-n, "FCVAR_EXTDLL | ");
    if( fCvar & FCVAR_CLIENTDLL ) n += formatex(szFlags[n], charsmax(szFlags)-n, "FCVAR_CLIENTDLL | ");
    if( fCvar & FCVAR_PROTECTED ) n += formatex(szFlags[n], charsmax(szFlags)-n, "FCVAR_PROTECTED | ");
    if( fCvar & FCVAR_SPONLY ) n += formatex(szFlags[n], charsmax(szFlags)-n, "FCVAR_SPONLY | ");
    if( fCvar & FCVAR_PRINTABLEONLY ) n += formatex(szFlags[n], charsmax(szFlags)-n, "FCVAR_PRINTABLEONLY | ");
    if( fCvar & FCVAR_UNLOGGED ) n += formatex(szFlags[n], charsmax(szFlags)-n, "FCVAR_UNLOGGED | ");
    if( szFlags[0] ) szFlags[n-2] = 0;
    else szFlags = "0";
    return szFlags;
}

oraz plik konfiguracji który wrzucamy do amxmodx/configs/ nsv.cfg

// THIS FILE MUST BE PLACED IN YOUR <mod>/addons/nsv DIRECTORY (i.e., cstrike/addons/nsv)
//
// One entry per line, in one of the following formats...
// FORMAT:   cvarname
// FORMAT:   cvarname flag
// FORMAT:   cvarname "value" flag
//
// (no flag will default to a flag value of 8, which is generally the value that should be used to hide a cvar).
// Other values are provided for more advanced usage...
//
// 1 = FCVAR_ARCHIVE        set to cause it to be saved to vars.rc
// 2 = FCVAR_USERINFO        changes the client's info string
// 4 = FCVAR_SERVER        notifies players when changed
// 8 = FCVAR_EXTDLL        defined by external DLL
// 16 = FCVAR_CLIENTDLL        defined by the client dll
// 32 = FCVAR_PROTECTED        It's a server cvar, but we don't send the data since it's a password, etc.  Sends 1 if it's not bland/zero, 0 otherwise as value
// 64 = FCVAR_SPONLY        This cvar cannot be changed by clients connected to a multiplayer server.
// 128 = FCVAR_PRINTABLEONLY    This cvar's string cannot contain unprintable characters ( e.g., used for player name etc ).
// 256 = FCVAR_UNLOGGED        If this is a FCVAR_SERVER, don't log changes to the log file / console if we are creating a log
//
// * Desired flag values for each cvar should be added together to create a single value.
// * Any changes/additions to the nsv.cfg file will require a map change before they take effect.
// * Any deletions from the nsv.cfg file will require a server restart before they take effect.
// * Values can also be assigned via the third format approach listed above. Quotes around the value are required!
//
// sample values - add or remove as you see fit, based on cvars you want to hide from the public.

sv_accelerate
sv_airaccelerate
sv_airmove
sv_allowupload
sv_bounce
sv_clienttrace
sv_clipmode
sv_stepsize
sv_stopspeed
sv_wateraccelerate
sv_waterfriction
edgefriction
pausable

i dodajemy więcej cvarów które chcemy ukryć.


  • +
  • -
  • 3


#555920 SZ_GetSpace: overflow on

Napisane przez Rivit w 17.07.2013 06:47

usuwając cvary tracisz możliwość szybkiej konfiguracji. Coś za coś.

Ale taki cvar np.

cvar_proporcja_poziomu = 30

można usunąć bo on występuje tylko jeden raz w kodzie.

Dokładnie tu:

public PobierzDoswiadczeniePoziomu(poziom)
    return power(poziom, 2)*get_pcvar_num(cvar_proporcja_poziomu);

 

A to z kolei można zastąpić tym:

public PobierzDoswiadczeniePoziomu(poziom)
    return power(poziom, 2)*30;

 

I już jeden cvar z głowy. Ale jeśli dany cvar występuje w kodzie dużo razy to nie radze go usuwać i podmieniać wartości bo to dużo pracy.


  • +
  • -
  • 1


#559816 Proszę o : Modyfikacje KillStreak

Napisane przez Mr. Dziwny w 31.07.2013 01:43

Można zamknąć ^^, pomogłem prywatnie :P


  • +
  • -
  • 1