Wysłany: 2014-08-21, 09:17
kazami
Pawner/PTG
Wiek: 27 Na forum: 4596 dni Posty: 405
Nick w MP: adi888
Piwa : 43
Witam , ucz? si? w mysql i zrobi?em wczyt danych
Kod:
public OnPlayerConnect(playerid)
{
new query[256];
new data[256];
format(query, sizeof(query), "SELECT * FROM `numbers` WHERE `name`='%s'", PlayerName(playerid));
mysql_query(query);
mysql_store_result();
if(mysql_fetch_row_format(data, "|"))
{
sscanf(data, "p<|>ds[24]ddddfff",
gGracz[playerid][pUID],
gGracz[playerid][pName],
gGracz[playerid][pCash],
gGracz[playerid][pHealth],
gGracz[playerid][pArmour],
gGracz[playerid][skin],
gGracz[playerid][posx],
gGracz[playerid][posy],
gGracz[playerid][posz]);
}
else
{
SendClientMessage(playerid, COLOR_RED, "Nie ma cie ! ");
}
mysql_free_result();
return 1;
}
public OnPlayerSpawn(playerid)
{
GivePlayerMoney(playerid, gGracz[playerid][pCash]);
SetPlayerHealth(playerid, gGracz[playerid][pHealth]);
SetPlayerArmour(playerid, gGracz[playerid][pArmour]);
SetPlayerPos(playerid, gGracz[playerid][posz], gGracz[playerid][posy], gGracz[playerid][posz]);
return 1;
}
i gdy w grze klikam spawn to nie mam ani kasy ani kamizelki nic i caly czas mnie zabija
Baza danych
http://www.fotosik.pl/pok...cd24b17c6d.html
Za pomoc stawiam piwo dla ka?dego !
[ Dodano : 2014-08-24, 10:51 ]
Jest kto? w stanie mi pom?c ?
Wysłany: 2014-08-24, 12:19
Combacior
Wiek: 29 Na forum: 5795 dni Posty: 1516
Piwa : 2161
Poka? jeszcze swoje rekordy w tej tabeli, bo mo?e by? pusta. Sprawd? te? logi MySQL i serwera (mo?e mysql pluje b??dami, albo sscanf). Kamizelki mo?e nie by? dlatego, ?e dajesz d zamiast f (ilo?? kamizelki to float, czyli musisz da? f w sscanfie).
Wysłany: 2014-08-24, 13:03
kazami
Pawner/PTG
Wiek: 27 Na forum: 4596 dni Posty: 405
Nick w MP: adi888
Piwa : 43
Kod:
new query[3046];
format(query, sizeof(query), "SELECT * FROM `user` WHERE `username`='%s'", PlayerName(playerid));
mysql_query(query);
mysql_store_result();
if(mysql_fetch_row_format(query, "|"))
{
sscanf(query, "p<|>ds[24]d",
gGracz[playerid][pUID],
gGracz[playerid][pName],
gGracz[playerid][kasa]);
}
else
{
SendClientMessage(playerid, COLOR_RED, "Nie ma cie ! ");
}
mysql_free_result();
Kod:
enum gInfo
{
pUID,
pName[24],
kasa
}
A tutaj baza
http://www.fotosik.pl/pok...32a88b26e9.html
http://www.fotosik.pl/pok...2d2ffad91d.html
[13:03] >> mysql_query( Connection handle: 1 )
[13:03] CMySQLHandler::Query(SELECT * FROM `user` WHERE `username`='[PTG]Adi131') - Successfully executed.
[13:03] >> mysql_store_result( Connection handle: 1 )
[13:03] CMySQLHandler::StoreResult() - Result was stored.
[13:03] >> mysql_fetch_row_format( Connection handle: 1 )
[13:03] CMySQLHandler::FetchRow() - Return: 1|[PTG]Adi131|1000
[13:03] >> mysql_free_result( Connection handle: 1 )
[13:03] CMySQLHandler::FreeResult() - Result was successfully free'd.
Wysłany: 2014-08-24, 15:55
Combacior
Wiek: 29 Na forum: 5795 dni Posty: 1516
Piwa : 2161
Kod: new query[3046];
format(query, sizeof(query), "SELECT * FROM `user` WHERE `username`='%s'", PlayerName(playerid));
mysql_query(query);
mysql_store_result();
if(mysql_fetch_row_format(query, "|"))
{
sscanf(query, "p<|>ds[24]d",
gGracz[playerid][pUID],
gGracz[playerid][pName],
gGracz[playerid][kasa]);
printf("znalazlem: (%d) (%s) (%d)", gGracz[playerid][pUID], gGracz[playerid][pName], gGracz[playerid][kasa]);
}
else
{
SendClientMessage(playerid, COLOR_RED, "Nie ma cie ! ");
}
mysql_free_result();
Sprawd? to i dodaj ten kod w OnPlayerSpawn
Kod: GivePlayerMoney(playerid, gGracz[playerid][kasa]);
printf("%d", gGracz[playerid][kasa]);
Wysłany: 2014-08-24, 17:18
kazami
Pawner/PTG
Wiek: 27 Na forum: 4596 dni Posty: 405
Nick w MP: adi888
Piwa : 43
Wysłany: 2014-08-24, 22:44
Combacior
Wiek: 29 Na forum: 5795 dni Posty: 1516
Piwa : 2161
Dziwne, zapytanie jest ok, MySQL dzia?a dobrze, ale co? sscanf nie chce rozdzieli? tekstu. Sprawd? to
Kod: new query[200];
format(query, sizeof(query), "SELECT id, kasa FROM user WHERE username = '%s'", PlayerName(playerid));
mysql_query(query);
mysql_store_result();
if(mysql_fetch_row_format(query, " "))
{
new theNumber = sscanf(query, "ii", gGracz[playerid][pUID], gGracz[playerid][kasa]);
printf("znalazlem: (%d) (%d) = %d", gGracz[playerid][pUID], gGracz[playerid][kasa], theNumber);
}
else
{
SendClientMessage(playerid, COLOR_RED, "Nie ma cie ! ");
}
mysql_free_result();
I poka? co wy?wietla w konsoli.
Wysłany: 2014-08-25, 09:39
kazami
Pawner/PTG
Wiek: 27 Na forum: 4596 dni Posty: 405
Nick w MP: adi888
Piwa : 43
Dobrze teraz to dzia?a.
B??d by? w tym ?e mia?em starego sscanf i nie rozdziela?o wgra?em nowego i jest ok.
Teraz pr?buj? zrobi? system rejestracji
ale gdy wpisz? has?o w rejestracji i loguje sie i wpisze inne to mi nie sprawdza i zaloguje
Rejestracja
Kod:
if(strlen(inputtext) >= 5 || strlen(inputtext) <= 24)
{
new query[256];
format(query, sizeof(query), "INSERT INTO `gracze` (`username`, `haslo`, `zycie`, `posx`, `posy`, `posz`) VALUES ('%s', '%s', '100', '10', '10', '10')",
PlayerName(playerid), inputtext);
mysql_query(query);
mysql_free_result();
ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, NAZWASERWERA, "{2DFF00}Witamy Ponowanie Na Serwerze !\n\n{FFFFFF}W okienku ponizej wpisz swoje haslo podane przy rejestracji\naby sie pomyslnie zalogowac na serwer !\n\n{FFFF00}Milej Gry !", "Loguj", "Wyjdz");
}
Login
Kod:
new query[512];
new pass[24];
format(query, sizeof(query), "SELECT `id`, `haslo`, `zycie`, `posx`, `posy`, `posz` WHERE `username`='%s'", PlayerName(playerid));
mysql_query(query);
mysql_store_result();
mysql_fetch_row_format(query, "|");
sscanf(query, "p<|>ds[24]s[24]ffff",
dane[playerid][pUID],
dane[playerid][password],
dane[playerid][zycie],
dane[playerid][posx],
dane[playerid][posy],
dane[playerid][posz]);
printf("Znalazlem %s , haslo %s", inputtext, dane[playerid][password]);
mysql_free_result();
if(!strcmp(pass, inputtext, false))
{
SendClientMessage(playerid, Zielony, "[SERWER]: Zalogowano Pomyslnie !");
SetPlayerHealth(playerid, dane[playerid][zycie]);
SetPlayerPos(playerid, dane[playerid][posx], dane[playerid][posy], dane[playerid][posz]);
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, NAZWASERWERA, "{FF0000}Zle Haslo !\n\n{2DFF00}Witamy Ponowanie Na Serwerze !\n\n{FFFFFF}W okienku ponizej wpisz swoje haslo podane przy rejestracji\naby sie pomyslnie zalogowac na serwer !\n\n{FFFF00}Milej Gry !", "Loguj", "Wyjdz");
}
Wysłany: 2014-08-25, 10:35
Combacior
Wiek: 29 Na forum: 5795 dni Posty: 1516
Piwa : 2161
Kod: if(!strcmp(pass, inputtext, false))
Tutaj masz b??d, gdy? tworzysz zmienn? pass, ale nic nie przypisujesz do niej (w tym przypadku has?a). Zast?p zmienn? pass pobranym has?em (dane[playerid][password])
Wysłany: 2014-08-25, 10:37
kazami
Pawner/PTG
Wiek: 27 Na forum: 4596 dni Posty: 405
Nick w MP: adi888
Piwa : 43
hmm tak powinno by? ?
Kod:
new query[512];
new pass[24];
format(query, sizeof(query), "SELECT `id`, `haslo`, `zycie`, `posx`, `posy`, `posz` WHERE `username`='%s'", PlayerName(playerid));
mysql_query(query);
mysql_store_result();
mysql_fetch_row_format(query, "|");
sscanf(query, "p<|>ds[24]s[24]ffff",
dane[playerid][pUID],
pass,
dane[playerid][zycie],
dane[playerid][posx],
dane[playerid][posy],
dane[playerid][posz]);
printf("Znalazlem %s , haslo %s", inputtext, dane[playerid][password]);
mysql_free_result();
if(!strcmp(dane[playerid][password], inputtext, false))
{
SendClientMessage(playerid, Zielony, "[SERWER]: Zalogowano Pomyslnie !");
SetPlayerHealth(playerid, dane[playerid][zycie]);
SetPlayerPos(playerid, dane[playerid][posx], dane[playerid][posy], dane[playerid][posz]);
TogglePlayerSpectating(playerid, false);
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, NAZWASERWERA, "{FF0000}Zle Haslo !\n\n{2DFF00}Witamy Ponowanie Na Serwerze !\n\n{FFFFFF}W okienku ponizej wpisz swoje haslo podane przy rejestracji\naby sie pomyslnie zalogowac na serwer !\n\n{FFFF00}Milej Gry !", "Loguj", "Wyjdz");
}
[ Dodano : 2014-08-25, 10:48 ]
Wpisuje byle co i mnie loguje a haslo to adamosek
Kod:
new query[512];
format(query, sizeof(query), "SELECT `id`, `haslo` WHERE `username`='%s'", PlayerName(playerid));
mysql_query(query);
mysql_store_result();
mysql_fetch_row_format(query, "|");
sscanf(query, "p<|>ds[24]s[24]",
dane[playerid][pUID],
dane[playerid][password]);
printf("Znalazlem %s , haslo %s", inputtext, dane[playerid][password]);
mysql_free_result();
if(!strcmp(dane[playerid][password], inputtext, false))
{
SendClientMessage(playerid, Zielony, "[SERWER]: Zalogowano Pomyslnie !");
TogglePlayerSpectating(playerid, false);
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, NAZWASERWERA, "{FF0000}Zle Haslo !\n\n{2DFF00}Witamy Ponowanie Na Serwerze !\n\n{FFFFFF}W okienku ponizej wpisz swoje haslo podane przy rejestracji\naby sie pomyslnie zalogowac na serwer !\n\n{FFFF00}Milej Gry !", "Loguj", "Wyjdz");
}
Wysłany: 2014-08-25, 11:21
Combacior
Wiek: 29 Na forum: 5795 dni Posty: 1516
Piwa : 2161
Masz z?? konstrukcj? w sscanfie + b??dne zapytanie (brak informacji z jakiej tabeli chcesz to pobra?). Sprawd? to:
Kod: new query[200];
format(query, sizeof(query), "SELECT `id`, `haslo` FROM user WHERE `username`='%s'", PlayerName(playerid));
mysql_query(query);
mysql_store_result();
mysql_fetch_row_format(query, "|");
mysql_free_result();
sscanf(query, "p<|>is[24]", dane[playerid][pUID], dane[playerid][password]);
printf("Znalazlem %s , haslo %s", inputtext, dane[playerid][password]);
if(!strcmp(dane[playerid][password], inputtext, false))
{
SendClientMessage(playerid, Zielony, "[SERWER]: Zalogowano Pomyslnie !");
TogglePlayerSpectating(playerid, false);
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, NAZWASERWERA, "{FF0000}Zle Haslo !\n\n{2DFF00}Witamy Ponowanie Na Serwerze !\n\n{FFFFFF}W okienku ponizej wpisz swoje haslo podane przy rejestracji\naby sie pomyslnie zalogowac na serwer !\n\n{FFFF00}Milej Gry !", "Loguj", "Wyjdz");
}
Zawsze sprawdzaj logi w mysql_log.txt czy zapytanie si? wykona?o poprawnie, bo w tym zabrak?o informacji z jakiej tabeli chcesz pobra? dane.
Wysłany: 2014-08-25, 12:08
kazami
Pawner/PTG
Wiek: 27 Na forum: 4596 dni Posty: 405
Nick w MP: adi888
Piwa : 43
tylko ja nie mam tego mysql_log ;/ mam tylko Debug
Jest jeszcze jedno gdy wyjd? z serwera nie zapisuje mi postaci
Kod:
stock ZapiszGracza(playerid)
{
new query[1024];
format(query, sizeof(query), "UPDATE `user` SET `kasa`='%d', `score`'=%d', `posx`='%f', `posy`='%f', `posz`='%s' WHERE `username`='%s'",
GetPlayerMoney(playerid), GetPlayerScore(playerid), dane[playerid][posx],dane[playerid][posy],dane[playerid][posz], PlayerName(playerid));
mysql_query(query);
mysql_free_result();
return 1;
}
W OnPlayerDisconnect mam to :
ZapiszGracza(playerid);
tych pozycji nie zapisuje ca?y czas mam 0 0 0
Wysłany: 2014-08-25, 12:55
Combacior
Wiek: 29 Na forum: 5795 dni Posty: 1516
Piwa : 2161
mysql_log.txt czy inny plik - nie wiem jak to tam si? nazywa w pluginie od BlueG, chodzi mi o plik, z kt?rego masz te logi
Kod: [13] >> mysql_query( Connection handle: 1 )
[13] CMySQLHandler::Query(SELECT * FROM `user` WHERE `username`='[PTG]Adi131') - Successfully executed.
[13] >> mysql_store_result( Connection handle: 1 )
[13] CMySQLHandler::StoreResult() - Result was stored.
[13] >> mysql_fetch_row_format( Connection handle: 1 )
[13] CMySQLHandler::FetchRow() - Return: 1|[PTG]Adi131|1000
[13] >> mysql_free_result( Connection handle: 1 )
[13] CMySQLHandler::FreeResult() - Result was successfully free'd
Co do zapisywania, to masz b??d w zapytaniu, dok?adniej tutaj
Kod:
Po `score` masz jeszcze ' a nie powinno tego by?. Nie musisz te? dawa? znak?w `
Kod:
Jednak?e przy stringach (np. nick gracza) musz? by? znaki ''
Kod:
Wysłany: 2014-08-25, 13:52
kazami
Pawner/PTG
Wiek: 27 Na forum: 4596 dni Posty: 405
Nick w MP: adi888
Piwa : 43
Chodzi o te logi ?
Kod:
[12:49] ---------------------------
[12:49] MySQL Debugging activated (08/25/14)
[12:49] ---------------------------
[12:49]
[12:49] >> mysql_query( Connection handle: 1 )
[12:49] CMySQLHandler::Query(SELECT * FROM `user` WHERE `username`='[PTG]Adi131') - Successfully executed.
[12:49] >> mysql_store_result( Connection handle: 1 )
[12:49] CMySQLHandler::StoreResult() - Result was stored.
[12:49] >> mysql_num_rows( Connection handle: 1 )
[12:49] CMySQLHandler::NumRows() - Returned 1 row(s)
[12:49] >> mysql_free_result( Connection handle: 1 )
[12:49] CMySQLHandler::FreeResult() - Result was successfully free'd.
[12:49] >> mysql_query( Connection handle: 1 )
[12:49] CMySQLHandler::Query(SELECT `id`, `haslo`, `kasa`, `score` FROM user WHERE `username`='[PTG]Adi131') - Successfully executed.
[12:49] >> mysql_store_result( Connection handle: 1 )
[12:49] CMySQLHandler::StoreResult() - Result was stored.
[12:49] >> mysql_fetch_row_format( Connection handle: 1 )
[12:49] CMySQLHandler::FetchRow() - Return: 5|adamosek|5500|1
[12:49] >> mysql_free_result( Connection handle: 1 )
[12:49] CMySQLHandler::FreeResult() - Result was successfully free'd.
[12:50] >> mysql_query( Connection handle: 1 )
[12:50] CMySQLHandler::Query(UPDATE `user` SET `kasa`='5500', `score`'=1', `posx`='0.000000', `posy`='0.000000', `posz`='' WHERE `username`='[PTG]Adi131') - An error has occured. (Error ID: 1064, You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''=1', `posx`='0.000000', `posy`='0.000000', `posz`='' WHERE `username`='[PTG]Adi' at line 1)
[12:50] >> mysql_free_result( Connection handle: 1 )
[12:50] CMySQLHandler::FreeResult() - The result is already empty.
Dzi?ki za pomoc , piwko
[ Dodano : 2014-08-25, 13:58 ]
Poprawi?em ten Zapis
Kod:
stock ZapiszGracza(playerid)
{
new query[1024];
format(query, sizeof(query), "UPDATE `user` SET kasa = %d score = %d posx = %f posy = %f posz = %f WHERE `username`='%s'",
GetPlayerMoney(playerid), GetPlayerScore(playerid), dane[playerid][posx], dane[playerid][posy], dane[playerid][posz], PlayerName(playerid));
mysql_query(query);
mysql_free_result();
return 1;
}
Ale gdy wyjd? z serwera nadal nie zapisuje mi pozycji , mam posx 0 posy 0 posz 0 , hmm Jak to zrobi? ? GetPlayerPos(playerid, dane[playerid][posx], dane[playerid][posy], dane[playerid][posz]); ?
Wysłany: 2014-08-25, 15:03
Combacior
Wiek: 29 Na forum: 5795 dni Posty: 1516
Piwa : 2161
Tak, o te logi mi chodzi - tam masz wszystko napisane, mi?dzy innymi b??dy w zapytaniach. Co do tego zapisu, to nie masz przecink?w mi?dzy kolumnami - powinno to wygl?da? tak
Kod: UPDATE user SET kasa = %d, score = %d ....
Co do pozycji, to zale?y co ma ona zapisywa?. Je?li ostatni? pozycj? gracza, to t? funkcj? musisz gdzie? u?y? (najlepiej timer cosekundowy, je?li nie timer to OnPlayerDisconnect)
Kod: GetPlayerPos(playerid, dane[playerid][posx], dane[playerid][posy], dane[playerid][posz]);
To musisz gdzie? u?y? jak pisa?em wy?ej.
Wysłany: 2014-08-26, 10:45
kazami
Pawner/PTG
Wiek: 27 Na forum: 4596 dni Posty: 405
Nick w MP: adi888
Piwa : 43
Kod:
public OnGameModeInit()
{
AddPlayerClass(1, 2776.9265,2558.4839,10.8203, 0,0,0,0,0,0,0);
}
public OnPlayerSpawn(playerid)
{
SetPlayerPos(playerid, dane[playerid][posx],dane[playerid][posy],dane[playerid][posz]);
return 1;
}
public OnPlayerUpdate(playerid)
{
GetPlayerPos(playerid, dane[playerid][posx], dane[playerid][posy], dane[playerid][posz]);
return 1;
}
Logowanie
Kod:
new query[512];
format(query, sizeof(query), "SELECT `id`, `haslo`, `kasa`, `score`, `posz`, `posz`, `posy` FROM user WHERE `username`='%s'", PlayerName(playerid));
mysql_query(query);
mysql_store_result();
mysql_fetch_row_format(query, "|");
mysql_free_result();
sscanf(query, "p<|>is[24]ddfff", dane[playerid][pUID], dane[playerid][password],
dane[playerid][kasa],
dane[playerid][score],
dane[playerid][posx],
dane[playerid][posy],
dane[playerid][posz]);
printf("[MySql]: Znalazlem gracza %s", PlayerName(playerid));
if(!strcmp(dane[playerid][password], inputtext, false))
{
SendClientMessage(playerid, Zielony, "[SERWER]: Zalogowano Pomyslnie !");
GivePlayerMoney(playerid, dane[playerid][kasa]);
SetPlayerScore(playerid, dane[playerid][score]);
TogglePlayerSpectating(playerid, false);
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOG, DIALOG_STYLE_PASSWORD, NAZWASERWERA, "{FF0000}Zle Haslo !\n\n{2DFF00}Witamy Ponowanie Na Serwerze !\n\n{FFFFFF}W okienku ponizej wpisz swoje haslo podane przy rejestracji\naby sie pomyslnie zalogowac na serwer !\n\n{FFFF00}Milej Gry !", "Loguj", "Wyjdz");
}
Pozycja sie zapisuje a nie spawnuej mnie na niej tylko na AddPlayerClass
[ Dodano : 2014-08-26, 17:09 ]
Temat do zamkni?cia problem rozwi?zany
Tagi: mysql
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: