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: Epsilon - 2009. Május 23. - 17:14:21

Cím: Hasznos Definíciók/Makrók
Írta: Epsilon - 2009. Május 23. - 17:14:21
Ebbe a topicba jöhetnek az ÁLTALATOK írt, rövid terjedelmû definíciók.
A Kódok topicban található két cenzúra definíció is azok nem számítanak rövid terjedelmûnek!
 
___________________________
 
Kezdem is..:
Szükséges slotok definálása --> helytakarítás, gyorsabb script:
 
#undef MAX_PLAYERS
#define MAX_PLAYERS slot
Példa:
 
#undef MAX_PLAYERS
#define MAX_PLAYERS 32
 

Epsilon
Cím: Hasznos Definíciók/Makrók
Írta: [M]D[S]Rotary - 2010. Március 16. - 20:34:51
Max jármû:
#undef MAX_VEHICLES
#define MAX_VEHICLES  autók száma
Példa:
#undef MAX_VEHICLES
#define MAX_VEHICLES  800
Cím: Hasznos Definíciók/Makrók
Írta: Epsilon - 2010. Március 23. - 06:17:36
0.3-as PlayerToPoint azoknak akik ragaszkodnak hozzá.
#define PlayerToPoint(%1,%2,%3) IsPlayerInRangeOfPoint(%2,%1,%3)
A szerveren lehetséges legmagasabb ID és legalacsonyabb ID.
#define MAX_PLAYER_ID (GetMaxPlayers()-1)
#define MIN_PLAYER_ID 0
Cím: Hasznos Definíciók/Makrók
Írta: ZeRo - 2010. Április 18. - 15:17:28
Integer típusú PVar értékek egyel való növelése / csökkentése :


 
#define IncreasePVarInt(%1,%2) \\
SetPVarInt( %1, %2, GetPVarInt( %1, %2 ) + 1 )
#define DecreasePVarInt(%1,%2) \\
SetPVarInt( %1, %2, GetPVarInt( %1, %2 ) - 1 )
 


