Skocz do zawartości
Skrzacik

[CS:GO] 1vs1duel

Rekomendowane odpowiedzi

Opis

Gdy zostanie 2 graczy rozpocznie się pojedynek na wybraną broń

 

Konfiguracja

plugin możemy edytować w cfg/sourcemod/1vs1duel.cfg

 

Instalacja

 1vs1duel.smx do addons/sourcemod/plugins

 1vs1duel.sp do addons/sourcemod/scripting

 1vs1duel.txt do addons/sourcemod/configs

 

Download

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

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

Przez Vasto_Lorde,

Zaktualizowany download

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Można to w "lepszy/wydajniejszy" sposób napisać i pół kodu w nowej składni pół w starej ? Leci +

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@NWayne Dopiero się uczę pisać pluginy późniejsze na pewno będą lepiej napisane :P Później postaram się poprawić ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Lubię to! 1
28 minut temu, Skrzacik napisał:

@NWayne Dopiero się uczę pisać pluginy późniejsze na pewno będą lepiej napisane ? Później postaram się poprawić ?

Trzymaj ? Powinno być okej.
 

Spoiler

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

#pragma semicolon 1
#pragma newdecls required

public Plugin myinfo =  {
	name = "1vs1duel", 
	author = "Skrzacik", 
	description = "", 
	version = "1.0.0", 
	url = ""
};

bool b_duel = false;
bool warmup;
char g_vote[32];
ConVar c_vote, c_warmup;
char weapons[26][32];
public void OnPluginStart()
{
	weapons[0] = "knife";
	weapons[1] = "hegrenade";
	weapons[2] = "p228";
	weapons[3] = "deagle";
	weapons[4] = "elite";
	weapons[5] = "fiveseven";
	weapons[6] = "glock";
	weapons[7] = "usp";
	weapons[8] = "ak47";
	weapons[9] = "awp";
	weapons[10] = "scout";
	weapons[11] = "ump45";
	weapons[12] = "p90";
	weapons[13] = "galil";
	weapons[14] = "famas";
	weapons[15] = "xm1014";
	weapons[16] = "m4a1";
	weapons[17] = "sg552";
	weapons[18] = "aug";
	weapons[19] = "m249";
	weapons[20] = "mp5navy";
	weapons[21] = "tmp";
	weapons[22] = "g3sg1";
	weapons[23] = "sg550";
	weapons[24] = "mac10";
	weapons[25] = "m3";
	
	c_vote = CreateConVar("Vote_ON", "ON", "OFF-Losuje bron;ON-Głosowanie na bron;Nazwa broni-daje podana bron");
	c_warmup = FindConVar("mp_warmuptime");
	AutoExecConfig(true, "1vs1duel");
	HookEvent("player_death", Event_PlayerDeath, EventHookMode_Post);
	HookEvent("round_prestart", Event_roundstart);
	HookEvent("hegrenade_detonate", Event_grenade, EventHookMode_Post);
	
	
}
public void OnAutoConfigsBuffered()
{
	warmup = true;
	float time_warmup = GetConVarFloat(c_warmup);
	if (time_warmup > 0)
		CreateTimer(time_warmup, warmup_off);
	else
		warmup = false;
}
public Action Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
	if (!b_duel && !warmup)
	{
		int CT = 0, TT = 0;
		for (int i = 1; i <= MaxClients; i++)
		{
			if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 3)
			{
				CT++;
			}
			else if (IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 2)
			{
				TT++;
			}
		}
		if (CT == 1 && TT == 1)
		{
			b_duel = true;
			char buffer[128];
			c_vote.GetString(buffer, 128);
			if (StrEqual(buffer, "ON", false))
			{
				if (IsVoteInProgress())
				{
					return;
				}
				
				Menu menu = new Menu(MenuHandler1);
				menu.SetTitle("Wybierz Bron");
				menu.AddItem("Brak", "Brak");
				for (int n = 0; n <= 25; n++)
				menu.AddItem(weapons[n], weapons[n]);
				menu.ExitButton = false;
				menu.DisplayVoteToAll(5);
			}
			else
			{
				if (StrEqual(buffer, "OFF", false))
				{
					int random = GetRandomInt(0, 25);
					add_weapon(weapons[random]);
				}
				else add_weapon(buffer);
			}
		}
	}
}
public int MenuHandler1(Menu menu, MenuAction action, int param1, int param2)
{
	if (action == MenuAction_End)
	{
		delete menu;
	}
	else if (action == MenuAction_VoteEnd)
	{
		char info[32];
		menu.GetItem(param1, info, sizeof(info));
		
		if (!StrEqual(info, "Brak", false))
		{
			add_weapon(info);
		}
		
	}
}
public void add_weapon(char[] weapon)
{
	Format(g_vote, sizeof(g_vote), "weapon_%s", weapon);
	for (int i = 1; i <= MaxClients; i++)
	{
		if (IsClientInGame(i) && IsPlayerAlive(i))
		{
			for (int slot = 0; slot < 4; slot++)
			{
				int weapon_index = -1;
				while ((weapon_index = GetPlayerWeaponSlot(i, slot)) != -1)
				{
					if (IsValidEntity(weapon_index))
					{
						RemovePlayerItem(i, weapon_index);
						AcceptEntityInput(weapon_index, "kill");
					}
				}
			}
			if (GivePlayerItem(i, g_vote) == -1)
			{
				int random = GetRandomInt(0, 25);
				add_weapon(weapons[random]);
			}
		}
	}
}
public Action Event_grenade(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(event.GetInt("userid"));
	if (b_duel)
		GivePlayerItem(client, g_vote);
}
public Action BlockPickup(int client, int weapon)
{
	if (b_duel)
	{
		char buffer[32];
		GetEdictClassname(weapon, buffer, sizeof(buffer));
		if (IsValidEntity(weapon) && !StrEqual(buffer, g_vote, false))
		{
			RemovePlayerItem(client, weapon);
			AcceptEntityInput(weapon, "kill");
			GivePlayerItem(client, g_vote);
		}
	}
}
public void OnClientPutInServer(int client)
{
	SDKHook(client, SDKHook_WeaponCanUse, BlockPickup);
}
public Action warmup_off(Handle timer)
{
	warmup = false;
}
public Action Event_roundstart(Event event, const char[] name, bool dontBroadcast)
{
	b_duel = false;
} 

 

 

Edytowane przez Brum Brum

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Aktualizacja

-Poprawa Kodu

-Tworzenie własnych pojedynków

-rożne dodatki do pojedynków


Download

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

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

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