Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Rezerwacja nicku


  • Zamknięty Temat jest zamknięty
Brak odpowiedzi do tego tematu

#1 SeeK

    Wszechobecny

  • Użytkownik

Reputacja: 192
Profesjonalista

  • Postów:438
Offline

Napisano 07.07.2011 12:26

Ostatnio zacząłem pisać plugin, który uniemożliwia innym graczom posiadania takiego samego nicku jak admin, ale żeby w tym samym czasie admin mógł grać na fake'ach i wciąż swoje funkcje mieć. Na razie wykombinowałem tak, że plugin pobiera nick każdego gracza, który dołącza do serwera i porównuje go z nickami adminów, jeżeli jest taki sam to sprawdza steamid, jeżeli jest inne niż admina, to kickuje tego gracza. I to by było tak ogólnie.

Teraz tak, mój plugin jest strasznie toporny na razie i chciałbym go przerobić tak, żeby wczytywał z pliku tekstowego nicki adminów, aby nie trzeba było wszystkiego wklepywać do pluginu. Znalazłem do tego taki kawałek kodu.

IsPlayerInFile(playerid, filename[])
{
    // Jeśli plik nie istnieje lub gracza nie ma na serwerze, to zwracamy, że nie ma go w pliku.
    if(!fexist(filename) || !IsPlayerConnected(playerid))
    {
        return false;
    }

    // Pobieramy nick gracza.
    new _name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, _name, sizeof(_name));

    // Otwieramy plik do odczytu.
    new File:fhnd = fopen(filename, io_read);
    
    // Deklarujemy tablicę, w której będziemy przechowywać pobraną linię z pliku. Zakładamy, że są tam same nicki, więc nie potrzeba nam tablicy większej jak długość nicka.
    new line[MAX_PLAYER_NAME];
    
    // Czytamy do końca pliku po jednej linii.
    while(fread(fhnd, line))
    {
        // Jeśli w danel linii zapisany jest nick gracza, to...
        if(strcmp(line, _name, false) == 0)
        {
            // ... zwracamy prawdę.
            return true;
        }
    }

    // Jeśli cały plik został sprawdzony i nie ma tam nicka sprawdzanego gracza, to zwracamy fałsz, że takiego gracza nie ma w takim pliku.
    return false;
}

if(IsPlayerInFile(playerid, "mojplik.txt"))
{
    //tutaj odbywa się sprawdzanie steam id
}

Aczkolwiek podczas kompilacji wyskakują mi błędy, zapewne dlatego, iż nie mam załadowanych odpowiednich bibliotek, tylko jakie biblioteki tu są potrzebne?

Następna rzecz, czy mógłby mi ktoś wyjaśnić na czym polega funkcja "IsPlayerAdmin"? Czy będzie ona lepiej działała niż porównywanie steamid?

Kod który na razie skleciłem:
#include <amxmod>

new userid

public plugin_init()
{
    register_plugin("Pogoda","1.0","SeeK")
}

	stock kick_user(index, const sPowod[]){
        new sName[32];
        get_user_name(index, sName, sizeof sName - 1);
        
        server_cmd("amx_kick ^"%s^" ^"%s^"", sName, sPowod);
}

public client_connect(id)
{
	userid = id
	new name[18]
	get_user_name(id, name, 17)
	if(name[0] == 'S' && name[1] == 'e' && name[2] == 'e' && name[3] == 'K')
	{
		new szSteamId[35];
		get_user_authid( id, szSteamId, 34 );
		if(szSteamId[10] == '2' && szSteamId[11] == '1' &&
		szSteamId[12] == '9' && szSteamId[13] == '8' &&
		szSteamId[14] == '4' && szSteamId[15] == '5' &&
		szSteamId[16] == '5' && szSteamId[17] == '2')
		{
		}
		else
		{
			set_task(5.0, "kick")
		}
	}
	return PLUGIN_HANDLED
}

public kick()
{
	kick_user(userid, "Zmien nick");
}

  • +
  • -
  • 0
https://sklep-sms.pl - Sklep SMS pozwala zarabiać na swoich serwerach gier opartych o silniki AMX Mod X oraz SOURCEMOD
https://nalunch.com - A Ty, gdzie pójdziesz dziś na lunch?




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych