Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2015-06-09, 16:02


Iggy

#admin






Wiek: 26
Na forum: 4596 dni
Posty: 3469
Nick w MP: Iggy

Piwa: 1716

Respekt: 915
Respekt: 915Respekt: 915


   Administrator: Admin ma zawsze rację | REGULAMIN FORUM | REKLAMA/VIP | .
Cze??. Nie jestem jakim? bardzo dobrym programist?, ale postanowi?em zrobi? system rejestracji. Robi?em go wed?ug poradnika znalezionego na forum samp'a, ale jest problem bo tak:
Nie zapisuje si?:
  • kasa,
  • score,
  • pozycja gracza.


Dodatkowo w pliku pisze mi, ?e mam 5000 $, nawet wtedy, gdy podczas wychodzenia z serwera mia?em np. 100 $, ale i tak nie dostaj? ?adnej kasy ani nie spawnuje mnie w pozycji, w kt?rej by?em podczas wyj?cia z serwera.

Kod:

Pawn
enum Info
{
    IP[16],
    Password[129],
    Admin,
    Score,
    Money,
    Deaths,
    Float:PosX,
    Float:PosY,
    Float:PosZ,
    Float:PosA,
    IsRegistered
}

new PlayerInfo[MAX_PLAYERS][Info];
native WP_Hash(buffer[], len, const str[]);


Pawn
public OnPlayerDisconnect(playeridreason)
    {
        if(fexist(UserPath(playerid)))
        {
            GetPlayerPos(playeridPlayerInfo[playerid][PosX], PlayerInfo[playerid][PosY], PlayerInfo[playerid][PosZ]);
            GetPlayerFacingAngle(playeridPlayerInfo[playerid][PosA]);
            file_Open(UserPath(playerid));
            file_SetVal("Admin"PlayerInfo[playerid][Admin]);
            file_SetVal("Score"PlayerInfo[playerid][Score]);
            file_SetVal("Money"PlayerInfo[playerid][Money]);
            file_SetVal("Deaths"PlayerInfo[playerid][Deaths]);
            file_SetFloat("PosX"PlayerInfo[playerid][PosX]);
            file_SetFloat("PosY"PlayerInfo[playerid][PosY]);
            file_SetFloat("PosZ"PlayerInfo[playerid][PosZ]);
            file_SetFloat("PosA"PlayerInfo[playerid][PosA]);
            file_SetVal("IsRegistered"PlayerInfo[playerid][IsRegistered]);
            file_Close();
        }//jeszcze p??niej mam dalsz? cz??? publica i s? tam klamry na ko?cu.


System zapisu jaki u?ywam to INI, link tutaj: klik

Tutaj jeszcze kod z scriptfiles:
Kod:

Password = 4925DA7DA7A56260BAF1C37925A8FA24E46AD8B107DCD21F44E39E4751BAE1304FC70DE7ACB847FFA96126BB372DE005F5320F1EDE6F9DF07C7D53F9C160F022
IP = //tutaj ip
Admin = 0
Score = 0
Money = 5000
Deaths = 0
PosX = 0.000000
PosY = 0.000000
PosZ = 0.000000
PosA = 0.000000
IsRegistered = 1


Jak jeszcze co? z kodu trzeba poda? to prosz? pisa?. :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-06-09, 16:51


Polgałka

Role-Player...






Wiek: 30
Na forum: 6641 dni
Posty: 40
Nick w MP: Nie gram.

Piwa: 318

Respekt: 60

Ja bym zacz?? od samej zmiany systemu zapisu danych na co? bardziej praktycznego. Na przyk?ad SQLite, dzi?ki temu pisany gamemode w dalszym czasie b?dzie ?atwiejszy do przerobienia na MySQL, dzi?ki kt?remu b?dzie mo?na utworzy? rejestracje poprzez strone WWW, albo chocia?by panel online konta. W dalszym czasie, usun??bym z tablicy pozycje gracza. Tablica znacznie wi?cej danych u?ywa ni? zwyk?a zmienna. Prawd? jest ?e przy 50 gracza nie ma to wi?kszej r??nicy, ale ju? przy 300 i kilku takich innych tablicach na prawd? robi to r??nice. Je?eli dany gracz i tak zaraz wyjdzie z serwera, to po co mu nadawa? globalnie dane, skoro mo?na da? mu wewn?trzn? zmienn? i ograniczy? zu?ycie pami?ci. Dodatkowo dane w pliku o nazwie "IsRegistered" jest wed?ug mnie zb?dne. Chyba ?e na serwerze nie jest wymagana rejestracja, w takiej sytuacji mo?e to si? przyda? aby zapisywa? dane graczy niezarejestrowanych(cz?sto jest to wykorzystywane na serwerach, kt?re chc? pozyska? graczy nawet takich przej?ciowych z innych kraj?w, kt?rzy by? mo?e nie znaj? j?zyka zapisanego w skrypcie na serwerze).

Podstawowym pytaniem jakie musisz sobie zada? przy rozpoczynaniu pisania skryptu to, co chcesz aby dany skrypt Ci przyni?s?? Jakie powinny by? cechy danego skryptu, aby dzia?a? On odpowiednio na serwerze.


A wydaje mi si? ?e ten skrypt nie dzia?a dlatego, ?e wyszukujesz pliku gracza po jego ID(identyfikator danej sesji gracza na serwerze), kt?re raz ?e za ka?dym razem jest inne dwa ?e pewnie nie ma nic wsp?lnego z tym co jest w plikach. Zamie? playerid na playername wyci?gni?ty za pomoc? playerid, wtedy powinno wszystko dzia?a? jak nale?y :) .

