Skocz do zawartości
szogun

[Rozwiązane] Mała modyfikacja

Rekomendowane odpowiedzi

Siemka, potrzebuje dostosować to lekko pod serwer aim ja jak bym nie próbował nic nie wychodzi , dokładnie potrzebuje usuwać armor + hełm dla osób które nie posiadają flagi oraz dodanie he dla osób z flagą

 

#include <sourcemod>
#include <cstrike>
#include <sdktools>

#pragma semicolon 1
#pragma newdecls required

public Plugin myinfo =
{
	name = "[CS:GO] VIP",
	author = "xBonio & Avgariat & Vasto_Lorde",
	description = "VIP Generator by cs-plugin.com",
	version = "1.0",
	url = "http://cs-plugin.com"
};

char tag[64] = "VIP";

int offsetHe;

public void OnPluginStart()
{
	HookEvent("player_spawn", PlayerSpawn);
	HookEvent("player_death", PlayerDeath);
}

public void OnMapStart()
{	
	int entindex;
	entindex = CreateEntityByName("weapon_hegrenade");
	DispatchSpawn(entindex);
	offsetHe = GetEntProp(entindex, Prop_Send, "m_iPrimaryAmmoType");
	AcceptEntityInput(entindex, "Kill");

}

public Action PlayerSpawn(Event event, const char[] name, bool dontBroadcast) 
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	if(IsValidPlayer(client) && IsPlayerVIP(client))
	{
		if(IsPlayerAlive(client))
		{
			CreateTimer(0.1, GiveEquipment, GetEventInt(event, "userid"), TIMER_FLAG_NO_MAPCHANGE);
		}
	}
}

public Action GiveEquipment(Handle timer, any userid) {
	int client = GetClientOfUserId(userid);
   
	if(!IsPlayerAlive(client) || !IsValidPlayer(client)) return;
    
	{  
		SetEntProp(client, Prop_Send, "m_ArmorValue", 100);

		if(GetEntProp(client, Prop_Send, "m_iAmmo", _, offsetHe) < 1) 
			GivePlayerItem(client, "weapon_hegrenade");
	}
}
public Action PlayerDeath(Handle event, const char[] name, bool dontBroadcast)
{
	int attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
	if(!IsValidPlayer(attacker) || !IsPlayerVIP(attacker)) return;
	int health = GetClientHealth(attacker);
	SetEntityHealth(attacker, health+5);

	bool headshot = GetEventBool(event, "headshot", false);
	if(headshot)
	{
		health = GetClientHealth(attacker);
		SetEntityHealth(attacker, health+5);
	}
	if(GetClientHealth(attacker) > 100)
				SetEntityHealth(attacker, 100);
}

public void OnClientPostAdminCheck(int client)
{
	if(IsPlayerVIP(client))
	{
			
		PrintToChatAll(" %s \x03%N\x01 \x01", tag, client);
	}
}

stock bool IsValidPlayer(int client)
{
    if(client >= 1 && client <= MaxClients && IsClientInGame(client) && IsClientConnected(client) && !IsFakeClient(client) && !IsClientReplay(client) && !IsClientSourceTV(client))
        return true;
    return false;
}

stock bool IsPlayerVIP(int client)
{
	if(GetUserFlagBits(client) & ADMFLAG_CUSTOM6)
		return true;
	return false;
}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Spróbuj  tego tylko sobie flagę zmień [16 linijka]

Spoiler

#include <sdktools>

#pragma semicolon 1
#pragma newdecls required

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

public Action Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(event.GetInt("userid"));
	if (IsValidClient(client))
	{
		if (GetUserFlagBits(client) & ADMFLAG_CUSTOM1)
		{
			GivePlayerItem(client, "item_assaultsuit");
			GivePlayerItem(client, "weapon_hegrenade");
		}
		else {
			SetEntProp(client, Prop_Data, "m_ArmorValue", 0);
		}
	}
}

public bool IsValidClient(int client)
{
	if (!(1 <= client <= MaxClients) || !IsClientInGame(client) || !IsClientConnected(client) || IsFakeClient(client) || IsClientSourceTV(client))
		return false;
	
	return true;
}

 

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
38 minut temu, szogun napisał:

