Szerző Téma: Poziciod lekérése  (Megtekintve 1426 alkalommal)

Nem elérhető instant

  • 2778
  • ZzzzzZ
    • Profil megtekintése
Poziciod lekérése
« Dátum: 2011. december 24. - 20:46:38 »
+1 Show voters
Üdv csináltam 1 kis kodot amit csak annyit tesz hogy le irja a poziciodat , ez abban is segit amikor teleportot akarsz késziteni , és akkor nem kell be irni a /save -t
a CODE:
[pawn]
#include  <a_samp>
#include <zcmd>
CMD:pozicio(playerid,params[ ])
{
new string[125];
new Float:X, FLOAT:Y, FLOAT:Z;
GetPlayerPos(playerid,X,Y,Z);
format(string,125,\"Poziciod = X: %.0f Y: %.0f Z: %.0f\", X,Y,Z);
SendClientMessage(playerid,-1,string);
return 1;
}
[/pawn]
E:
ami 1 bõl megirja neked a teleportot 1 külön jegyzettömbe a scriptfiles mappába fogod megtalálni gtaforumon Crazy belesegitett
[pawn]CMD:pozicio(playerid,params[])
{
    new string[128];
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    format(string,128,\"\\nSetPlayerPos(playerid,%.6f,%.6f,%.6f); // %s\",x,y,z,params);
    new File:savefile;
    savefile = fopen(\"MentettPoziciok.txt\", io_append);
    if (savefile)
    {
    fwrite(savefile, string);
    fclose(savefile);
    }
    SendClientMessage(playerid,0xFFFFFFFF,\"Pozíciód mentve!\");
    return 1;
}[/pawn]
ha nem müködik akkor pls jelezd vissza
« Utoljára szerkesztve: 2011. december 25. - 11:42:16 írta ɐʞzssǝlosz »

Poziciod lekérése
« Válasz #1 Dátum: 2011. december 24. - 20:59:10 »
0 Show voters
Pazarol :(
200 string felesleges mert csak 128 karaktert tud megjeleníteni a kliens. Illetve miért sizeof? Meg is adhatjuk egybõl mekkora a maximális karakterlánc méretét tehát az is felesleges. Szöveget mögötte is törni felesleges mert nincs rá funkció kötve.
Ezek azok a dolgok amiktõl falra mászok. Ha sokszor ilyen hibákat vétünk laggos lesz a szerverünk :)
 
#include  <a_samp>
#include <zcmd>
CMD:pozicio(playerid)
{
new string[128];
new Float:X, FLOAT:Y, FLOAT:Z;
GetPlayerPos(playerid,X,Y,Z);
format(string,128,\"Poziciod = X: %.0f Y: %.0f Z: %.0f\", X,Y,Z);
SendClientMessage(playerid,-1,string);
return 1;
}

Nem elérhető instant

  • 2778
  • ZzzzzZ
    • Profil megtekintése
Poziciod lekérése
« Válasz #2 Dátum: 2011. december 24. - 21:00:44 »
0 Show voters
Idézetet írta: Gentleman date=1324756750\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"14639\" data-ipsquote-contentclass=\"forums_Topic
Pazarol :(
200 string felesleges mert csak 128 karaktert tud megjeleníteni a kliens. Illetve miért sizeof? Meg is adhatjuk egybõl mekkora a maximális karakterlánc méretét tehát az is felesleges. Szöveget mögötte is törni felesleges mert nincs rá funkció kötve.
Ezek azok a dolgok amiktõl falra mászok. Ha sokszor ilyen hibákat vétünk laggos lesz a szerverünk :)
 
#include  <a_samp>
#include <zcmd>
CMD:pozicio(playerid)
{
new string[128];
new Float:X, FLOAT:Y, FLOAT:Z;
GetPlayerPos(playerid,X,Y,Z);
format(string,128,\"Poziciod = X: %.0f Y: %.0f Z: %.0f\", X,Y,Z);
SendClientMessage(playerid,-1,string);
return 1;
}

 

de én hozzá szoktam már a sizeofhoz :)

Poziciod lekérése
« Válasz #3 Dátum: 2011. december 24. - 21:27:51 »
0 Show voters
Idézetet írta: ZzzzzZ date=1324756844\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"14639\" data-ipsquote-contentclass=\"forums_Topic
de én hozzá szoktam már a sizeofhoz :)
 
Nagyon helyes, én is mindenhol használom tudomásom szerint az amx fájlban semmi jelentõsége nincs.
A sizeof csak a .pwn fájlban kap szerepet amit majd a pawncc felhasznál az .amx fájlba való átalakításkor így csak a sizeof(akarmi) által kapott érték fog szerepelni az .amx fájlban.
Ezt azért találták ki ne keljen megszámolni mennyi adat van egy tömbben vagy folyton utána nézni ugyan már mekkora cellaméretet is adtunk meg változónknak.
Ha van egy változód [pawn]new timer[4];[/pawn]
Te hozzá írsz egy vagy több for ciklust, a következõ képpen:
[pawn]for(new i; i < 4; i++)
{
    KillTimer(timer);

}[/pawn]


Ha valamikor bõvíted a változód méretét akkor majd meg kell keresned minden egyes helyet ahol ezt a változód használod hogy átírd a ciklus ismétlõdés számát.


De viszont ha a sizeof eljárást használod neked nem kell ezzel törõdni csak átírod a változó méretét alkalmazod a többi helyen és nem kell a for ciklusokat is keresgélni.


[pawn]for(new i; i < sizeof(timer); i++)


{


    KillTimer(timer
);

}[/pawn]


Aki meg azzal foglalkozik hogy ne sizeof eljárást használjon hanem beírja a tömb méretét számokkal azzal közlöm hogy az elkészített .amx fájlban semmivel nem lesz jobb mint a sizeof-al, sõt könnyebben elõfordulhatnak érvénytelen cella meghívások.


A sizeof pont ezt csinálja hogy beírja a tömb értékét konvertáláskor.   :D

Nem elérhető instant

  • 2778
  • ZzzzzZ
    • Profil megtekintése
Poziciod lekérése
« Válasz #4 Dátum: 2011. december 24. - 21:36:13 »
0 Show voters
köszönöm zsoleszka ezt a szép bö informáciot amit leirtál nékem

Nem elérhető KDDomi

  • 976
    • Profil megtekintése
Poziciod lekérése
« Válasz #5 Dátum: 2011. december 24. - 21:45:15 »
0 Show voters
Szép! Hasznát veszem!

Nem elérhető instant

  • 2778
  • ZzzzzZ
    • Profil megtekintése
Poziciod lekérése
« Válasz #6 Dátum: 2011. december 24. - 21:57:00 »
0 Show voters
<- link=topic=18727.msg204330#msg204330 date=1324759515]
Szép! Hasznát veszem!
kösz , örülök hogy hasznát veszed :)
[/quote]

Nem elérhető Csabesz

  • 7827
    • Profil megtekintése
Poziciod lekérése
« Válasz #7 Dátum: 2011. december 24. - 23:00:25 »
0 Show voters
Kérlek legközelebb tedd ki a helyes kategóriát a téma elé(Téma neve felett a Kategóriánál tudod megadni).

Nem elérhető instant

  • 2778
  • ZzzzzZ
    • Profil megtekintése
Poziciod lekérése
« Válasz #8 Dátum: 2011. december 25. - 09:30:10 »
0 Show voters
Idézetet írta: Yѕtee date=1324764025\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"14639\" data-ipsquote-contentclass=\"forums_Topic
Kérlek legközelebb tedd ki a helyes kategóriát a téma elé(Téma neve felett a Kategóriánál tudod megadni).
 
téma nyitásánál ezt raktam ki a prefixbõl : [C oDE]

Poziciod lekérése
« Válasz #9 Dátum: 2011. december 25. - 10:12:58 »
0 Show voters
Kedves ɐʞzssǝlosz!
Sizeoffal lekéred a tömb méretét tehát memóriát használ fel. Meg ha már az ember scriptel akkor tegye azt igényesen és adja meg a méreteket.
Átfordításnál pedig lefut a sok sizeof ami plusz konvertálási idõ. (Arról, hogy az amx már átszámítva tartalmazza õket õszintén megmondva nem tudtam  >:D )

Poziciod lekérése
« Válasz #10 Dátum: 2011. december 25. - 11:05:34 »
0 Show voters
Idézetet írta: Gentleman date=1324804378\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"14639\" data-ipsquote-contentclass=\"forums_Topic
Kedves ɐʞzssǝlosz!
Sizeoffal lekéred a tömb méretét tehát memóriát használ fel. Meg ha már az ember scriptel akkor tegye azt igényesen és adja meg a méreteket.
Átfordításnál pedig lefut a sok sizeof ami plusz konvertálási idõ. (Arról, hogy az amx már átszámítva tartalmazza õket õszintén megmondva nem tudtam  >:D )
 
Épp ez az mit számít a konvertálási idõ ha a program futásakor semmi jelentõsége hogy a módban sizeof-ot írsz vagy manuálisan megadod az értékeket?
Amúgy is mennyi konvertálási idõt spórolsz és mennyit cseszel el hogy nem nem sizeof funkciót használsz? (nyersz konvertálási idõvel fél másodpercet és elcseszel több percnyi idõt és még hibák is elõfordulhatnak (\"Array index out of bounds\").
Én amúgy se találkoztam olyan szkriptel aminek a konvertálási ideje több perc lett volna földvár módjának (saját) átalakítási ideje 4500ms - 5000ms (4 5 másodperc) és mindenhol ahol lehetséges sizeof funkciót használok. Mennyi idõt csesznék el vele hogy az összes sizeof funkciót átírnám az értékükre (közben sok helyen utána is kéne nézni és megszámolni mennyi adat van a tömb egyes dimenziójának).
Amúgy meg teljesen mindegy aki nem akarja nem használja de akik nem használják azoknál gyakrabban elõfordulhat ez a bizonyos hibaüzenet (\"Array index out of bounds\") ez akár konvertálásnál vagy program futásakor.
Nem sok olyan szkriptel találkoztam aminek az átkonvertálási ideje több percnyi lenne.
Emiatt semmiféle memória területet nem használ fel a sizeof eljárás memória területet a változó cella méretének növelése foglal.
Ui.: ok valamennyi memória területet használ mert azért mégis csak több karakternyi szöveg mint az általa kapott érték leírása emiatt a .pwn fájl mérete lesz csak nagyobb.
[pawn]new str[128]; esetében:
// 128  (3 karakter)
// sizeof(str) (11 karakter)
[/pawn]
Azta.  :D
« Utoljára szerkesztve: 2011. december 25. - 11:41:10 írta ɐʞzssǝlosz »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal