Мерцание стандартной модели

Тема в разделе "Программирование / Скриптинг", создана пользователем pokypka20, 12 окт 2014.

  1. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Использую плагин zombie claws, но примерно каждые 2 сек мерцает стандартный нож. Что можно сделать?

    PHP:
    #pragma semicolon 1

    #include <sourcemod>
    #include <sdktools>
    #include <zombiereloaded>

    #define MAX_CLAWS 50
    #define HUMAN_KNIFE "models/weapons/v_knife_t.mdl"

    new Handle:CvarVersionHandle:CvarEnableHandle:CvarClawsPathHandle:DownListPath;

    new 
    bool:enabled;

    new 
    String:Path[PLATFORM_MAX_PATH];
    new 
    String:downlistpath[PLATFORM_MAX_PATH];
    new 
    String:Claws[MAX_CLAWS+1][PLATFORM_MAX_PATH];

    new 
    MaxClawsHuman_KnifeviewModelweaponindex[MAXPLAYERS+1];

    public 
    OnPluginStart()
    {
        
    CvarEnable CreateConVar("zr_zombieclaws_enable""1""Enables/Disables the plugin"0true0.0true1.0);
        
    CvarClawsPath CreateConVar("zr_zombieclaws_path""cfg/sourcemod/zombiereloaded/zombie_claws.txt""Path to the zombie claws list");
        
    DownListPath CreateConVar("zr_zombieclaws_downloadpath""addons/sourcemod/data/downlist_zrclaws.ini""Path to the download list of zombie claws");
        
        
    HookConVarChange(CvarEnableCvarChanges);
        
    HookConVarChange(CvarClawsPathCvarChanges);
        
    HookConVarChange(CvarEnableCvarChanges);
        
    HookConVarChange(DownListPathCvarChanges);
        
        
    AutoExecConfig(true"zombiereloaded/zombie_claws");
    }

    public 
    OnMapStart()
    {
        
    Human_Knife PrecacheModel(HUMAN_KNIFE);
    }

    public 
    OnConfigsExecuted()
    {
        
    enabled GetConVarBool(CvarEnable);
        
    GetConVarString(CvarClawsPathPathsizeof(Path));
        
    GetConVarString(DownListPathdownlistpathsizeof(downlistpath));
        
        
    File_ReadDownloadList(downlistpath);
        
    LoadModels();
    }

    public 
    CvarChanges(Handle:convar, const String:oldValue[], const String:newValue[])
    {
        if (
    convar == CvarEnable)
            
    enabled GetConVarBool(convar); else
        if (
    convar == CvarClawsPath)
            
    strcopy(Pathsizeof(Path), newValue); else
        if (
    convar == DownListPath)
            
    strcopy(downlistpathsizeof(downlistpath), newValue); else
        if (
    convar == CvarVersion)
            if (!
    StrEqual(newValuePLUGIN_VERSION))
                
    SetConVarString(CvarVersionPLUGIN_VERSION);
    }

    public 
    ZR_OnClientInfected(clientattackerbool:motherInfectbool:respawnOverridebool:respawn)
    {
        if (!
    enabled)
            return;
            
        
    decl String:Weapon[32];
        new 
    ActiveWeapon GetEntPropEnt(clientProp_Send"m_hActiveWeapon");
        
        
    GetEdictClassname(ActiveWeaponWeaponsizeof(Weapon));
        
        if (
    StrEqual(Weapon"weapon_knife"))
        {
            new 
    ClawNumber Math_GetRandomInt(1MaxClaws);
            
    Weapon_SetViewModelIndex(clientClaws[ClawNumber]);
        }
    }

    public 
    ZR_OnClientHumanPost(clientbool:respawnbool:protect)
    {
        if (
    viewModelweaponindex[client])
        {
            
    SetEntProp(viewModelweaponindex[client], Prop_Send"m_nModelIndex"Human_Knife);
            
    ChangeEdictState(viewModelweaponindex[client], FindDataMapOffs(viewModelweaponindex[client], "m_nModelIndex"));
        }
    }

    public 
    OnClientDisconnect_Post(client)
    {
        
    viewModelweaponindex[client] = 0;
    }

    LoadModels()
    {
        
    decl String:buf[4];
        
    decl String:Line[PLATFORM_MAX_PATH];
        
        new 
    Handle:filehandle OpenFile(Path"r");
        
        
    MaxClaws 0;
        
        if (
    filehandle  == INVALID_HANDLE)
        {
            
    LogError("Claws list %s doesn't exist"Path);
            return;
        }
        
        while(!
    IsEndOfFile(filehandle) && MaxClaws MAX_CLAWS)
        {
            
    ReadFileLine(filehandle,Line,sizeof(Line));
        
            new 
    pos;
            
    pos StrContains((Line), "//");
            if (
    pos != -1)
                
    Line[pos] = '\0';
        
            
    pos StrContains((Line), "#");
            if (
    pos != -1)
                
    Line[pos] = '\0';
                
            
    pos StrContains((Line), ";");
            if (
    pos != -1)
                
    Line[pos] = '\0';
        
            
    TrimString(Line);
            
            if (
    Line[0] == '\0')
                continue;
            
            
    File_GetExtension(Linebufsizeof(buf));
            
            if (!
    strcmp(buf"mdl"false) && FileExists(Line))
            {
                
    MaxClaws++;
                
    Claws[MaxClaws] = Line;
            }
            else
                
    LogError("Model not found or invalid %s"Line);
        }
        
    CloseHandle(filehandle);
        if (
    MaxClaws)
            
    LogMessage("%i claws loaded"MaxClaws);
        else
        {
            
    LogMessage("None claw was loaded");
            
    enabled false;
        }
    }

    // ====================================================================================================================================================

    Weapon_SetViewModelIndex(clientString:Model[])
    {
        if (
    StrEqual(Model"-1"false) || !IsClientInGame(client) || !IsPlayerAlive(client))
            return;
            
        new 
    index PrecacheModel(Model);
        
        if (
    index 1)
        {
            
    LogError("Unable to precache model '%s'"Model);
            return;
        }
        
        
    viewModelweaponindex[client] = Weapon_GetViewModelIndex(client);
        
        if (
    viewModelweaponindex[client] < 1)
        {
            
    LogError("Unable to get a viewmodel index");
            return;
        }
        
        
    SetEntProp(viewModelweaponindex[client], Prop_Send"m_nModelIndex"index);
        
    ChangeEdictState(viewModelweaponindex[client], FindDataMapOffs(viewModelweaponindex[client], "m_nModelIndex"));
    }

    Weapon_GetViewModelIndex(client)
    {
        new 
    index = -1;
        while ((
    index FindEntityByClassname2(index"predicted_viewmodel")) != -1)
        {
            new 
    Owner GetEntPropEnt(indexProp_Send"m_hOwner");
            new 
    ClientWeapon GetEntPropEnt(clientProp_Send"m_hActiveWeapon");
            new 
    Weapon GetEntPropEnt(indexProp_Send"m_hWeapon");
            if (
    Owner != client)
                continue;
            if (
    ClientWeapon != Weapon)
                continue;
            return 
    index;
        }
        return -
    1;
    }

    // ====================================================================================================================================================

    stock FindEntityByClassname2(startEnt, const String:classname[])
    {
        while (
    startEnt > -&& !IsValidEntity(startEnt)) startEnt--;
        return 
    FindEntityByClassname(startEntclassname);
    }

    new 
    String:_smlib_empty_twodimstring_array[][] = { { '\0' } };
    stock File_AddToDownloadsTable(const String:path[], bool:recursive=true, const String:ignoreExts[][]=_smlib_empty_twodimstring_arraysize=0)
    {
        if (
    path[0] == '\0') {
            return;
        }

        if (
    FileExists(path)) {
            
            new 
    String:fileExtension[4];
            
    File_GetExtension(pathfileExtensionsizeof(fileExtension));
            
            if (
    StrEqual(fileExtension"bz2"false) || StrEqual(fileExtension"ztmp"false)) {
                return;
            }
            
            if (
    Array_FindString(ignoreExtssizefileExtension) != -1) {
                return;
            }

            
    AddFileToDownloadsTable(path);
        }
        else if (
    recursive && DirExists(path)) {

            
    decl String:dirEntry[PLATFORM_MAX_PATH];
            new 
    Handle:__dir OpenDirectory(path);

            while (
    ReadDirEntry(__dirdirEntrysizeof(dirEntry))) {

                if (
    StrEqual(dirEntry".") || StrEqual(dirEntry"..")) {
                    continue;
                }
                
                
    Format(dirEntrysizeof(dirEntry), "%s/%s"pathdirEntry);
                
    File_AddToDownloadsTable(dirEntryrecursiveignoreExtssize);
            }
            
            
    CloseHandle(__dir);
        }
        else if (
    FindCharInString(path'*'true)) {
            
            new 
    String:fileExtension[4];
            
    File_GetExtension(pathfileExtensionsizeof(fileExtension));

            if (
    StrEqual(fileExtension"*")) {

                
    decl
                    String
    :dirName[PLATFORM_MAX_PATH],
                    
    String:fileName[PLATFORM_MAX_PATH],
                    
    String:dirEntry[PLATFORM_MAX_PATH];

                
    File_GetDirName(pathdirNamesizeof(dirName));
                
    File_GetFileName(pathfileNamesizeof(fileName));
                
    StrCat(fileNamesizeof(fileName), ".");

                new 
    Handle:__dir OpenDirectory(dirName);
                while (
    ReadDirEntry(__dirdirEntrysizeof(dirEntry))) {

                    if (
    StrEqual(dirEntry".") || StrEqual(dirEntry"..")) {
                        continue;
                    }

                    if (
    strncmp(dirEntryfileNamestrlen(fileName)) == 0) {
                        
    Format(dirEntrysizeof(dirEntry), "%s/%s"dirNamedirEntry);
                        
    File_AddToDownloadsTable(dirEntryrecursiveignoreExtssize);
                    }
                }

                
    CloseHandle(__dir);
            }
        }

        return;
    }

    stock File_ReadDownloadList(const String:path[])
    {
        new 
    Handle:file OpenFile(path"r");
        
        if (
    file  == INVALID_HANDLE) {
            return;
        }

        new 
    String:buffer[PLATFORM_MAX_PATH];
        while (!
    IsEndOfFile(file)) {
            
    ReadFileLine(filebuffersizeof(buffer));
            
            new 
    pos;
            
    pos StrContains(buffer"//");
            if (
    pos != -1) {
                
    buffer[pos] = '\0';
            }
            
            
    pos StrContains(buffer"#");
            if (
    pos != -1) {
                
    buffer[pos] = '\0';
            }

            
    pos StrContains(buffer";");
            if (
    pos != -1) {
                
    buffer[pos] = '\0';
            }
            
            
    TrimString(buffer);
            
            if (
    buffer[0] == '\0') {
                continue;
            }

            
    File_AddToDownloadsTable(buffer);
        }

        
    CloseHandle(file);
    }

    stock File_GetExtension(const String:path[], String:buffer[], size)
    {
        new 
    extpos FindCharInString(path'.'true);
        
        if (
    extpos == -1)
        {
            
    buffer[0] = '\0';
            return;
        }

        
    strcopy(buffersizepath[++extpos]);
    }

    stock Math_GetRandomInt(minmax)
    {
        new 
    random GetURandomInt();
        
        if (
    random == 0)
            
    random++;

        return 
    RoundToCeil(float(random) / (float(2147483647) / float(max min 1))) + min 1;
    }

    stock Array_FindString(const String:array[][], size, const String:str[], bool:caseSensitive=truestart=0)
    {
        if (
    start 0) {
            
    start 0;
        }

        for (new 
    i=startsizei++) {

            if (
    StrEqual(array[i], strcaseSensitive)) {
                return 
    i;
            }
        }
        
        return -
    1;
    }

    stock bool:File_GetFileName(const String:path[], String:buffer[], size)
    {    
        if (
    path[0] == '\0') {
            
    buffer[0] = '\0';
            return;
        }
        
        
    File_GetBaseName(pathbuffersize);
        
        new 
    pos_ext FindCharInString(buffer'.'true);

        if (
    pos_ext != -1) {
            
    buffer[pos_ext] = '\0';
        }
    }

    stock bool:File_GetDirName(const String:path[], String:buffer[], size)
    {    
        if (
    path[0] == '\0') {
            
    buffer[0] = '\0';
            return;
        }
        
        new 
    pos_start FindCharInString(path'/'true);
        
        if (
    pos_start == -1) {
            
    pos_start FindCharInString(path'\\'true);
            
            if (
    pos_start == -1) {
                
    buffer[0] = '\0';
                return;
            }
        }
        
        
    strcopy(buffersizepath);
        
    buffer[pos_start] = '\0';
    }

    stock bool:File_GetBaseName(const String:path[], String:buffer[], size)
    {    
        if (
    path[0] == '\0') {
            
    buffer[0] = '\0';
            return;
        }
        
        new 
    pos_start FindCharInString(path'/'true);
        
        if (
    pos_start == -1) {
            
    pos_start FindCharInString(path'\\'true);
        }
        
        
    pos_start++;
        
        
    strcopy(buffersizepath[pos_start]);
    }
     
    Последнее редактирование: 12 окт 2014
  2. Raijin

    Raijin HLPORTAL.RU

    Сообщения:
    9
    Симпатии:
    1
    Какая версия плагина стоит?
     
  3. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Исходный код под спойлером, что за бесмысленый вопрос?
     
  4. Raijin

    Raijin HLPORTAL.RU

    Сообщения:
    9
    Симпатии:
    1
    Ну во-первых в твоем спойлере не указана строчка
    " от того я не смогу определить,какая версия плагина у тебя стоит.Во-вторых-версий немного,и если у тебя поставлена v 1.1 то проблема с мерцанием будет присутствовать.так что качай плагин с последней версией-и не будет проблем
     
  5. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Раньше была новее версия в инете уже давно не могу нигде достать, буду благодарен если поделитесь.
     
  6. Raijin

    Raijin HLPORTAL.RU

    Сообщения:
    9
    Симпатии:
    1
    Держи)
     

    Вложения:

    pokypka20 нравится это.
  7. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    В cs:go проблема, помогите исправить.
    PHP:
    L 10/13/2014 19:26:35: [SM]   [0]  Line 477D:\Новая папка (153)\Новая папка\scripting\zr_zombieclaws_v2.1.sp::OnPostThinkPost()
    L 10/13/2014 19:26:36: [SMNative "SetEntProp" reportedProperty "m_nSequence" not found (entity 0/worldspawn)
    L 10/13/2014 19:26:36: [SMDisplaying call stack trace for plugin "zr_zombieclaws_v2.1.smx":
    L 10/13/2014 19:26:36: [SM]   [0]  Line 477D:\Новая папка (153)\Новая папка\scripting\zr_zombieclaws_v2.1.sp::OnPostThinkPost()
    L 10/13/2014 19:26:36: [SMNative "SetEntProp" reportedProperty "m_nSequence" not found (entity 0/worldspawn)
    L 10/13/2014 19:26:36: [SMDisplaying call stack trace for plugin "zr_zombieclaws_v2.1.smx":
    Добавлено через 16 часов 10 минут
    Вопрос актуален, помогите устранить ошибку.
     
    Последнее редактирование: 14 окт 2014