Ez a szekció lehetővé teszi a felhasználó által írt összes hozzászólás megtekintését. Vedd figyelembe, hogy csak azokba a fórumokba írt hozzászólásokat látod, amelyekhez hozzáférésed van.
Üzenetek - Robi222
1
« Dátum: 2016. július 07. - 12:07:14 »
Köszi, működik!
2
« Dátum: 2016. július 07. - 08:40:52 »
Szia! 2 argumentumot nem triggerelsz át (user, pass) A getLocalPlayert triggereled csak át, a többit nem. Így lenne helyes:
valamiuser = \"jozsi\" valamipass = \"szupertitkosjelszo\" triggerServerEvent(\"onLogin\", getRootElement(), getLocalPlayer(), valamiuser, valamipass)
Persze a valamiuser és a valamipass helyére nem ez kerül, hanem értelemszerűen... Robika1
Köszi a válaszod, próbáltam de nem megy, ugyanazt az errort írja. Átírtam csak egy \"/bejelentkez [jelszó]\" parancsra, ami szerver oldalon fut, de ugyanazt az errort írja mikor loginolni akarok. Így néz ki jelenleg: function LoginPlayer(playerSource,commandName,password) local user = getPlayerName(playerSource) local login = mysql_query(handler,\"SELECT * FROM accounts WHERE pName = \'\"..mysql_escape_string( handler, user )..\"\' AND pPassword = \'\"..mysql_escape_string( handler, sha256(password) )..\"\';\") if login then local rows = mysql_num_rows(login) if rows == 1 then outputChatBox(\"* You successfully logged in your account!\", playerSource, 255, 255, 255) else outputChatBox(\"* Login failed!\", playerSource, 255, 255, 255) end mysql_free_result(login) end end addCommandHandler(\"bejelentkez\",LoginPlayer)
Mi lehet a gond ?
3
« Dátum: 2016. július 06. - 11:05:09 »
Hali! Próbálgatom a bejelentkezés rendszert megcsinálni, mivel a regisztráció már működik, viszont ez nem akar menni. Ez szerver oldalon van, ez maga a bejelentkezés: function onLogin ( player, user, pass ) local login = mysql_query(handler,\"SELECT * FROM accounts WHERE pName = \'\"..mysql_escape_string( handler, user )..\"\' AND pPassword = \'\"..mysql_escape_string( handler, sha256(pass) )..\"\';\") if login then local rows = mysql_num_rows(login) if rows == 1 then outputChatBox(\"* You successfully logged in your account!\", player, 255, 255, 255) else outputChatBox(\"* Login failed!\", player, 255, 255, 255) end mysql_free_result(login) end end addEvent( \"onLogin\", true ) addEventHandler( \"onLogin\", getRootElement(), onLogin )
Majd ezzel meghívom kliens oldali szkriptben: triggerServerEvent ( \"onLogin\", getRootElement(), getLocalPlayer())
Viszont mikor beírom pl. hogy /login admin akkor ilyen errort ír ki a konzol ablakba: bad argument 1# to \'mysql_escape_string\' (mysql handler expected, got userdata)
Ez mitől lehet ? Előre is köszönöm!
4
« Dátum: 2016. július 06. - 08:44:46 »
Jó Reggelt! Olyan kérdésem lenme, hogy GUI-t mivel ajánlott készíteni? Úgy értem dxGui vagy mivel ? esetleg valami segítséget is küldhettek nem gond ha angol, előre is köszi!
5
« Dátum: 2016. július 04. - 22:14:25 »
1000x Köszönet, elindult! :thumbsup:
6
« Dátum: 2016. július 04. - 15:23:05 »
Hali! Próbálgatok összebarkácsolni MTA -ban egy alap MySQL Reg/Log rendszert, de nem jön össze. Így próbáltam, a modul betölt, amikor beírom pl. hogy \"/register admin\" akkor a \"mysql_escape_string\" -re dobja az errort a konzolban,valami olyasmit hogy \"1# bad argument\". MySQLre kapcsolódik, mysql kapcsolódási adatokat is jól megadtam. Mi lehet a gond ? Nagyon megköszönném annak aki segít. local MYSQL_HOST = \"host\" local MYSQL_DATABASE = \"db\" local MYSQL_USER = \"user\" local MYSQL_PASSWORD = \"pass\" local MYSQL_PORT = 3306 handler = dbConnect(\"mysql\",\"dbname=\"..MYSQL_DATABASE..\";host=\"..MYSQL_HOST, MYSQL_USER,MYSQL_PASSWORD,\"charset=utf8\") if handler then outputServerLog(\"MySql CONNECTED!\") else outputServerLog(\"Mysql NOT CONNECTED!\") end function RegisterPlayer(playerSource, commandName, _password) local name = mysql_escape_string(handler, getPlayerName(playerSource)) -- Escape the strings to avoid SQL-Injection local password = mysql_escape_string(handler, _password) local query = \"INSERT INTO accounts SET pName=\'\" .. name .. \"\', pPassword=MD5(\'\" .. password .. \"\')\" if (mysql_query(handler, query)) then outputChatBox(\"Account created successfuly with id #\" .. mysql_insert_id(handler), playerSource) else outputChatBox(\"An error has occured when trying to create your account.\", playerSource) end end addCommandHandler(\"register\", RegisterPlayer)
7
« Dátum: 2016. június 03. - 12:24:38 »
Nagyon hálás vagyok neked, nagyon szépen köszönöm működik! :thumbsup:
8
« Dátum: 2016. június 03. - 11:53:18 »
Hali! Jelenleg azt akarom megcsinálni, hogy a kocsikat MySQL -be mentse illetve töltse be. /jarmu parancsal létrehoz egyet,be illeszti MySQL táblába ez megy is. Viszont a betöltés már nem működik, nem spawnolja le a kocsikat. OnGameModeInitnél meghívom a loadVehicles(); Ami így nézki: loadVehicles() { new query[128]; format(query,sizeof(query),\"SELECT * FROM sveh\"); mysql_function_query(dbhandle,query,true,\"OnQueryFinish\",\"i\",THREAD_LOAD_VEHICLES); return 1; } OnQueryFinish -be pedig így tölti be: public OnQueryFinish(resultid, extraid, ConnectionHandle) { new num_rows, num_fields; if(resultid != THREAD_NO_RESULT) { cache_get_data(num_rows, num_fields); } switch(resultid) { case THREAD_LOAD_VEHICLES: { if(num_rows) { new v; for(new i = 0; i < num_rows ; i++) { cInfo[vID] = cache_get_field_content_int(i,\"id\",dbhandle); cInfo[vModel] = cache_get_field_content_int(i,\"VehModel\",dbhandle); cInfo[vPosX] = cache_get_field_content_float(i,\"VehX\",dbhandle); cInfo[vPosY] = cache_get_field_content_float(i,\"VehY\",dbhandle); cInfo[vPosZ] = cache_get_field_content_float(i,\"VehZ\",dbhandle); cInfo[vRot] = cache_get_field_content_float(i,\"VehRot\",dbhandle); cInfo[vCol1] = cache_get_field_content_int(i,\"VehCol1\",dbhandle); cInfo[vCol2] = cache_get_field_content_int(i,\"VehCol2\",dbhandle); CreateVehicle(cInfo[vModel],cInfo[vPosX],cInfo[vPosY],cInfo[vPosZ],cInfo[vRot],cInfo[vCol1],cInfo[vCol2],-1); cInfo[vID]++; v++; printf(\"Jarmuvek betoltve: %d\", v); } } printf(\"Jarmuvek betoltve: 0\"); } } return 1; }
Na most nem spawnolja le a kocsikat,tehát nem akarja beolvasni. Mi lehet a gond ? Előre is köszönöm.
9
« Dátum: 2015. július 14. - 18:18:02 »
Hali! Sokat próbálkoztam már ezzel, hogy amit beírok MySQL táblába hogy hányas jármű ID,milyen pozícióba azt töltse be a szerverre és hozza létre, meg is volt csak a rendszámot és tulaj -t nem töltötte be, mivel üres stringeket töltött be. Ezért arra szeretnék kérni valakit,hogy meg e tudja nekem írni azt, hogy betöltse a Jármű ID-t,tulaj-t,rendszámot és X,Y,Z pozíciót, aztán a többit én már kibővitem, csak ennyi kéne. Előre is nagyon szépen köszönöm, aki segít annak megy a +!
10
« Dátum: 2015. július 07. - 21:07:52 »
Hali! Próbáltam két edit -et rákapcsolni egy \"loginTab\"-ra (guiCreateTab), de valahogy nem sikerül mert ahogy rákapcsolom nem látom a két editet,ha leveszem a \"loginTab\"-ról akkor látom. Így oldottam meg,kliens oldalon: TabPanel = guiCreateTabPanel(X,0.330,Width,0.045,true, logRegPanel) loginTab = guiCreateTab(\"Bejelentkezés\", TabPanel) registerTab = guiCreateTab(\"Regisztráció\", TabPanel) editLogName = guiCreateEdit( 0, 0, 0.15, 0.03, \"\", true,loginTab ) guiEditSetCaretIndex( editLogName, 0 ) editLogPass = guiCreateEdit( 0, 0, 0.15, 0.03, \"\", true,loginTab ) guiEditSetCaretIndex( editLogPass, 0 )
Mi lehet a gond ? Előre is köszönöm!
11
« Dátum: 2015. július 04. - 13:27:02 »
Nem sok ötletem van már, de szerintem akkor is a mentéssel és a tömb indexxel van a gond. Eleve felesleges a MAX_VEHICLES-el lepörgetni a ciklust, mivel csak 50 a max létrehozható jármű a tömb indexéből ítélve (new cInfo[50][carInfo]. Picit módosítottam a kódot, ez csak a privát járművekre fog vonatkozni. A vID változóból olvassa ki a szerver a MySQL ID-t mentésnél, mert ha \'i\'-t használsz, akkor csak össze fog keveredni minden ha pl törölsz egy járművet az adatbázisból. Tehát módosítsd a jármű betöltést és töltsd be az \"ID\" oszlopot a cInfo[vID] változóba.
#define MAX_PRIVATE_VEH 50 new cInfo[MAX_PRIVATE_VEH][carInfo]; stock VehicleSaveAll() { new query[512], v; for(new i = 0; i < MAX_PRIVATE_VEH ; i++) { if( !cInfo[vModel] ) { continue; } // ha nincs ilyen jármű akkor ugrik a következőre // adatok lekérése GetVehiclePos (cInfo[vServerID], cInfo[vPosX], cInfo[vPosY], cInfo[vPosZ]); GetVehicleZAngle(cInfo[vServerID], cInfo[vRot]); GetVehicleHealth(cInfo[vServerID], cInfo[VehHP]); GetVehicleColor (cInfo[vServerID], cInfo[vCol1], cInfo[vCol2]); // mentés format(query,sizeof(query),\"UPDATE sveh SET Tulaj=\'%s\',Rendszam=\'%s\',VehX=\'%.2f\',VehY=\'%.2f\',VehZ=\'%.2f\',VehRot=\'%.2f\',VehCol1=\'%d\',VehCol2=\'%d\',KmSzamlalo=\'%d\',VehHP=\'%.2f\',Uzemanyag=\'%d\' WHERE ID=\'%d\'\", cInfo[vTulaj],cInfo[vRendszam],cInfo[vPosX],cInfo[vPosY],cInfo[vPosZ],cInfo[vRot],cInfo[vCol1],cInfo[vCol2],cInfo[KmSzamlalo],cInfo[VehHP],cInfo[VehFuel], cInfo[vID]); mysql_function_query(dbhandle, query, true, \"\", \"\"); // v++; print(query); } printf(\"Jarmuvek mentve: %d\", v); return v; // visszatérési érték a mentett járművek száma }
Köszi,meg csináltam de így sem működik, ugyanaz a hiba,nem ment le semmit csak üres stringeket mindenhova. Betöltésnél így olvasom be a rendszámot:
cInfo[vRendszam] = cache_get_field_content(i, \"Rendszam\", KocsiRendszam); SetVehicleNumberPlate(cInfo[vServerID],KocsiRendszam);
Csak így működik,akárhogy máshogy megírom még a rendszámnak is üres stringet tölt be így viszont megy.
12
« Dátum: 2015. július 03. - 11:28:49 »
Szerintem vagy módosultak valahol az adatok, vagy rossz járműt kér le a szerver, de inkább a második. Szerintem teleportálj oda a koordinátára amit kidebuggoltattál és győződj meg róla, hogy valóban azt a járművet kérte le a szerver, aminek van tulaja, rendszáma, stb..
Próbáltam, oda teleportáltam és van neki rendszáma mégpedig \"1\" illetve oda is teleportáltam, és ott van mellettem a kocsi és a tulaj -t illetve rendszámot nem menti le de a pozíció,stb azokat mind szépen lementi, viszont észre vettem, hogy a server_log -ba ott üres stringet ment tehát Tulaj= \" \",viszont a konzol ablakba pedig ilyet: http://kepfeltoltes.hu/150703/1154820598N_vtelen_www.kepfeltoltes.hu_.png[/img] A Jármű lementés még mindig ezzel történik, hogy meg hívódik egy parancsnál: stock VehicleSaveAll() { new query[512],v; for(new i = 0; i < MAX_VEHICLES ; i++) { if(!GetVehicleModel(i)) { continue; } // ha nincs ilyen jármű akkor ugrik a következőre // adatok lekérése GetVehiclePos(i,cInfo[vPosX],cInfo[vPosY],cInfo[vPosZ]); GetVehicleZAngle(i, cInfo[vRot]); GetVehicleHealth(i, Float:cInfo[VehHP]); GetVehicleColor(i, cInfo[vCol1],cInfo[vCol2]); // mentés format(query,sizeof(query),\"UPDATE sveh SET Tulaj=\'%s\',Rendszam=\'%s\',VehX=\'%.2f\',VehY=\'%.2f\',VehZ=\'%.2f\',VehRot=\'%.2f\',VehCol1=\'%d\',VehCol2=\'%d\',KmSzamlalo=\'%d\',VehHP=\'%.2f\',Uzemanyag=\'%d\' WHERE ID=\'%d\'\",cInfo[vTulaj],cInfo[vRendszam],cInfo[vPosX],cInfo[vPosY],cInfo[vPosZ],cInfo[vRot],cInfo[vCol1],cInfo[vCol2],cInfo[KmSzamlalo],cInfo[VehHP],cInfo[VehFuel],i); mysql_function_query(dbhandle,query,true,\"\",\"\"); // v++; print(query); } printf(\"Jarmuvek mentve: %d\", v); return v; // visszatérési érték a mentett járművek száma }
Az szerintem nem lehet gond, hogy rosszul tölti be a rendszámot ezért rosszul is menti le, mivel betöltésnél olyan rendszámot kapnak amilyet beolvas MySQL -ből. Mi lehet a gond ? Előre is köszi!
13
« Dátum: 2015. július 02. - 20:23:45 »
Tudnád debuggoltatni? Magyarán kiprintelni a MySQL kódot amikor lefut, hátha megtudunk belőle valamit.
print(query); De szerintem a gond ott lesz, hogy a ciklus az összes járműre vonatkozik, még azokra is amik csak sima járművek és nem vehetőek meg a szerveren. Vannak ilyenek?
Na debugoltattam,a következőket írja: [20:20:37] UPDATE sveh SET Tulaj=\'\',Rendszam=\'\',VehX=\'1620.26\',VehY=\'-2313.68\',VehZ=\'13.29\',VehRot=\'137.64\',VehCol1=\'6\',VehCol2=\'6\',KmSzamlalo=\'0\',VehHP=\'906.11\',Uzemanyag=\'100\' WHERE ID=\'1\' [20:20:37] UPDATE sveh SET Tulaj=\'\',Rendszam=\'\',VehX=\'1643.07\',VehY=\'-2329.10\',VehZ=\'13.65\',VehRot=\'126.19\',VehCol1=\'1\',VehCol2=\'1\',KmSzamlalo=\'0\',VehHP=\'900.00\',Uzemanyag=\'100\' WHERE ID=\'2\' [20:20:37] UPDATE sveh SET Tulaj=\'\',Rendszam=\'\',VehX=\'1673.49\',VehY=\'-2316.26\',VehZ=\'13.14\',VehRot=\'146.74\',VehCol1=\'0\',VehCol2=\'0\',KmSzamlalo=\'0\',VehHP=\'1000.00\',Uzemanyag=\'100\' WHERE ID=\'3\' [20:20:37] UPDATE sveh SET Tulaj=\'\',Rendszam=\'\',VehX=\'1663.66\',VehY=\'-2317.51\',VehZ=\'13.15\',VehRot=\'208.70\',VehCol1=\'4\',VehCol2=\'4\',KmSzamlalo=\'0\',VehHP=\'300.00\',Uzemanyag=\'0\' WHERE ID=\'4\' [20:20:37] Jarmuvek mentve: 4
Nincs,mivel a módba sehol nincs AddStaticVehicle vagy CreateVehicle,tehát csak azok a járművek vannak a szerveren, amiket a MySQL Tábla tartalmaz.
14
« Dátum: 2015. július 02. - 18:33:23 »
Jó lenne meghatározni, hogy melyik járműnek állítod át a rendszámát, életét, stb... Mivel ha más sorrendben hozod létre a járműveket, akkor ez az egész dolog eltolódhat. Ahhoz meg létre kéne hozni az enumban egy úgy értéket, legyen az mondjuk \"vServerID\", mert már a vID foglalt, ami gondolom a MySQL ID-t tárolja.
cInfo[vServerID] = CreateVehicle(cInfo[vModel],cInfo[vPosX],cInfo[vPosY],cInfo[vPosZ],cInfo[vRot],cInfo[vCol1],cInfo[vCol2],-1); SetVehicleHealth(cInfo[vServerID],Float:cInfo[VehHP]); SetVehicleNumberPlate(cInfo[vServerID],cInfo[vRendszam]);
Nagyon szépen köszönöm,tökéletesen működik! Már csak a mentést kéne megoldani,szintén működik lement mindent kivéve a \"Kocsi Tulajdonost illetve Kocsi Rendszámát\" mivel a MySQL -be üreset stringet ment. A Mentés pedig így működik,meghívódik egy parancsnál: stock VehicleSaveAll() { // Leghosszabb query: UPDATE sveh SET VehX=\'-1234.12\',VehY=\'-1234.12\',VehZ=\'-1234.12\',VehRot=\'-1234.12\' WHERE ID=\'1234\' new query[1024],v; for(new i = 0; i < MAX_VEHICLES ; i++) { if(!GetVehicleModel(i)) { continue; } // ha nincs ilyen jármű akkor ugrik a következőre // adatok lekérése GetVehiclePos(i,cInfo[vPosX],cInfo[vPosY],cInfo[vPosZ]); GetVehicleZAngle(i, cInfo[vRot]); GetVehicleHealth(i, Float:cInfo[VehHP]); GetVehicleColor(i, cInfo[vCol1],cInfo[vCol2]); // mentés format(query,sizeof(query),\"UPDATE sveh SET Tulaj=\'%s\',Rendszam=\'%s\',VehX=\'%.2f\',VehY=\'%.2f\',VehZ=\'%.2f\',VehRot=\'%.2f\',VehCol1=\'%d\',VehCol2=\'%d\',KmSzamlalo=\'%d\',VehHP=\'%.2f\',Uzemanyag=\'%d\' WHERE ID=\'%d\'\",cInfo[vTulaj],cInfo[vRendszam],cInfo[vPosX],cInfo[vPosY],cInfo[vPosZ],cInfo[vRot],cInfo[vCol1],cInfo[vCol2],cInfo[KmSzamlalo],cInfo[VehHP],cInfo[VehFuel],i); mysql_function_query(dbhandle,query,true,\"\",\"\"); // v++; } printf(\"Jarmuvek mentve: %d\", v); return v; // visszatérési érték a mentett járművek száma }
Itt mi lehet a gond ? Ez lenne az utolsó kérdésem,előre is nagyon szépen köszönöm a választ!
15
« Dátum: 2015. július 02. - 13:14:09 »
A cache_get_field_content() függvény nem tér vissza a szöveggel. Így nem tudod egyenlőség jel után írni. Csinálhatod úgyis, ahogy azt te elképzelted, hogy eltárolod az értéket egy másik változóba, majd az eltárolt értéket bemásolod a jármű tulaj tömbjébe, de ezt így teljesen felesleges. Nyugodtan mehet egyből a kiolvasott érték a jármű tömbjébe. Tehát a \"KocsiTualj\" stringet felesleges deklarálni.
cache_get_field_content(i, \"Tulaj\", cInfo[vTulaj]); És így tovább a többi stringnél is..
Köszönöm szépen, próbáltam, de így még rosszabb. Ahogy felmegyek a szerverre az összes jármű rendszáma \"XYZR 999\"\" Jelenleg így néz ki: public OnQueryFinish(resultid, extraid, ConnectionHandle) { new num_rows, num_fields; if(resultid != THREAD_NO_RESULT) { cache_get_data(num_rows, num_fields); } switch(resultid) { case THREAD_LOAD_VEHICLES: { if(num_rows) { new v; for(new i = 0; i < num_rows ; i++) { cInfo[vModel] = cache_get_field_content_int(i,\"cID\",dbhandle); cache_get_field_content(i, \"Tulaj\", cInfo[vTulaj]); cache_get_field_content(i, \"Rendszam\", cInfo[vRendszam]); cInfo[vPosX] = cache_get_field_content_float(i,\"VehX\",dbhandle); cInfo[vPosY] = cache_get_field_content_float(i,\"VehY\",dbhandle); cInfo[vPosZ] = cache_get_field_content_float(i,\"VehZ\",dbhandle); cInfo[vRot] = cache_get_field_content_float(i,\"VehRot\",dbhandle); cInfo[vCol1] = cache_get_field_content_int(i,\"VehCol1\",dbhandle); cInfo[vCol2] = cache_get_field_content_int(i,\"VehCol2\",dbhandle); cInfo[KmSzamlalo] = cache_get_field_content_int(i,\"KmSzamlalo\",dbhandle); cInfo[VehHP] = cache_get_field_content_float(i,\"VehHP\",dbhandle); cInfo[VehFuel] = cache_get_field_content_int(i,\"Uzemanyag\",dbhandle); CreateVehicle(cInfo[vModel],cInfo[vPosX],cInfo[vPosY],cInfo[vPosZ],cInfo[vRot],cInfo[vCol1],cInfo[vCol2],-1); SetVehicleHealth(i,Float:cInfo[VehHP]); SetVehicleNumberPlate(i,cInfo[vRendszam]); v++; printf(\"Jarmuvek betoltve: %d\", v); } } printf(\"Jarmuvek betoltve: 0\"); } } return 1; }
Mi lehet a gond ? :\'(
|