-
Helló
Egy benzin szint kijelzõrõl van szó, ahol azt szeretném megoldani, hogy ha a jármû motorja nem jár azt jelezze ki mint amikor üres a tank.
példáúl:
TextDrawSetString(Textdraw0[playerid], \"~y~-\"), TextDrawShowForPlayer(playerid, Textdraw0[playerid]);
A motor lekérdezéssel van a probléma, mert megpróbáltam több félképen és nem volt jó. Vagy csak beszállásnál mûködött és már a indit/leallit kor nem, vagy fordítva. A próbák idejére SCM-et is írtam bele, hogy lássam mit is csinál, ugyebár beszállok a jármûbe nem jár a motor és jött az üzenet hogy \"nem jár a motor\", beindítom, ugyan ez az üzenet továbbra is, leállítom, az üzenet \"jár a motor\" :D
Ennél a megoldással ezzel próbáltam, aminek a forrása a sampfórum és TengeriMalac-tól származik. Az is aggasztott itt hogy fél másodpercenként ha nem gyorsabban történt a lekérdezés, ami nem néz kis egészségesnek de nem tudom, kezdõ vagyok ezért kérek segítséget.
Elég lenne beszálláskor lekérdezni és leállításkor/inditáskor
new vParam[7];
GetVehicleParamsEx(vehicleid, vParam[0], vParam[1], vParam[2], vParam[3], vParam[4], vParam[5], vParam[6]);
if(vParam[0]) {
(példa csak) scm \"Jár a motor\"
} else if(!vParam[0]) {
(példa) scm \"Nem jár a motor\"
}
Azt szeretném ha beszállok a jármûbe és nem jár a motor ezt az értéket kapja, ha jár a motor és leállítom akkor is, ha (újra)beindítom ne . Elõre elnézést ha hülyeséget írok.
-
PlayerTextDraw-ot használj. Azzal csak az adott játékosnak változik át a TextDraw stingje, nem az összesnek, így minden játékos a maga kocsijának a motorjának az állapotát láthatja.
OnGameModeInIt helyett az OnPlayerConnect alá kell tenni a TextDrawokat. És persze PlayerTextdrawokat.
http://wiki.sa-mp.com/wiki/CreatePlayerTextDraw
String megváltoztatása:
http://wiki.sa-mp.com/wiki/PlayerTextDrawSetString
Ha a játékos lecsatlakozik, töröld a TD-t, nehogy bebugoljon (ottmaradjon a kocsin kiszálláskor is, mert ha 2 játékos csatlakozik ugyanarra az ID-re, már 2 TD lesz ugyanazon elnevezéssel, és csak az egyiket fogja eltüntetni a szerver a kiszálláskor, remélem érthetõ). Ezzel törölheted:
http://wiki.sa-mp.com/wiki/PlayerTextDrawDestroy
-
Igen, érthetõ és sokat segít, mert vannak még olyan hibák benne (ez egy több funkciós \"km óra\" vagy \"mûszerfal vagy minek is nevezzem)
amikre a leírtak alapján választ kapok, nem egyszerre tûnnek el vannak esetek hogy még ott marad valami, amiket említettél, stb. A playertext-et megismertetted, eddig nem találkoztam vele. Szóval vannak még hibák bõven, de egyenlõre azt szeretném megoldani amit írtam és azzal még nem vagyok tisztába most sem.
Egyszerû példával: Azt hogy oldható meg ha beülök a kocsiba és nem jár a motor, chat-be kapjak hogy \"x\" és ha beindítom majd leállítom, chat-be megint \"x\".
A \" +\" természetesen ment! :)
Közbe próbálkozok hiába is az a mottód hogy \"Az hibázik, aki próbálkozik\" :D
-
A TextDrawos dolgon túl akkor ha jól értem, azt szeretnéd, hogy ki/beszálláskor kiírja a motor állapotát, pl. chatre. Igaz? Ha igen, valami ilyesmit kéne összehoznod:
// Fejbõl írom, bocsi, ha pontatlan
public OnPlayerEnterVehicle(playerid, vehicleid)
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
if(engine == 0)
{
SendClientMessage(playerid, COLOR, \"A motor áll!\");
}
else
{
SendClientMessage(playerid, COLOR, \"A motor jár!\");
}
return 1;
}
-
-
Zsolesszka,
// Fejbõl írom, bocsi, ha pontatlan
[/quote]
:D Éreztem, hogy valamit rosszul írok re. Csak hát nem írja le nap mint nap helyesen az OnPlayerEnterVehicle-t, hiszen egyszer beírja a módjába, aztán oda pakol. Így nem tudtam helyesen leírni a dolgot. De amúgy az nyugodtan ott lehet, sõt még kevés is, mert eredetileg így használandó:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
-
Köszönöm a segítséget, megoldás nem született végül. Egyébként mindegy hogy járt a motor vagy sem ugyan azt kaptam meg mindig, pl hogy \"nem jár a motor\" az általad írt soroknál. Meg nem jó, az egyszerû példámmal azt akartam hogy a SCM kicserélem a TD String-es dologra....., zsákutca.
Amit a kezdetekben említettem:
new vParam[7];
GetVehicleParamsEx(vehicleid, vParam[0], vParam[1], vParam[2], vParam[3], vParam[4], vParam[5], vParam[6]);
if(vParam[0]) {
//ha be van indítva
} else if(!vParam[0]) {
TextDrawSetString(Textdraws3[playerid], \"~r~-\"), TextDrawShowForPlayer(playerid, Textdraws3[playerid]);
//ha nincs beindítva
}
Ezt ha a OnPlayerEnterVehicle alá rakom, a kilincs érintéstõl a beülésig jó, utána eltûnik. (magyarul nem jó)
Ha máshova tettem be már nem is tudom hova így hirtelen akkor ugye \"mûködött\" Nem járt a motor a TD ~r~- mutatott, ha beindítottam eltûnt az üres jelzés a benzinszint pedig megjelent. Eddig rendben lenne a dolog csak az a bökkenõ hogy csatlakozok szeróra a kocsi motorja ugye nem jár és mégis az van mintha járna a beszállásomkor, nem lép mûködésbe a string. A kocsit beindítom majd leállítom és onnantól kezdve mûködik a dolog. Ezért mondtam nem konkrétan a string el van a gondom hanem azt nem tudom megoldani hogy a string álló motornál lépjen mûködésbe.
Jó nagy katyvaszt összehoztam itt, kicsit hagyom még majd zárok ha nincs hozzáfûznivaló, addig is csinálok mást tanulgatok és talán érthetõbben feltudom tenni mi is a gondom/bajom, vagy a végén még kisakkozom. :D
-
http://wiki.sa-mp.com/wiki/OnVehicleStreamIn
Ez alá is írd be, és akkor csatlakozáskor is megfelelõ adatot fog kiírni.
-
Hogy is gondolod pontosan?
-
csak az a bökkenõ hogy csatlakozok szeróra a kocsi motorja ugye nem jár és mégis az van mintha járna a beszállásomkor, nem lép mûködésbe a string[/quote]
Erre válaszoltam hogy írd be az általad készített Textdraw dolgot az alá is.
Hiszen a fentebb említett funkció meghívódik minden jármûnél ami számodra éppen megjelenik a játékban.
Másold be a a wikin látott példát a szkriptedbe, próbáld ki és látni fogod mi történik ahogy haladsz a játékban.