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

Wysłany: 2014-07-31, 19:51


kazami

Pawner/PTG






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

Piwa: 43

Respekt: 76,3

Ostrzeżeń: 80%
Witam zrobi?em zapis i wczytanie pozycji w mysql

wszystko dzia?a zapisuje i wczytuje ale jest problem bo chc? przy rejestracji ?eby wyrzuca?o nas w dane kordynaty a nie na srodek mapy :(

Jak to zrobi? ?

Kod:


stock WczytajGracza(playerid)
{
format(a2, sizeof(a2), "UPDATE `user` SET `kasa`='%i', `pozycja`='%f', `Frakcja`='%i'", GivePlayerMoney(playerid, gGracz[playerid][kasa]), SetPlayerPos(playerid, gGracz[playerid][x],gGracz[playerid][y],gGracz[playerid][z]), gGracz[playerid][frakcja]);
return 1;
}

stock ZapiszGracza(playerid)
{
format(a2, sizeof(a2), "UPDATE `user` SET `kasa`='%i', `pozycja`='%f', `Frakcja`='%i'", gGracz[playerid][kasa] = GetPlayerMoney(playerid), GetPlayerPos(playerid, gGracz[playerid][x],gGracz[playerid][y],gGracz[playerid][z]), gGracz[playerid][frakcja]);
mysql_query(a2);
return 1;
}


Rejestracja
Kod:


if(dialogid == REG)
{
if(response)
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid, REG, DIALOG_STYLE_PASSWORD, "Rejestracja", "{FFFFFF}Nic nie wpisales/as !", "Zarejestruj", "Anuluj");
}
else if(strlen(inputtext) < 3 || strlen(inputtext) > 15)
{
new wiad2[200];
format(wiad2, sizeof(wiad2), "{FF0000}Twoje haslo musi zawierac od 3 do 15 znakow !\n{FFFFFF}Witaj {FF0000}%s {FFFFFF}na Polski Truck Serwer !\nTwoje Konto nie zostalo znalezione !\nAby grac na naszym serwerze, musisz stworzyc Konto !", Gname);
ShowPlayerDialog(playerid, REG, DIALOG_STYLE_PASSWORD, "Rejestracja", wiad2, "Zarejestruj", "Anuluj");
}
else
{
format(a2, sizeof(a2), "INSERT INTO `user` (`username`, `password`, `kasa`, `Frakcja`) VALUES ('%s','%s', '%i', '%i')", Gname, inputtext, GivePlayerMoney(playerid, 10000), gGracz[playerid][frakcja]);
mysql_query(a2);
mysql_free_result();
new wiad[200];
format(wiad, sizeof(wiad), "{FFFFFF}Witaj {FF0000}%s {FFFFFF}na Poland Truck Serwer !\nWpisz haslo , ktore podales przy rejestracji !", Gname);
ShowPlayerDialog(playerid, LOG, DIALOG_STYLE_PASSWORD, "{FF0000}Logowanie", wiad, "Zaloguj", "Anuluj");
gGracz[playerid][nowy] = 1;
}
}
else
{
Kick(playerid);
}
}


Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-07-31, 20:01


IgrexolonO







Wiek: 34
Na forum: 6809 dni
Posty: 1386

Piwa: 1062

Respekt: 651,8
Respekt: 651,8Respekt: 651,8

czemu wczytywanie robi to samo co zapisywanie

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-08-01, 07:47


kazami

Pawner/PTG






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

Piwa: 43

Respekt: 76,3

