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: quips - 2014. február 23. - 02:45:00

Cím: Textdraw bejáratoknál.
Írta: quips - 2014. február 23. - 02:45:00
Üdv!
Egy egyszerû dologban szeretnék segítséget kérni de nekem sehogy sem jön össze. Szóval azt akarnám valahogy megoldani ,hogy ha a játékos a bejárati pickup-ban áll kihoz neki egy bizonyos Textdraw-t ha pedig elhagyja a pickupot akkor eltünteti a textet. Egyszerûen sehogy sem sikerül próbáltam mindent megpróbáltam timerrel OnPlayerUpdate-tal is próbálkoztam. Elõhozza a timernél villogósan mûködik OnPlayerUpdate-nél pedig IsPlayerInRangeOfPoint-tal próbálkoztam de nem reagál. Biztosan egyszerû a válasz de egyszerûen nem tudok rájönni. Elõre is köszönöm a válaszokat!
Cím: Textdraw bejáratoknál.
Írta: nyomo - 2014. február 23. - 04:14:46
Esetleg?
 
public OnPlayerPickUpPickup(playerid, pickupid)

 
http://sampforum.hu/index.php?topic=9460.0
Elég sûrûn ismétlõdik, mivel a bejárati pickupot gondolom nem lehet \"felvenni\". Ezért egy változót létrehozol neki, amikor meghívódik a textdraw akkor pl 1 lesz az értéke ha bezárod vagy elmész a pickuptól pedig ismét nullára állítod és feltételnek szabod hogy csak akkor jelenjen meg a textdraw amikor ez az érték nullával egyenlõ. 
A textdrawot hogyan tünteted el az már más kérdés. Esetleg valami olyat akarsz mint a dialog csak textdraw-al? Mert akkor lefagyaszthatnád a játékost és ha esc gombot nyom feloldod, eltünteted a texdrawot és azt a bizonyos változót nullára állítod.
Ha nem olyan jellegû akkor meg marad a  IsPlayerInRangeOfPoint a timer vagy a OnPlayerUpdate segítségével, ami akkor/addig aktív amikor/ameddig az a bizonyos változó értéke 1 azaz a textdraw látható.
 
Cím: Textdraw bejáratoknál.
Írta: BoOy - 2014. február 23. - 11:06:51
Tessék:
 
public OnPlayerUpdate(playerid)
{
if(IsPlayerInRangeOfPoint(playerid,2.0,bejx,bejy,bejz)) TextDrawShowForPlayer(playerid,textdrawid);
else if(IsPlayerInRangeOfPoint(playerid,2.0,bejx2,bejy2,bejz2)) TextDrawShowForPlayer(playerid,textdrawid);
else TextDrawHideForPlayer(playerid,textdrawid);
return 1;
}

 
A bejx,bejy és a bejz helyére az 1. épület bejárat kordinátát rakd bele, értelemszerûen a bejx2,bejy2,bejz2 -vel a 2. épület bejárati kordinátát. A textdrawid helyére a megjelenítendõ-eltüntetõ Textdraw ID-jét.
Ha több bejáratnak akarod megadni a kordinátáit akkor az
 
