Szerző Téma: Ha nem jár a jármû motorja textdraw értéke megváltoztatjuk. Ez hogy oldható meg?  (Megtekintve 1065 alkalommal)

Nem elérhető nyomo

  • 159
    • Profil megtekintése
0 Show voters
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.

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
+1 Show voters
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
« Utoljára szerkesztve: 2013. október 15. - 17:47:11 írta Dfoglalo »

Nem elérhető nyomo

  • 159
    • Profil megtekintése
0 Show voters
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

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
0 Show voters
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;
}

0 Show voters



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;
}

 

[/quote]
 
Ha az OnPlayerEnterVehicle minden esetben meghívódna akkor még jó is lenne.
De ha már ott tartunk hogy meghívódik akkor van ott egy olyan rész hogy
 
OnPlayerEnterVehicle(playerid, vehicleid)[/quote]
Akkor nem kell a GetPlayerVehicleID-et használni alatta. :D

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
0 Show voters
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)

Nem elérhető nyomo

  • 159
    • Profil megtekintése
0 Show voters
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

+1 Show voters
http://wiki.sa-mp.com/wiki/OnVehicleStreamIn
Ez alá is írd be, és akkor csatlakozáskor is megfelelõ adatot fog kiírni.

Nem elérhető nyomo

  • 159
    • Profil megtekintése
0 Show voters
Hogy is gondolod pontosan?

0 Show voters
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.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal