Szerző Téma: String Globális változóba  (Megtekintve 1448 alkalommal)

String Globális változóba
« Dátum: 2011. Március 17. - 18:37:06 »
0 Show voters
Ha létrehozom pl ezt:
 
new string[128];
new pName[MAX_PLAYERS];

 
...mint globális változó, többször is feltudom használni másra?
pl:
 
public OnPlayerConnect(playerid)
{
    GetPlayerName(playerid, pName, sizeof(pName));
    format(string, sizeof(string), \"->%s csatlakozott hozzánk!<-\", pname);
    SendClientMessageToAll(0x1CF221FF, string);
}

 és ezt még mondjuk valahova a név lekérésre vagy másra?

Nem elérhető Csabesz

  • 7827
    • Profil megtekintése
String Globális változóba
« Válasz #1 Dátum: 2011. Március 17. - 18:45:23 »
0 Show voters
Idézetet írta: Zinthos date=1300383426\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"6919\" data-ipsquote-contentclass=\"forums_Topic

new pName[MAX_PLAYERS];

 

500 karakter a névnek nem kevés  :D


Ha globálisan hozol létre egy változót azt akár hol feltudod használni másra :)

String Globális változóba
« Válasz #2 Dátum: 2011. Március 17. - 18:46:16 »
0 Show voters
Igen.
Csak ne vidd túlzásba a használatát. Én elkövettem azt a hibát ha belegondolsz mindenhol azt használnád akkor a folyamatban lévõ dolgok arra az egy változóra fognak várni míg felszabadul.
Tehát csak logikusan, amelyik funkció nagyon sokat van használva annak nem árt saját változó létrehozása.

String Globális változóba
« Válasz #3 Dátum: 2011. Március 17. - 18:47:47 »
0 Show voters
Idézetet írta: Zinthos date=1300383426\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"6919\" data-ipsquote-contentclass=\"forums_Topic
Ha létrehozom pl ezt:
 
new string[128];
new pName[MAX_PLAYERS];

 
...mint globális változó, többször is feltudom használni másra?
pl:
 