Niestety to się nie sprawdza

Hmm powinno, spróbuj to zrobić w timerze który wykona się sekundę/dwie po spawnie

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Lubię to! 2

Spróbuj tego powinno działać.

 

#include <sourcemod>
#include <cstrike>
#include <sdktools>

#pragma semicolon 1
#pragma newdecls required

public Plugin myinfo =
{
    name = "[CS:GO] VIP",
    author = "xBonio & Avgariat & Vasto_Lorde",
    description = "VIP Generator by cs-plugin.com",
    version = "1.0",
    url = "http://cs-plugin.com"
};

char tag[64] = "VIP";
int offsetHe;

public void OnPluginStart()
{
    HookEvent("player_spawn", PlayerSpawn);
    HookEvent("player_death", PlayerDeath);
}

public void OnMapStart()
{    
    int entindex;
    entindex = CreateEntityByName("weapon_hegrenade");
    DispatchSpawn(entindex);
    offsetHe = GetEntProp(entindex, Prop_Send, "m_iPrimaryAmmoType");
    AcceptEntityInput(entindex, "Kill");
}

public Action PlayerSpawn(Event event, const char[] name, bool dontBroadcast) 
{
    int client = GetClientOfUserId(GetEventInt(event, "userid"));
    if(IsValidPlayer(client) && IsPlayerAlive(client))
        CreateTimer(1.0, GiveEquipment, GetClientUserId(client));
}

public Action GiveEquipment(Handle timer, any userid)
{
    int client = GetClientOfUserId(userid);
   
    if(IsPlayerAlive(client) && IsPlayerVIP(client))
    {  
        SetEntProp(client, Prop_Send, "m_ArmorValue", 100);
        SetEntProp(client, Prop_Send, "m_bHasHelmet", 1);
        if(GetEntProp(client, Prop_Send, "m_iAmmo", _, offsetHe) < 1) 
            GivePlayerItem(client, "weapon_hegrenade");
    }
    else
    {
        SetEntProp(client, Prop_Send, "m_ArmorValue", 0);
        SetEntProp(client, Prop_Send, "m_bHasHelmet", 0);
    }
}
public Action PlayerDeath(Handle event, const char[] name, bool dontBroadcast)
{
    int attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
    if(!IsValidPlayer(attacker) || !IsPlayerVIP(attacker)) return;
    int health = GetClientHealth(attacker);
    SetEntityHealth(attacker, health+5);

    bool headshot = GetEventBool(event, "headshot", false);
    if(headshot)
    {
        health = GetClientHealth(attacker);
        SetEntityHealth(attacker, health+5);
    }
    if(GetClientHealth(attacker) > 100)
                SetEntityHealth(attacker, 100);
}

public void OnClientPostAdminCheck(int client)
{
    if(IsPlayerVIP(client))        
        PrintToChatAll(" %s \x03%N\x01 \x01", tag, client);
}

stock bool IsValidPlayer(int client)
{
    if(client >= 1 && client <= MaxClients && IsClientInGame(client) && IsClientConnected(client) && !IsFakeClient(client) && !IsClientReplay(client) && !IsClientSourceTV(client))
        return true;
    return false;
}

stock bool IsPlayerVIP(int client)
{
    if(GetUserFlagBits(client) & ADMFLAG_CUSTOM6)
        return true;
    return false;
}

 

 

szogun_vip.sp
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

Edytowane przez Yamakashi

Udostępnij tę odpowiedź


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

Link do pluginu głównego Twojego podaj 

To jest cały plugin.

3 godziny temu, Yamakashi napisał:

Spróbuj tego powinno działać.

 
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Odkryj ukrytą treść

#include <sourcemod>
#include <cstrike>
#include <sdktools>

#pragma semicolon 1
#pragma newdecls required

public Plugin myinfo =
{
    name = "[CS:GO] VIP",
    author = "xBonio & Avgariat & Vasto_Lorde",
    description = "VIP Generator by cs-plugin.com",
    version = "1.0",
    url = "http://cs-plugin.com"
};