Ostrzeżeń: 80%
hmm . nw jako? tak :( dopiero zaczynam jak to poprawi? ?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-08-01, 08:03


IgrexolonO







Wiek: 34
Na forum: 6809 dni
Posty: 1386

Piwa: 1062

Respekt: 651,8
Respekt: 651,8Respekt: 651,8

UPDATE - aktualizacja danych, //aktualizowanie danych b?d?cych w bazie
INSERT - wstawianie danych, //dodawanie nowych danych do bazy
SELECT - wybieranie danych. //pobieranie danych z bazy

Google reszte Ci powie.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-08-01, 08:07


kazami

Pawner/PTG






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

Piwa: 43

Respekt: 76,3

Ostrzeżeń: 80%
Czyli przy wczytaniu zamiast UPADTE da? SELECT `user` INSERT i dane ?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-08-01, 08:20


IgrexolonO







Wiek: 34
Na forum: 6809 dni
Posty: 1386

Piwa: 1062

Respekt: 651,8
Respekt: 651,8Respekt: 651,8

no pomy?l, wpiszesz na google mysql select i masz 500 przyk?ad?w jak wklepeisz na klawiaturce mysql select samp to masz 500 kolejnych przykladow prosto z sampa, ba! nawet pare gotowcow masz

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-08-01, 08:37


kazami

Pawner/PTG






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

Piwa: 43

Respekt: 76,3

Ostrzeżeń: 80%
dobrze ?
Kod:



stock WczytajGracza(playerid)
{
format(a2, sizeof(a2), "SELECT * FROM `user` INSERT `kasa`, `pozycja`, `Frakcja`, 'glod', `sen`", GivePlayerMoney(playerid, gracz[playerid][KASAA]), SetPlayerPos(playerid, gracz[playerid][xx],gracz[playerid][yy],gracz[playerid][zz]), gracz[playerid][frakcja], gracz[playerid][GLOD], gracz[playerid][SENN]);
mysql_query(a2);
mysql_free_result();
return 1;
}


Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-08-01, 08:50


IgrexolonO







Wiek: 34
Na forum: 6809 dni
Posty: 1386

Piwa: 1062

Respekt: 651,8
Respekt: 651,8Respekt: 651,8

"kazami" napisał/a:

dobrze ?
Kod:



stock WczytajGracza(playerid)
{
format(a2, sizeof(a2), "SELECT * FROM `user` INSERT `kasa`, `pozycja`, `Frakcja`, 'glod', `sen`", GivePlayerMoney(playerid, gracz[playerid][KASAA]), SetPlayerPos(playerid, gracz[playerid][xx],gracz[playerid][yy],gracz[playerid][zz]), gracz[playerid][frakcja], gracz[playerid][GLOD], gracz[playerid][SENN]);
mysql_query(a2);
mysql_free_result();
return 1;
}


:facepalm: nie, dzia?aj dalej

czekaj se za Combahuwnem, nie spa?em ca?? noc nie chce mi sie nic, a tym bardziej bawic w sramp sql

Ostatnio zmieniony przez IgrexolonO 2014-08-01, 08:51, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-08-01, 08:51


kazami

Pawner/PTG






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

Piwa: 43

Respekt: 76,3

Ostrzeżeń: 80%
Format z rejestracji
Kod:


format(a2, sizeof(a2), "INSERT INTO `user` (`username`, `password`, `kasa`) VALUES ('%s','%s','10000')", Gname(playerid), inputtext, gGracz[playerid][kasa]);
mysql_query(a2);
mysql_free_result();


Stocki WczytajGracza oraz ZapiszGracza
Kod:


stock WczytajGracza(playerid)
{
format(b2, sizeof(b2), "SELECT * FROM `user` WHERE `kasa`", GivePlayerMoney(playerid, gGracz[playerid][kasa]));
mysql_query(b2);
mysql_free_result();
return 1;
}

stock ZapiszGracza(playerid)
{
format(a2, sizeof(a2), "UPDATE `user` SET `kasa`='%d'", gGracz[playerid][kasa]);
mysql_query(a2);
mysql_free_result();
return 1;
}


I gdy sie zarejestruje normalnie ladnie sie tworzy konto , haslo i w tabeli jest kasa 10000 , ale w grze mam 0$ . Pomocy , za pomoc krata piw :D

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-08-01, 10:18


Combacior







Wiek: 29
Na forum: 5795 dni
Posty: 1516

Piwa: 2161

Respekt: 1060
Respekt: 1060

Ostrzeżeń: 20%
Wszystkie zapytania s? skopane, gdy? wykonujesz je dla ca?ej tabeli zamiast dla pojedynczego rekordu (co? jak uID gracza).

Kod:

UPDATE `user` SET `kasa`='%d'


Tym zapytaniem zmieni kas? wszystkim kontom w tabeli - musisz doda? do zapytania fraz? WHERE.

To po raz, po dwa - zapytanie SELECT wymaga p??niejszego u?ycia funkcji mysql_store_result. Nast?pnie u?ywasz mysql_fetch_row + sscanfem rozdzielasz tekst, lub od razu u?ywasz mysql_fetch_field_num.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-08-01, 10:59


kazami

Pawner/PTG






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

Piwa: 43

Respekt: 76,3

Ostrzeżeń: 80%
Hmm tak ?

Kod:


stock WczytajGracza(playerid)
{
format(b2, sizeof(b2), "SELECT * FROM `user` INSERT `kasa` WHERE `username`='%s'", GivePlayerMoney(playerid, gGracz[playerid][kasa]), Gname(playerid));
mysql_query(b2);
mysql_store_result();
return 1;
}

stock ZapiszGracza(playerid)
{
format(a2, sizeof(a2), "UPDATE `user` SET `kasa`='%d' WHERE `username`='%s'", gGracz[playerid][kasa], Gname(playerid));
mysql_query(a2);
mysql_free_result();
return 1;
}

Prosz? o zrozumienie ucz? si? tego dopiero od wczoraj :(

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-08-01, 12:18


Combacior







Wiek: 29
Na forum: 5795 dni
Posty: 1516

Piwa: 2161

Respekt: 1060
Respekt: 1060

Ostrzeżeń: 20%
Zapytanie UPDATE ju? masz dobrze, ale nie radz? operowa? na nicku gracza, gdy? gracz zmieni nick i b?dzie klapa - polecam zrobi? uID (na MySQL bardzo ?atwo, wystarczy stworzy? now? kolumn? oznaczon? typem AUTO_INCREMENT).

Co do SELECT, to samo zapytanie troch? pokr?ci?e? (nie wiem jak tam si? znalaz?o INSERT), ale to jest tylko po?owa kodu, bo pobrane warto?ci musisz gdzie? zapisa?. Nie radz? te? pobiera? wszystkiego (znak * pobiera wszystkie kolumny z tabeli). Pobieraj tylko to, co jest Ci potrzebne.

Kod:

stock WczytajGracza(playerid)
{
new s[100];
format(b2, sizeof(b2), "SELECT kasa FROM user WHERE username = '%s'", Gname(playerid));
mysql_query(b2);
mysql_store_result();
mysql_fetch_row(s);
mysql_free_result();
gGracz[playerid][kasa] = strval(s);
return 1;
}


Tutaj masz zapytanie na pob?r tylko kasy - przy pobieraniu kilku warto?ci trzeba tekst rozdzieli? (polecam sscanf). Nie zapominaj r?wnie? o funkcji mysql_free_result ale stosuj j? tylko po zapytaniach SELECT.

T?umaczenie typu 'ucz? si? tego dopiero od wczoraj' nic tu nie da, bo od razu poszed?e? na g??bok? wod?, zamiast poczyta? troch? o rodzajach zapyta? + przyk?adowych skrypt?w rejestracji do sampa w MySQL.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-08-01, 12:24


kazami

Pawner/PTG






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

Piwa: 43

Respekt: 76,3

Ostrzeżeń: 80%
okey dzi?ki du?o mi rozja?ni?e? ;) b?d? pr?bowa? co? zrobi? :) ) Piwko dla ciebie ;)

