Skocz do zawartości
terrorist0p

[Rozwiązane] Dawanie broni

Rekomendowane odpowiedzi

Witam mam prośbę i mały problem, przy użyciu tego pluginu zabiera całą broń i daje jakąś broń, ale np. przy użyciu VIP'a nie daje granatów z VIP'a

 

Chcę żeby zabierało całą broń z mapy i dawało nóż i awp, bo w pluginie !ws dublują się noże i przy użyciu tego się nie dublują.

Ale żeby granaty z VIP'a też dawało, a nie zabierało. 

 

Przy usunięciu client_removeallweapons.. działa wszystko, ale wtedy daje z mapy np. glocki,5-7,p250 itp., chyba że wypisać wszystkie spluwy z osobna i będzie działać 😄 

 

#include <sourcemod>
#include <smlib>

ConVar g_cvEnablePlugin;
ConVar g_cvDeleteMapWeapons;
ConVar g_cvKnifeOnlyWarmup

public Plugin myinfo = 
{
	name = "xxx",
	author = "xxx",
	description = "xxx",
	version = "xxx"
};


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

    g_cvEnablePlugin = CreateConVar("sm_awponly_enableplugin", "1", "1 = Plugin enabled, 0 = Plugin disabled", FCVAR_NOTIFY);
    g_cvKnifeOnlyWarmup = CreateConVar("sm_awponly_warmupknifeonly", "0", "1 = Knife only in warmup, 0 = AWP + Knife in warmup", FCVAR_NOTIFY);
    g_cvDeleteMapWeapons = CreateConVar("sm_awponly_deletemapweapons", "1", "1 = Delete weapons placed on the map, 0 = Don't delete weapons placed on the map");

    AutoExecConfig(true, "awponly");
}


public void Event_PlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
    if(g_cvEnablePlugin.BoolValue)
        RequestFrame(SetWeapons, GetClientOfUserId(GetEventInt(event, "userid")));
}


public void OnMapStart()
{
    if(g_cvEnablePlugin.BoolValue && g_cvDeleteMapWeapons.BoolValue)
        ServerCommand("sm_cvar mp_weapons_allow_map_placed 0")
}


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


public void SetWeapons(int client)
{
    if(IsClientValid(client))
    {
        if(g_cvKnifeOnlyWarmup.BoolValue)
        {
            if(GameRules_GetProp("m_bWarmupPeriod") == 1)
            {
                Client_RemoveAllWeapons(client, "", true);
                GivePlayerItem(client, "weapon_xxx");
            }
        }
        else
        {
            Client_RemoveAllWeapons(client, "", true);
            GivePlayerItem(client, "weapon_xxx");
            GivePlayerItem(client, "weapon_xxx");
        }
    }
}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
1 minutę temu, Nikita Chruszczow napisał:

Użyj tych 2 pluginów i po problemie 😜 

Właśnie nie chce tego fixa, bo on zabiera kose, od razu po wygranej rundzie, czyli kilka sekund gracz nie ma kosy 😄 
Bardziej mnie zainteresowało rozwiązanie CANUSE, ktoś mi powie coś więcej?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
#include <sourcemod>
#include <sdkhooks>

#pragma semicolon 1
#pragma newdecls required

char g_sWeaponsCanUse [][] =
{
	"weapon_knife",
	"weapon_decoy",
	"weapon_flashbang",
	"weapon_hegrenade",
	"weapon_smokegrenade",
	"weapon_molotov",
	"weapon_incgrenade",
	"weapon_awp"
};

public void OnPluginStart() 
{
	for(int i = 1; i <= MaxClients; i++)
		if(IsValidClient(i))
			OnClientPutInServer(i);
}

public void OnClientPutInServer(int client)
{
	SDKHook(client, SDKHook_WeaponCanUse, WeaponCanUse);
}

public void OnClientDisconnect(int client)
{
	SDKUnhook(client, SDKHook_WeaponCanUse, WeaponCanUse);
}

public Action WeaponCanUse(int client, int weapon)
{
	if(!IsValidClient(client) || !IsPlayerAlive(client))
		return Plugin_Continue;

	char weapons[32];
	GetEdictClassname(weapon, weapons, sizeof(weapons));
	
	for(int i = 0; i < sizeof(g_sWeaponsCanUse); i ++)
	{
		if(StrEqual(g_sWeaponsCanUse[i], weapons))
			return Plugin_Continue;
	}
	
	return Plugin_Handled;
}

stock bool IsValidClient(int client)
{
	if(client <= 0 ) return false;
	if(client > MaxClients) return false;
	if(!IsClientConnected(client)) return false;
	if(IsFakeClient(client)) return false;
	return IsClientInGame(client);
}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wystarczą komendy z cs` 😛 
 

mp_equipment_reset_rounds 							"1"
mp_t_default_melee								"weapon_knife"
mp_t_default_secondary								"."
mp_t_default_primary								"weapon_awp"
mp_ct_default_melee								"weapon_knife"
mp_ct_default_secondary								"."
mp_ct_default_primary								"weapon_awp"

 

Udostępnij tę odpowiedź


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


Po co usuwasz autora pluginu?  https://github.com/xSL0W/csgo_awponly
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

Dodaj sobie w vipie timer na 0.1 na spawnie gracza i w za pomocą jego dawaj granaty

Jak dodać timer?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
#include <sourcemod>
#include <cstrike>
#include <sdktools>

#pragma semicolon 1
#pragma newdecls required

int offsetHe;

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

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;
	{  
		if(GetEntProp(client, Prop_Send, "m_iAmmo", _, offsetHe) < 1) 
			GivePlayerItem(client, "weapon_hegrenade");
	}
}

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_CUSTOM1) return true;
	if(GetUserFlagBits(client) & ADMFLAG_ROOT) return true;

	return false;
}

 

Flagi vipa

 

	if(GetUserFlagBits(client) & ADMFLAG_CUSTOM1) return true;
	if(GetUserFlagBits(client) & ADMFLAG_ROOT) return true;

Tylko sobie skompiluj to

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
W dniu 1.11.2019 o 22:43, terrorist0p napisał:

Na przykładzie VIP'a od @Mesharsky ktoś pokaże jak ten timer dla playerspawn dodać, i aby co rundę się powtarzało, na każdej mapie.

 

 

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

Ale po co skoro? masz gotowy plugin dl vipa

Udostępnij tę odpowiedź


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

Ale po co skoro? masz gotowy plugin dl vipa

 

Ale tamten plugin only awp, zabiera np. granaty z VIP'a...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Czytaj ze zrozumieniem, masz zrobionego vipa z timerem dzięki któremu ci tego nie zabierze 🙂

Udostępnij tę odpowiedź


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

Czytaj ze zrozumieniem, masz zrobionego vipa z timerem dzięki któremu ci tego nie zabierze 🙂

Tam jest timer chyba tylko na wiadomości HUD albo powitalne

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Teraz, terrorist0p napisał:

Tam jest timer chyba tylko na wiadomości HUD albo powitalne

......................

 

 

Timer jest dodany do ekwipunku gracza , plugin który podałeś usuwa bronie graczowi w momenie player_spawn

Kod który ci podałem dodaje graczowi ekp tak samo w momencie player_spawn lecz z opóźnieniem do 0.1

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wiadomość wygenerowana automatycznie

 

Problem został rozwiązany

Jeżeli się z tym nie zgadzasz, raportuj ten post

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ę...