Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

Blokowanie graczowi ruchu, gdy...


Ilovenoobs
 Udostępnij

Rekomendowane odpowiedzi

A więc ten prosty plugin powstał, by blokować jednemu z graczy na moim serwerze ruch i pokazać mu kto tu rządzi :D.

Działa on prosto, dopóki gracz nie wpisze wpisanej w kod frazy, nie może się ruszać.

Był pisany na szybko, więc nie ma co zbyt dużo oczekiwać.

#include <sourcemod>
#include <sdkhooks>
#include <sdktools>
 
Handle zabawy_on; //rejestruje cvar od zabaw, by wiedzieć, czy np nie trwa chowany/ganiany/berek
bool begforforgivness[MAXPLAYERS+1] = false; //Rejestruje dla każdego gracza wartość fałsz dla begforforgivness
 
public void OnPluginStart() //wywoływane na starcie pluginu
{
	RegConsoleCmd("say", lassakbegsforit, "Taking text from lassak"); //pobiera tekst z chatu "lassaka"
	HookEvent("player_spawn", 	lassakspawn, EventHookMode_Post); //rejestruje spawn lassaka
}
 
public void OnConfigsExecuted()
{
	zabawy_on = FindConVar("sm_noobs_zabawy_on"); //pobiera wartość cvara od zabaw
}
 
public Action lassakspawn(Handle event, const char[] name, bool dontBroadcast) //wywołane po spawnie gracza
{
	int client = GetClientOfUserId(GetEventInt(event, "userid")); //pobiera ID gracza przy spawnie
	if (begforforgivness[client]) CreateTimer(5.0, lassakblocker, client); //Jeśli do ID gracza przypisana jest prawda, tworzy timer z blokowaniem
}
 
public Action lassakblocker(Handle tmr, any client) //timer, który tworzy się, jeśli zespawnił się jakiś lassak, wywołuje się po 5 sekundach jak wyżej
{
	SetEntityMoveType(client, MOVETYPE_NONE); //Zabiera lassakowi możliwość ruszania się.
	PrintToChat(client, " \x02 A teraz ladnie napisz: Noobs moim panem"); //ładnie przedstawia warunki przywrócenia mu ruchu
}

public Action lassakblockertekst(Handle tmr, any client)//timer, który tylko wyśle tekst, jeśli wejdzie na serwer jakiś lassak, by nie blokować mu ruchu 2 raz
{
    PrintToChat(client, " \x02 A teraz ladnie napisz: Noobs moim panem");//Znowu pisze tekst z warunkami
}

public void OnClientPostAdminCheck(int client) //wywołane po dołączeniu gracza na serwer
{
    char jegoname[32]; //rejestruje tekst z nickiem gracza
    GetClientName(client, jegoname, sizeof(jegoname)); //wysyła nick gracza do powyższego tekstu
    if(StrContains(jegoname, "lassak")) //sprawdza, czy w nicku jest napisane lassak
    {
        begforforgivness[client]    =    true; //przypisuję graczowi prawdę, czyli kod wyżej zadziała na niego
        CreateTimer(15.0, lassakblockertekst, client); //tworzy timer jak wyżej, ale tym razem tylko na tekst i 15 sekund, bez zatrzymywania
    }
}

public Action lassakbegsforit(int client, int args) //pobieranie tekstu z chatu gracza 
{ 
	if (begforforgivness[client])    // sprawdza, czy gracz ma przypisaną prawdę, czyli jest lassakiem 
	{
		char begging[1024]; //rejestruje tekst z jego chatem 
		GetCmdArgString(begging, sizeof(begging)); //wysyła tekst z jego chatu to powyższego tekstu 
		if(StrContains(begging, "Noobs moim panem") > 0) // sprawdza, czy w tym tekście jest słowo klucz 
		{ 
			if (!GetConVarBool(zabawy_on)) SetEntityMoveType(client, MOVETYPE_ISOMETRIC); //Pozwala mu się poruszać, jeśli nie ma zabawy w trakcie
			begforforgivness[client] = false; //Zdejmuje z niego brzemię lassaka, by więcej go nie blokować i nie spamić mu na chacie 
			PrintToChat(client, " \x04 Tak, masz racje"); //Stwierdza oczywisty fakt 
		} 
		else if(StrContains(begging, "noobs moim panem") > 0) // sprawdza, czy w tym tekście jest słowo klucz 
		{
			if (!GetConVarBool(zabawy_on)) SetEntityMoveType(client, MOVETYPE_ISOMETRIC); //Pozwala mu się poruszać, jeśli nie ma zabawy w trakcie 
			begforforgivness[client] = false; //Zdejmuje z niego brzemię lassaka, by więcej go nie blokować i nie spamić mu na chacie 
			PrintToChat(client, " \x04 Tak, masz racje"); //Stwierdza oczywisty fakt 
		}
		else //jeśli brak słowa klucz w tekście 
		{ 
			PrintToChat(client, " \x04 Oops, zly tekst"); //informuje go o błędzie 
			PrintToChat(client, " \x04 Oops, zly tekst, napisales %s, a powinienes Noobs moim panem", begging); //pokazuje mu jego pomyłkę 
		}
	}

Dodam, że komentarze były pisane z myślą o przekazaniu tego nie-programistom :P

Tak wiem, że można to obejść pisząc np. NIE noobs moim panem, ale nie skupiamy się tu na obejściach, ale na samej idei .

Edytowane przez Ilovenoobs
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
 Udostępnij

×
×
  • Dodaj nową pozycję...