GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: instant - 2011. december 24. - 20:46:38

Cím: Poziciod lekérése
Írta: instant - 2011. december 24. - 20:46:38
Ü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
Cím: Poziciod lekérése
Írta: Gentleman - 2011. december 24. - 20:59:10
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;
}
Cím: Poziciod lekérése
Írta: instant - 2011. december 24. - 21:00:44
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 :)
Cím: Poziciod lekérése
Írta: Zsolesszka - 2011. december 24. - 21:27:51
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
Cím: Poziciod lekérése
Írta: instant - 2011. december 24. - 21:36:13
köszönöm zsoleszka ezt a szép bö informáciot amit leirtál nékem
Cím: Poziciod lekérése
Írta: KDDomi - 2011. december 24. - 21:45:15
Szép! Hasznát veszem!
Cím: Poziciod lekérése
Írta: instant - 2011. december 24. - 21:57:00
<- link=topic=18727.msg204330#msg204330 date=1324759515]
Szép! Hasznát veszem!
kösz , örülök hogy hasznát veszed :)
[/quote]
Cím: Poziciod lekérése
Írta: Csabesz - 2011. december 24. - 23:00:25
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).
Cím: Poziciod lekérése
Írta: instant - 2011. december 25. - 09:30:10
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]
Cím: Poziciod lekérése
Írta: Gentleman - 2011. december 25. - 10:12:58
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 )
Cím: Poziciod lekérése
Írta: Zsolesszka - 2011. december 25. - 11:05:34
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