Skocz do zawartości
ByczekTV

[ROZWIĄZANY]Przypisywanie do zmiennej

Rekomendowane odpowiedzi

Cześć, mam pewne pytanie...

Wiem tyle, że gdybym miał robić NP: Frakcje, czy też rangi, to najpierw robię zmienną, a potem do niej cokolwiek przypisuję.

Co do zmiennych, jak i rang czy frakcji skorzystam z jakiegoś poradnika, ale nie wiem jak przypisać komendę do zmiennej np:

/Kopnij [id] [Powód] (kick) dla admina...

Mam także jeszcze jedno pytanie :)

Używamy ,,playerid" wtedy, gdy chcemy użyć tej funkcji na graczu, który wpiszę komendę np:

Gdy gracz wpiszę /kopnij to go wywali z serwera.

A co zrobić, by właśnie używać np /kopnij (ID) ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
17 minut temu, ByczekTV napisał:

Cześć, mam pewne pytanie...

Wiem tyle, że gdybym miał robić NP: Frakcje, czy też rangi, to najpierw robię zmienną, a potem do niej cokolwiek przypisuję.

Co do zmiennych, jak i rang czy frakcji skorzystam z jakiegoś poradnika, ale nie wiem jak przypisać komendę do zmiennej np:

/Kopnij [id] [Powód] (kick) dla admina...

Mam także jeszcze jedno pytanie :)

Używamy ,,playerid" wtedy, gdy chcemy użyć tej funkcji na graczu, który wpiszę komendę np:

Gdy gracz wpiszę /kopnij to go wywali z serwera.

Nic nie zrozumiałem co ty tu napisałeś.

 

17 minut temu, ByczekTV napisał:

A co zrobić, by właśnie używać np /kopnij (ID) ?

CMD:kopnij( playerid, params[] )

{

 if( isnull( params ) ) return SendClientMessage(playerid, -1, " /Kopnij [ id_gracza ]");

 new player = strval(params);

 if(player == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Ten gracz nie jest podłączony.");

Kick( player );

return true;

}

 

Edytowane przez Dejv

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

" A co zrobić, by właśnie używać np /kopnij (ID) ? "

Opiszę Ci to na przykładzie tej komendy licząc, że następnie będzie robił już sam.

Używam include zcmd & sscanf2.

CMD:kick(playerid, cmdtext[])
{
    new player, reason[64]; //Tworzysz dwie zmienne. Gracza, oraz tekst.
    sscanf(cmdtext, "us[64]", player, reason) //u - możesz wpisać nick gracza, jak i jego ID, a s[64] to tekst, gdzie w tablicy (nawiasie kwadratowym) jest podana jego długość, taka sama jak w tworzeniu zmiennej
    SendClientMessage(player, -1, reason); //wysyłamy tekst do gracza, którego chcemy wyrzucić - player - z kolorem -1
    SetTimerEx("KickPlayer", 1000, false, "u", player); //tworzymy timer, bo gdybysmy chcieli od razu po tym uzyc KickPlayer, to wiadomosc wyzej nie zostala by wyslana #synchro#sampa
    return 1;
}

KickPlayer(playerid)
{
    Kick(playerid);
    return 1;
}

 

//Edit, żeby nie było niedomówień - specjalnie podałem /kick, bo resztę sobie zrobi bez timerów - bo na logikę - jest to prostsze, a tu ma wszystko wytłumaczone.

Edytowane przez DaGaXeR

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
4 minuty temu, DaGaXeR napisał:

" A co zrobić, by właśnie używać np /kopnij (ID) ? "

Opiszę Ci to na przykładzie tej komendy licząc, że następnie będzie robił już sam.

Używam include zcmd & sscanf2.

CMD:kick(playerid, cmdtext[])
{
    new player, reason[64]; //Tworzysz dwie zmienne. Gracza, oraz tekst.
    sscanf(cmdtext, "us[64]", player, reason) //u - możesz wpisać nick gracza, jak i jego ID, a s[64] to tekst, gdzie w tablicy (nawiasie kwadratowym) jest podana jego długość, taka sama jak w tworzeniu zmiennej
    SendClientMessage(player, -1, reason); //wysyłamy tekst do gracza, którego chcemy wyrzucić - player - z kolorem -1
    SetTimerEx("KickPlayer", 1000, false, "u", player); //tworzymy timer, bo gdybysmy chcieli od razu po tym uzyc KickPlayer, to wiadomosc wyzej nie zostala by wyslana #synchro#sampa
    return 1;
}

KickPlayer(playerid)
{
    Kick(playerid);
    return 1;
}

 

//Edit, żeby nie było niedomówień - specjalnie podałem /kick, bo resztę sobie zrobi bez timerów - bo na logikę - jest to prostsze, a tu ma wszystko wytłumaczone.

Dodaj tylko [.code] bo ciezko sie czyta :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
11 minut temu, Dejv napisał:

Nic nie zrozumiałem co ty tu napisałeś.

 


CMD:kopnij( playerid, params[] )

{

 if( isnull( params ) ) return SendClientMessage(playerid, -1, " /Kopnij [ id_gracza ]");

 new player = strval(params);

 if(player == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Ten gracz nie jest podłączony.");

Kick( player );

return true;

}

 

No mogłeś nie zrozumieć xD

Już tłumaczę...

Chodzi mi o to, że z moich wiadomości wynika, iż żeby zrobić jakąś grupę - NP MOD, ADMIN, J@ , POLICJANT etc to robimy zmienną.

Aby dana komenda była dla policjanta np /skuj to przypisujemy to do zmiennej

A ja nie wiem, jak przypisać do zmiennej ^^

Nawet nie wiem zbytnio jak zrobić zmienną, aby była ta grupa, dlatego będę szukał poradników xd

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Najprościej będzie jak poszukasz sobie jakiś skrypt i go że tak powiem 'poczytasz' jak to jest zrobione i z czym to się je.

Na pawno.pl jest dużo takich skryptów na frakcje.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Hmm, opisywałem już gdzieś w którymś problemie "Jak zrobić frakcje" to i tutaj napiszę.

Wystarczy zmienna:

new gTeam[MAX_PLAYERS];

// Oraz dla ułatwienia definicje id frakcji
#define TEAM_NONE		0
#define TEAM_POLICE		1
#define TEAM_MEDIC		2

 

Teraz czy komendę może użyć policjant możesz sprawdzić takim sposobem:

CMD:skuj(playerid, params[])
{
	if(gTeam[playerid] != TEAM_POLICE) // warunek sprawdza czy gracz nie jest policjantem 
		return SendClientMessage(playerid, -1, "Nie jesteś policjantem."); // informacja dla gracza, że nie jest policjantem przez co nie może użyć komendy

	// jeśli jest policjantem kod dalej się wykonuje i skuwa gracza.
	return 1;
}

 

Edytowane przez Nortal

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ja tylko dodam, żeby nie sprawdzać czy gracz jest podłączony w ten sposób:

 

Cytuj

 


 if(player == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Ten gracz nie jest podłączony.");

Sprawdzi się to tylko gdy zmienna player będzie wynosiła 65535 (bo INVALID_PLAYER_ID to nic innego jak definicja 0xFFFF)

Oczywiście używa się tego w wielu przypadkach, gdy wykonujemy funkcję np. funkcja GetPlayerTargetPlayer zwraca INVALID_PLAYER_ID gdy gracz na nikogo nie celuje, ale w tym przypadku należy użyć IsPlayerConnected(playerid) które sprawdza czy podany playerid jest podłączony do serwera.

Edytowane przez .silent

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.

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×