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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Tomee - 2012. szeptember 01. - 15:47:37

Cím: Callback és visszatérés
Írta: Tomee - 2012. szeptember 01. - 15:47:37
Sziasztok!
Igazából nem vagyok otthon a pawno nyelvezetében vagyis, hogy minek mi a neve, de azért már egy-két dolgot tudok és most nem akarok hülyeséget mondani.
Szóval, ha van egy állandó timerem, ami mindig 1 másodpercenként újraindul. Akkor abba úgy a jobb ha simán beleírok valamit , vagy csináljam meg Callback-be és úgy tegyem bele? Vagy az tök mindegy?
A másik, hogy a visszatérést mikor is kell pontosan használni? Mert én rakosgatom ide oda, de nem vagyok teljesen biztos benne, hogy tényleg jó-e amit csinálok. Van-e annak valami normális használata?
Igazából az van, hogy a módom néha fogja magát és 3-5 mp-re belaggol és vannak ötleteim, hogy mi lehet és ezek is köztük vannak.
Cím: Callback és visszatérés
Írta: Kovacs_Richard - 2012. szeptember 01. - 18:27:37
Szóval, ha van egy állandó timerem, ami mindig 1 másodpercenként újraindul. Akkor abba úgy a jobb ha simán beleírok valamit , vagy csináljam meg Callback-be és úgy tegyem bele? Vagy az tök mindegy?[/quote]
ezt nem teljesen értem mire gondolsz...
 
A másik, hogy a visszatérést mikor is kell pontosan használni? Mert én rakosgatom ide oda, de nem vagyok teljesen biztos benne, hogy tényleg jó-e amit csinálok. Van-e annak valami normális használata?[/quote]
SA-MP Függvények visszatérési értékeirõl wikin olvashatsz...
Ha saját függvényhez akarsz visszatérési értéket akkor változó...
 
public SetPlayerAdmin(playerid,admin)
{
    PlayerInfo[playerid][Admin] = admin;
    return 1; // itt nem fontos a visszatérési érték, max akkor ha kicsit meg akarod keverni a dolgokat
}
public GetPlayerAdmin(playerid)
{
    return Playernfo[playerid][Admin]; // itt meg a játékos admin szintjével tér vissza
}
 
// példa:
if(GetPlayerAdmin(playerid) == 3)
{
    SetPlayerAdmin(playerid,4);
}
else
{
    SetPlayerAdmin(playerid,3);
}

 
remélem érthetõ volt :)
Cím: Callback és visszatérés
Írta: Tomee - 2012. szeptember 01. - 19:40:16
if(GetPlayerAdmin(playerid) == 3)
{
    SetPlayerAdmin(playerid,4);
}
else
{
    SetPlayerAdmin(playerid,3);
}

 
Szóval egy ilyennél, nem szükséges return 1;-t tenni.
 
if(GetPlayerAdmin(playerid) == 3)
{
    SetPlayerAdmin(playerid,4);
return 1;
}
else
{
    SetPlayerAdmin(playerid,3);
return 1;

 
Igen érhetõ, köszi.
Az elsõnél pedig van egy timer ami elindul OnGameModeinit alatt
Legyen ez e timer...TimerEx()
És ebben én most azt akarom például, hogy egy változó 20tól elszámoljon nulláig. Szóval
 

new Szamlalo;
forward TimerEx();
public TimerEx()
{
     if(Szamlalo>0)
     {
          Szamlalo--;
          if(Szamlalo==0)
          {
               //Valami történik
          }
     }
}

 
Persze ezt játékossal csinálnám playerid meg egyéb, csak így most gyorsabb
És akkor az itt történõ dolog jobb ha így van, mint ott vagy
 

new Szamlalo;
forward TimerEx();
public TimerEx()
{
     SzamlaloTimer();
}
forward SzamlaloTimer();
public SzamlaloTimer()
if(Szamlalo>0)
{
     {
          Szamlalo--;
          if(Szamlalo==0)
          {
               //Valami történik
          }
     }
}

 
Ja éés az ilyen Timereknél, amik folyamatosan mennek azoknak a végére kell a return 1;? Vagy nem fontos?
Cím: Callback és visszatérés
Írta: Kovacs_Richard - 2012. szeptember 01. - 20:00:54
if(GetPlayerAdmin(playerid) == 3)
{
    SetPlayerAdmin(playerid,4);
}
else
{
    SetPlayerAdmin(playerid,3);
}

 
ezt pl a parancs alá gondoltam nem saját függvényként de ha saját függvény akkor ez után kell visszatérés érték, mondjuk a függvény tipusától is függ...
az idõzítõnek létrehozol egy publikus függvényt és azt hívja meg
pl.:
 
new JailTime[MAX_PLAYERS];
// SetTimer(\"Szamlalo\",1000,1); // ezzel a kóddal indítod a számlálót mondjuk az OnGameModeInit alatt
forward Szamlalo();
public Szamlalo()
{
for(new i; i < GetMaxPlayers(); i++)
{
    if(!IsPlayerConnected(i) || JailTime == 0) { continue; }
    JailTime--;
    if(JailTime == 0) { Szabadulas(i); }
}
return 1;
}