[ Dodano: 2014-08-01, 12:27 ]
Combacior, Nie mog? znale?? tej kolumny "AUTO_INCREMENT"

[ Dodano: 2014-08-01, 12:28 ]
aaa dobra to jest te A_I tak ?

Ja mam zrobion? jedn? kolumn? z A_I , podpisan? "id"

[ Dodano: 2014-08-01, 12:55 ]
Usun??em wczytaj gracza i zrobi?em tak
Kod:


if(dialogid == LOG)
{
if(response)
{
format(b2, sizeof(b2), "SELECT * FROM `user` WHERE `username`='%s' AND `password`='%s' LIMIT 1", Gname(playerid), inputtext);
mysql_query(b2);
mysql_store_result();
if(mysql_num_rows() == 1)
{
mysql_free_result();
format(b2, sizeof(b2), "SELECT * FROM `user` WHERE `username`='%s' LIMIT 1", Gname(playerid));
mysql_query(b2);
mysql_store_result();
if(mysql_fetch_row_format(b2, "|"))
{
sscanf(b2, "p<|>dd", gGracz[playerid][kasa],
gGracz[playerid][score]);
}
SpawnPlayer(playerid);
TogglePlayerSpectating(playerid, 0);
GivePlayerMoney(playerid, gGracz[playerid][kasa]);
SetPlayerScore(playerid, gGracz[playerid][score]);
mysql_free_result();
}
else
{
new string[200];
format(string, sizeof(string), "{FF0000}Zle haslo !\n{FFFFFF}Witaj {FF0000}%s !\n{FF0000}Twoje konto zostalo pomyslnie znalezione w bazie dancyh !\n{FFFFFF}Wpisz swoje haslo aby sie zalogowac !", Gname(playerid));
ShowPlayerDialog(playerid, LOG, DIALOG_STYLE_PASSWORD, "{FFFFFF}Poland Truck Games - {FF0000}Logowanie", string, "Zaloguj", "Wyjdz");
}
}
else
{
Kick(playerid);
}
}


Ma to sens ?

[ Dodano: 2014-08-01, 13:30 ]
No i jest jeszcze jeden problem bo gdy resetne serwa dane sie nie wczytuj?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-08-01, 14:34


Combacior







Wiek: 29
Na forum: 5795 dni
Posty: 1516

Piwa: 2161

Respekt: 1060
Respekt: 1060

Ostrzeżeń: 20%
Napisa?em Ci o u?ywaniu gwiazdki (*) jako o pobieraniu wszystkich kolumn. Pobierze wszystkie kolumny, a tymczasem w sscanfie rozdzielasz tylko dwa parametry. Pobierz tylko to, co potrzebujesz.

Skoro masz kolumn? id, to operuj na niej, bo uID gracza si? nigdy nie zmieni i mo?esz spokojnie na nim wszystko zapisywa?.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2014-08-01, 14:38


kazami

Pawner/PTG






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

Piwa: 43

Respekt: 76,3

Ostrzeżeń: 80%
a jak operowa? na tym id ? zamiast `username`='%s' to da? `id`='?' , ?

Postaw piwo autorowi tego posta
 

 
Tagi: mysql :: pozycja
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN » [INNE] MySql pozycja 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