Skocz do zawartości
Minokon

Logowanie w okienku (SA-MP 0.3)

Rekomendowane odpowiedzi

Witajcie!

Dziś opiszę wam jak zrobić takie okienko w którym można się logować, coś takiego jak LS-RP

Poradnik polecam troche obeznanym w Pawn

Opiszę na podstawie mojego systemu rejestracji, musicie sobie pozmieniać

Na początek w publicu OnPlayerConnect:

if(dini_Exists(udb_encode(PlayerName)))
{
TogglePlayerControllable(playerid, false);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Zaloguj się", "Istnieje konto o twoim nicku\nMusisz się zalogować", "Zaloguj", "Anuluj");
zalogowany[playerid] = 0;
}
Opisuję: if(dini_Exists(udb_encode(PlayerName))) - sprawdza czy konto gracza istnieje TogglePlayerControllable(playerid, false); - blokuje graczowi możliwość ruchu Teraz najważniejsze: ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Zaloguj się", "Istnieje konto o twoim nicku\nMusisz się zalogować", "Zaloguj", "Anuluj"); - wyświetla okienko: playerid - id gracza 1 - id okienka DIALOG_STYLE_INPUT - styl okienka (style) "Zaloguj się" - tytuł okienka "Istnieje konto o twoim nicku\nMusisz się zalogować" - tekst opisowy (tzn. w środku) "Zaloguj", "Anuluj" - możliwe opcje Następnie na dole mapy dodajemy nowy public:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1)
{
new PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
if(response == 0)
{
SendClientMessage(playerid, KOLOR_CZERWONY, "Anulowałeś! Zostajesz wyrzucony");
Kick(playerid);
}
else
{
if(udb_hash(inputtext) == dini_Int(udb_encode(PlayerName),"Haslo"))
{
TogglePlayerControllable(playerid, true);
zalogowany[playerid] = 1;
}
else
{
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Zaloguj się","Nieprawidłowe hasło!\nSpróbuj jeszcze raz","Zaloguj","Anuluj");
}
}
}
return 1;
}

Opisuję:

if(dialogid == 1) - id dialogu które podaliśmy

if(response == 0) - co ma się dziać gdy gracz wciśnie "Anuluj" (response 1 to "Zaloguj")

if(udb_hash(inputtext) == dini_Int(udb_encode(PlayerName),"Haslo")) - sprawdza hasło

TogglePlayerControllable(playerid, true); - odblokowywuje gracza

zalogowany[playerid]=1; - ustawia że jest zalogowany

ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Zaloguj się","Nieprawidłowe hasło!\nSpróbuj jeszcze raz lub wciśnij Anuluj","Zaloguj","Anuluj"); - wyświetla okienko gdy hasło będzie nieprawidłowe

Mam nadzieję że poradnik się przyda xD

Pozdrawiam, Minokon

@EDIT

Proszę, walnąłem fotkę tego okienka dla was :D

okienkosamp.png

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

bo niektórzy mają mózg i chcą się czegoś nauczyć

// 900 post

może i masz mózg, nie wiadomo 8) poradnik jest dobry i się czepiasz..

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

jak byś nie wiedział dini ma system kodowania ten "udb_hash" i trochę głupim pomysłem było by porównywanie tekstu używając strcmp, strval(dini_Get to kolejny deb*** wynikający z niewiedzy jest coś takiego ja dini_Int

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

dało by sie to jakos łatwo przerobic do mysql ? tutaj jest samo logowanie wiec wystarcyzło by zeby zamiast z z pliku odczytywało z bazy, a rejestracje zrobiłbym na stronie internetowej, jak to zmienic na odczytywanie z mysql ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Heh, no to muszę wypisać:

if(dini_Exists(udb_encode(PlayerName)))
{
TogglePlayerControllable(playerid, false);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Zaloguj się", "Istnieje konto o twoim nicku\nMusisz się zalogować", "Zaloguj", "Anuluj");
zalogowany[playerid] = 0;
}
brakuje definicji PlayerName (nie jest globalnie) oraz brak informacji o
new zalogowany[MAX_PLAYERS];

hmm i nie ma rejestracji, jest tylko logowanie :D

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dokładnie jak w tutku robie ui cośtakiego przy kompilacij:

F:\Pliki Kamila $Nie wchodzic$\samp server\pawno\SAMP\friendly game.pwn(56) : error 017: undefined symbol "dini_Exists"
F:\Pliki Kamila $Nie wchodzic$\samp server\pawno\SAMP\friendly game.pwn(60) : error 017: undefined symbol "zalogowany"
F:\Pliki Kamila $Nie wchodzic$\samp server\pawno\SAMP\friendly game.pwn(60) : warning 215: expression has no effect
F:\Pliki Kamila $Nie wchodzic$\samp server\pawno\SAMP\friendly game.pwn(60) : error 001: expected token: ";", but found "]"
F:\Pliki Kamila $Nie wchodzic$\samp server\pawno\SAMP\friendly game.pwn(60) : error 029: invalid expression, assumed zero
F:\Pliki Kamila $Nie wchodzic$\samp server\pawno\SAMP\friendly game.pwn(60) : fatal error 107: too many error messages on one line

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

error 017: undefined symbol "dini_Exists"
masz dini zaincludowane?
error 017: undefined symbol "zalogowany"
dodaj
new zalogowany[MAX_PLAYERS];
na górze GM
error 001: expected token: ";", but found "]"

gdzieś brakło ci średnika (w linijkach 59-61)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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

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

×