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
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
Wysłany: 2017-03-12, 10:57
Wafelowski
Wiek: 29 Na forum: 5348 dni Posty: 428
Piwa : 100
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 ( data , sizeof ( 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 = 0 ; idx < mysql_num_rows (); idx ++)
{
// kod
}
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
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
Wysłany: 2017-03-12, 13:59
Wafelowski
Wiek: 29 Na forum: 5348 dni Posty: 428
Piwa : 100
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 ( data , sizeof ( 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.
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 ]);
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
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
Wysłany: 2017-03-12, 15:24
Wafelowski
Wiek: 29 Na forum: 5348 dni Posty: 428
Piwa : 100
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 ++;
}
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
Dzi?ki, mam jeszcze ostatnie pytania dwa
#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
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
Wysłany: 2017-03-12, 17:13
Wafelowski
Wiek: 29 Na forum: 5348 dni Posty: 428
Piwa : 100
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 ( playerid , params [])
{
new string [ 256 ];
for(new i = 0 ; i < MAX_PRIVATE_VEHICLE ; i ++)
{
if( PrivCars [ playerid ][ i ][ UID ] != 0 )
{
format ( strig , sizeof (string), "%s\n[%d] %s" , string , PrivCars [ playerid ][ i ][ UID ], VehicleNames [ PrivCars [ playerid ][ i ][ Modelid ] - 400 ]);
}
}
if( strlen (string) != 0 )
{
ShowPlayerDialog ( playerid , D_SALONPRIV , DIALOG_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?.
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
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 ( playerid , params [])
{
new string [ 256 ];
for(new i = 0 ; i < MAX_PRIVATE_VEHICLE ; i ++)
{
if( PrivCars [ playerid ][ i ][ UID ] != 0 )
{
format ( string , sizeof (string), "%s\n[%d] %s" , string , PrivCars [ playerid ][ i ][ UID ], VehicleNames [ PrivCars [ playerid ][ i ][ Modelid ] - 400 ]);
}
}
if( strlen (string) != 0 )
{
ShowPlayerDialog ( playerid , D_PRIVPANELPOJAZDY , DIALOG_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
Tagi: pobranie :: bazy :: danych :: mysql
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: