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

Przerobienie pluginu z Nazwą DNS w nicku

Recommended Posts

Posted (edited)

Cześć, dopiero zaczynam się bawić w SM. Niestety wiele mi brakuje do pisania i pełnego edytowania innych pluginów. 

 

Chciałbym zedytować ten plugin (na dole), tak - żeby:

  • Kiedy gracz ma w nicku dany (ustawiane w cfg) DNS (daną frazę, dany link - cokolwiek co zechce)  to daje w pierwszej rundzie jednemu losowemu graczowi , który ma tą frazę - flagę do końca mapy (ustawiane w cfg - domyślnie a) - Czyli VIP'a. Nowa mapa, nowy gracz dostaje flagę.
  • Wiadomość, że (tu sobie poprzestawiam) Ten gracz został wylosowany na VIP'a
  • Każdemu, kto ma w nicku daną frazę j/w - daje (ustawiane o ile się da a domyślnie) +15% kasy za zabicie itd. Powiedzmy, takie pocieszenie dla tych co nie dostali VIP'a.
  • No i żeby dało się wyłączać obie te funkcję. Żeby działały dwie na raz, albo tylko pierwsza albo tylko druga.

 

W sumie.. To co już jest w pluginie to można wywalić, żadnego "menu z tag'ami" bym nie chciał i żadnego dostawania nowej waluty i dodatkowych broni. 😄 Nie wiem czy nie proszę o napisanie całkowicie nowego pluginu.. 

 

Ewentualnie edytować plugin @Brum Brum żeby dodać te funkcje. Opakować losowanie VIP'a w if'a no i z tą kasą opcja. Dodaje dwa pluginy.

Bo na razie plugin @Brum Brum daje losowemu graczowi daną flagę i temu kto ma nazwę sieci w nicku ma 2x szanse. Jednak wolałbym to co jest w kropkach na górze. Niestety nie umiem sam 😄 

 

KOD GOLDMEMBER.SP

Spoiler

#include <sourcemod>
#include <sdktools>
#include <store>
#include <clientprefs>
#include <cstrike>

ConVar CreditsAdder;
ConVar CreditsTime;
ConVar sm_nospec = null;
Handle TimeAuto = null;
Handle g_hGoldTagCookie;

#define DNS "AWP.LALEAGANE.RO"  // YOUR SERVER'S DNS 
#define PL_VERSION "1.0"        // Don't edit this

public Plugin myinfo = 
{
	name = "GoldMember (DNS Benefits)",
	author = "xSLOW",
	description = "Benefits for having DNS in STEAM Name",
	version = PL_VERSION,
	url = "www.xslow.xyz"
};

public void OnPluginStart()
{
	g_hGoldTagCookie = RegClientCookie("GoldTagCookie", "GoldTagCookie", CookieAccess_Protected);
	RegConsoleCmd("sm_goldtag", menutag);

	CreditsAdder = CreateConVar("sm_goldmember_credits", "10", "Credits to give per X time, if player has DNS in name.", FCVAR_NOTIFY);
	CreditsTime = CreateConVar("sm_goldmember_credits_time", "180", "Time in seconds to give the credits.", FCVAR_NOTIFY);
	sm_nospec = CreateConVar("sm_nospec", "1", "0 = ALL PLAYERS and 1 = ONLY CT/T",	_, true, 0.0, true, 1.0);
	HookConVarChange(CreditsTime, Change_CreditsTime);

	HookEvent("player_spawn", Event_OnPlayerSpawn);
}


