Skocz do zawartości
RevDev

[Rozwiązane] Nie działa darmowy vip w godzinach za frazę w nicku

Rekomendowane odpowiedzi

#pragma semicolon 1

#include <sourcemod>
#include <cstrike>
#include <sdktools>
#include <sdkhooks>
#include <multicolors>

#pragma newdecls required

public Plugin myinfo = 
{
	name = "Bonus za nick", 
	author = "XXX", 
	description = "Dodaje graczą dodatkowy hajs za dodanie w nicku", 
	version = "1.0.1"
};

ConVar g_CvarRewardNick, gg_OdGodziny, gg_DoGodziny, gg_VipActive, g_CvarMatchCase;
int DarmowyVip = 0;

public void OnPluginStart()
{
	HookEvent("round_start", Event_RoundStart);
  
	g_CvarRewardNick = CreateConVar("sm_reward", "Google.pl", "Fraza za ktora dostaje sie nagrody");
	g_CvarMatchCase = CreateConVar("sm_reward_match", "0", "");
	gg_VipActive = CreateConVar("sm_reward_vip_active", "1", "Czy Vip w nocy ma być aktywny?");
	gg_OdGodziny = CreateConVar("sm_reward_vip_odgodziny", "24", "Od ktorej godziny ma dawac vipa?");
	gg_DoGodziny = CreateConVar("sm_reward_vip_dogodziny", "6", "Do ktorej godziny ma dawac vipa?");
}

public void OnClientAuthorized(int client) {
	if(IsValidClient(client)) {
		char name[MAX_NAME_LENGTH], advert[MAX_NAME_LENGTH];
	
		GetClientName(client, name, sizeof(name));
		g_CvarRewardNick.GetString(advert, MAX_NAME_LENGTH);
		
		if (StrContains(name, advert, GetConVarBool(g_CvarMatchCase)) == -1)
		{
			return;
		}
		if(DarmowyVip) {
			AddUserFlags(client, Admin_Reservation);
		}
		else {
			RemoveUserFlags(client, Admin_Reservation);
		}
	}
	
}
bool IsValidClient(int client)
{
	return 0 < client <= MaxClients && IsClientInGame(client);
}
public Action Event_RoundStart(Event hEvent, const char[] chName, bool bDontBroadcast)
{	
	int client = GetClientOfUserId(hEvent.GetInt("userid"));
	char name[MAX_NAME_LENGTH], advert[MAX_NAME_LENGTH];
	
	GetClientName(client, name, sizeof(name));
	g_CvarRewardNick.GetString(advert, MAX_NAME_LENGTH);
	
	if (StrContains(name, advert, GetConVarBool(g_CvarMatchCase)) == -1)
	{
		return;
	}
	if (GetConVarBool(gg_VipActive))
	{
		int gg_od_godziny = GetConVarInt(gg_OdGodziny);
		int gg_do_godziny = GetConVarInt(gg_DoGodziny);
		if(gg_od_godziny || gg_do_godziny)
		{
			char godzina_str[8];
			FormatTime(godzina_str, sizeof(godzina_str), "%H", GetTime());
			int godzina = StringToInt(godzina_str);
			if(gg_od_godziny > gg_do_godziny)
				DarmowyVip = (godzina >= gg_od_godziny || godzina < gg_do_godziny)? 1: 0;
			else
				DarmowyVip = (godzina >= gg_od_godziny && godzina < gg_do_godziny)? 1: 0;
		}
		else
			DarmowyVip = 0;
	}
}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Lubię to! 2
  • Dobry pomysł! 2
Napisano (edytowane)

Dodajesz flagi w momencie kiedy gracz wchodzi na serwer. Dodawaj/zabieraj je po starcie rundy. 

Spoiler
#pragma semicolon 1

#include <sourcemod>
#include <cstrike>
#include <sdktools>
#include <sdkhooks>
#include <multicolors>

#pragma newdecls required

public Plugin myinfo = 
{
	name = "Bonus za nick", 
	author = "XXX", 
	description = "Dodaje graczą dodatkowy hajs za dodanie w nicku", 
	version = "1.0.1"
};

ConVar g_CvarRewardNick, gg_OdGodziny, gg_DoGodziny, gg_VipActive, g_CvarMatchCase;
int DarmowyVip = 0;

public void OnPluginStart()
{
	HookEvent("round_start", Event_RoundStart);
  
	g_CvarRewardNick = CreateConVar("sm_reward", "Google.pl", "Fraza za ktora dostaje sie nagrody");
	g_CvarMatchCase = CreateConVar("sm_reward_match", "0", "");
	gg_VipActive = CreateConVar("sm_reward_vip_active", "1", "Czy Vip w nocy ma być aktywny?");
	gg_OdGodziny = CreateConVar("sm_reward_vip_odgodziny", "24", "Od ktorej godziny ma dawac vipa?");
	gg_DoGodziny = CreateConVar("sm_reward_vip_dogodziny", "6", "Do ktorej godziny ma dawac vipa?");
}

bool IsValidClient(int client)
{
	return 0 < client <= MaxClients && IsClientInGame(client);
}

public Action Event_RoundStart(Event hEvent, const char[] chName, bool bDontBroadcast)
{	
	if (GetConVarBool(gg_VipActive))
	{
		int gg_od_godziny = GetConVarInt(gg_OdGodziny);
		int gg_do_godziny = GetConVarInt(gg_DoGodziny);
		if(gg_od_godziny || gg_do_godziny)
		{
			char godzina_str[8];
			FormatTime(godzina_str, sizeof(godzina_str), "%H", GetTime());
			int godzina = StringToInt(godzina_str);
			if(gg_od_godziny > gg_do_godziny)
				DarmowyVip = (godzina >= gg_od_godziny || godzina < gg_do_godziny)? 1: 0;
			else
				DarmowyVip = (godzina >= gg_od_godziny && godzina < gg_do_godziny)? 1: 0;
		}
		else
			DarmowyVip = 0;
		
		CreateTimer(1.0, AddFlags, _, TIMER_FLAG_NO_MAPCHANGE);
	}
}

public Action AddFlags(Handle timer, any client) {
	if(IsValidClient(client)) {
		char name[MAX_NAME_LENGTH], advert[MAX_NAME_LENGTH];
		GetClientName(client, name, sizeof(name));
		g_CvarRewardNick.GetString(advert, MAX_NAME_LENGTH);
		
		if (StrContains(name, advert, GetConVarBool(g_CvarMatchCase)) == -1)
			return;
		if(DarmowyVip)
			AddUserFlags(client, Admin_Reservation);
		else
			RemoveUserFlags(client, Admin_Reservation);
	}
}

 

 

Edytowane przez Paweł

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wiadomość wygenerowana automatycznie

 

Temat został zamknięty. Powodem jest całkowite rozwiązanie problemu zawartego w temacie.

 

Jeśli się z tym nie zgadzasz, zaraportuj ten post z prośbą o ponowne otwarcie i kontynuację dyskusji.

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