Edit: Poka? jeszcze ca?o?? prawdopodobnie callbacka Userpath. Mo?e w nim tkwi? problem, a nie w tym co opisa?em wy?ej :) .

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-06-09, 17:01


Iggy

#admin






Wiek: 26
Na forum: 4596 dni
Posty: 3469
Nick w MP: Iggy

Piwa: 1716

Respekt: 915
Respekt: 915Respekt: 915


   Administrator: Admin ma zawsze rację | REGULAMIN FORUM | REKLAMA/VIP | .
My?la?em nad zapisem danych w MySQL, ale nie umiem si? pos?ugiwa? tym zapisem danych, wi?c zosta?em przy plikach. :)

Kod tego stocka:

Pawn
stock UserPath(playerid)
    {
        new pName[MAX_PLAYER_NAME], Path[60];
        GetPlayerName(playeridpNamesizeof(pName));
        format(Pathsizeof(Path), USER_PATHpName);
        return Path;
    }


Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-06-09, 17:06


Polgałka

Role-Player...






Wiek: 30
Na forum: 6641 dni
Posty: 40
Nick w MP: Nie gram.

Piwa: 318

Respekt: 60

"Iggy" napisał/a:

My?la?em nad zapisem danych w MySQL, ale nie umiem si? pos?ugiwa? tym zapisem danych, wi?c zosta?em przy plikach. :)

Kod tego stocka:

Pawn
stock UserPath(playerid)
    {
        new pName[MAX_PLAYER_NAME], Path[60];
        GetPlayerName(playeridpNamesizeof(pName));
        format(Pathsizeof(Path), USER_PATHpName);
        return Path;
    }


Wszystko jest do nauczenia si? :) .
Podaj mi jeszcze definicje USER_PATH z g?ry ca?ego skryptu.

Edit: Przy file_close nie masz wpisanej nazwy pliku, kt?ry ma zosta? zamkni?ty. Osobi?cie nie do ko?ca wiem jak dzia?a ten system bo nigdy z niego nie korzysta?em, ale spr?buj bo mo?e by? tak ?e nie zapisuje Ci pliku, bo go nie zamykasz :) .

Kod:

file_Close(UserPath(playerid));


Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-06-09, 18:30


Iggy

#admin






Wiek: 26
Na forum: 4596 dni
Posty: 3469
Nick w MP: Iggy

Piwa: 1716

Respekt: 915
Respekt: 915Respekt: 915


   Administrator: Admin ma zawsze rację | REGULAMIN FORUM | REKLAMA/VIP | .
Kod:

#define USER_PATH "Accounts/%s.ini"