public OnPlayerConnect(playerid)
{
    GetPlayerName(playerid, pName, sizeof(pName));
    format(string, sizeof(string), \"->%s csatlakozott hozzánk!<-\", pname);
    SendClientMessageToAll(0x1CF221FF, string);
}

 és ezt még mondjuk valahova a név lekérésre vagy másra?
 
Természetesen,de így sokkal egyszerûbb:
 
new str[128];

 

public OnPlayerConnect(playerid)
{
    GetPlayerName(playerid, str, 24);
    format(str, sizeof(str), \"->%s csatlakozott hozzánk!<-\", str);
    SendClientMessageToAll(0x1CF221FF, str);
}

 és ezt még mondjuk valahova a név lekérésre vagy másra?
 
Zsolesszka ahoz rengeteg játékos kell hogy megkavarodjon az a változó,pl. ha egyszerre írnak be egy parancsot akkor talán,de az is tized másodpercre pontosan kell történjen.

String Globális változóba
« Válasz #4 Dátum: 2011. Március 17. - 18:55:08 »
0 Show voters
Zsolesszka ahoz rengeteg játékos kell hogy megkavarodjon az a változó,pl. ha egyszerre írnak be egy parancsot akkor talán,de az is tized másodpercre pontosan kell történjen.[/quote]
Tudom mirõl írtam nem véletlenül írtam le. Nálam az összes parancs és az OnPlayerText alatt lévõ funkciók is egy stringet használtak és volt mikor várni kellett a chatre hogy megjelenjen azaz üzenet amit elküldtem  kb. 10 Online játékos melett.  (akkor már rögtön tudtam mi a gond).
Ezért inkább ajánlatos egy funkciónak saját string létrehozása mellyel szabadon rendelkezhet és nem kell azért várnia mert másik funkció azt használja, természetesen a funkción belül többször fel lehet használni.

String Globális változóba
« Válasz #5 Dátum: 2011. Március 17. - 22:07:16 »
0 Show voters
Idézetet írta: Zsolesszka date=1300384508\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"6919\" data-ipsquote-contentclass=\"forums_Topic

Zsolesszka ahoz rengeteg játékos kell hogy megkavarodjon az a változó,pl. ha egyszerre írnak be egy parancsot akkor talán,de az is tized másodpercre pontosan kell történjen.
Tudom mirõl írtam nem véletlenül írtam le. Nálam az összes parancs és az OnPlayerText alatt lévõ funkciók is egy stringet használtak és volt mikor várni kellett a chatre hogy megjelenjen azaz üzenet amit elküldtem  kb. 10 Online játékos melett.  (akkor már rögtön tudtam mi a gond).
Ezért inkább ajánlatos egy funkciónak saját string létrehozása mellyel szabadon rendelkezhet és nem kell azért várnia mert másik funkció azt használja, természetesen a funkción belül többször fel lehet használni.
 
[/quote]
Ezt nem feltétlen ez okozta,ismerek olyant aki mindenhol csak globális karakterláncot használ és semmi problémája nincsen,és gyorsabb is.

String Globális változóba
« Válasz #6 Dátum: 2011. Március 17. - 22:49:56 »
0 Show voters
Nem vitatkozok de én nem tenném rá a nyakam hogy gyorsabb ha egy globális változót használ mindenhol.
Ezt ahhoz lehetne hasonlítani ha 10 embernek egy vödörrel kell kimernie egy medence vízét.
Kettõvel gyorsabban haladnak de hát ez hozzá állás kérdése.
Ha belegondolsz sok ciklus folyamat mennyire letud foglalni egy változót fõleg ha egyéb adatbázisból is olvassa ki (pl.: mysql lekérdezés és adatmegjelenítés dialogban adminlist) aminek azért már mérhetõ ideje van. Akkor nem hiszem hogy a túlzásba vitt egy darab global string változó annyira hasznos. A túl kevés lefoglalt memoria nem feltétlenül jelenti a gyorsabb mûködést.
Ha valaki használ id megjelenítést chatben az egy eléggé gyakran használt funkció oda azért nem árt csak egy külön darab változó arra a célra.
Most más kérdés hogy az a változó globálként vagy helyileg létrehozva mennyi sebesség különbséget jelent ha csak annál az egy funkciónál van használva, (biztosan gyorsabb a global de csak akkor ha csak annak az egy funkció számára van létrehozva) erre nyugodtan lehet használni a,
 

static chatstr[128];

 
utasítást mert ezt a fordító global stringként fogja fordítani.
De hát mindenkinek más a véleménye lényeg a józan paraszti ész, volt tanárom állandó mondása.

String Globális változóba
« Válasz #7 Dátum: 2011. Március 17. - 23:03:17 »
0 Show voters
Nem azt mondom hogy egy változót kell használni mindenre,de sokszor hasznosabb és gyorsabb.
Hogy a te példáddal éljek,mért nem elég egyszer készíteni egy vödröt és megjárni azzal mindent (Nem egy idõben,az nagyon nem valószínû,a te 10 emberes példád helytelen) mint 100X építeni egy vödröt,megjárni vele a kutat és aztán kidobni a vödröt?(Parancsonként 1 vödör)
Így akkor van gond ha tizedmásodpercre pontosan ugyan akkor indul el 2 funckió azonos változókkal.
A MySql lekérések olyan gyorsak,hogy azzal tök fölösleges foglalkozni hogy mennyit esznek.
Ciklust meg nem kell használni,ott a foreach,különben a ciklus is gyors ha jól van használva és nem pazarol.
(Pl. az admin lista nagy részét Sql lekéréssel meg lehet oldani ahoz meg elég egy szupergyors SQL lekérdezés.)
Szóval megint mondom,nem egy változó kell mindenre,hanem felhasználási terület szerint.(Üzenetek,textdrawok,chat stb...)
Egy globális változó terület szerit, és nincs gubanc/felesleges gépelés/felesleges idõigényesség.
E:
Vitatkozás = Érvelés és ellenérvelés,a veszekedés meg az amit nem szeretünk,vitatkozni (érvelni) lehet.

String Globális változóba
« Válasz #8 Dátum: 2011. Március 17. - 23:21:32 »
0 Show voters
    És a példa valóban rossz amit korábban írtam,
nem egy medencét kell kimerni hanem 6 ot
hogy több felhasználási területen van alkalmazva azaz egy vödör, 10 ember által.
Egy lekérdezés tény és való hogy nem sokáig tart de az hogy megjelenítsd dialog listben az már eléggé idõigényes és ha még abban a funkcióban is a global string van használva eléggé zavaró, erre a célra nem lehet foreach ciklust alkalmazni.
 
Idézetet írta: ChuckNorris date=1300399397\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"6919\" data-ipsquote-contentclass=\"forums_Topic
Szóval megint mondom,nem egy változó kell mindenre,hanem felhasználási terület szerint.(Üzenetek,textdrawok,chat stb...)
Egy globális változó terület szerit, és nincs gubanc/felesleges gépelés/felesleges idõigényesség.
 
És pontosan így van felhasználási területenként egy, és most írtad elsõnek ezt.

String Globális változóba
« Válasz #9 Dátum: 2011. Március 18. - 14:58:22 »
0 Show voters
Idézetet írta: Zsolesszka date=1300400492\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"6919\" data-ipsquote-contentclass=\"forums_Topic
    És a példa valóban rossz amit korábban írtam,
nem egy medencét kell kimerni hanem 6 ot
hogy több felhasználási területen van alkalmazva azaz egy vödör, 10 ember által.
Egy lekérdezés tény és való hogy nem sokáig tart de az hogy megjelenítsd dialog listben az már eléggé idõigényes és ha még abban a funkcióban is a global string van használva eléggé zavaró, erre a célra nem lehet foreach ciklust alkalmazni.
 

Szóval megint mondom,nem egy változó kell mindenre,hanem felhasználási terület szerint.(Üzenetek,textdrawok,chat stb...)
Egy globális változó terület szerit, és nincs gubanc/felesleges gépelés/felesleges idõigényesség.
 
És pontosan így van felhasználási területenként egy, és most írtad elsõnek ezt.
 
[/quote]
Most írtam elõször de így gondoltam mindvégig  :D
A megjelenítés sem tarthat sokáig,max 1 másodperc ha kizárólag az adminokat kéred le és azokon mész végig pl 10-15X (ennél több admin nem valószínû).Na a témát szerintem zárom mert már elégé OFFolunk és a kérdésre választ adtunk  :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal