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

Wysłany: 2017-03-12, 00:25


Adis.exe

LUA Developer






Wiek: 23
Na forum: 3498 dni
Posty: 292
Nick w MP: Adiś.exe

Piwa: 997

Respekt: 110,3
Respekt: 110,3

Witam, jak pobra? par? rekord?w do 1 zmiennej ? A mianowicie chodzi mi o to, ?e np. Gracz posiada 3 prywatne pojazdy, to jak pobra? te 3 pojazdy do zmiennej modelid[4]
(4 bo to maxymalna ilo?? aut kt?r? mo?e posiada? gracz).

Kod:

enum PRIV_CARS
{
UID,
Modelid[4],
Owner[24],
Color1,
Color2,
Float:PosX,
Float:PosY,
Float:PosZ,
Float:PosROT,
Plate[8]
}

new PrivCars[MAX_PLAYERS][PRIV_CARS];

stock PrivCarsLoad(playerid)
{
new query[128];
new data[255];

format(query, sizeof(query), "SELECT * FROM privcars WHERE Owner = '%s'", PlayerName(playerid));
mysql_query(query);

mysql_store_result();
if(mysql_fetch_row(data, "|"))
{
sscanf(data,"p<|>dddddds[24]ddffff",
PrivCars[playerid][UID],
PrivCars[playerid][Modelid[0]],
PrivCars[playerid][Modelid[1]],
PrivCars[playerid][Modelid[2]],
PrivCars[playerid][Modelid[3]],
PrivCars[playerid][Modelid[4]],
PrivCars[playerid][Owner],
PrivCars[playerid][Color1],
PrivCars[playerid][Color2],
PrivCars[playerid][PosX],
PrivCars[playerid][PosY],
PrivCars[playerid][PosZ],
PrivCars[playerid][PosROT]
}
mysql_free_result();
return 1;

}


W ten spos?b ? Prosz? o rad? ! Je?eli zajdzie taka potrzeba zap?ace

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-03-12, 10:57


Wafelowski







Wiek: 29
Na forum: 5347 dni
Posty: 428

Piwa: 100

Respekt: 232
Respekt: 232Respekt: 232

Wystarczy Ci tu jedna tablica, wywal to query i zast?p data. Zamiast warunku wstaw p?tle while. (poczytaj sobie: http://cpp0x.pl/kursy/Kur...Petla-while/354 )

Pawn
stock PrivCarsLoad(playerid)
{
    new data[256;

    format(datasizeof(data), "SELECT * FROM privcars WHERE Owner = '%s'"PlayerName(playerid));

    mysql_query(data);
    mysql_store_result();

    while(mysql_fetch_row(data"|"))
    {
        sscanf(data,"p<|>ds[24]ddffff",
        PrivCars[playerid][UID],
        PrivCars[playerid][Modelid],
        PrivCars[playerid][Owner],
        PrivCars[playerid][Color1],
        PrivCars[playerid][Color2],
        PrivCars[playerid][PosX],
        PrivCars[playerid][PosY],
        PrivCars[playerid][PosZ],
        PrivCars[playerid][PosROT]);
    }

    mysql_free_result();
}


Mo?na te? to zrobi? za pomoc? p?tli for

Pawn
for(new idx 0idx mysql_num_rows(); idx++)
{
    // kod
}


Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Adis.exe
Wysłany: 2017-03-12, 12:17


Adis.exe

LUA Developer






Wiek: 23
Na forum: 3498 dni
Posty: 292
Nick w MP: Adiś.exe

Piwa: 997

Respekt: 110,3
Respekt: 110,3

Nie do ko?ca rozumiem, dopiero zacz??em przygod? z pawn. Je?eli b?dzie ta p?tla "while" to czy pobierze mi wszystkie pojazdy z MySQL ? Tak jak pisa?em, za???my ?e mam zmienn? Modelid[4] przy czym 4 to Maxymalna ilo?? pojazd?w jakie ma posiada? gracz, i za???my ?e gracz ma 3 pojazdy to wtedy Modelid[0] to b?dzie pierwszy pojazd ? Modelid[1] to b?dzie drugi pojazd ?

Podpis

KONTAKT:
GG: 60968224
Discord: Adiś.exe#3828

Użytkownik: 05.11.2016
GTAO Member: 20.02.2019
Support-Team: 25.07.2018
Support-Team: 19.01.2019
Test Mod: 08.02.2019

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-03-12, 13:59


Wafelowski







Wiek: 29
Na forum: 5347 dni
Posty: 428

Piwa: 100

Respekt: 232
Respekt: 232Respekt: 232

Troch? si? pomyli?em, przepraszam.

Tablica kt?r? Ty posiadasz przy enumie jest dwuwymiarowa, stw?rz tablice tr?jwymiarow? wtedy ka?dy pojazd b?dzie posiada? osobne dane bo tak jak ja poda?em to dane si? nadpisz?.


Definicja, gdzie? na g?rze skryptu:
Pawn
#define MAX_PRIVATE_VEHICLE 4


Tu jest poprawiona tablica:
Pawn
new PrivCars[MAX_PLAYERS][MAX_PRIVATE_VEHICLE][PRIV_CARS];


Tutaj poprawiona funkcja:
Pawn
stock PrivCarsLoad(playerid)
{
    new data[256], idx 0;

    format(datasizeof(data), "SELECT * FROM privcars WHERE Owner = '%s'"PlayerName(playerid));

    mysql_query(data);
    mysql_store_result();

    while(mysql_fetch_row(data"|"))
    {
        sscanf(data,"p<|>ds[24]ddffff",
        PrivCars[playerid][idx][UID],
        PrivCars[playerid][idx][Modelid],
        PrivCars[playerid][idx][Owner],
        PrivCars[playerid][idx][Color1],
        PrivCars[playerid][idx][Color2],
        PrivCars[playerid][idx][PosX],
        PrivCars[playerid][idx][PosY],
        PrivCars[playerid][idx][PosZ],
        PrivCars[playerid][idx][PosROT]);

        idx++;
    }
    
    mysql_free_result();
}


... i funkcja poprawiona. Poradnik?w na necie jest do tego multum, wystarczy troch? poradnik?w poczyta? (przestudiowa? co jak dzia?a, co z czym si? je) o zmiennych, tablicach, p?tlach bo to s? podstawy. :P


Teraz je?eli chcemy dane od pierwszego pojazdu wystarczy ?e w drugiej warto?ci naszej tablicy wpiszemy 0 czyli (0-3):

Pawn
printf("W?a?cicielem pojazdu o UID %d jest %s"PrivCars[playerid][0][UID], PrivCars[playerid][0][Owner]);


Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Adis.exe
Wysłany: 2017-03-12, 14:04


Adis.exe

LUA Developer






Wiek: 23
Na forum: 3498 dni
Posty: 292
Nick w MP: Adiś.exe

Piwa: 997

Respekt: 110,3
Respekt: 110,3

A jakbym teraz chcia? zespawnowa? pojazdy to CreateVehicle(PrivCars[playerid][1][modelid]
CreateVehicle(PrivCars[playerid][2][modelid]
ect.

Podpis

KONTAKT:
GG: 60968224
Discord: Adiś.exe#3828

Użytkownik: 05.11.2016
GTAO Member: 20.02.2019
Support-Team: 25.07.2018
Support-Team: 19.01.2019
Test Mod: 08.02.2019

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-03-12, 15:24


Wafelowski







Wiek: 29
Na forum: 5347 dni
Posty: 428

Piwa: 100

Respekt: 232
Respekt: 232Respekt: 232

Dok?adnie tak!

Dodam ?e zamiast robi? w enumatorze Color1, Color2 mo?esz zrobi? jedn? zmienn? kt?ra b?dzie przechowywa? dwie warto?ci czyli co? takiego np.:

Pawn
enum PRIV_CARS
{
    Color[2],
    Float:SpawnPos[4],
    SpawnWorld[2]
}
new PrivCars[MAX_PLAYERS][MAX_PRIVATE_VEHICLE][PRIV_CARS];


while(...)
{
    sscanf(...,
        PrivCars[playerid][idx][Color][0],
        PrivCars[playerid][idx][Color][1],
        PrivCars[playerid][idx][SpawnPos][0],        
        PrivCars[playerid][idx][SpawnPos][1],
        PrivCars[playerid][idx][SpawnPos][2],
        PrivCars[playerid][idx][SpawnPos][3]);

    idx++;        
}


Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Adis.exe
Wysłany: 2017-03-12, 16:53


Adis.exe

LUA Developer






Wiek: 23
Na forum: 3498 dni
Posty: 292
Nick w MP: Adiś.exe

Piwa: 997

Respekt: 110,3
Respekt: 110,3

Dzi?ki, mam jeszcze ostatnie pytania dwa :D
#1 jakbym chcia? zrobi? panel to mniej wi?cej tak:
Kod:


new VehicleNames[][] =
{
"Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel", "Dumper", "Fireguard", "Trashmaster", "Strech", "Manana",
"Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam", "Esperanto", "Taxi", "Washington", "Bobcat",
"Whoopee", "BFInjection", "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus", "Rhino", "Barracks", "Hotknife",
"Trailer1", "Previon", "Coach", "Cabbie", "Stallion", "Rumpo", "RCBandit", "Romero", "Packer", "Monster", "Admiral", "Squalo",
"Seasparrow", "Pizzaboy", "Tram", "Trailer 2", "Turismo", "Speeder", "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair",
"Berkley's RCVan", "Skimmer", "PCJ-600", "Faggio", "Freeway", "RCBaron", "RCRaider", "Glendale", "Oceanic", "Sanchez", "Sparrow",
"Patriot", "Quad", "Coastguard", "Dinghy", "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX", "Burrito",
"Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper", "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring",
"Sandking", "Blista Compact", "PoliceMaverick", "Boxvillde", "Benson", "Mesa", "RCGoblin", "Hotring Racer A", "Hotring Racer B",
"Bloodring Banger", "Rancher", "Super GT", "Elegant", "Journey", "Bike", "MountainBike", "Beagle", "Cropduster","Stunt", "Baker",
"Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV1000", "CementCar", "Tow Truck", "Fortune",
"Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Fel tzer", "Remington", "Slamvan", "BLADe", "Freight", "Streak",
"Vortex", "Vincent", "Bullet", "Clover", "Sadler", "Straz Pozarna LA", "Hustler", "Intruder", "Primo", "Cargobob", "Tampa", "Sunrise", "Merit",
"Utility", "Nevada", "Yosemite", "Windsor", "MonsterA", "MonsterB", "Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance",
"RCTiger", "Flash", "Tahoma", "Savanna", "Bandito", "Freight Flat", "StreakCarriage", "Kart", "Mower", "Dune", "Sweeper", "Broadway",
"Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400", "News Van", "Tug", "Trailer 3", "Emperor", "Wayfarer", "Euros", "Hotdog",
"Club", "Freight Carriage", "Trailer 4", "Andromada", "Dodo", "RCCam", "Launch", "PoliceCar(LSPD)", "PoliceCar(SFPD)",
"PoliceCar(LVPD)", "Ranger", "Picador", "S.W.A.T", "Alpha", "Phoenix", "Glendale", "Sadler", "LuggageTrailerA",
"Luggage Trailer B", "Stairs", "Boxville", "Tiller", "UtilityTrailer"
};

CMD:pojazdy(playerid, params[])
{
new longstring[800];
format(longstring, sizeof(longstring), "[%d]%s\n[%d]%s\n[%d]%s\n[%d]%s", PrivCars[playerid][1][UID], VehicleNames[PrivCars[playerid][1][Modelid]-400], PrivCars[playerid][2][UID], VehicleNames[PrivCars[playerid][2][Modelid]-400], PrivCars[playerid][3][UID], VehicleNames[PrivCars[playerid][3][Modelid]-400], PrivCars[playerid][4][UID], VehicleNames[PrivCars[playerid][4][Modelid]-400]);
ShowPlayerDialog(playerid, D_SALONPRIV, DIALOG_STYLE_LIST, "{96ff91}Prywatne Pojazdy", longstring, "{21ff00}Wybierz", "{ce0000}Wyjdz");
return 1;
}

Tak ? I co si? pokaze jezeli w bazie nie ma np pojazdow 3 i 4 ? Co si? poka?e w dialogu ??

#2 Pytanie
Udzielasz pomocy odp?acnie lub co? ? Jezeli tak to prosi?bym o jaki? kontakt :P

Ps. Dzi?ki za to ?e ju? tyle mi pomog?e? bo bym sobie rade nie da?

Podpis

KONTAKT:
GG: 60968224
Discord: Adiś.exe#3828

Użytkownik: 05.11.2016
GTAO Member: 20.02.2019
Support-Team: 25.07.2018
Support-Team: 19.01.2019
Test Mod: 08.02.2019

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-03-12, 17:13


Wafelowski







Wiek: 29
Na forum: 5347 dni
Posty: 428

Piwa: 100

Respekt: 232
Respekt: 232Respekt: 232

Tu jest poprawiona komenda, wystarczy zrobi? p?tle na MAX prywatnych pojazd?w i sprawdzasz w warunku czy UID jest r??ne od 0 je?eli tak to w tym miejscu (PrivCars[playerid][i][UID]) na pozycji i jest jaki? pojazd i dodajesz go do wy?wietlania stringu, je?eli za? na pozycji np. 1 ju? nie ma pojazdu to i wy?ej go te? nie b?dzie to przerywamy p?tle przez break.

Pawn
CMD:pojazdy(playeridparams[])
{
    new string[256];

    for(new 0MAX_PRIVATE_VEHICLEi++)
    {
        if(PrivCars[playerid][i][UID] != 0)
        {
            format(strigsizeof(string), "%s\n[%d] %s"stringPrivCars[playerid][i][UID], VehicleNames[PrivCars[playerid][i][Modelid] - 400]);
        }
    }

    if(strlen(string) != 0)
    {
        ShowPlayerDialog(playeridD_SALONPRIVDIALOG_STYLE_LIST"{96ff91}Prywatne Pojazdy"string"{21ff00}Wybierz""{ce0000}Wyjdz");
    }
    else
    {
        SendClientMessage(playerid, -1"Nie posiadasz pojazd?w");
    }
    
    return 1;
}


Pami?taj ?eby wyzerowa? enumator przy wej?ciu na serwer co by gracz kt?ry po??czy? si? z serwerem nie mia? danych od innego gracza kt?ry si? roz??czy?.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Adis.exe
Wysłany: 2017-03-12, 17:22


Adis.exe

LUA Developer






Wiek: 23
Na forum: 3498 dni
Posty: 292
Nick w MP: Adiś.exe

Piwa: 997

Respekt: 110,3
Respekt: 110,3

chyba ma?y b?ad zrobiles, od czego w formacie na poczatku jest %s ? Jak podpisales go pod uid a uid to liczba czyli %d

[ Dodano: 2017-03-12, 17:22 ]
a nie sorki nie zauwazylem tego string

[ Dodano: 2017-03-13, 20:28 ]
Pawn

CMD:pojazdy(playeridparams[])
{
    new string[256];
    for(new 0MAX_PRIVATE_VEHICLEi++)
    {
        if(PrivCars[playerid][i][UID] != 0)
        {
            format(stringsizeof(string), "%s\n[%d] %s"stringPrivCars[playerid][i][UID], VehicleNames[PrivCars[playerid][i][Modelid] - 400]);
        }
    }

    if(strlen(string) != 0)
    {
        ShowPlayerDialog(playeridD_PRIVPANELPOJAZDYDIALOG_STYLE_LIST"{96ff91}Prywatne Pojazdy"string"Wybierz""Wyjdz");
    }
    else
    {
        SendClientMessage(playerid, -1"Nie posiadasz pojazd?w");
    }
    
    return 1;
}

@Wafelowsky ten panel nie dzia?a, mam auto w bazie i pisze ze nie mam aut

Podpis

KONTAKT:
GG: 60968224
Discord: Adiś.exe#3828

Użytkownik: 05.11.2016
GTAO Member: 20.02.2019
Support-Team: 25.07.2018
Support-Team: 19.01.2019
Test Mod: 08.02.2019

Postaw piwo autorowi tego posta
 

 
Tagi: pobranie :: bazy :: danych :: mysql
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN » Pobranie z bazy danych MySQL 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