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: Flash - 2013. június 07. - 17:36:24

Cím: GetAllVehicle()
Írta: Flash - 2013. június 07. - 17:36:24
Üdv! :D
Készítettem egy olyan \"stock\"-t amely lekérdezi a szerveren lévõ összes jármûvének számát
Eredetileg a szerverembe készítettem, de bárkinek jól jöhet.
Sorok száma: 6
Készítõ: Flash > én
Elkészítési idõ: kb 45 másodperc
A kód:
 
stock GetAllVehicle() {
new value;
value = AddStaticVehicleEx(522,0,0,0,0,0,0,0);
DestroyVehicle(value);
return value-1;
}

 
Lekérdezés:
 
GetAllVehicle()

 
Példa használat:
 
public OnFilterScriptInit() {
printf(\"Jármûvek betöltve! %i db\", GetAllVehicle());
return 1;
}

 
Használjátok egészséggel!
Cím: GetAllVehicle()
Írta: ZyZu. - 2013. június 07. - 18:07:43
Egy kérdésem lenne.. ha le tudjuk kérezni a jármûvek számát minden jármû elé hozzá kell írni a value = sorát?  :hmmm: mivel én úgy látom, hogy igen.. meg lehet ezt a számolást egyszerûen is csinálni úgy tudom van függvény rá.. http://wiki.sa-mp.com/wiki/IsValidVehicle
Cím: GetAllVehicle()
Írta: Csabesz - 2013. június 07. - 18:43:23
Idézetet írta: ZyZu date=1370621263\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"38230\" data-ipsquote-contentclass=\"forums_Topic
Egy kérdésem lenne.. ha le tudjuk kérezni a jármûvek számát minden jármû elé hozzá kell írni a value = sorát?  :hmmm: mivel én úgy látom, hogy igen.. meg lehet ezt a számolást egyszerûen is csinálni úgy tudom van függvény rá.. http://wiki.sa-mp.com/wiki/IsValidVehicle
 
szerintem te felejtsd el a scriptelést :D ez elég hülye felfogás már bocs.
Ez a függvény úgy mûködik, hogy a value címkével létrehoz 1 jármûvet. ( ilyenkor a value megkapja az IDjét, vagyis hanyadik kocsi )
ha létrehozol 1 kocsit és kiírod a value értékét akkor megkapod hány kocsi van, mivel növekvõ sorrendbe vannak az ID-k.
és ahányadik lett, annyi kocsi van a szerveren.
A value-1, azért van mert van elõtte egy DestroyVehicle. és az ki kell vonni az összesbõl.


Más:
Ennek van egy hátránya! Ha pl: A szerveren van 1000 jármû, és törölted az 555.-et és lekérdezed mennyi van, akkor 555-t fogsz kapni, nem pedig 999-et.
Ezért jobb ZyZu megoldása, hogy végignézi az összes slotot (0-1999) és a létezik a kocsi akkor növeli a változót.
Cím: GetAllVehicle()
Írta: Flash - 2013. június 07. - 22:20:45
Idézetet írta: ZyZu date=1370621263\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"38230\" data-ipsquote-contentclass=\"forums_Topic
Egy kérdésem lenne.. ha le tudjuk kérezni a jármûvek számát minden jármû elé hozzá kell írni a value = sorát?  :hmmm: mivel én úgy látom, hogy igen.. meg lehet ezt a számolást egyszerûen is csinálni úgy tudom van függvény rá.. http://wiki.sa-mp.com/wiki/IsValidVehicle
 
Írtam mellé egy print-es példát.
Nem kell semmihez semmit írni.
Ez egy úgymond könnyebben ki lehet írni a jármûvek számát.
Jethro amit leírtál, hogy lehet orvosolni?
Cím: GetAllVehicle()
Írta: Csabesz - 2013. június 07. - 23:24:14
Idézetet írta: Flash date=1370636445\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"38230\" data-ipsquote-contentclass=\"forums_Topic
Jethro amit leírtál, hogy lehet orvosolni?
 
2 lehetõség jutott most eszembe.
1:
 

Ezért jobb ZyZu megoldása, hogy végignézi az összes slotot (0-1999) és a létezik a kocsi akkor növeli a változót.
 
[/quote]
Magyarul, for ciklus 0-tól MAX_VEHICLES-ig és ha ( if ) létezik a kocsik ( IsValidVehicle(i) ) akkor 1 változó értékét növeled, ami majd az összes kocsi számát adja meg.
2:
CreateVehicle, AddStaticVehicle(Ex) és DestroyVehicle függvények kicserélése.
Vagyis nem kicserélése, hanem kiegészítése. Kell 1 glob. változó ami számolja majd a kocsikat és létrehozásnál növeled a változót, törlésnél meg csökkented.
 

#undef CreateVehicle
#define CreateVehicle CreateVehicle_Ex
#undef DestroyVehicle
#define DestroyVehicle DestroyVehicle_Ex
new TotalVehicles = 0;
// Ugyan ez AddStaticVehicle függvénynél
stock CreateVehicle_Ex ( modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay)
{
    CreateVehicle ( modelid, x, y, z, angle, color1, color2, respawn_delay);
    TotalVehicles++;
}
stock DestroyVehicle_Ex ( vehicleid )
{
    DestroyVehicle( vehicleid );
    TotalVehicles--;