Ilovenoobs Opublikowano Kwiecień 23, 2017 o 15:08 Udostępnij Opublikowano Kwiecień 23, 2017 o 15:08 (edytowane) 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 Kwiecień 23, 2017 o 15:19 przez Ilovenoobs Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę