Üzenetek megjelenítése

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 - Zsolesszka

Oldalak: 1 [2] 3 4 ... 136
16
Segítségkérés / MySQL fetch int nem mûködik
« Dátum: 2014. március 30. - 19:03:29 »
Ha jól értem, te annyit szeretnél hogy milyen fegyver legyen.
Biztosan lehetséges egyszerûbben megoldani.

17
Segítségkérés / MySQL fetch int nem mûködik
« Dátum: 2014. március 30. - 18:51:47 »
Nagyon fejre állítottad a dolgokat,
van egy táblád aminek a neve taska abban létrehoztál 1-tõl 47-ig oszlopokat,
alatta milyen formában vagy melyik oszlopban tárolod a felhasználónevet illetve milyen értéket is szeretnél megjeleníteni?
Mivel egy oszlopban és az azt keresztezõ sorban egy adatot lehet tárolni kettõ nem fér el maximum ha karakterláncként tárolod mondjuk vesszõvel elválasztva, \"Árpád,23\".
Valahogy értelmetlen az egész, kezd újra és ne használj for ciklusban mysql_query utasítást mert nagyon sokáig tart míg lefut, egyszóval lassú (akadozó) módod lesz.

18
Segítségkérés / MySQL fetch row
« Dátum: 2014. március 28. - 22:01:38 »
A beolvasott adat általában karakterláncként van tárolva, emiatt nem tudod közvetlen integer változóba helyezni.
A kód prototípusában is látható,
 
