Skocz do zawartości
Doktorekone

Modele broni

Rekomendowane odpowiedzi

Witam mam sobie taki kodzik

 

#include <sourcemod>
#include <sdkhooks> 
#include <sdktools>

new g_PVMid[MAXPLAYERS]; // Predicted ViewModel ID's
new g_iSMGModel;    // Custom ViewModel index

public OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public OnConfigsExecuted()
{
    g_iSMGModel = PrecacheModel("models/weapons/paintball/v_pbgunt.mdl"); // Custom model
}

public OnClientPostAdminCheck(client){
    SDKHook(client, SDKHook_WeaponSwitchPost, OnClientWeaponSwitchPost);    
}

public OnClientWeaponSwitchPost(client, wpnid)
{
    
    decl String:szWpn[64];
    GetEntityClassname(wpnid,szWpn,sizeof(szWpn));
    
    if(StrEqual(szWpn, "weapon_mp7")){
        SetEntProp(wpnid, Prop_Send, "m_nModelIndex", 0);
        SetEntProp(g_PVMid[client], Prop_Send, "m_nModelIndex", g_iSMGModel);
    }
}

public Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    g_PVMid[client] = Weapon_GetViewModelIndex(client, -1);
    
} 

// Thanks to gubka for these 2 functions below.

// Get model index and prevent server from crash
Weapon_GetViewModelIndex(client, sIndex)
{
    while ((sIndex = FindEntityByClassname2(sIndex, "predicted_viewmodel")) != -1)
    {
        new Owner = GetEntPropEnt(sIndex, Prop_Send, "m_hOwner");
        
        if (Owner != client)
            continue;
        
        return sIndex;
    }
    return -1;
}
// Get entity name
FindEntityByClassname2(sStartEnt, String:szClassname[])
{
    while (sStartEnt > -1 && !IsValidEntity(sStartEnt)) sStartEnt--;
    return FindEntityByClassname(sStartEnt, szClassname);
} 

Potrzebował bym zrobić kod tak bym mógł dodać jeszcze np podmianę modela granata obecnie mogę w tym kodzie podmienić jeden model a chciałbym kilka. 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
1 godzinę temu, Doktorekone napisał:

Potrzebował bym zrobić kod tak bym mógł dodać jeszcze np podmianę modela granata

XD? Masz gotowy przykład pod 1 broń. Dodaj sobie po prostu nowe zmienne i rób wszystko analogicznie.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
8 godzin temu, Paweł napisał:

XD? Masz gotowy przykład pod 1 broń. Dodaj sobie po prostu nowe zmienne i rób wszystko analogicznie.

Nie mam zielonego pojęcia jak to zrobić mógł bys mi zrobić przykład dodajac model moze być z tą sama ścieżka

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)

Jeżeli dobrze zrozumiałem to chodziło tu o to tak?

 

#include <sourcemod>
#include <sdkhooks> 
#include <sdktools>

new g_PVMid[MAXPLAYERS]; // Predicted ViewModel ID's
new CustomModel1
new CustomModel2

public OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public OnConfigsExecuted()
{
    CustomModel1 = PrecacheModel("models/weapons/paintball/v_pbgunt.mdl");
    CustomModel2 = PrecacheModel("models/weapons/paintball/smokegrenade.mdl");
}

public OnClientPostAdminCheck(client){
    SDKHook(client, SDKHook_WeaponSwitchPost, OnClientWeaponSwitchPost);    
}

public OnClientWeaponSwitchPost(client, wpnid)
{
    
    decl String:szWpn[64];
    GetEntityClassname(wpnid,szWpn,sizeof(szWpn));
    
    if(StrEqual(szWpn, "weapon_mp7")){
        SetEntProp(wpnid, Prop_Send, "m_nModelIndex", 0);
        SetEntProp(g_PVMid[client], Prop_Send, "m_nModelIndex", CustomModel1);
    }
	else if(StrEqual(szWpn, "weapon_smokegrenade")){
        SetEntProp(wpnid, Prop_Send, "m_nModelIndex", 0);
        SetEntProp(g_PVMid[client], Prop_Send, "m_nModelIndex", CustomModel2);
    }
}

public Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    g_PVMid[client] = Weapon_GetViewModelIndex(client, -1);
    
} 

// Thanks to gubka for these 2 functions below.

// Get model index and prevent server from crash
Weapon_GetViewModelIndex(client, sIndex)
{
    while ((sIndex = FindEntityByClassname2(sIndex, "predicted_viewmodel")) != -1)
    {
        new Owner = GetEntPropEnt(sIndex, Prop_Send, "m_hOwner");
        
        if (Owner != client)
            continue;
        
        return sIndex;
    }
    return -1;
}
// Get entity name
FindEntityByClassname2(sStartEnt, String:szClassname[])
{
    while (sStartEnt > -1 && !IsValidEntity(sStartEnt)) sStartEnt--;
    return FindEntityByClassname(sStartEnt, szClassname);
} 

 

Dobra działa temat close

Edytowane przez Doktorekone

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.


×
×
  • Dodaj nową pozycję...