else if(IsPlayerInRangeOfPoint(playerid,2.0,bejx2,bejy2,bejz2)) 

 
alá ugyan ezt a függvény bemásolod, csak a 3. épület kordinátáit használod.
Sok szerencsét!
Cím: Textdraw bejáratoknál.
Írta: quips - 2014. február 23. - 14:27:05
Próbálkoztam az OnPlayerUpdate-nél így néz ki:
 
     new TextString[256];
     for(new b = 1;b < sizeof(BusinessInfo);b++)
     {
 if(IsPlayerInRangeOfPoint(playerid,2.0,BusinessInfo[bEntranceX], BusinessInfo[bEntranceY], BusinessInfo[bEntranceZ]))
 {
      if(BusinessInfo[bHasznalatban] == 0)
           {
                 format(TextString, sizeof(TextString), \"%s\", BusinessInfo[bNev]);
                   TextDrawSetString(BejaratiText, TextString);
         TextDrawShowForPlayer(playerid, BejaratiText);
         TextDrawShowForPlayer(playerid, BejaratiBox);
           }
           if(BusinessInfo[bHasznalatban] == 1)
           {
                 format(TextString, sizeof(TextString), \"%s Tulajdonos: %s\", BusinessInfo[bNev], BusinessInfo[bTulajdonos]);
                    TextDrawSetString(KijaratiText, TextString);
         TextDrawShowForPlayer(playerid, KijaratiText);
         TextDrawShowForPlayer(playerid, BejaratiBox);
           }
 }
     else
 {
            TextDrawHideForPlayer(playerid, KijaratiText), TextDrawHideForPlayer(playerid, BejaratiText), TextDrawHideForPlayer(playerid, BejaratiBox);
 }
     if(IsPlayerInRangeOfPoint(playerid,2.0,BusinessInfo[bExitX], BusinessInfo[bExitY], BusinessInfo[bExitZ]))
     {
           format(TextString, sizeof(TextString), \"Kilepes az utcara innen: %s\", BusinessInfo[bNev]);
       TextDrawSetString(KijaratiText, TextString);
      TextDrawShowForPlayer(playerid, KijaratiText);
      TextDrawShowForPlayer(playerid, BejaratiBox);
 }
 else
 {
      TextDrawHideForPlayer(playerid, KijaratiText), TextDrawHideForPlayer(playerid, BejaratiText), TextDrawHideForPlayer(playerid, BejaratiBox);
 }
 }

 
De nem jeleníti meg egyszerûen már nem tudom mi lehet a probléma :S.
Cím: Textdraw bejáratoknál.
Írta: BoOy - 2014. február 23. - 14:51:22
Ha nemjó akkor nézd meg a konzolba hogy meddig írja ki...
 
new TextString[256];
for(new b;b < sizeof(BusinessInfo);b++)
{
        printf(\"Elso jo!\");
if(IsPlayerInRangeOfPoint(playerid,2.0,BusinessInfo[bEntranceX], BusinessInfo[bEntranceY], BusinessInfo[bEntranceZ]))
{
                printf(\"Masodik jo!\");
if(BusinessInfo[bHasznalatban] == 0)
{
                        printf(\"Harmadik jo!\");
   format(TextString, sizeof(TextString), \"%s\", BusinessInfo[bNev]);
   TextDrawSetString(BejaratiText, TextString);
   TextDrawShowForPlayer(playerid, BejaratiText);
   TextDrawShowForPlayer(playerid, BejaratiBox);
}
if(BusinessInfo[bHasznalatban] == 1)
{
                        printf(\"Harmadik jo!\");
   format(TextString, sizeof(TextString), \"%s Tulajdonos: %s\", BusinessInfo[bNev], BusinessInfo[bTulajdonos]);
   TextDrawSetString(KijaratiText, TextString);
   TextDrawShowForPlayer(playerid, KijaratiText);
   TextDrawShowForPlayer(playerid, BejaratiBox);
}
}
else
{
TextDrawHideForPlayer(playerid, KijaratiText), TextDrawHideForPlayer(playerid, BejaratiText), TextDrawHideForPlayer(playerid, BejaratiBox);
}
if(IsPlayerInRangeOfPoint(playerid,2.0,BusinessInfo[bExitX], BusinessInfo[bExitY], BusinessInfo[bExitZ]))
{
format(TextString, sizeof(TextString), \"Kilepes az utcara innen: %s\", BusinessInfo[bNev]);
TextDrawSetString(KijaratiText, TextString);
TextDrawShowForPlayer(playerid, KijaratiText);
TextDrawShowForPlayer(playerid, BejaratiBox);
}
else
{
TextDrawHideForPlayer(playerid, KijaratiText), TextDrawHideForPlayer(playerid, BejaratiText), TextDrawHideForPlayer(playerid, BejaratiBox);
}
}
Cím: Textdraw bejáratoknál.
Írta: nyomo - 2014. február 23. - 15:09:56
for(new b = 1;b < sizeof(BusinessInfo);bö+)
Cím: Textdraw bejáratoknál.
Írta: quips - 2014. február 23. - 16:49:36
elsõ jó és utána semmi :S
Cím: Textdraw bejáratoknál.
Írta: nyomo - 2014. február 23. - 17:55:26
Ja hogy a fórum a 2+ (+ +) az ö+ nak írja, mondom mi az az bö+
Cím: Textdraw bejáratoknál.
Írta: Dfoglalo - 2014. március 11. - 16:45:34
Printeld ki a sizeof(BusinessInfo)-t és simán a BusinessInfo-t is. Ugyanis valószínûleg azért nem fut le a ciklus, mert amit kiír, az nem egy szám, vagy esetleg 1, avagy az alatti.