mysql_fetch_field_row(destination[], const fieldname[], connectionHandle = 1, max_len=sizeof(destination));[/quote]
szögletes zárójelek is erre utalnak.
Ha te továbbra is ezt a megoldást szeretnéd használni akkor létre kell hozni egy újabb karakterlánc tárolására szolgáló változót, amit egy másik eljárással (strval, floatstr, ..) átalakítva tudsz majd elhelyezni a létrehozott enum változóidba:
 
    stock LoginPlayer(playerid)
    {
            new
      query[128+1],
      data[64];
            format(query, sizeof(query), \"SELECT * FROM karakterek WHERE username = \'%s\'\", playername(playerid));
            mysql_query(query);
            mysql_store_result();
           
            while(mysql_fetch_row_format( query, \"|\"))
            {
                mysql_fetch_field_row(data, \"admin\");             pInfo[playerid][admin] = strval(data);
                mysql_fetch_field_row(data \"ora\");               pInfo[playerid][ora] = strval(data);
      // Elõfordulhat olyan változó alkalmazás ami nem egész szám (float) azt floatsrt(data) használatával tudod elhelyezni szintén egy float típusú változóba.
                // mysql_fetch_field_row(pInfo[playerid][mperc], \"mperc\");
                // mysql_fetch_field_row(pInfo[playerid][penz], \"penz\");
                // mysql_fetch_field_row(pInfo[playerid][firstreg], \"firstreg\");
                // mysql_fetch_field_row(pInfo[playerid][frakcio], \"frakcio\");
                // mysql_fetch_field_row(pInfo[playerid][rang], \"rang\");
                // mysql_fetch_field_row(pInfo[playerid][nem], \"nem\");
                // mysql_fetch_field_row(pInfo[playerid][kor], \"kor\");
                // mysql_fetch_field_row(pInfo[playerid][skin], \"skin\");
                // mysql_fetch_field_row(pInfo[playerid][telefonsz], \"telefonsz\");
            }
    }

19
Segítségkérés / Fájl sorainak lekérdezése
« Dátum: 2014. március 25. - 15:46:00 »
Fájl sorainak beolvasása egy megadott fájlból, és kiíratása konzol ablakban.
 
        
new
File:F = fopen(\"dini.fuck\", io_read),
str[128];
if(F)
{
while(fread(F, str))
{
   print(str);
}
fclose(F);
}

 
Ezt kell úgy módosítani hogy a beolvasott sorokat feldarabolja valamilyen eljárás az = (egyenlõségjel) mentén, majd össze kell fûzzni egy karakterláncba a kapott eredményt amit ki kell íratni dialogba.
Sajnos egy ideje nem szkriptelek és semmi kedvem nincs tesztelgetni de hamar össze dobok valamit.
 
stock
akarmi(playerid, filename[])
{
new
File:F = fopen(filename, io_read), // Fájl megnyitása
str[128], // karakterlánc tárolása
dialogstring[256], // kimeneti, illetve a végeredmény tárolása
name[64], // Jelenleg nincs rá szükség csak az eljáráshoz kell
value[64]; // érték melyeket majd össze kell fûzni a dialogstring-be ha nem nulla persze karakterláncként beolvasva
if(F) // Fájl megnyitásának ellenõrzése
{
while(fread(F, str)) // Addig olvasunk amíg van sor
{
   if(ini_cut(str, name, value)) printf(\"Error. line: %s\", str); // Adat ellenõrzés és darabolás
            else
   {
      if(strval(value) != 0) // Ha nem nulla a value persze átalakítással mivel karakterláncként lett tárolva
      {
         strcat(dialogstring, value); // akkor összefûzés dialogstring változóba
         strcat(dialogstring, \"\\n\"); // új sor jel hozzáadása
      }
   }
}
//print(dialogstring);
fclose(F); // A megnyitott fájl bezárása
ShowPlayerDialog(playerid, 5432, DIALOG_STYLE_MSGBOX, \" \", dialogstring, \"Ok\", \"\"); // Megjelenítés
}
return 1;
}
stock
ini_cut(line[], name[], value[], const delim = \'=\') // author by Zsolesszka
{
new
ch,
pos = 0,
pos2 = 0,
bool:valid = true;
while((ch = line[pos++]) >= \' \')
{
while(line[pos] == \' \') pos++;
if(ch == delim) { valid = false; continue; }
if(valid)
   name[pos - 1] = ch, name[pos] = EOS;
else
   value[pos2++] = ch, value[pos2] = EOS;
}
return valid;
}

 
Persze az ini_cut helyett használhatod a sscanf-et is, vagy bármi mást ami képes feldarabolni neked a beolvasott karakterláncot egy megadott karakter mentén (=).


Edit:
Késõn olvastam a hozzászólást, van rá mód hogy végig futtass egy ciklus utasítással egy enum által tárolt adatokat amit aztán szintén össze tudsz fûzni egy adott karakterláncba melyet megtudsz jeleníteni.

20
Segítségkérés / For - számok 1-99 ig
« Dátum: 2014. május 06. - 17:13:18 »
    for(new i = 1; i < 100; i++)
    {
        ...
    }

21
Segítségkérés / MYSQL In SAMP?
« Dátum: 2014. május 03. - 17:25:07 »
Szinte minden.
Legalábbis én nem tudok olyanról amit nem lehetne, ha csak a mysql oldalon nincs letiltva.

22
Segítségkérés / MySQL betöltési hiba
« Dátum: 2014. május 01. - 23:24:20 »
Hacsak 3 karakternyi adatot töltesz be akkor nem kell csodálkozni a furcsa eredményeken.
 
new field6[5][3];[/quote]
A 2459.45 az 8 karakternyi helyet foglal,(szám + null) karakterláncként, de csak 3-at tud beolvasni 24\\0.
A 3-ast írd át mondjuk 24-re és utána próbáld ki a kódod.

23
Segítségkérés / Timerek nem állnak le
« Dátum: 2014. április 30. - 22:35:32 »
Ugyanaz marad mint ami volt, ez elég zavaró samp esetén. (tudtommal)
Ezért írtam KillTimer után egy negatív érték megadást \"timer[playerid] = -1;\".

24
Segítségkérés / Timerek nem állnak le
« Dátum: 2014. április 28. - 22:56:53 »
Ha játékosonként tárolod egy elindított idõzítõ azonosítóját mondjuk így:
 
new timer[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
    timer[playerid] = SetTimer.........
    ....

 
Akkor a változó továbbra is tárolni fogja az elindított timer azonosító számát akkor is ha a játékos kifagy vagy crashel.
Ebbõl kiindulva le lehet állítani akkor is ha egy új játékos fellép a szerverre gyakorlatilag a helyére (ugyanazt az id-t kapja meg amelyik a kifagyott játékosé volt.
Persze azt nem tudni hogy a samp programozója ezt hogyan kezeli hogy idõzítõ azonosításra újra felhasznál-e olyan értéket amit korábban leállításra került, ezért biztonságra törekedve meglehet határozni egy értéket ami azt jelenti hogy az idõzítõ leállításra vagy egyáltalán nem is lett elindítva, ami lehetne mondjuk a -1.
 
new timer[MAX_PLAYERS] = { -1, ... };
public
OnPlayerConnect(playerid)
{
if(timer[playerid] != -1) KillTimer(timer[playerid]); // Így ha véletlenül nem kerülne meghívásra játékos kifagyásakor az OnPlayerDisconnect akkor OnPlayerConnect alatt le lehet állítani egy másik játékos által elindított idõzítõt
    timer[playerid] = SetTimer(\"bla\", 1000, 1);
return 1;
}
public
OnPlayerDisconnect(playerid, reason)
{
KillTimer(timer[playerid]);
timer[playerid] = -1;
}

 
Ez lenne az elmélet, a kérdés hogy mûködik-e a valóságban?

25
Segítségkérés / Kiolvasás tömbbõl
« Dátum: 2014. április 28. - 22:32:37 »
Mi az a \"beleszerkesztesz\" szabály? (moderálva) :D
Hol találom?

26
Segítségkérés / Ikea Problem 2
« Dátum: 2014. április 08. - 20:59:04 »
Idézetet írta: BoOy date=1396888986\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"47593\" data-ipsquote-contentclass=\"forums_Topic
mivel 100 objectet nem tud kiírni 1 dialogba. Nem is írtam a publikált témába hogy ezt változtathatja valaki.
 
Ezért nem szabad definíciót alkalmazni olyan értéknél amelyet nem szeretnéd ha megváltoztatnának. :D

27
Segítségkérés / MySQL fetch int nem mûködik
« Dátum: 2014. március 30. - 20:09:37 »
Akkor a késõbbi azonosításra mást kell kitalálnod, mert igazad van tárolhatod ott a lõszer mennyiségét is.

28
Segítségkérés / MySQL fetch int nem mûködik
« Dátum: 2014. március 30. - 19:40:53 »
Értem, akkor is az adat lekérésed nem jó.
Egyetlen sql utasítással kellene lekérned minden adatot amire éppen szükséged van, most az összesre mivel 47 darab fegyver közül kell kiszedned azokat amelyek gyakorlatilag megvannak tehát egy az értékük:
 
 mysql_query(\"SELECT * FROM taska WHERE username = \'%s\'\");

 
Majd a vissza kapott adatok alapján tudod eldönteni melyik fegyvert kell ténylegesen ki íratni dialogba, idõvel persze gondot fog okozni majd az is ha a dialogból kell kiválasztani egyet és azt oda adni a játékosnak, mivel ott már csak azok a dolgok szerepelnek amik megvannak, a helyedben azt hogy van-e fegyver ugyanazzal az értékkel tüntetném fel ami a fegyver valódi ID értéke és mondjuk -1-el ha nincs neki:
1 2 3  4 5 6   7 8
1 2 3 -1 5 6 -1 8
Itt tehát a 4-es és a 7-es nincs a játékosnak meg.
Ezzel a módszerrel könnyebben tudsz nevet adni felsorolásban a dolgoknak és könnyebben vissza lehet azonosítani mikor kiválasztja azt egy játékos.
Egyébként elég nagy fába vágtad a fejszéd így kezdésnek. :D

29
Segítségkérés / MySQL fetch int nem mûködik
« Dátum: 2014. március 30. - 19:03:29 »
Ha jól értem, te annyit szeretnél hogy milyen fegyver legyen.
Biztosan lehetséges egyszerûbben megoldani.

30
Segítségkérés / MySQL fetch int nem mûködik
« Dátum: 2014. március 30. - 18:51:47 »
Nagyon fejre állítottad a dolgokat,
van egy táblád aminek a neve taska abban létrehoztál 1-tõl 47-ig oszlopokat,
alatta milyen formában vagy melyik oszlopban tárolod a felhasználónevet illetve milyen értéket is szeretnél megjeleníteni?
Mivel egy oszlopban és az azt keresztezõ sorban egy adatot lehet tárolni kettõ nem fér el maximum ha karakterláncként tárolod mondjuk vesszõvel elválasztva, \"Árpád,23\".
Valahogy értelmetlen az egész, kezd újra és ne használj for ciklusban mysql_query utasítást mert nagyon sokáig tart míg lefut, egyszóval lassú (akadozó) módod lesz.

Oldalak: 1 [2] 3 4 ... 136
SimplePortal 2.3.7 © 2008-2024, SimplePortal