Szerző Téma: Textdraw bejáratoknál.  (Megtekintve 1147 alkalommal)

Nem elérhető quips

Textdraw bejáratoknál.
« Dátum: 2014. február 23. - 02:45:00 »
0 Show voters
Ü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!

Nem elérhető nyomo

  • 159
    • Profil megtekintése
Textdraw bejáratoknál.
« Válasz #1 Dátum: 2014. február 23. - 04:14:46 »
0 Show voters
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ó.
 

Nem elérhető BoOy

  • 3209
  • 2013-as év szkriptere
    • Profil megtekintése
Textdraw bejáratoknál.
« Válasz #2 Dátum: 2014. február 23. - 11:06:51 »
0 Show voters
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!
« Utoljára szerkesztve: 2014. február 23. - 11:09:34 írta BoOy »

Nem elérhető quips

Textdraw bejáratoknál.
« Válasz #3 Dátum: 2014. február 23. - 14:27:05 »
0 Show voters
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.

Nem elérhető BoOy

  • 3209
  • 2013-as év szkriptere
    • Profil megtekintése
Textdraw bejáratoknál.
« Válasz #4 Dátum: 2014. február 23. - 14:51:22 »
0 Show voters
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);
}
}

Nem elérhető nyomo

  • 159
    • Profil megtekintése
Textdraw bejáratoknál.
« Válasz #5 Dátum: 2014. február 23. - 15:09:56 »
0 Show voters
for(new b = 1;b < sizeof(BusinessInfo);bö+)

Nem elérhető quips

Textdraw bejáratoknál.
« Válasz #6 Dátum: 2014. február 23. - 16:49:36 »
0 Show voters
elsõ jó és utána semmi :S

Nem elérhető nyomo

  • 159
    • Profil megtekintése
Textdraw bejáratoknál.
« Válasz #7 Dátum: 2014. február 23. - 17:55:26 »
0 Show voters
Ja hogy a fórum a 2+ (+ +) az ö+ nak írja, mondom mi az az bö+
« Utoljára szerkesztve: 2014. február 23. - 18:02:11 írta nyomo »

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Textdraw bejáratoknál.
« Válasz #8 Dátum: 2014. március 11. - 16:45:34 »
0 Show voters
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.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal