Ü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 ... 51 52 [53] 54 55 ... 136
781
Segítségkérés / Mik ezek? (MySQL)
« Dátum: 2012. augusztus 20. - 15:18:51 »
Mert azt figyelmen kívül hagyja. Ha megtalálja benne azokat a részeket.
Ha nem lenne ott akkor be kellene illesztened még kettõ változót:
 
sscanf(linen, \"p<|>ds[24]dffffdddd\",int, string, tarolo[0], Float:tarolo2[0], Float:tarolo2[1], Float:tarolo2[2], Float:tarolo2[3], tarolo[1], tarolo[2], tarolo[3], tarolo[4]);[/quote]

782
Leírások/Útmutatók / [TUT]bool típusú változó érték felcserélése.
« Dátum: 2012. augusztus 20. - 14:18:23 »
Mivel épp egy harmadik megoldást is láttam pár napja, immáron ezt 3 féle képpen meglehet valósítani.
Legyen a változó mondjuk:
 
new bool:dmbenvan[MAX_PLAYERS]; // Ezt a változót azért sokan megértik azért esett rá a választás.

 
Egy bool típusú változónak kettõ értéke lehet melyet sok nyelvben false(0), true(1), elnevezésekkel látnak el, zárójelben az értéküket is oda írtam.
Alap értékként pawn nyelvben egy több cellás bool változó minden cellája false értéket kap.
Az if else megoldás, ennek a változónak játékosonkénti adatfelcserélése a következõ:
 
if(dmbenvan[playerid] == true)// itt egy játékosnak ellenõrizzük hogy true az érték (játékban most dmben van)
{
    dmbenvan[playerid] = false; // érték csere
    // kitesszük a játékost dmbõl SetPlayerPos(..
} else { // mely lehetne \"else if(dmbenvan[playerid] == false)\" is, de minek, ha feljebb nem \"true\" értéket kapunk akkor else csak is \"false\" érték lehet
    dmbenvan[payerid] = true; // érték csere
    // betesszük a játékost a dmbe SetPlayerPos(..
}

 
A második megoldás ennek a változónak az érték megváltoztatására egy kis matekkal történhet:
 
if(dmbenvan[playerid])
{
    // kitesszük a játékost dmbõl SetPlayerPos(..
} else {
    // betesszük a játékost a dmbe SetPlayerPos(..
}
dmbenvan[playerid] = true - dmbenvan[playerid];

 
Mit is látunk itt? Van egy változó melynek az értéke ha true(1)  akkor a
 

dmbenvan[playerid] = true; // 1
dmbenvan[playerid] = true - dmbenvan[playerid];// <- ez behelyettesítve az érték felcserélés:
// dmbenvan[playerid] = true - true; // eredményül nullát kapunk tehát false(0) értéket kap a változó. (mivel 1 - 1 = 0-val)

 
Ugyanez fordítva ha false(0) értékkel kezdünk:
 

dmbenvan[playerid] = false; // 1
dmbenvan[playerid] = true - dmbenvan[playerid];// <- ez behelyettesítve az érték felcserélés:
// dmbenvan[playerid] = true - false; // eredményül egyet kapunk tehát true(1) értéket kap a változó. (mivel 1 - 0 = 1-el)

 
Lemagyarítva kicsit érthetõbben: 
Ha 1-bõl kivonunk 1-et akkor 0-át kapunk eredményül,
ha 1-bõl kivonunk 0-át akkor 1-et kapunk eredményül.
 

A harmadik megoldás egy változó érték felcserélésének a pawnban használatos tagadás jellel is megvalósítható, ami a felkiáltó jel (!).
 
if(dmbenvan[playerid])
{
    // kitesszük a játékost dmbõl SetPlayerPos(..
} else {
    // betesszük a játékost a dmbe SetPlayerPos(..
}
dmbenvan[playerid] = !dmbenvan[playerid]; // érték felcserélése

 
Ehhez sok magyarázat talán nem szükséges, ha (true(1)) az értéke akkor azt letagadva (false(0)) értéket kapunk, ugyanez fordítva is igaz.
Sebesség tesztet nem végeztem melyik gyorsabb, de méretileg a harmadik megoldás foglal kevesebb helyet.

783
Segítségkérés / Mik ezek? (MySQL)
« Dátum: 2012. augusztus 20. - 08:12:46 »
    public OnFilterScriptInit()
    {
            mysql_debug(1);// ezzel elindítjuk azt hogy kiírja a hibákat egy fájlba
            mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS);// ezzel ugye csatlakozunk egy elõre definiált hosthoz (nem csak hosthoz hanem egy számodra létrehozott adattömbhöz is mint felhasználónév és adatbázisnév (SQL_USER, SQL_DB)
            if(mysql_ping() != 1)//lekéri hogy él e a kapcsolat
            {
                    print(!\"MySQL: Kapcsolódás sikertelen!\");
                    return 1;
            }
            print(\"\\n--------------------------------------\");
            print(\" névreszóló autó | by Ryuuzaki\");
            print(\"--------------------------------------\\n\");
            for(new i; i < MAX_SLOTS; i++)
            {
                    format(query, sizeof(query), \"SELECT * FROM cars WHERE slot = \'%d\'\", i); // Az összes adatoszlop kiválasztása (SELECT *) a cars adattáblán (FROM cars) aminek a slot adatoszlop bármelyik mezõjének értéke = i -vel (WHERE slot = \'%d, i)\'
         mysql_query(query);// tekintheted belépési pontnak is mysql adattároláshoz (elküldi a mysqql szerverhez mit is akarsz tõle) :D
                    mysql_store_result();// a mysql szervertõl kapott adatok tárolása további felhasználásra
                    if(mysql_num_rows() != 0)// ellenõrzi hogy mennyi adatsort kaptunk vissza eredményként (pontosabban itt kaptunk-e vissza adatot)
                    {
                            new linen[1024];
                            mysql_fetch_row(linen);//a visszakapott adatsorunkat tárolja számunkra a létrehozott \"linen\" változóban (hogy feltudjuk használni pawnban) az elõre meghatározott | delimiterrel pl.: 3|infernus|0|2.3212312|4.321231|4.323231|..
                            new tarolo[5];
                            new Float:tarolo2[4];
                            sscanf(linen, \"p<|>{ds[24]}dffffdddd\", tarolo[0], Float:tarolo2[0], Float:tarolo2[1], Float:tarolo2[2], Float:tarolo2[3], tarolo[1], tarolo[2], tarolo[3], tarolo[4]);//szét darabolja a linen változóba tett adatsorunkat (ami nem más csak számok nevek egymástól | karakterrel elválasztva)
                            carplay = CreateVehicle(tarolo[0], tarolo2[0], tarolo2[1], tarolo2[2], tarolo2[3], tarolo[1], tarolo[2], -1);
                            AddVehicleComponent(carplay, tarolo[3]);
                            AddVehicleComponent(carplay, tarolo[4]);
                            mysql_free_result();// a mysql_store_result által tárolt adatok felszabadítása
                    }
            }
            return 1;
    }

 
Amúgy ez egy eléggé elcseszett kód.
Egy for ciklus ami lehet lefut kétezerszer és kétezer alkalommal kér le adatot mysql-rõl.  Itt a fórum is egy oldal betöltésnél is alig ~30 körüli lekérdezést hajt végre nem 2000-et. :D

784
SA-MP: Szerverfejlesztés / Eltelt idõ a szerveren
« Dátum: 2012. augusztus 19. - 13:13:22 »
Egyszer már leírtam csak elveszett amit írtam.
Nem rossz de talán lehetne jobb is egy észrevétel rögtön, amit egy részlettel kezdenék:
 
        format(file,128,\"/ido/%s.ini\",name)     if(!dini_Exists(file))
        {
            dini_Create(file);
            dini_IntSet(file,\"Orak\",0);
            dini_IntSet(file,\"Percek\",0);
            dini_IntSet(file,\"Mpercek\",0);
            pInfo[playerid][orak] = dini_Int(file,\"Orak\");
            pInfo[playerid][percek] = dini_Int(file,\"Percek\");
            pInfo[playerid][mpercek] = dini_Int(file,\"Mpercek\");

 
Gyakorlatilag ebben a részben ellenõrzõd hogy létezik-e az adott fájl ha ez nem létezik akkor létrehozod (dini_Create) majd létrehozol benne 3 adatsort (Orak, Percek, Mpercek)
amelyeknek te magad megadtál nulla értéket (,0);) majd a létrehozott fájlból kiolvastatod az adatokat a változókba (pInfo[playerid], dini_Int(..), a kérdésem a következõ lenne:
Minek olvastatod ki a fájlból (dini_Int(..) az adatot ha te éppen elõtte határoztad meg hogy nulla legyen az értéke?
Nem lenne egyszerûbb így?
 
pInfo[playerid][(valtozo)] = 0;

 
És még egy javaslat vagy kettõ, ne használj dini-t, meg felesleges az ilyen elrendezés a fájlban
Orak = 0
Percek = 0
Mpercek = 0
Lehetne csak ennyi:
0/0/0
234/54/23
vagy
0 0 0
234 54 23
Senki nem fogja megnyitni a .txt fájlokat olvasásra rajtad kívül, a játékban meg úgy is csak az eredmény a lényeg.
 

Ez a harmadik kísérlet hogy elküldjem ezt az üzenetet.

785
SA-MP: Szerverfejlesztés / SCMEX
« Dátum: 2012. augusztus 18. - 20:38:03 »
@Kurta999
Itt találsz valami leírást róla:
http://www.scribd.com/doc/76955552/c-kernighan

786
SA-MP: Szerverfejlesztés / SCMEX
« Dátum: 2012. augusztus 18. - 19:40:33 »
Idézetet írta: DrAkE date=1345308525\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"26404\" data-ipsquote-contentclass=\"forums_Topic
Frissítve!
Így megfelel zsoleszka? :)
 
Sokkal jobb. :D

787
SA-MP: Szerverfejlesztés / SCMEX
« Dátum: 2012. augusztus 18. - 18:18:32 »
Idézetet írta: DrAkE date=1345306041\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"26404\" data-ipsquote-contentclass=\"forums_Topic
És ez alatt azt akarod mondani, hogy rossz, hogy goto utasítást használtam? :D
 
yep

788
SA-MP: Szerverfejlesztés / SCMEX
« Dátum: 2012. augusztus 18. - 17:53:15 »
Az én szerény angol tudásommal lefordítva, körülbelül így hangzik magyarul:
 

Átrendezzem a program lefutását, vagy használjam inkább a goto utasítást.


Eh, ez a csavaros megoldás vajon mennyire rossz lehet?

Hát a képek alapján katasztrófa lett a vége.  :D

789
SA-MP: Szerverfejlesztés / SCMEX
« Dátum: 2012. augusztus 18. - 17:28:19 »
\"xkcd-goto.png\"

790
Segítségkérés / Mondatban bizonyos szó kivétele.
« Dátum: 2012. augusztus 17. - 23:41:39 »
stock 
filterColorTags(string[])
{
new
start,
end;
while((start = strfind(string, \"~\", false, start)) != -1)
{
if((end = strfind(string, \"~\", false, start + 1)) != -1)
{
   strdel(string, start, end + 1);
   start -= end - start;
} else start++;
}
}

 
A következõ kód kettõ darab hullámos jelet keres a bevitt karakterláncban és ha talál akkor azokat és a köztük lévõ karaktereket törli belõle.
Ha a legvégén marad egy páratlanul akkor az ott is marad.
Pl.: \"~eztörlésre kerül~ ~<-ez nem\"

791
Segítségkérés / Mondatban bizonyos szó kivétele.
« Dátum: 2012. augusztus 17. - 20:44:43 »
stock
deltext(text[])
{
new
pos = strfind(text, \"~b~\");
if(pos != -1) strdel(text, pos, pos + 3); // +3 (\'~\', \'b\', \'~\')  3 karakter
}

 

   new
textt[] = \"~b~Bejárat\";
deltext(textt);   
printf(\"%s\", textt);

792
Fórum Archívum (Témák/Fórumok) / ÁTHELYEZVE: ucoz.hu-s iphone
« Dátum: 2012. augusztus 16. - 16:45:18 »
A téma át lett helyezve a következõbe: Kérdések, Segítség.
http://sampforum.hu/index.php?topic=30711.0" class="bbc_link">http://http://sampforum.hu/index.php?topic=30711.0

793
Általános / A Pawn tudás.
« Dátum: 2012. augusztus 16. - 00:19:20 »
Az én véleményem szerint a Segítség kérés téma elég népszerû és aki kicsit is gondolkozik józan paraszti ésszel, megtalálja ott a számára fontos segítséget.
Ahol nem talál hirtelen választ az a run time error és ennek változatai, mivel ilyen téma van vagy száz a fórumon, és azok akik leírták mi ennek az oka, már nem akarják 10-edjére is leírni, nem foglalkoznak vele.
A segítõ szándékú emberek egy idõ után idegesítõnek találják a számukra primitívnek tûnõ kérdéseket mert már több százszor látták válaszoltak rá, és nem értik miért nem használják a keresõt a segítséget kérõk többsége. (persze a pornó oldalakon tudják használni de itt nem)
Nem megfelelõ kérdésekre pár példa:
Nem indul a simson motorom, mi lehet a baja?
A számítógépem véletlenszerûen kikapcsol, mitõl?
A kérdéseken látszik hogy a válasz rájuk akár több oldalnyi szöveg is lehet, és még az se biztos hogy közte lesz a megfelelõ.
Kérdést feltenni úgy kell, hogy el kell látni minden hasznos információval, hogy a segítséget nyújtó megfelelõ választ tudjon adni.
Mellékelni kell itt a pawn script részletet a benne használt összes változóval, ha szükséges a használt .inc fájlok neveinek feltüntetésével, ha használ plugint akkor nem elég csak a nevének feltüntetése a verziószáma is kell, milyen samp szerver verziót használ, persze ezek mind a problémától függnek.
Ha a probléma olyan hogy a samp szerver nem indul el, akkor nem árt a server_log.txt fájlból kimásolni egy szerver indítási kísérletrõl részletet, a server.cfg tartalma is kell hozzá. (rcon jelszó nem kell)
Sokan bemásolnak egy pawn hiba üzenetet de mellé nem írják oda a pawn szkriptben található kódot, ha odaírják akkor bemásolnak több sort de nem jelölik meg melyik az a sor, vagy csak azt az egyetlen egy sort másolja be, holott nem biztos hogy pont az a sor a hibás.
Vagy a másik hiba mikor bemásol száz valahány sor hibát és õ a 20.-ént szereplõ hibaüzenetre koncentrál, mert ami elõtte van nem érti és azzal próbálkozik, ez nem megoldás, a hibákat legelejérõl kell kezdeni javítani, mivel a második és a többi hiba lehet az elõtte lévõ hiba miatt jött létre, rosszabb esetben hatványozódott/ többszörözõdött, és lehet az egésznek az oka csak egy kapcsos zárójel hiánya.
Ezért hibákat a legelsõnek kiírt hibasortól kell kezdeni javítani.
A téma megoldva dologból látható hogy nagyon sokan megkapják a számukra fontos segítséget, így most én nem értem miért lett nyitva ez a topic. :D
Bocsánat a fogalmazásért, este van már, meg magyar tanár se vagyok.  :D :D

794
SA-MP: Szerverfejlesztés / Ékezetes parancs SSCANF-al!
« Dátum: 2012. augusztus 15. - 22:40:05 »
Ok értem, és így talán nem mûködne?
 
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, \"/parancs\"))
{
new
   ID;
if(sscanf(cmdtext[8], \"u\", ID)) return SendClientMessage( playerid, (-1), \"HASZNÁLAT: /parancs <id>\" );
return 1;
}
return 0;
}

795
Leírások/Útmutatók / Tabulátor
« Dátum: 2012. augusztus 15. - 20:34:18 »
De én elnéztem, a kód mûködik mivel a számokat úgy pakolja egymás után hogy 9 10 11 12 és így tovább és a végére oda teszi a 2-est.
Már alkotom az egyszerûsítést. Postolom ide, ha kész. :D
Edit:
 
stock 
Tab(text[], text2[], tabcount = 0)
{
new
tab_[16] = \"\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\",
out[128];      
if((tabcount = (((tabcount + 1) * 8) - strlen(text) - 1) / 8) < 0 || tabcount >= sizeof tab_) tabcount = 0;
format(out, sizeof out, \"%s%s%s\", text, tab_[(sizeof(tab_) - 1) - tabcount], text2);
return out;
}

 
Elkészült, én tesztelgettem és nem találtam hibát benne. Ha valaki igen akkor írjon. :D

Oldalak: 1 ... 51 52 [53] 54 55 ... 136
SimplePortal 2.3.7 © 2008-2024, SimplePortal