Dokumentacja tworzenia komend w języku PHP
- Wysyłanie wiadomości
- Odczytywanie wiadomości uzytkownika
- Globalne zmienne
- Pobieranie danych użytkownika
- Wyszukiwanie użytkowników
- Edytowanie danych uzytkowników
- Pobieranie oraz edycja ustawień czatu
- Dodawanie rang
Wysyłanie wiadomości na czat
Do wysyłania wiadomości uyjemy klasy GGC oraz jej metody message, pamiętaj, aby wcześniej ją zainicjować. Pierwszy parametr metody to treść wiadomości, drugi (opcjonalny) numer uytkownika do którego ma trafić wiadomość lub tablica numerów.
$ggc = new GGC();
$ggc->message("Przykładowa wiadomość"); // Wiadomość do osoby uywającej komendy
$ggc->message("Przykładowa wiadomość", 123456); // Wiadomość do wybranego numeru GG (Numer musi przynajmniej raz napisać do czatu, aby wiadomość doszła)
$ggc->message("Przykładowa wiadomość", [123456, 6819810, 978913]); // Przykład wysłania do wielu numerów
$ggc->message("Przykładowa wiadomość", $aktywni); // Wiadomość wysłana do wszystkich zalogowanych
W komendach staraj się nie uzywać echo, korzystaj w powyzszych funkcji.
Odczytywanie wiadomości uzytkownika
Aby pobrać wiadomość wysłaną przez uzytkownika uzyj $parts, jest to tablica, kazde slowo jest rozdzielone. Np. uzytkownik wysyła wiadomość o treści "/kick nick powod"
print_r($parts);
// wyświetli
Array
(
[0] -> .kick
[1] -> nick
[2] -> powód
)
Jak widać $parts[0] zawsze będzie zawierać nazwę komendy, w ten sposób mozemy pobrać tyle argumentów komendy ile potrzebujemy lub połączyć wiadomość za pomocą implode(). ponizej prosta komenda wyświetlajaca tekst do zalogowanych osób
$ggc = new GGC();
if (!isset($parts[1])) {
// Sprawdzanie czy uzytkownik podał jakas wiadomość, $parts[0] nie bierzemy pod uwagę bo to nazwa komendy
$ggc->message("Podaj treść wiadomości");
} else {
unset($parts[0]); // usuwamy nazwe komendy z wiadomości
$msg = implode(" ", $parts); // łączymy tablice w wiadomość
$ggc->message($msg, $aktywni) // wysyłamy wiadomość
}
Kolejny przykład jak za pomocą $parts odczytac wiadomość aby np. wpisując /komenda 1 wykonać jeden kod a wpisując /komenda 2 inny
$ggc = new GGC();
$cmd = isset($parts[1]) ? $parts[1] : '';
if ($cmd == 1) {
// kod wykonywany po wpisaniu /komenda 1
} else if ($cmd == 2) {
// kod wykonywany po wpisaniu /komenda 2
} else {
$ggc->message("Wpisz /komenda 1 lub 2");
}
Globalne zmienne
W kodzie komendy mozesz uzywać następujących zmiennych:
Zmienna | Wartośc |
---|---|
$from | Numer GG uzytkownika który uzywa komende |
$to | Numer czatu |
$user | Dane uzytkownika który uzywa komende zawarte w tablicy (patrz Pobieranie danych uytkownika) |
$nick | Nick uzytkownika ktory uzywa komende, bez widocznych rang, znaczku itd. |
$nickk | Nick uzytkownika ktory uzywa komende, z widocznymi rangami, znaczkami itd. |
monety2 | Nagroda w postaci monet za osiągniecie kolejnego lvlu |
exp | Aktualne exp |
exp2 | Wymagane exp do następnego poziomu |
ban | Czy uytkownik ma bana (1 lub 0) |
ban_start | Data nadania bana w UNIX |
Pobieranie danych użytkownika
Do pobierania danych uzywamy klasy Users, jeśli chcemy pobrać dane jednego uzytkownika po numerze lub nicku uzyjemy metody get. Przykład:
$users = new Users();
$dataUser = $users->get(123456); // zamiast numeru mozemy podać nick, w przypadku nie znalezienia uzytkownika metoda zwróci wartość false
print_r($dataUser);
// wynik
[top1] => 24263
[top2] => 82652
[top3] => 382330
[rejestracja] => 1508949125
[aktywny] => 1722273351
[ban] => 0
[ban_start] => 1706812682
[ban_czas] => 0
[ban_kto] => 0
[ban_powod] => 0
[poziom] => 3
[exp] => 201
[exp2] => 230
[monety] => 1000
[monety2] => 4900
[spy] => 0
[slub] => 1
[vip] => 0
[poleca] => 1
[poleca_data] => 1658667258
[polecani] => 1
[ankieta] => 0
[zgodapriv] => 1
[zgoda_priv] => 1
[mute] => 0
[mute_kto] => 0
[mute_czas] => 0
[mute_powod] => 0
[typ] => 1
[zw] => 0
[quitczas] => 1634474211
[rozsypanka] => Woda
[avatar] => 0
[autokorekta] => 0
[spadalec] => 60891898
[spadalec_ruch] => 1
[spadalec_gotowy] => 0
[spadalec_proby] => 10
[WYPISZ] => 0
[poleca_nr] => 65416356
[klucze] => 9238
[rozsypanka_czas] => 0
[diamenty] => 30
[wlasciciel] => 1
[glowny_wl] => 1
[priv] => 1
[ocena] => 0
[logowania] => 236
[skr_podania] => 1
[skr_globale2] => 1
[msg_admins] => 0
[ostatnia_zmiana_staffu] => 1667130281
[token] => 7f2c507f0d78d4503e221b3f88d4cb32ad6f9379c94ad78e4c
[time_spent] => 6
)
Powyzszy kod zwróci tablice z danymi uytkownika
Parametr | Opis |
---|---|
numer | Numer GG uzytkownika |
nick | Nick uzytkownika |
rejestracja | Czas rejetracji zapisana w formacie UNIX |
aktywny | Czas ostatniej aktywności w formacie UNIX |
monety | Monety uzytkownika |
monety2 | Nagroda w postaci monet za osiągniecie kolejnego lvlu |
exp | Aktualne exp |
exp2 | Wymagane exp do następnego poziomu |
ban | Czy uytkownik ma bana (1 lub 0) |
ban_start | Data nadania bana w UNIX |
Wyszukiwanie użytkowników
Do wyszukiwania użytkowników również użyjemy klasy Users. Metody do obsługi poniżej:
$users = new Users();
$users->setSearchValue([parametr], [operator], [wartość]); // Ustawiamy parametry które ma spełnić wyszukiwanie, Parametrów używamy tych samych jak w "Pobieranie danych użytkownika", operatorem moze byc np. =, >, <
$users->setSearchLimit([limit]); // Ustawiamy limit wyników, Domyślnie 100
$result = $users->getSearchUser(); // Pobieramy wyniki, Wynikiem bedzie tablica z danymi uzytkowników, lub false w przypadku braku wyników
$users->clear(); // Resetujemy filtry
Gdy chcesz wyszukać uzytkownika po numerze gg lub nicku, skorzystaj z gotowej metody get() opisanej wcześniej. Ponizej przykład komendy wyświetlajacej liste osob ktorzy maja bana:
$ggc = new GGC();
$users = new Users();
$users->setSearchValue('ban', '=', '1'); // Szukamy osob ktore posiadaja ban = 1`
$results = $users=>getSearchValue(); // Pobieramy wyniki
$users->clear(); // Czyścimy filtry
if ($results) {
$message = "Osoby posiadające bany:\n\n";
foreach ($results as $index => $dataUser) {
$nick = $dataUser['nick'];
$data = date('d.m.Y', $dataUser['ban_start']);
$message .= "$nick - $data"; // Dodawanie do listy
}
$ggc->message($message);
} else {
$ggc->message("Aktualnie nie ma zadnych banów");
}
Edycja danych uzytkowników
Edytowanie uzytkowników musimy łączyć z metodami wyszukiwania, od razu przejdzmy do przykładu. Komenda zmieniająca opis uzytkownika, uzycie komendy będzie następujące: /zmienopis nick nowy opis
$ggc = new GGC();
$users = new Users();
if(!isset($parts[2])) {
$ggc->message("Wpisz /zmienopis nick nowy opis");
} else if (!$dataUser = $user->get($parts[1])) { // wyszukiwanie uzytkownika po nicku lub numerze
$ggc->message("Podany uzytkownik nie istnieje");
} else {
$gg = $dataUser['numer']; // pobieramy numer gg uzytkownika
$users->setValuesSearch('numer', '=', $gg); // szukamy uzytkownika po numerze
$users->setLimitSearch(1); // Zmieniamy limit wyszukiwania na 1
$result = $users->getSearchUsers();
if ($result) { // uzytkownik znaleziony, mozemy edytować
$users->setUpdateValues('opis', $text); // Zmieniamy opis
$users->updateValuesUsers(); // zapisujemy nowe dane uzytkownika
$users->clear(); // pamietaj o resetowaniu
$ggc->message("Twój opis został zmieniony.", $gg); // wysłanie powiadomienia
$ggc->message("Zmieniono opis");
} else {
$ggc->message("Wystąpił błąd");
}
}
Chcesz zmienić więcej danych? Nie ma problemu, mozesz uzywać kilka razy metody setUpdateValues
...
$users->setUpdateValues('opis', 'Nowy opis');
$users->setUpdateValues('spy', 0); // wyrzucenie ze spy
...
Pobieranie oraz edytowanie ustawień czatu
Do pobrania ustawień czatu uzyjemy klasy GGC oraz jej metody getChatData() Wynikiem będzie tablica z ponizszymi ustawieniami:
$ggc = new GGC();
$dataChat = $ggc->getChatData();
print_r($dataChat);
Dodawanie rang
Aby dodać nową rangę na czat skorzystamy z klasy Ranks i jej metody addRang
$ranks = new Ranks();
$result = $ranks->addRank(
"Nazwa rangi",
"Znaczek rangi",
0, // Cena rangi w postaci monet w sklepie, jeśli wpiszesz 0 to nie będzie widoczna w komendzie /sklep
10 // Automatyczne nadanie rangi od osiagniętego poziomu, w tyym przypadku otrzyma ją kazdy uzuykownik który osiągnie 10 poziom
);
print_r($result); // Jeśli rangę uda się dodać, wynikiem będzie ID nowej rangi, w innym przypadku zwróci false
Przykład komendy dodającą nową rangę. Uzycie /nowaranga [Nazwa rangi]|[Znaczek rangi]
$ggc = new GGC();
if (!isset($parts[1])) {
$ggc->message("Wpisz $parts[0] [Nazwa rangi]|[Znaczek rangi]");
} else {
unset($parts[0]); // usuwamy nazwę wpisanej komendy z wiadomosci
$message = implode(" ", $parts); // Łączymy $parts w jeden ciąg słow
// Parsowanie argumentów
$args = explode('|', $message, 2);
if (!isset($args[1])) {
// Sprawdzanie czy podano Nazwe i znaczek oddzielony znakiem |
$ggc->message("Wpisz $parts[0] [Nazwa rangi]|[Znaczek rangi]");
} else {
$name = $args[0]; // Nazwa rangi
$sign = $args[1]; // Znaczek rangi
$ranks = new Ranks();
$rankID = $ranks->newRank($name, $sign); // Tworzymy nową rangę
if ($rankID) {
$ggc->message("Została utworzona nowa ranga $name, jej ID to $rankID");
} else {
$ggc->message("Nie udało się dodać rangi");
}
}
}