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: tudvari - 2012. Május 27. - 19:48:05

Cím: GyorsTimer,ami lefut minden playeren
Írta: tudvari - 2012. Május 27. - 19:48:05
Üdv,van egy timerem ami gyorsan ismétlõdik,és a szerver összes playerére kihat.De valamiért nem megy.Lehet,hogy attól megy tönkre,ha valaki feljön a szerverre.
Várom az észrevételeket :D
 
public GyorsTimer()
{
new p;
for(p = 0; p < MAX_PLAYERS; p++)
{
if(Belepve[p] != 0)
{
    new Float:Armour;
    new Float:HP;
    GetPlayerArmour(p,Armour);
    GetPlayerHealth(p,HP);
    if(Armour > 100)
    {
      SetPlayerArmour(p,100);
    }
    if(HP > 100)
    {
      SetPlayerHealth(p,100);
    }
    if(JatekosInfo[p][ViszValakit] != 0)
    {
              new Float:Xpoz, Float:Ypoz, Float:Zpoz, Int, VW;
      GetPlayerPos(p, Xpoz, Ypoz, Zpoz);
      VW = GetPlayerVirtualWorld(p);
      Int = GetPlayerInterior(p);
      new vittember;
      vittember = JatekosInfo[p][ViszValakit];
      SetPlayerPos(vittember, (Xpoz+0.5), Ypoz, Zpoz);
      SetPlayerInterior(vittember, Int);
      SetPlayerVirtualWorld(vittember, VW);
    }
    if(JatekosInfo[p][Taxiban] > 0 &&   JatekosInfo[p][Viteldij] < 15)
   {
       JatekosInfo[p][Taxiban] ++;
   }
            if(JatekosInfo[p][Taxiban] == 15)
   {
       JatekosInfo[p][Taxiban] = 1;
       JatekosInfo[p][Penz] -= JatekosInfo[p][Viteldij];
   }
   if(JatekosInfo[p][szomjusag] > 100)
   {
       JatekosInfo[p][szomjusag] = 100;
   }
   if(JatekosInfo[p][Ehseg] > 100)
   {
       JatekosInfo[p][Ehseg] = 100;
   }
   if(JatekosInfo[p][Almossag] > 100)
   {
       JatekosInfo[p][Almossag] = 100;
   }
   if(JatekosInfo[p][szomjusag] < 0)
   {
       JatekosInfo[p][szomjusag] = 0;
   }
   if(JatekosInfo[p][Ehseg] < 0)
   {
       JatekosInfo[p][Ehseg] = 0;
   }
   if(JatekosInfo[p][Almossag] < 0)
   {
       JatekosInfo[p][Almossag] = 0;
   }
}
}
return 1;
}
Cím: GyorsTimer,ami lefut minden playeren
Írta: gergo107 - 2012. Május 28. - 00:12:41
SetTimer(\"Gyorstimer\", stb...); -t másold be
Cím: GyorsTimer,ami lefut minden playeren
Írta: tudvari - 2012. Május 28. - 00:30:45
OnGameModeInit alatt:
 
SetTimer(\"GyorsTimer\", 1000, true);
Cím: GyorsTimer,ami lefut minden playeren
Írta: gergo107 - 2012. Május 28. - 00:32:37
Minden playerre kihat? azt kéne kovácsolni?:D
Cím: GyorsTimer,ami lefut minden playeren
Írta: tudvari - 2012. Május 28. - 00:36:37
   new p;
for(p = 0; p < MAX_PLAYERS; p++)
{

 
erre a for ciklusra gondoltam.
Csak lehetséges,hogy azután állt le a timer,hogy feljött egy másik játékos.Ha egyedül vagyok fent,mûködik.
Igen,azt szeretném,mert elvégre a p változó az az összes playert jelképezi.
Cím: GyorsTimer,ami lefut minden playeren
Írta: gergo107 - 2012. Május 28. - 00:41:22
akkor pedig
 
forward GyorsTimer(playerid);

 

public GyorsTimer(playerid)
{
stb...
}

 
és a gyorstimer alatt írd át a \"p\"-t \"playerid\"-re
aztán az
OnPlayerConnect

 alá
 
SetTimerEx(\"GyorsTimer\", true, \"ddd\", playerid);
Cím: GyorsTimer,ami lefut minden playeren
Írta: tudvari - 2012. Május 28. - 08:58:04
Tudom,hogy így is lehet,a többi timerem így van.De SeeRPG modban láttam ezt az alkalmazási módszert,így gondoltam:hát ha jobb a szervernek mindenkin végigfutni ezzel a pár sorral.
De akkor gondolom,valamiért nem jó.Bár nem tudom,See-n ,hogy mûködött.
Cím: GyorsTimer,ami lefut minden playeren
Írta: gergo107 - 2012. Május 28. - 12:13:18
new Timerek[akármennyi] = -1;?

 
erre gondolsz?
de amúgy azért mert ott mindenhol úgy van megcsinálva hogy az összes playerre kihasson de mivel
if

 lekérdezi a dolgokat ezért nem hat ki minden playerre
Cím: GyorsTimer,ami lefut minden playeren
Írta: tudvari - 2012. Május 28. - 12:46:37
Nem mondod :D
De ha például negatív lesz az éhségem,akkor nem állítja át nullára.Erre gondoltam.Én írtam,tudom mit írtam,csak azt nem tudom,hogy a több player miért befolyásolja.
Mindegy,már átírtam személyes timerbe.Azért köszi.