public void OnMapStart()
{
	TimeAuto = CreateTimer(GetConVarFloat(CreditsTime), CheckPlayers, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
        PrintToChatAll(" \x03This server is running xSLOW'S DNS Benefits [%s]. Add \x04%s\x03 to your name to get free benefits.", PL_VERSION ,DNS);
}


public void Event_OnPlayerSpawn(Event event, const char[] name, bool dontBroadcast)
{
	int client = GetClientOfUserId(GetEventInt(event, "userid"));
	char sBuffer[12];
	
	if (client == 0 || IsFakeClient(client))
	{
		return;
	}
	
        if(HasDNS(client) == true)
        {
            PrintToChat(client, " ✪︎ \x01You're getting FREE \x03ARMOR & CREDITS & !GOLDTAG\x01 for being a \x10GoldMember♛");
            GiveArmor(client);
        }
            else
            {
	            PrintToChat(client, " ✪︎ \x01Add \x07'%s' \x01to your NAME to get \x10GoldMember♛ \x03(FREE ARMOR & CREDITS & !GOLDTAG)", DNS);
            }

        if(IsClientValid(client) && HasDNS(client) == true)
        {
            int choosed;
            GetClientCookie(client,g_hGoldTagCookie,sBuffer,sizeof(sBuffer))
            choosed = StringToInt(sBuffer);
            if (IsClientInGame(client)&&(IsClientValid(client)))
            {
                if(choosed == 1)
                {
                    CS_SetClientClanTag(client, "GoldMember♛");    
                }
                else
                if(choosed == 2)
                {
                    CS_SetClientClanTag(client, "GoldMember®");
                }
                else
                if(choosed == 3)
                {
                    CS_SetClientClanTag(client, "GoldMember♥");
                }
                else
                if(choosed == 4)
                {
                    CS_SetClientClanTag(client, "Avicii™");
                }
                else
                if(choosed == 5)
                {
                    CS_SetClientClanTag(client, "theGΦD♰︎");
                }
                else
                if(choosed == 6)
                {
                    CS_SetClientClanTag(client, "TheReaper☠︎︎");
                }
                else
                if(choosed == 7)
                {
                    CS_SetClientClanTag(client, "BΦ$$♚︎");
                }				
                else
                if(choosed == 8)
                {
                    CS_SetClientClanTag(client, "Radioactive ☢︎");
                }
                else
                if(choosed == 9)
                {
                    CS_SetClientClanTag(client, "➀︎Ⓣ︎Ⓐ︎Ⓟ︎");
                }
                else
                if(choosed == 10)
                {
                    CS_SetClientClanTag(client, "◉◡◉");
                }		
                else
                if(choosed == 11)
                {
                    CS_SetClientClanTag(client, "❍ᴥ❍");
                }
                if(choosed == 12)
                {
                    CS_SetClientClanTag(client, "sNipeR ❖");    
                }
                else
                if(choosed == 13)
                {
                    CS_SetClientClanTag(client, "Star ❖");
                }
                else
                if(choosed == 14)
                {
                    CS_SetClientClanTag(client, "spArk ❖");
                }
                else
                if(choosed == 15)
                {
                    CS_SetClientClanTag(client, "CiΦaRa ❖");
                }
                else
                if(choosed == 16)
                {
                    CS_SetClientClanTag(client, "mOeTTT ❖");
                }
                else
                if(choosed == 17)
                {
                    CS_SetClientClanTag(client, "DestroyeR ❖");
                }
                else
                if(choosed == 18)
                {
                    CS_SetClientClanTag(client, "NΦ ЅCΦP3 ❖");
                }				
                else
                if(choosed == 19)
                {
                    CS_SetClientClanTag(client, "NΦΦB ❖");
                }
                else
                if(choosed == 20)
                {
                    CS_SetClientClanTag(client, "milmΦi ❖");
                }									
            }
        }
}


// tagmenu
public tagmenu(Handle:menu, MenuAction:action, iClient, param2)
{
    switch (action)
    {
        case MenuAction_Select:
        {
            decl String:sBuffer[12];
            int i = 9;

            switch(param2)
            {
                case 0:
                {
                    i=0;
                    CS_SetClientClanTag(iClient, "");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);                       
                }
                case 1:
                {
                    i=1;
                    CS_SetClientClanTag(iClient, "GoldMember♛");
                    IntToString(i, sBuffer, sizeof(sBuffer));        
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 2:
                {
                    i=2;
                    CS_SetClientClanTag(iClient, "GoldMember®");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 3:
                {
                    i=3;
                    CS_SetClientClanTag(iClient, "GoldMember♥");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 4:
                {
                    i=4;
                    CS_SetClientClanTag(iClient, "Avicii™");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 5:
                {
                    i=5;
                    CS_SetClientClanTag(iClient, "theGΦD♰︎");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 6:
                {
                    i=6;
                    CS_SetClientClanTag(iClient, "TheReaper☠︎︎");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 7:
                {
                    i=7;
                    CS_SetClientClanTag(iClient, "BΦ$$♚︎");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 8:
                {
                    i=8;
                    CS_SetClientClanTag(iClient, "Radioactive ☢︎");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 9:
                {
                    i=9;
                    CS_SetClientClanTag(iClient, "➀︎Ⓣ︎Ⓐ︎Ⓟ︎");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 10:
                {
                    i=10;
                    CS_SetClientClanTag(iClient, "◉◡◉");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }					
                case 11:
                {
                    i=11;
                    CS_SetClientClanTag(iClient, "❍ᴥ❍");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }	
                case 12:
                {
                    i=12;
                    CS_SetClientClanTag(iClient, "sNipeR ❖");
                    IntToString(i, sBuffer, sizeof(sBuffer));        
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 13:
                {
                    i=13;
                    CS_SetClientClanTag(iClient, "Star ❖");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 14:
                {
                    i=14;
                    CS_SetClientClanTag(iClient, "spArk ❖");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 15:
                {
                    i=15;
                    CS_SetClientClanTag(iClient, "CiΦaRa ❖");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 16:
                {
                    i=16;
                    CS_SetClientClanTag(iClient, "mOeTTT ❖");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 17:
                {
                    i=17;
                    CS_SetClientClanTag(iClient, "DestroyeR ❖");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 18:
                {
                    i=18;
                    CS_SetClientClanTag(iClient, "NΦ ЅCΦP3 ❖");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 19:
                {
                    i=19;
                    CS_SetClientClanTag(iClient, "NΦΦB ❖");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }
                case 20:
                {
                    i=20;
                    CS_SetClientClanTag(iClient, "milmΦi ❖");
                    IntToString(i, sBuffer, sizeof(sBuffer));
                    SetClientCookie(iClient, g_hGoldTagCookie, sBuffer);
                }	
            }
        }
 
        case MenuAction_End:
            CloseHandle(menu);
 
    }
    return 0;
}

// Menu Tag
public Action menutag(client, args)
{
    if((HasDNS(client)))
    {
        GoldTag(client);
    }

    else
    {
        PrintToChat(client, " ✪︎ \x01Add \x07'%s' \x01to your NAME to get \x10GoldMember♛ \x03(FREE ARMOR & CREDITS & !GOLDTAG)", DNS);
    }
}

// GoldTag menu
public GoldTag(client)
{
    new Handle:menu = CreateMenu(tagmenu);
    SetMenuTitle(menu, "Menu TAG GoldMember");
 
    AddMenuItem(menu, "none", "No TaG");
    AddMenuItem(menu, "goldmember1", "GoldMember♛");
    AddMenuItem(menu, "goldmember2", "GoldMember®");
    AddMenuItem(menu, "goldmember3", "GoldMember♥");
    AddMenuItem(menu, "avicii", "Avicii™");
    AddMenuItem(menu, "dumnezeu","theGΦD♰︎");
    AddMenuItem(menu, "reaper", "TheReaper☠︎︎")
    AddMenuItem(menu, "asul","BΦ$$♚︎")
    AddMenuItem(menu, "radioactiv","Radioactive ☢︎");
    AddMenuItem(menu, "1tap","➀︎Ⓣ︎Ⓐ︎Ⓟ︎")
    AddMenuItem(menu, "cioara", "◉◡◉");
    AddMenuItem(menu, "moet", "❍ᴥ❍");
    AddMenuItem(menu, "sniper", "sNipeR ❖");
    AddMenuItem(menu, "stars", "Star ❖");
    AddMenuItem(menu, "spark", "spArk ❖");
    AddMenuItem(menu, "cioara", "CiΦaRa ❖");
    AddMenuItem(menu, "moet", "mOeTTT ❖");
    AddMenuItem(menu, "destroyer", "DestroyeR ❖");
    AddMenuItem(menu, "noscope", "NΦ ЅCΦP3 ❖");
    AddMenuItem(menu, "noob", "NΦΦB ❖");
    AddMenuItem(menu, "milmoi", "milmΦi ❖");
    DisplayMenu(menu, client, MENU_TIME_FOREVER);
   
}


// Verify if player has DNS in name
bool:HasDNS(client)
{
    char PlayerName[32];
    GetClientName(client, PlayerName, sizeof(PlayerName));

    if(StrContains(PlayerName, DNS, false) > -1)
    {  
        return true;
    }
    else
    return false;
}

// Give armor function
void GiveArmor(client)
{
	GivePlayerItem(client, "item_kevlar");
	GivePlayerItem(client, "item_assaultsuit");
	SetEntProp(client, Prop_Send, "m_ArmorValue", 100);
	SetEntProp(client, Prop_Send, "m_bHasHelmet", true);
}


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

// Checking players
public Action CheckPlayers(Handle timer)
{
	for (int i = 1; i <= MaxClients; i++)
	{
		if(IsClientInGame(i) && !IsFakeClient(i))
		{
			addcredits(i);
		}
	}
	
	return Plugin_Continue;
}

// add credits function
public void addcredits(int client)
{
	if (HasDNS(client) == true)
	{
		if(!(sm_nospec.IntValue == 1 && GetClientTeam(client) < 2)) 
		{
			Store_SetClientCredits(client, Store_GetClientCredits(client) + GetConVarInt(CreditsAdder));
			PrintToChat(client, "✪︎ You're getting \x07%i more credits \x01for being a \x10GoldMember♛︎", GetConVarInt(CreditsAdder));
		}
	}
}

public void OnClientPostAdminCheck(int client)
{
	if (IsFakeClient(client))
		return;

}

public void Change_CreditsTime(Handle cvar, const char[] oldVal, const char[] newVal)
{
	if (TimeAuto != null)
	{
		KillTimer(TimeAuto);
		TimeAuto = null;
	}

	TimeAuto = CreateTimer(GetConVarFloat(CreditsTime), CheckPlayers, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
}

 

 

KOD LosowyVIP BRUM BURM

Spoiler

#include <sdktools>

#pragma semicolon 1
#pragma newdecls required

ConVar gc_RandomVIP, gc_VIPFlag, gc_MinPlayers, gc_MOD_TAG;
ConVar gc_EnableWebsite, gc_Website;
char MOD_TAG[64], WEB[64];

int g_iRound;

ArrayList pula_graczy;

public Plugin myinfo = 
{
	name = "ADEPT --> Losowy VIP",
	description = "Autorski Plugin StudioADEPT.net", 
	author = "Brum Brum", 
	version = "1.0", 
	url = "http://www.StudioADEPT.net/forum", 
};

public void OnPluginStart()
{
	pula_graczy = new ArrayList();
	gc_RandomVIP = CreateConVar("sm_vip_random_round", "5", "Runda w której ma wylosować vipa (rozgrzewka nie jest brana pod uwagę)");
	gc_VIPFlag = CreateConVar("sm_vip_random_flag", "o", "Flaga którą ma otrzymać vip");
	gc_MinPlayers = CreateConVar("sm_vip_random_player", "2", "Minimalna ilość graczy do wylosowania vipa");
	gc_EnableWebsite = CreateConVar("sm_vip_random_website_enable", "1", "Zwiększa szanse graczom, który zawierają nazwe sieci w nicku(Wymagany cvar niżej)");
	gc_Website = CreateConVar("sm_vip_random_website_name", "StudioADEPT.net", "Nazwa sieci zwiększająca szanse na losowego vipa");
	gc_MOD_TAG = CreateConVar("sm_vip_random_tag", "ADEPT", "TAG pokazywany na czacie");
	gc_MOD_TAG.AddChangeHook(MOD_TAGNameChanged);
	gc_MOD_TAG.GetString(MOD_TAG, sizeof(MOD_TAG));
	gc_Website.AddChangeHook(WEBNameChanged);
	gc_Website.GetString(WEB, sizeof(WEB));
	HookEvent("round_start", Event_RoundStart);
	HookEvent("cs_win_panel_match", RestartRound);
	AutoExecConfig(true, "ADEPT_LosowyVIP");
}

public void MOD_TAGNameChanged(ConVar convar, const char[] oldValue, const char[] newValue)
{
	Format(MOD_TAG, sizeof(MOD_TAG), newValue);
}
public void WEBNameChanged(ConVar convar, const char[] oldValue, const char[] newValue)
{
	Format(WEB, sizeof(WEB), newValue);
}

public Action Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
	if (IsWarmup())return;
	
	int Runda = gc_RandomVIP.IntValue;
	int MinPlayers = gc_MinPlayers.IntValue;
	int Players = GetPlayerCount();
	
	g_iRound++;
	if (g_iRound == Runda) {	
		if (Players >= MinPlayers)GetRandomVIP();
		else PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Jest zbyt mało graczy aby wylosować VIPa!", MOD_TAG);
	}
}

public Action RestartRound(Event event, const char[] name, bool dontBroadcast)
{
	g_iRound = 0;
}

void GetRandomVIP()
{
	int Random = GetRandomPlayer();
	PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Trwa losowanie VIP'a...", MOD_TAG);
	PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Trwa losowanie VIP'a...", MOD_TAG);
	PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Trwa losowanie VIP'a...", MOD_TAG);
	if (Random)
	{
		PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Losowym VIP'em zostaje \x02%N\x04 Gratulujemy!", MOD_TAG, Random);
		SetUserFlagBits(Random, GetUserFlagBits(Random) | GetFlag());
	}
	else PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Nie można wylosować VIP`a ponieważ na serwerze są same VIPY!", MOD_TAG);
}

bool HaveFlag(int client)
{
	int flag = GetFlag();
	
	if (GetUserFlagBits(client) & flag)return true;
	else return false;
}

int GetRandomPlayer()
{
	
	pula_graczy.Clear();
	for (int i = 1; i < MaxClients; i++)
	{
		if (IsValidClient(i))
		{
			if (gc_EnableWebsite.BoolValue) {
				if (!HaveFlag(i) && HaveWebSite(i)) {
					pula_graczy.Push(i);
					pula_graczy.Push(i);
				}
				else if (!HaveFlag(i) && !HaveWebSite(i))pula_graczy.Push(i);
			}
			else
			{
				if (!HaveFlag(i))pula_graczy.Push(i);
			}
		}
	}
	if (pula_graczy.Length == 0)return 0;
	
	return pula_graczy.Get(GetRandomInt(0, pula_graczy.Length - 1));
}

bool HaveWebSite(int client)
{
	if (!IsValidClient(client))return false;
	
	char name[MAX_NAME_LENGTH];
	GetClientName(client, name, sizeof(name));
	
	if (StrContains(name, WEB, true) != -1)return true;
	else return false;
}

int GetPlayerCount()
{
	int count;
	for (int i = 1; i <= MaxClients; i++) {
		if (IsValidClient(i))count++;
	}
	
	return count;
}

int GetFlag()
{
	char flag[10];
	gc_VIPFlag.GetString(flag, sizeof(flag));
	
	return ReadFlagString(flag);
}

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

bool IsWarmup()
{
	int warmup = GameRules_GetProp("m_bWarmupPeriod", 4, 0);
	if (warmup == 1)return true;
	else return false;
} 

 

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

LosowyVIP.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 wisnia834

Share this post


Link to post
Share on other sites

Powinno działać:

Spoiler

#include <sdktools>

#pragma semicolon 1
#pragma newdecls required

ConVar gc_RandomVIP, gc_VIPFlag, gc_MinPlayers, gc_MOD_TAG, gc_MoneyForKill;
ConVar gc_Website;
ConVar gc_RandomVipType;
char MOD_TAG[64], WEB[64];

int g_iRound;

ArrayList pula_graczy;

public Plugin myinfo = 
{
	name = "ADEPT --> Losowy VIP",
	description = "Autorski Plugin StudioADEPT.net", 
	author = "Brum Brum", 
	version = "1.0", 
	url = "http://www.StudioADEPT.net/forum", 
};

public void OnPluginStart()
{
	pula_graczy = new ArrayList();
	gc_RandomVIP = CreateConVar("sm_vip_random_round", "1", "Runda w której ma wylosować vipa (rozgrzewka nie jest brana pod uwagę)");
	gc_VIPFlag = CreateConVar("sm_vip_random_flag", "o", "Flaga którą ma otrzymać vip");
	gc_MinPlayers = CreateConVar("sm_vip_random_player", "2", "Minimalna ilość graczy do wylosowania vipa");
	gc_Website = CreateConVar("sm_vip_random_website_name", "StudioADEPT.net", "Fraza wymagana w nicku.");
	gc_MOD_TAG = CreateConVar("sm_vip_random_tag", "ADEPT", "TAG pokazywany na czacie");
	gc_MoneyForKill = CreateConVar("sm_vip_money_for_kill", "340", "Ilość pieniędzy za killa z frazą w nicku");
	gc_RandomVipType = CreateConVar("sm_vip_type", "1", "1 - Losowanie Vip'a dla wszystkich 2 - Losowanie Vip'a dla osób z frazą w nicku.");
	gc_MOD_TAG.AddChangeHook(MOD_TAGNameChanged);
	gc_MOD_TAG.GetString(MOD_TAG, sizeof(MOD_TAG));
	gc_Website.AddChangeHook(WEBNameChanged);
	gc_Website.GetString(WEB, sizeof(WEB));
	HookEvent("round_start", Event_RoundStart);
	HookEvent("cs_win_panel_match", RestartRound);
	HookEvent("player_death", Event_PlayerDeath);
	AutoExecConfig(true, "ADEPT_LosowyVIP");
}

public void MOD_TAGNameChanged(ConVar convar, const char[] oldValue, const char[] newValue)
{
	Format(MOD_TAG, sizeof(MOD_TAG), newValue);
}
public void WEBNameChanged(ConVar convar, const char[] oldValue, const char[] newValue)
{
	Format(WEB, sizeof(WEB), newValue);
}

public Action Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
	if (IsWarmup())return;
	
	int Runda = gc_RandomVIP.IntValue;
	int MinPlayers = gc_MinPlayers.IntValue;
	int Players = GetPlayerCount();
	
	g_iRound++;
	if (g_iRound == Runda) {	
		if (Players >= MinPlayers)GetRandomVIP();
		else PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Jest zbyt mało graczy aby wylosować VIPa!", MOD_TAG);
	}
}

public Action Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
	if (IsWarmup())return;
	
	int Runda = gc_RandomVIP.IntValue;
	int MinPlayers = gc_MinPlayers.IntValue;
	int Players = GetPlayerCount();
	
	g_iRound++;
	if (g_iRound == Runda) {	
		if (Players >= MinPlayers)GetRandomVIP();
		else PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Jest zbyt mało graczy aby wylosować VIPa!", MOD_TAG);
	}
}

public Action Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
	int attacker = GetClientOfUserId(event.GetInt("attacker"));
	if(!IsValidClient(attacker)) return Plugin_Continue;

	int money = GetEntProp(attacker, Prop_Send, "m_iAccount");
	
	if(!HaveFlag(attacker) && HaveWebSite(attacker))
		SetEntProp(attacker, Prop_Send, "m_iAccount", money + gc_MoneyForKill.IntValue;);
		
	return Plugin_Continue;
}

void GetRandomVIP()
{
	int Random = GetRandomPlayer();
	PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Trwa losowanie VIP'a...", MOD_TAG);
	PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Trwa losowanie VIP'a...", MOD_TAG);
	PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Trwa losowanie VIP'a...", MOD_TAG);
	if (Random)
	{
		PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Losowym VIP'em zostaje \x02%N\x04 Gratulujemy!", MOD_TAG, Random);
		SetUserFlagBits(Random, GetUserFlagBits(Random) | GetFlag());
	}
	else PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Nie można wylosować VIP`a ponieważ na serwerze są same VIPY!", MOD_TAG);
}

bool HaveFlag(int client)
{
	int flag = GetFlag();
	
	if (GetUserFlagBits(client) & flag)return true;
	else return false;
}

int GetRandomPlayer()
{
	pula_graczy.Clear();
	for(int i = 1; i < MaxClients; i++)
	{
		if(IsValidClient(i))
		{
			if(gc_RandomVipType.IntValue == 1)
			{
				if(!HaveFlag(i))
					pula_graczy.Push(i);
			}
			else if(gc_RandomVipType.IntValue == 2)
			{
				if(!HaveFlag(i) && HaveWebSite(i))
					pula_graczy.Push(i);
			}
		}
	}


	if (pula_graczy.Length == 0)return 0;
	
	return pula_graczy.Get(GetRandomInt(0, pula_graczy.Length - 1));
}

bool HaveWebSite(int client)
{
	if (!IsValidClient(client))return false;
	
	char name[MAX_NAME_LENGTH];
	GetClientName(client, name, sizeof(name));
	
	if (StrContains(name, WEB, true) != -1)return true;
	else return false;
}

int GetPlayerCount()
{
	int count;
	for (int i = 1; i <= MaxClients; i++) {
		if (IsValidClient(i))count++;
	}
	
	return count;
}

int GetFlag()
{
	char flag[10];
	gc_VIPFlag.GetString(flag, sizeof(flag));
	
	return ReadFlagString(flag);
}

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

bool IsWarmup()
{
	int warmup = GameRules_GetProp("m_bWarmupPeriod", 4, 0);
	if (warmup == 1)return true;
	else return false;
} 

 

 

Edited by Yamakashi
  • Lubię to! 1
  • Kocham to! 2

Share this post


Link to post
Share on other sites

W jednym miejscu było za dużo " ; " po skasowaniu tylko to wyskakuje 😄 Jak skasuje sie z 68 linijki samo Event to zostaje pierwszy error

(39) : error 017: undefined symbol "RestartRound"
(68) : error 021: symbol already defined: "Event_RoundStart"

 

Share this post


Link to post
Share on other sites
Spoiler

#include <sdktools>

#pragma semicolon 1
#pragma newdecls required

ConVar gc_RandomVIP, gc_VIPFlag, gc_MinPlayers, gc_MOD_TAG, gc_MoneyForKill;
ConVar gc_Website;
ConVar gc_RandomVipType;
char MOD_TAG[64], WEB[64];

int g_iRound;

ArrayList pula_graczy;

public Plugin myinfo = 
{
	name = "ADEPT --> Losowy VIP",
	description = "Autorski Plugin StudioADEPT.net", 
	author = "Brum Brum", 
	version = "1.0", 
	url = "http://www.StudioADEPT.net/forum", 
};

public void OnPluginStart()
{
	pula_graczy = new ArrayList();
	gc_RandomVIP = CreateConVar("sm_vip_random_round", "1", "Runda w której ma wylosować vipa (rozgrzewka nie jest brana pod uwagę)");
	gc_VIPFlag = CreateConVar("sm_vip_random_flag", "o", "Flaga którą ma otrzymać vip");
	gc_MinPlayers = CreateConVar("sm_vip_random_player", "2", "Minimalna ilość graczy do wylosowania vipa");
	gc_Website = CreateConVar("sm_vip_random_website_name", "StudioADEPT.net", "Fraza wymagana w nicku.");
	gc_MOD_TAG = CreateConVar("sm_vip_random_tag", "ADEPT", "TAG pokazywany na czacie");
	gc_MoneyForKill = CreateConVar("sm_vip_money_for_kill", "340", "Ilość pieniędzy za killa z frazą w nicku");
	gc_RandomVipType = CreateConVar("sm_vip_type", "1", "1 - Losowanie Vip'a dla wszystkich 2 - Losowanie Vip'a dla osób z frazą w nicku.");
	gc_MOD_TAG.AddChangeHook(MOD_TAGNameChanged);
	gc_MOD_TAG.GetString(MOD_TAG, sizeof(MOD_TAG));
	gc_Website.AddChangeHook(WEBNameChanged);
	gc_Website.GetString(WEB, sizeof(WEB));
	HookEvent("round_start", Event_RoundStart);
	HookEvent("cs_win_panel_match", RestartRound);
	HookEvent("player_death", Event_PlayerDeath);
	AutoExecConfig(true, "ADEPT_LosowyVIP");
}

public void MOD_TAGNameChanged(ConVar convar, const char[] oldValue, const char[] newValue)
{
	Format(MOD_TAG, sizeof(MOD_TAG), newValue);
}
public void WEBNameChanged(ConVar convar, const char[] oldValue, const char[] newValue)
{
	Format(WEB, sizeof(WEB), newValue);
}

public Action Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
	if (IsWarmup())return;
	
	int Runda = gc_RandomVIP.IntValue;
	int MinPlayers = gc_MinPlayers.IntValue;
	int Players = GetPlayerCount();
	
	g_iRound++;
	if (g_iRound == Runda) {	
		if (Players >= MinPlayers)GetRandomVIP();
		else PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Jest zbyt mało graczy aby wylosować VIPa!", MOD_TAG);
	}
}

public Action RestartRound(Event event, const char[] name, bool dontBroadcast)
{
	g_iRound = 0;
}

public Action Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
	int attacker = GetClientOfUserId(event.GetInt("attacker"));
	if(!IsValidClient(attacker)) return Plugin_Continue;

	int money = GetEntProp(attacker, Prop_Send, "m_iAccount");
	
	if(!HaveFlag(attacker) && HaveWebSite(attacker))
		SetEntProp(attacker, Prop_Send, "m_iAccount", money + gc_MoneyForKill.IntValue);
		
	return Plugin_Continue;
}

void GetRandomVIP()
{
	int Random = GetRandomPlayer();
	PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Trwa losowanie VIP'a...", MOD_TAG);
	PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Trwa losowanie VIP'a...", MOD_TAG);
	PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Trwa losowanie VIP'a...", MOD_TAG);
	if (Random)
	{
		PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Losowym VIP'em zostaje \x02%N\x04 Gratulujemy!", MOD_TAG, Random);
		SetUserFlagBits(Random, GetUserFlagBits(Random) | GetFlag());
	}
	else PrintToChatAll("\x01\x0B★ \x07[%s -> Losowy VIP]\x04 Nie można wylosować VIP`a ponieważ na serwerze są same VIPY!", MOD_TAG);
}

bool HaveFlag(int client)
{
	int flag = GetFlag();
	
	if (GetUserFlagBits(client) & flag)return true;
	else return false;
}

int GetRandomPlayer()
{
	pula_graczy.Clear();
	for(int i = 1; i < MaxClients; i++)
	{
		if(IsValidClient(i))
		{
			if(gc_RandomVipType.IntValue == 1)
			{
				if(!HaveFlag(i))
					pula_graczy.Push(i);
			}
			else if(gc_RandomVipType.IntValue == 2)
			{
				if(!HaveFlag(i) && HaveWebSite(i))
					pula_graczy.Push(i);
			}
		}
	}


	if (pula_graczy.Length == 0)return 0;
	
	return pula_graczy.Get(GetRandomInt(0, pula_graczy.Length - 1));
}

bool HaveWebSite(int client)
{
	if (!IsValidClient(client))return false;
	
	char name[MAX_NAME_LENGTH];
	GetClientName(client, name, sizeof(name));
	
	if (StrContains(name, WEB, true) != -1)return true;
	else return false;
}

int GetPlayerCount()
{
	int count;
	for (int i = 1; i <= MaxClients; i++) {
		if (IsValidClient(i))count++;
	}
	
	return count;
}

int GetFlag()
{
	char flag[10];
	gc_VIPFlag.GetString(flag, sizeof(flag));
	
	return ReadFlagString(flag);
}

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

bool IsWarmup()
{
	int warmup = GameRules_GetProp("m_bWarmupPeriod", 4, 0);
	if (warmup == 1)return true;
	else return false;
}

 

 

  • Kocham to! 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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