|
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. 257
Segítségkérés / String értéke 0« Dátum: 2013. július 18. - 21:41:44 »
Van egy karakter melyet null karakternek neveznek, ez karakterláncoknál a benne szereplõ karakterek végét jelenti.
Igaz hogy ezzel nem törlõdik az egész tartalma teljesen de megjelenítésnél üresként fogja érzékelni. PlayerInfo[playerid][pJegyzet1] = EOS; // End Of String 258
Segítségkérés / Összekeveri a dolgokat :(« Dátum: 2013. július 18. - 10:16:03 »Idézetet írta: ninjo98 date=1374130832\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"39972\" data-ipsquote-contentclass=\"forums_Topic Üdv! :Cry2: 259
Segítségkérés / OnPlayerText hiba« Dátum: 2013. július 17. - 09:21:38 »
Mert a Chat 128 egyes esetekben 144 karaktert képes megjeleníteni.
Ebbe beletartoznak a színezés kódjai is amik igaz nem jelenik meg a szöveg dobozban, de a megjeleníthetõ karakterek számát csökkentik. Mégpedig minden egyes színkód 8 karakternyi értékes helyet vesz el, a te esetedben már 6 darab szerepel az 6*8 = 48 marad 128-48 = 80-van karakter ebbõl lejön a játékos neve majd playerid jelölése és marad ~50-60 karakter ebbe már nem fér el a bevitt 128 maximális karakternyi szöveg (text[]). Ne használj ennyi színezést, írj figyelmeztetõ üzenetet hogy túl sok karakternyi szöveget írt be a játékos. 260
Fórum Archívum (Témák/Fórumok) / Re:MYSQL_WATTAFAKK?!?!?!?!!« Dátum: 2013. július 17. - 09:15:04 »WATTAFAKK?!?!?!?!! (meuu)?[/quote] 261
Segítségkérés / Timer« Dátum: 2013. július 17. - 09:14:03 »
Annyi a baj hogy csak a 0 ID-vel jelölt játékosnak mûködnek a fenti kódok.
Ez helyett: SetTimer(\"Beszivva\", 60000, false); ez: SetTimerEx(\"Beszivva\", 60000, false, \"i\", playerid); 262
Segítségkérés / Else if ág pontosan, hogyan is müködik?« Dátum: 2013. július 14. - 15:23:02 »
Itt jön az amikor bezavarodnak az emberek azzal a dologgal hogy hamis igaz, vagy igaz vagy mégsem?
![]() Gondolkodj visszatérési értéken, amit vissza adnak a különbözõ funkciók, igen mert mindegyik más értékkel tér vissza annak megfelelõen hogyan tudta ellátni feladatát. Például a sscanf 1-es értéket ad vissza ha valamit nem talált rendben. Az strcmp meg 0 értékkel tér vissza ha a kettõ karakterlánc megegyezik. Az IsPlayerConnected is 1-es értéket adott vissza, mikor csatlakozott állapotot küld vissza a játékosról. Az strfind meg (-1)-es értéket ad vissza akkor ha semmilyen egyezést nem talált. Na most ha visszatérési értéken gondolkodsz ami akár lehetne egy karakter is vagy 600 is tök mindegy akkor az if-ben azt vizsgálod, hogy azt kaptad-e vissza vagy sem és akkor már eltudod dönteni a két különbözõ dolognál mi történjen. Az if minden esetben két lehetséges út vonalat biztosít, vagy igaz vagy hamis amit vizsgálsz benne, ennek megfelelõen közvetlen utána vagy az else utasítás után lévõ dolgok futnak le. Itt jön képbe hogy szinte minden más függvénynek más a visszatérési értéke és egy azon dolgot le lehet írni többféleképpen. A következõ pár példa szinte mind ugyanaz csak a kód kinézetük más, és máshol helyezkedik el hogy mikor mi történjen: if(IsPlayerConnected(playerid) == 1) print(\"Csatlakozva\"); else print(\"Nincs csatlakozva.\"); Akkor még pár példa: new Tehát röviden fogalmazva visszatérési értékek összehasonlítása történik a zárójelben, ha ezen értékek a köztük lévõ operátor jeleknek megfelelnek akkor közvetlen az if után írt kód fut le, ellenkezõ esetben az (else) ág illetve az (else if) ág következik, ha egyáltalán szükség van rá. Ui.: Remélem nem rontottam el a példákat mivel nem teszteltem. De bízok benne csak nem tévesztek már ennyi idõ után, de tévedni emberi dolog. ![]() Tehát mindig azt figyeld milyen értéket is ad vissza az if zárójelei közt lévõ eljárás/eljárások, az miként felel meg az esetleg köztük lévõ operátor jeleknek, így már remélhetõleg érteni fogod hogy a benne lévõ kritériumoknak van igaz, illetve hamis végeredménye és ez dönti el hogy most közvetlen utána, vagy else utasítás után fut tovább a program. 263
Segítségkérés / mysql sorok csökkenõ sor« Dátum: 2013. július 14. - 14:46:35 »
Így próbáld ki:
new 264
Tanuljunk PAWN nyelvet / Bitmûveletek a gyakorlatban.« Dátum: 2013. július 14. - 01:23:07 »
Mivel látom hogy elég kevesen alkalmazzák ezen dolgokat sa-mp szkriptelés terén ezért megpróbálok pár példát írni alkalmazásukra természetesen ahogy sikerül valami újabb hasznos gyakorlati alkalmazást kitalálnom vagy találnom, frissíteni fogom ezen leírásszerûséget.
Itt nem fogok kitérni a bitmûveletek mûködésre arra ott van Anthony által írt leírás: Bitmûveletek, valamint gyakorlati alkalmazás a SA:MP-ban Az egyik segítség kérés témában felmerült problémára való megoldásként jött az ötlet, mivel ott említettem hogy egyszerûbb lenne bitmûveletekkel megvalósítani a dolgot miszerint szeretnénk egy játékosnak egyszerre több munkát is engedélyezni, úgy hogy minél kevesebb memóriát használunk fel, természetesen egyszerûen törölni akár az összes meglévõ munkát. Ennyit az elõzményrõl. A kiegészítõ szövegek után szereplõ bináris értékek a bitmûveletek után történt változás eredményét szemléltetik! enum Megjegyzés: Nem véletlenül szerepel a MUNKA_32 mivel ennyi a maximálisan állítható bit érték egy változóba 32 bit esetén. Több munka egyszerre történõ megadása: Job[playerid] |= MUNKA_2; // Ez az érték megadása a következõ sor szemléltetése végett szerepel. // 0b00000000000000000000000000000010 Munkák egyesével történõ hozzáadása: Job[playerid] |= MUNKA_5; // 0b00000000000000000000000000011101 Egy munka törlése: Job[playerid] &= ~MUNKA_5; // 0b10100001000010000100001000001101 Egy munka törlése ha aktív, vagy aktiválása ha nincs beállítva: Job[playerid] ^= MUNKA_20; // Ez esetben törlés mivel már aktiválva van. // 0b10100001000000000100001000001101 Több munka egyszerre történõ megadása régi értékek megtartása mellett: Job[playerid] |= MUNKA_11 | MUNKA_31 | MUNKA_22; // 0b11100001001100000100011000001101 <--Ez az érték kerül egy kis ellenõrzésre a példában. (printf(\"%d - %d -> %b\") Az elvállalt munka lehetõség kilistázása for ciklussal: static const A beállított munkák számlálása: stock Ellenõrzés hogy melyik munkát vállalta a játékos: if(Job[playerid] == MUNKA_NONE) printf(\"Nincs egy munka sem: MUNKA_NONE\"); Összes munka törlése. Pl.: OnPlayerConnect-hez printf(\"%d - %d -> %b\", 0b11100001001100000100011000001101, Job[playerid], Job[playerid]); // Egy kis ellenõrzés tényleg jók-e a bitmûveletek. Példa szkript gyors tesztelésre: #include <a_samp> 265
Segítségkérés / távolság« Dátum: 2013. július 12. - 22:05:45 »
Miért kell a floatabs?
Két koordináta pont közötti távolságot kell kiszámolni ha te megváltoztatod a negatív elõjelet akkor a koordináta pozíciót is megváltoztatod, és hamis eredményt kapsz. 266
Segítségkérés / Else if ág pontosan, hogyan is müködik?« Dátum: 2013. július 11. - 22:17:39 »
Gyakorlatilag arról van szó hogy egyetlen egy utasítás fog megtörténni egyszeri lefutás alkalmával:
Próbáld ki mit csinál a következõ kód: new Akik nem értik az else if használatát azok általában return utasításokkal szakítják meg a kód tovább futását lásd a fenti posztot, az else if szerkezetnél nincs szükség közbensõ return utasításra. Mûködése megegyezik a switch case utasításokkal: new 267
Segítségkérés / For és a while ciklus, akkor pontosan, hogy is müködik?« Dátum: 2013. július 10. - 22:12:44 »
Jogos az észrevétel.
Kis javításra szorul annak a leírásnak ezen részei, majd krisk-nek ha lesz egy kis ideje biztosan javítani fogja. ![]() Páratlant csak akkor fogja kiírni ha az i értéke kezdésnek 1, majd az i változót 2-esével növeljük ennek szintén lehet pár megoldása: for(new i = 1; i < 20; i += 2) for(new i = 1; i < 20; i++, i++) És igen, csak addig futnak amíg a feltétel igaz. 268
Segítségkérés / változón belüli összes paraméterre vonatkozóan...« Dátum: 2013. július 10. - 12:42:13 »
Ezt nem így szokás megadni mindig a játékos változó van elõbb, tehát így:
new WorkDuty[MAX_PLAYERS][MAX_WORKS]; Gondolom egy játékosnak több munka is lehet ezért kell neked az újabb MAX_WORKS tömb, ezt mondjuk bit mûveletekkel egyszerûbb létrehozni. De maradjunk ennél. Ha ezt úgy hozod létre ahogy fentebb leírtam akkor egy újabb változóval egyszerûen nullára tudod állítani az összes értéket mégpedig így: new set_null[MAX_WORKS]; 269
Segítségkérés / Véletlenszerû alapértelmezett érték sscanf-ban« Dátum: 2013. július 08. - 18:42:49 »
Csak úgy tudod hogy utána leellenõrzöd hogy a color1 iletve a color2 értéke minusz egy maradt-e. Ha igen akkor nem történt érték meghatározás és beállíthatod random értéket.
if(sscanf(params, \"k<vehicle>D(-1)D(-1)\", vehid, color1, color2)) return Send.. 270
Segítségkérés / Symbol error« Dátum: 2013. július 08. - 15:59:27 »
Mert már lehetséges hogy egy úgynevezett plugin által kínált eljárással próbálod betenni az objecteket, konkrétan streamer plugin. ( CreateDynamicObject(..)
Ahhoz már a függvénykönyvtárra is szükség van (streamer.inc fájl a /pawno/include mappában és a mód tetején szerepelni kell hogy #include <streamer>. Kezdõ vagy, kezd az elején. ![]() Az alap samp eljárásokat megtalálod már az említett helyen ../pawno/include mappa. Az ott lévõ fájlokat átnézve láthatod milyen eljárásokat alkalmazhatsz a módod megírásához. Ezeken felül a különbözõ pluginok által kínált lehetõségeket is felhasználhatod, de ahhoz már tudnod kell mit és hova kell írni hogy utána feltudjad használni õket, meg persze ki is kell tapasztalni hogy mi a bánatra is valóak az új funkciók, de elõtte az alap samp dolgokat se ártana megismerni.
|