Használható például jelszó hibázások ellenorzésére, stb..
Cím: Hasznos Definíciók/Makrók
Írta: kurta999 - 2011. Január 19. - 18:29:57
Kiszámítja a megadott kordináták között a távolságot.
2D-ben, vagy akár 3D-ben is lehet.
[pawn]
stock Float:GetDistance2D(Float:x1, Float:y1, Float:x2, Float:y2)
{
new
   Float:distance_x = x1 - x2,
   Float:distance_y = y1- y2;
return floatsqroot((distance_x * distance_x) + (distance_y * distance_y));
}
stock Float:GetDistance3D(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2)
{
new
   Float:distance_x = x1 - x2,
   Float:distance_y = y1- y2,
   Float:distance_z = z1 - z2;
return floatsqroot((distance_x * distance_x) + (distance_y * distance_y) + (distance_z * distance_z));
}
[/pawn]
Cím: Hasznos Definíciók/Makrók
Írta: kurta999 - 2011. Augusztus 08. - 00:14:38
Létrehozza a megadott fájlt.
[pawn]
#define fcreate(%1) \\
    fclose(fopen(\"%1\", io_write))
[/pawn]
Használata:
fcreate(\"MyText.txt\");
Cím: Hasznos Definíciók/Makrók
Írta: Rammstein - 2011. Augusztus 12. - 20:09:24
Idézetet írta: kurta999 date=1312755278\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28\" data-ipsquote-contentclass=\"forums_Topic
Létrehozza a megadott fájlt.
[pawn]
#define fcreate(%1) \\
    fclose(fopen(\"%1\", io_write))
[/pawn]
Használata:
fcreate(\"MyText.txt\");
 
Objecteknél is jó? :)
Cím: Hasznos Definíciók/Makrók
Írta: kurta999 - 2011. Augusztus 12. - 20:56:36
WTF ?  ;D
Cím: Hasznos Definíciók/Makrók
Írta: JackBronson - 2011. Október 04. - 14:56:52
És mire is jó?XD
Cím: Hasznos Definíciók/Makrók
Írta: ►ѕтa - 2011. Október 04. - 16:19:20
Lehet hülyeséget mondok, de szerintem (a nevébõl ítélve) így nézne ki:
strcopy(const string1[], const string2[], len);
Cím: Hasznos Definíciók/Makrók
Írta: ►ѕтa - 2011. Október 04. - 18:29:47
Nem lényeges, ugyanígy gondoltam én is.
Cím: Hasznos Definíciók/Makrók
Írta: Koncz_Norbert - 2011. Október 04. - 19:11:06
:laugh:
Nem azt kérdezte hogy néz ki.
Amúgy nem látom értelmét átdefíniálni a funkciókat.


Idézetet írta: Stuntzor シ date=1313172564\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28\" data-ipsquote-contentclass=\"forums_Topic
Objecteknél is jó? :)
 
Nem. Csak létrehozza a fájlt / fájlokat, viszont ezzel a funkcióval nem tudsz írni bele.
Az fwrite funkcióra gondolsz. http://wiki.sa-mp.com/wiki/Fwrite


[pawn]
#include a_samp
#define Player(%1,%2)    pPlayerData[ %1 ][ %2 ]
enum PLAYER_ENUM
{
    bool:logged
};
stock
    pPlayerData[ MAX_PLAYERS ][ PLAYER_ENUM ]
;
public OnPlayerConnect( playerid )
{
    Player( playerid, logged ) = false;
    if ( Player( playerid, logged ) == false )
    {
        Kick( playerid );
        return 1;
    }
    return 1;
}
[/pawn]
Cím: Hasznos Definíciók/Makrók
Írta: Gabor.. - 2012. Június 12. - 20:37:23

stock
         GivePlayerScore( iPlayer, iAmount )
{
         SetPlayerScore( iPlayer, GetPlayerScore( iPlayer ) + iAmount );
}
 
stock
         DeprivePlayerScore( iPlayer, iAmount )
{
         SetPlayerScore( iPlayer, GetPlayerScore( iPlayer ) - iAmount );   
}
Cím: Hasznos Definíciók/Makrók
Írta: Kovacs_Bela - 2012. Június 20. - 19:24:07
stock name(id) {
    new n[24];
    return GetPlayerName(id,n,24);
}

 
new msg[128];
format(msg,128,\"A neved: %s\",name(playerid));
Cím: Hasznos Definíciók/Makrók
Írta: JBauer - 2012. Június 20. - 20:40:05

new bool: FALSE = false;
#define SendFormatMessageToAll(%1,%2,%3) do{new sendfstring[128];format(sendfstring,128,(%2),%3);SendClientMessageToAll((%1),sendfstring);}while(FALSE)
#define SendFormatMessage(%1,%2,%3,%4) do{new sendfstring[128];format(sendfstring,128,(%3),%4);SendClientMessage(%1,(%2),sendfstring);}while(FALSE)
Cím: Hasznos Definíciók/Makrók
Írta: Epsilon - 2012. Június 21. - 07:54:30
JBauer:
 
new bool:FALSE = false;
Cím: Hasznos Definíciók/Makrók
Írta: JBauer - 2012. Június 21. - 10:48:57
Igen, igazad van azt kifelejtettem, köszönöm, hogy szóltál.
Cím: Hasznos Definíciók/Makrók
Írta: kurta999 - 2012. Június 29. - 15:33:22
Úgy ahogy gondolom mire ez a \"FALSE\" megoldás, de inkább megkérdezem, hogy tényleg erre-e.
Ez most azér kell, hogy egy {} közé tegye õket, mivel a do while ciklus csak egyszer fut le, mert a \"FALSE\" értéke soha nem lesz igaz, tehát úgy értem, hogy \"jobban\" nézzen ki a kódban?
 

do
{
new
sendfstring[128];
format(sendfstring, 128, \"my string %s, %d\", \"valamisz*rságide\", 25);
SendClientMessageToAll(0xFF0000AA, sendfstring);
}
while(FALSE)
Cím: Hasznos Definíciók/Makrók
Írta: Zsolesszka - 2012. Július 03. - 07:55:50
Idézetet írta: kurta999 date=1340976802\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28\" data-ipsquote-contentclass=\"forums_Topic
Úgy ahogy gondolom mire ez a \"FALSE\" megoldás, de inkább megkérdezem, hogy tényleg erre-e.
Ez most azér kell, hogy egy {} közé tegye õket, mivel a do while ciklus csak egyszer fut le, mert a \"FALSE\" értéke soha nem lesz igaz, tehát úgy értem, hogy \"jobban\" nézzen ki a kódban?
 

do
{
new
sendfstring[128];
format(sendfstring, 128, \"my string %s, %d\", \"valamisz*rságide\", 25);
SendClientMessageToAll(0xFF0000AA, sendfstring);
}
while(FALSE)

 

Nem azért kell, azért kell mert a fordító nem fogadja másképp el.
Cím: Hasznos Definíciók/Makrók
Írta: DrAkE - 2012. Július 27. - 23:29:29
Idézetet írta: ɐʞzssǝlosz date=1341294950\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28\" data-ipsquote-contentclass=\"forums_Topic


Úgy ahogy gondolom mire ez a \"FALSE\" megoldás, de inkább megkérdezem, hogy tényleg erre-e.
Ez most azér kell, hogy egy {} közé tegye õket, mivel a do while ciklus csak egyszer fut le, mert a \"FALSE\" értéke soha nem lesz igaz, tehát úgy értem, hogy \"jobban\" nézzen ki a kódban?
 

do
{
new
sendfstring[128];
format(sendfstring, 128, \"my string %s, %d\", \"valamisz*rságide\", 25);
SendClientMessageToAll(0xFF0000AA, sendfstring);
}
while(FALSE)

 

Nem azért kell, azért kell mert a fordító nem fogadja másképp el.
 
[/quote]
Dehogynem (bár ha félreértelmeztem elnézést :D).
 

#define SendFormatMessage(%1,%2,%3,%4) new sendfstring[128];format(sendfstring,128,(%3),%4);SendClientMessage(%1,(%2),sendfstring)
Cím: Hasznos Definíciók/Makrók
Írta: Zsolesszka - 2012. Július 28. - 22:51:26
Idézetet írta: DrAkE date=1343424569\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"28\" data-ipsquote-contentclass=\"forums_Topic
Dehogynem (bár ha félreértelmeztem elnézést :D).
 

#define SendFormatMessage(%1,%2,%3,%4) new sendfstring[128];format(sendfstring,128,(%3),%4);SendClientMessage(%1,(%2),sendfstring)

 

Az egész dolog nem másért lett kitalálva mintsem a return utasítás használata végett.
Próbáld ki a kódod így alkalmazni:
 
return SendFormatMessage(playerid, -1, \"%s\", teszt);
Cím: Hasznos Definíciók/Makrók
Írta: DrAkE - 2012. Július 28. - 22:56:34
Mind a kettõ hibás lesz.
Edit (most írtam, már kirakom, hát ha valakinek hasznos :D):
 

stock ShiftRGBAToHex(color)
return (color >>> 8);

 
Átalakítja az RGBA formátumot (0xFFFFFFFF), hexadecimális formátumúvá (FFFFFF).
Használat:
 

format(string, 144, \"Szín: %x\", ShiftRGBAToHex(0xFFFFFFFF));

 
Eredmény: \"Szín: FFFFFF\".
Cím: Hasznos Definíciók/Makrók
Írta: kurta999 - 2012. Augusztus 18. - 12:48:34
Elõzõ dolgokra visszatérve:
 

new
g_szFormatString[144];
#define PrintFormatWithReturn(%1) \\
    print((format(g_szFormatString, sizeof(g_szFormatString), %1), g_szFormatString))
   
public OnFilterScriptInit()
{
return PrintFormatWithReturn(\"1234 %s hehe %x\", \"asd\", 0xFFFF);
}

 
Így nem ér sokat, de átlehet írni SendClientMessage-ra is :)
Cím: Hasznos Definíciók/Makrók
Írta: Mr.Burma - 2013. Július 06. - 09:34:08
Valamit tanultam :)
Cím: Hasznos Definíciók/Makrók
Írta: krisk - 2015. Március 06. - 21:56:43
Epsilonnak volt egy ilyenje: http://sampforum.hu/index.php?topic=2929.msg34816#msg34816. Pont most küldték, és szerintem eléggé túl van bonyolítva.
Egyszerűbb megoldás:
 
IsEven(value)
{
      return (value % 2);
}
Cím: Hasznos Definíciók/Makrók
Írta: Flash - 2016. Augusztus 06. - 01:08:33
Pörgessük kicsit..
 
#define players(%0)      for(new %0 = 0; %0 <= GetPlayerPoolSize(); %0++) if(IsPlayerConnected(%0))
#define vehicles(%0)      for(new %0 = 0; %0 <= GetVehiclePoolSize(); %0++) if(IsValidVehicle(%0))