char tag[64] = "VIP";
int offsetHe;

public void OnPluginStart()
{
    HookEvent("player_spawn", PlayerSpawn);
    HookEvent("player_death", PlayerDeath);
}

public void OnMapStart()
{    
    int entindex;
    entindex = CreateEntityByName("weapon_hegrenade");
    DispatchSpawn(entindex);
    offsetHe = GetEntProp(entindex, Prop_Send, "m_iPrimaryAmmoType");
    AcceptEntityInput(entindex, "Kill");
}

public Action PlayerSpawn(Event event, const char[] name, bool dontBroadcast) 
{
    int client = GetClientOfUserId(GetEventInt(event, "userid"));
    if(IsValidPlayer(client) && IsPlayerAlive(client))
        CreateTimer(1.0, GiveEquipment, GetClientUserId(client));
}

public Action GiveEquipment(Handle timer, any userid)
{
    int client = GetClientOfUserId(userid);
   
    if(IsPlayerAlive(client) && IsPlayerVIP(client))
    {  
        SetEntProp(client, Prop_Send, "m_ArmorValue", 100);
        SetEntProp(client, Prop_Send, "m_bHasHelmet", 1);
        if(GetEntProp(client, Prop_Send, "m_iAmmo", _, offsetHe) < 1) 
            GivePlayerItem(client, "weapon_hegrenade");
    }
    else
    {
        SetEntProp(client, Prop_Send, "m_ArmorValue", 0);
        SetEntProp(client, Prop_Send, "m_bHasHelmet", 0);
    }
}
public Action PlayerDeath(Handle event, const char[] name, bool dontBroadcast)
{
    int attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
    if(!IsValidPlayer(attacker) || !IsPlayerVIP(attacker)) return;
    int health = GetClientHealth(attacker);
    SetEntityHealth(attacker, health+5);

    bool headshot = GetEventBool(event, "headshot", false);
    if(headshot)
    {
        health = GetClientHealth(attacker);
        SetEntityHealth(attacker, health+5);
    }
    if(GetClientHealth(attacker) > 100)
                SetEntityHealth(attacker, 100);
}

public void OnClientPostAdminCheck(int client)
{
    if(IsPlayerVIP(client))        
        PrintToChatAll(" %s \x03%N\x01 \x01", tag, client);
}

stock bool IsValidPlayer(int client)
{
    if(client >= 1 && client <= MaxClients && IsClientInGame(client) && IsClientConnected(client) && !IsFakeClient(client) && !IsClientReplay(client) && !IsClientSourceTV(client))
        return true;
    return false;
}

stock bool IsPlayerVIP(int client)
{
    if(GetUserFlagBits(client) & ADMFLAG_CUSTOM6)
        return true;
    return false;
}

 

 

szogun_vip.sp
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

Zrobiłem podobnie dodając to w timerze z walidacją bo bez tego znikają modele dla graczy i okazało się nie skuteczne, na mapach typu de_ fy_ wszystko działa, gorzej z innymi mapami typu awp_ etc dostosowałem się do tego lecz chyba nie skutecznie bo to też mi nie pomogło

 

public void OnEntityCreated(int entity, const char[] classname)
{
    /* game_player_equip entities will not be activated until players will trigger them */
    
    if (StrEqual(classname, "game_player_equip"))
    {
        SDKHook(entity, SDKHook_SpawnPost, OnGamePlayerEquipSpawn);
    }
}

public void OnGamePlayerEquipSpawn(int entity)
{
    int flags = GetEntProp(entity, Prop_Data, "m_spawnflags");

    if (flags & 1) // "Use Only" flag
    {
        return;
    }

    SetEntProp(entity, Prop_Data, "m_spawnflags", flags | 1);
}  

Na pewno ja coś źle robię dodając ten fragment do vipa

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Lubię to! 1

Dobra działa większej wpadki chyba się nie dało zaliczyć, dziwnym trafem miałem ammo_grenade_limit_total na 0 przez co wszystko wypadało xdd

 

Edytowane przez szogun

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wiadomość wygenerowana automatycznie

 

Pomoc udzielona

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

×
×
  • Dodaj nową pozycję...