-
Ü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!
-
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ó.
-
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!
-
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.
-
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);
}
}
-
for(new b = 1;b < sizeof(BusinessInfo);bö+)
-
elsõ jó és utána semmi :S
-
Ja hogy a fórum a 2+ (+ +) az ö+ nak írja, mondom mi az az bö+
-
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.