Tak wygl?da ta definicja. :)

Edit

Jak doda?em do tego file_Close ten kod, dalej nie dzia?a poprawnie ten system.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-06-09, 21:11


Polgałka

Role-Player...






Wiek: 30
Na forum: 6641 dni
Posty: 40
Nick w MP: Nie gram.

Piwa: 318

Respekt: 60

Przed zamkni?ciem pliku musisz go zapisac.
Kod:

file_Save(filename[])
Writes data back into <filename> always use this after using the file_Set functions
But you don't have to if you just reading from the file [file_Get functions]
But after any action always use the next one!


Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-06-09, 21:58


kazami

Pawner/PTG






Wiek: 27
Na forum: 4596 dni
Posty: 405
Nick w MP: adi888

Piwa: 43

Respekt: 76,3

Ostrzeżeń: 80%
Iggy,

a gdzie GetPlayerMoney(playerid) ?

[ Dodano: 2015-06-09, 21:59 ]
Pawn

]);
            file_SetVal("Money"GetPlayerMoney(playerid);


Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-06-09, 22:59


ToxiC.







Wiek: 28
Na forum: 5246 dni
Posty: 3792

Piwa: 8590

Respekt: 1143,8
Respekt: 1143,8

kazami, mo?e kase trzyma w zmiennej?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-06-10, 07:19


kazami

Pawner/PTG






Wiek: 27
Na forum: 4596 dni
Posty: 405
Nick w MP: adi888

Piwa: 43

Respekt: 76,3

Ostrzeżeń: 80%
ToxiC`, to je?li m?wi ?e mu nie zapisuje niech da zmienna = GetPlayerMoney(playerid);

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-06-10, 15:10


Iggy

#admin






Wiek: 26
Na forum: 4596 dni
Posty: 3469
Nick w MP: Iggy

Piwa: 1716

Respekt: 915
Respekt: 915Respekt: 915


   Administrator: Admin ma zawsze rację | REGULAMIN FORUM | REKLAMA/VIP | .
Og?lnie to chyba napisz? nowy system rejestracji pod DOF2, bo jako? coraz wi?cej problem?w jest z tym systemem, poniewa? gdy w polu wpisania has?a do zalogowania wpisze cokolwiek to i tak mnie zaloguje na konto. Napisz? rejestracj? chyba pod DOF2, na razie tematu nie zamykam, bo jak b?d? mia? jeszcze jakie? problemy na ten temat to b?d? pisa?. :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-06-10, 15:23


Combacior







Wiek: 29
Na forum: 5795 dni
Posty: 1516

Piwa: 2161

Respekt: 1060
Respekt: 1060

Ostrzeżeń: 20%
MySQL nie jest trudne do nauczenia, podstawy s? proste. Co do tematu, zapis pozycji nie dzia?a, bo nie mo?na u?ywa? GetPlayerPos w callbacku OnPlayerDisconnect, zreszt? nie tylko GetPlayerPos, wi?cej znajdziesz na wiki -> http://wiki.sa-mp.com/wiki/OnPlayerDisconnect

Kasa i respekt powinny dzia?a?, zale?y czy trzymasz to w tablicy gracza czy korzystasz z GetPlayerScore. Co do logowania, to przyda?by si? kod, ?eby stwierdzi? co jest przyczyn? b??dnego dzia?ania.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-06-10, 15:45


Iggy

#admin






Wiek: 26
Na forum: 4596 dni
Posty: 3469
Nick w MP: Iggy

Piwa: 1716

Respekt: 915
Respekt: 915Respekt: 915


   Administrator: Admin ma zawsze rację | REGULAMIN FORUM | REKLAMA/VIP | .
Co do tamtego systemu to ju? chyba nie b?d? zadawa? pyta?, bo jak wspomnia?em, napisz? nowy system pod DOF2. Co do MySQL to jako? po prostu nie mog? si? po?apa? o co gdzie chodzi, nie wiem, mo?e przyzwyczai?em si? za bardzo do plik?w i to dlatego. :)

Postaw piwo autorowi tego posta
 

 
Tagi: rejestracja.
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku