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. 16
Segítségkérés / Bemutatkozás rendszer« Dátum: 2016. január 10. - 17:57:49 »
Lehet meg kéne próbálni sima aposztróffal is és hagyni az okoskodásomat.
17
Segítségkérés / Bemutatkozás rendszer« Dátum: 2016. január 10. - 17:13:26 »
A format() kisbetű, kell bele hosszúság (sizeof(query2)). Mivel odaírtad, hogy \" LIMIT 1\" (ami nem hülyeség, javasolni is akartam!), ezért nyilván 8 karakterrel hosszabb lesz a query.
Ezt rakd még be az OnGameModeInit elejére: mysql_log(LOG_ALL, LOG_TYPE_HTML); Ezzel így elméletileg egy mysql_log.html fájlba mindent kiír majd, ami csak történik. Ha hiba van, így láthatjuk az azt megelőző történéseket is, így könnyebb lesz azt körülhatárolni. 18
Segítségkérés / Bemutatkozás rendszer« Dátum: 2016. január 10. - 16:46:40 »
Ha ID alapján csinálod, azt is név alapján kéred le, tehét lényegében csak plusz egy lekérést csinálsz.
Az SQL log pedig azt írja, hogy nem talál Kiss_Pista nevű oszlopot. Keresel egyátalán valahol olyat? :O A Bemutatkozas1 funkcióra írja, de ott nincsen olyan. 19
Segítségkérés / Csatlakozás« Dátum: 2016. január 10. - 16:40:28 »
Olyankor nem tudod lespawnolni. Jobb lesz, ha TogglePlayerSpectating()-et használsz.
20
Segítségkérés / Bemutatkozás rendszer« Dátum: 2016. január 10. - 14:55:44 »
Működési (logikai) sorrendben nézem végig a kódot.
1. 25. sor: return SendClientMessage(playerid, PIROS, \"Nincs a közeledben senki!\"); Nincs a közeledben a kiválasztott játékos, inkább. De ezen nem múlik sokminden. 2. Neve(playerid) Ez alsóvonással, vagy anélkül tér vissza a nevével? Lehetőleg úgy kellene, ahogy a bemutatkozasok táblában tárolva van. Bár szinte biztos vagyok benne, hogy ez sem okozza EZT a hibát, de szerintem jobb lenne egy Nev[MAX_PLAYERS][24] tömbben tárolni a neveket bejelentkezéskor, így csak onnan kéne olvasnia, nem kell minden egyes lekérésnél végigfutnia egy plusz függvénynek, stb. 3. SELECT * FROM \'bemutatkozasok\' WHERE ki=`%s` AND kinek=`%s` Ilyen ` jelet magyar billentyűn Alt Gr + 7-tel tudsz írni. Én mindig aposztrófot használtam (\') (a tutorialomban is), de most profinak akartam tűnni és úgy írni, ahogy azt a legtöbb más helyen is szokták. Lehetőleg mindegyik legyen egyforma, bár sosem próbáltam még ki, hogy ez okoz-e valamiféle gubancot. Ha ennek még a formázásnál használt hosszába is bele akarnék kötni, azt mondanám, hogy legyen a maximális mérete + 1. A következőképp számolok: beillesztem ide >ERRE AZ OLDALRA< a következő queryt (%s-ek nélkül nyilván): SELECT * FROM `bemutatkozasok` WHERE ki=`` AND kinek=`` Erre kiadja, hogy 55 karakter hosszú. Még ehhez hozzájön 24+24 karakter (mindkét player nevének maximális hossza), ami 103, plusz egy kell a string lezárásához (nekérdezd ). 104-re elég formázni (és a tömb méretének is elég ennyi). A %s-ek attól kellenek a formatba, csak a hossz méréséhez vettük ki ideiglenesen!! Illetve MySQL format-ot csak akkor használnék szívem szerint (bár nem tudom miben különbözik a sima formattól), ha escape karaktert írok bele (%e), melyet csak ez a funkció tud. Annyira nagy hiba itt sem volt, csak megnyugtatta a spúr lelkemet, ez a felszabadult 152 byte (256>>104). 4. A 6-7. sorban a következő query méretét megint csak módosítanám (az aposztrófok kijavítása mellett): INSERT INTO \'bemutatkozasok\' (`ki`,\'kinek\') VALUES (\'%s\', \'%s\') Ez a fenti oldal segítségével végzett számításaim szerint (kicsit megszépítve %s-ek nélkül): INSERT INTO `bemutatkozasok` (`ki`,`kinek`) VALUES (``,``) 58+24+24+1=141 karakter hosszú, szóval annyira pont elég formázni, és a tömb méretének is elég. A 3. és 4. pontot próbáld meg 24 karakter hosszú nevekkel a biztonság kedvéért! Ha lehagy egy karaktert, próbáld újra úgy, hogy a tömb méretét eggyel kisebbre, a formatot pedig eggyel kisebb méretűre veszed. Nem emlékszem már pontosan erre! Ezen kívül nem tudok mit mondani. Be van kapcsolva a mysql_logolás? Nézd meg ott, hátha segít. 21
Segítségkérés / Connectnél clearchat probléma« Dátum: 2016. január 10. - 14:38:46 »
Olyan nincs. Mikor-hogy írja ki, van, hogy még a connect előtt picivel berakja a connected szöveget, esetleg egy timert lehet ráállítani, de az se 100%. Nem olyan zavaró az
22
Segítségkérés / Bemutatkozás rendszer« Dátum: 2016. január 10. - 00:30:36 »
Láttam én már a kérdésed, mikor kiírtad, csak lusta voltam leírni az igazat megvallva
Én a következőképpen oldanám meg: I, Létrehozok egy bemutatkozasok táblát a következő oszlopokkal: id(LONG_INT, A_I), ki(varchar 24), kinek(varchar 24) II, A \"/bemutatkoz\" parancs kiadásánál a következő kód fut le: 1. Nyilvánvalóan, sscanf()-fel feldarabolom a parancs paramétereit, illetve az \"r\" paramétert használom (ez játékos nevet vagy id-t érzékel, botot nem), eltárolom az id-t mondjuk egy playerid2 változóba. 2. Leellenőrzöm, hogy nem-e bemutatkozott-e már; ezt egy select queryvel: kiválasztom a bemutatkozasok táblát, ahol ki=`%s`, oda pedig format-tal beilleszted playerid nevét, hiszen azt a sort akarjuk kijelölni, ahol ő mutatkozott be, illetve kinek=`%s`, ide pedig nyilván playerid2 neve kerül. A cache_get_row_count() a talált sorok számával tér vissza (a mysql_tquery()-nél megadott function-ben!!). 3. Amennyiben a fenti érték 1 - azaz már bemutatkozott -, hibaüzenettel térek vissza, ha viszont 0 - tehát még nem mutatkozott be playerid playerid2-nek, beillesztek egy sort a nevükkel, és kiírom mindkettejüknek, hogy mi történt, esetleg még playerid2-nek azt, hogy ő ugyanígy, a \"/bemutatkoz\" paranccsal mutatkozhat be a másik játékosnak. 4. Minden parancsnál, ahol a többi játékos felé kell kiírnom valaki nevét, leellenőrzöm, hogy bemutatkozott-e már neki az illető. Egy select queryvel kiválasztom azokat az oszlopokat, ahol a ki=playerid-neve. Így le tudom kérni egy ciklussal egy tömbbe mindazon játékosok listáját, akiknek már bemutatkozott playerid (a /me írója). Így, a SendClientMessageToAll() helyett egy ciklust használva, kiszűrve azt aki nem online, nincs belépve, vagy nincs a közelben, csak a fenti feltételeknek megfelelő játékosoknak kiírom: HA már bemutatkozott (végigment a query és volt az egyik névvel egyezés, ezt egy ideiglenes változóban tárolhatod pl.), akkor a nevét írom ki a cselekvése elé, HA VISZONT NEM (azaz az ideiglenes változó nem változott 1-re, mikor \"azon játékosok listájá\"-t nézte át a fő cikluson belüli ciklus, akik már bemutatkoztak playerid-nek), azaz nem volt egyezés egyik névvel sem, csupán annyit írok ki, hogy valaki, majd a cselekvés. III, Hogyan működik ez a gyakorlatban? Adott két játékos: Eric_Cartman(0), Stan_Marsh(1). Eric beírja: /bemutatkoz Stan_M Stan_M-et érzékeli mint 1-es id-t az sscanf, aki online van, belépve, és Eric közelében is (IsPlayerInRangeOfPoint). A bemutatkozasok táblába beírásra kerül: id=`0` ki=`Eric_Cartman` kinek=`Stan_Marsh` Ezentúl amikor Eric /me-t ír, a /me parancsnál a táblában megtalálja a rendszer, hogy mely sor(ok)ban igaz az, hogy ki=Eric_Cartman. Ez esetünkben a következő sor: id=`0` ki=`Eric_Cartman` kinek=`Stan_Marsh`. Ekkor \"azon játékosok listája, akiknek már bemutatkozott Eric Cartman\" a következő, egy stringgel rendelkező tömb lesz: {{\"Stan_Marsh\"}}. Így mikor a /me ciklus a 0-s id-nél jár, látja, hogy online, belépve, és a közelben van a játékos, majdpedig látja, hogy i=playerid, ezért Én-t ír ki valaki helyett. Továbbmegy a ciklus a következő iterációra, immáron i=1; itt végigpörget a tömb elemein, és mivel csak 1 eleme van (egyelőre, mivel csak 1 ember volt, aki bemutatkozott Ericnek), hamar végigfut. Látja, hogy Stan_Marsh neve egyezik i nevével (1-es id-jű játékos), ezért átállítja t ideiglenes változót 1-re. Mivel t=1, kiírja neki Eric nevét. Ha lenne valaki más, ahol t=0 maradna (if (t==0)), mivel nem mutatkozott volna még be neki Eric, akkor neki csak Valakit írna ki Eric helyett. Ugyanezt be tudod illeszteni az OnPlayerText-hez is, meg a /do parancshoz is, meg ahova akarod. Bele lehet még keverni egy maszk rendszert, mindent. Figyelem! Lehet, hogy célszerűbb lenne nem minden egyes alkalommal SQL-lekéréseket indítani, mikor valakinek a neve szóba esik. Lehet, hogy jobb lenne emberek ismerőseinek a listáját tömbökben tárolni, azokat módosítgatni-szerkesztgetni, és csak bizonyos időközönként, illetve szerver-leállításkor elmenteni a dolgokat. Az előbbi, fent kifejtett megoldás valós idejű, ennyi az előnye, ha crashel a szerver, nem veszik el adat, mert mondjuk csak fél perc múlva jött volna az automatikus mentés, addig meg 20 ember bemutatkozott egymásnak. Az is lehet, hogy jobb lenne egy AreFriends(playerid1, playerid2) funkciót írni és unthreaded queryvel és cache-el megoldani a dolgot, hogy egyszerűsítsünk a kódon, bár ezt nem javasolják, mert laggot okozhat az unthreaded query jellege miatt (egyszerre nem tud több futni). Meg szeretnélek kérni arra, hogy ha van valami kérdésed ezzel kapcsolatban, ne PM-et írj, inkább itt beszéljük/vitassuk/oldjuk meg, ezzel is javára válva a közösségnek. Ha már küldesz egy félkész kódot, hogy segítsünk kijavítani, az is több, mint a semmi, próbálkozni szabad, szívesen segítünk. Köszönöm előre is. 25
Fórum Archívum (Témák/Fórumok) / Re:Fort Carson RolePlay | FCRP @ 2015« Dátum: 2015. október 09. - 15:09:59 »Idézetet írta: Ben date=1444395393\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"63436\" data-ipsquote-contentclass=\"forums_Topic Pozitívan álltam a szerverhez mikor ki akartam próbálni. Azt is figyelembe vettem, hogy béta. Na de ennyire?(...) nem hatalmaz fel azok betartása alól. 26
Kérdések, Segítség / Kék halál fájlok mozgatásánál« Dátum: 2015. október 03. - 21:08:26 »
Off: attól függ legfőképp, hogy milyen DE-t raksz arra a Debianra. Egy KDE vagy egy GNOME 3 lényegesen többet eszik mint egy xfce vagy egy lxde.
On: Teszteld a kártyát mondjuk h2testw-vel. 27
Segítségkérés / Chat error?« Dátum: 2015. szeptember 26. - 18:19:42 »
Tuti, hogy az sscanf plugin lesz.
28
Segítségkérés / error 001 Megoldás« Dátum: 2015. szeptember 22. - 15:00:48 »
Az előtte meg utána lévő sort is.
29
Segítségkérés / ZCDM adminparancshiba« Dátum: 2015. szeptember 19. - 17:56:49 »
if(!IsPlayerAdminLevel......
30
Segítségkérés / Kisebb kérdések« Dátum: 2015. szeptember 15. - 16:41:26 »
gta3.img >kicsomagol> tec9.txd >kicsomagol> tec9icon.png
|