Jump to content
  • Chmurka
  • Boróweczka
  • Jabłuszko
  • Limonka
  • Czekoladka
  • Węgielek
Sign in to follow this  
szogun

[Rozwiązane] Mała modyfikacja

Recommended Posts

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;
}

 

Share this post


Link to post
Share on other sites

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;
}

 

 

  • Lubię to! 2

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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!

Edited by Yamakashi
  • Lubię to! 2

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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

 

Edited by szogun
  • Haha! 1

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

Nasza historia

Na początku byliśmy małą grupą internetowych znajomych, którzy stwierdzili, że potrzebne jest solidne forum, na którym znajdą się ludzie z dużą wiedzą programistyczną ukierunkowaną na CS:GO. Pomysł powstał na początku 2018 roku, a parę miesięcy później, 19 kwietnia, powstała ta strona internetowa. Jako alternatywna odpowiedź na inne tego typu miejsca, poważnie podeszliśmy do tematu, najpierw tłumacząc angielską dokumentację SourceMod'a na język polski, a potem pisząc rozległe poradniki i wypełniając forum najpotrzebniejszymi rzeczami dla właścicieli serwerów i programistów. Cała nasza Ekipa jest dumna z pracy jaką w to włożyliśmy i cieszymy się że zbierają się wokół nas zarówno ludzie znający tematy sourcepawn'a i konfiguracji, jak i również nowe twarze w tym "biznesie", którym z chęcią niesiemy wiedzę oraz pomoc w rozwiązywaniu problemów.

Największe modyfikacje serwerowe

×
×
  • Create New...