[CS:GO] Weapon Model

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

  1. gubka_3d

    gubka_3d

    Сообщения:
    51
    Симпатии:
    23
    Для зомби мода нужно изменить модель, для ножа только , попытался использовать стандартную но иногда видны проблески черные , я уже и через синк пробовал и по другому все равно этот баг есть, кто может помочь

    Код:
    #pragma semicolon 1
    
    #include <sourcemod>
    #include <sdktools>
    #include <sdkhooks>
    
    new viewModelweaponindex[MAXPLAYERS+1];
    
    public Plugin:myinfo =
    {
    	name = "0",
    	author = "0",
    	description = "0",
    	version = "0",
    	url = "0"
    };
    
    public void OnMapStart()
    {
    	PrecacheModel("models/weapons/v_knife_gg.mdl");
    }
    
    public void OnClientPutInServer(client)
    {
    	SDKHook(client, SDKHook_PreThinkPost, OnThinkPost);
    	SDKHook(client, SDKHook_PostThinkPost, OnThinkPost);
    }
    
    public OnClientDisconnect_Post(client)
    {
    	viewModelweaponindex[client] = 0;
    }
    
    public OnThinkPost(client)
    {
    	if (IsClientConnected(client))
    	{
    		if(IsClientInGame(client))
    		{
    			if(IsPlayerAlive(client))
    			{
    				decl String:wEntity[128];
    
    				new ActiveWeapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
    	
    				GetEdictClassname(ActiveWeapon, wEntity, sizeof(wEntity));
    				
    				// If weapon is a knife, then allow pickup.
    				if (StrEqual(wEntity, "weapon_knife"))
    				{
    					Weapon_SetViewModelIndex(client, "models/weapons/v_knife_gg.mdl");
    				}
    			}
    		}
    	}
    }
    
    Weapon_SetViewModelIndex(client, String:Model[])
    {
    	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(index, Prop_Send, "m_hOwner");
    		new ClientWeapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
    		new Weapon = GetEntPropEnt(index, Prop_Send, "m_hWeapon");
    		if (Owner != client)
    			continue;
    		if (ClientWeapon != Weapon)
    			continue;
    		return index;
    	}
    	return -1;
    }
    
    stock FindEntityByClassname2(startEnt, const String:classname[])
    {
    	while (startEnt > -1 && !IsValidEntity(startEnt)) startEnt--;
    	return FindEntityByClassname(startEnt, classname);
    }