Pomoc oko textdrawa

Započeo Risticc, Februar 10, 2024, 19:40:38 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Da li zna neko kako mogu da onemogucim ESC kada se pokrene ovaj textdraw, jer kad se u toku ovog textdrawa klikne ESC on ostane na ekranu?
[pawn]
KupujeDozvole( playerid, bool: show ) {

   if( show == true ) {

      PolaganjeBuy[playerid][0] = CreatePlayerTextDraw(playerid,167.066726, 113.103691, "LD_SPAC:white");
      PlayerTextDrawLetterSize(playerid, PolaganjeBuy[playerid][0], 0.000000, 0.000000);
      PlayerTextDrawTextSize(playerid, PolaganjeBuy[playerid][0], 298.000000, 187.000000);
      PlayerTextDrawAlignment(playerid, PolaganjeBuy[playerid][0], 1);
      PlayerTextDrawColor(playerid, PolaganjeBuy[playerid][0], 454761471);
      PlayerTextDrawSetShadow(playerid, PolaganjeBuy[playerid][0], 0);
      PlayerTextDrawSetOutline(playerid, PolaganjeBuy[playerid][0], 0);
      PlayerTextDrawBackgroundColor(playerid, PolaganjeBuy[playerid][0], 255);
      PlayerTextDrawFont(playerid, PolaganjeBuy[playerid][0], 4);
      PlayerTextDrawSetProportional(playerid, PolaganjeBuy[playerid][0], 0);
      PlayerTextDrawSetShadow(playerid, PolaganjeBuy[playerid][0], 0);

      PolaganjeBuy[playerid][1] = CreatePlayerTextDraw(playerid,177.999984, 119.740715, "");
      PlayerTextDrawLetterSize(playerid, PolaganjeBuy[playerid][1], 0.000000, 0.000000);
      PlayerTextDrawTextSize(playerid, PolaganjeBuy[playerid][1], 90.000000, 90.000000);
      PlayerTextDrawAlignment(playerid, PolaganjeBuy[playerid][1], 1);
      PlayerTextDrawColor(playerid, PolaganjeBuy[playerid][1], -1);
      PlayerTextDrawSetShadow(playerid, PolaganjeBuy[playerid][1], 0);
      PlayerTextDrawSetOutline(playerid, PolaganjeBuy[playerid][1], 0);
      PlayerTextDrawBackgroundColor(playerid, PolaganjeBuy[playerid][1], 0);
      PlayerTextDrawFont(playerid, PolaganjeBuy[playerid][1], 5);
      PlayerTextDrawSetProportional(playerid, PolaganjeBuy[playerid][1], 0);
      PlayerTextDrawSetShadow(playerid, PolaganjeBuy[playerid][1], 0);
      PlayerTextDrawSetSelectable(playerid, PolaganjeBuy[playerid][1], true);
      PlayerTextDrawSetPreviewModel(playerid, PolaganjeBuy[playerid][1], 410);
      PlayerTextDrawSetPreviewRot(playerid, PolaganjeBuy[playerid][1], 0.000000, 0.000000, -25.000000, 1.000000);
      PlayerTextDrawSetPreviewVehCol(playerid, PolaganjeBuy[playerid][1], 1, 1);

                // DA NE SALJEM CEO KOD

      for( new i = 0; i < 46; i ++) {
         PlayerTextDrawShow(playerid, PolaganjeBuy[ playerid ][ i ] );
      }
      SelectTextDraw(playerid, SERVER_COLOR ) ;
      DozvoleKupuje[ playerid ] = true;
    }
    else if( show == false ) {

        for( new i = 0; i < 46; i ++) {
         PlayerTextDrawHide(playerid, PolaganjeBuy[ playerid ][ i ] );
         PlayerTextDrawDestroy(playerid, PolaganjeBuy[ playerid ][ i ] );
         PolaganjeBuy[ playerid ][ i ] = PlayerText: INVALID_TEXT_DRAW;
      }
      CancelSelectTextDraw( playerid );
      DozvoleKupuje[ playerid ] = false;
   }
}
[/pawn]


Citat: Risticc poslato Februar 10, 2024, 23:48:55 POSLE PODNE
Bilo ko?
Napravis varijablu npr. vozackatd, onda kad mu pokazes taj td, setas mu tu variablu na npr. 1. Onda odes u OnPlayerKeyStateChange, i tamo napravis provjeru ako je kilknuo esc a variabla vozackatd mu je 1, da samo return true ili false;

A kako se definise ESC dugme, posto nisam nasao?


Video sam nesto da treba da se koristi INVALID_TEXT_DRAW, ali i kad ga integrisem nece i dalje se isto desava... ne samo za playertextid vec i za clickedid


Kada igrac klikne ESC da izadje is textdraw select moda, poziva se OnPlayerClickTextDraw i clickedid ce imati INVALID_TEXT_DRAW vrednost.
Napomena, poziva se OnPlayerClickTextDraw, ne OnPlayerClickPlayerTextDraw (on se nikad ne poziva za ESC).
Ti si dao Playe TextDraw-ove gore u kodu, tako da ne pomijesas 2 callback-a.

Evo ti link na wiki https://sampwiki.blast.hk/wiki/OnPlayerClickPlayerTextDraw

To sam uspeo, ali sad imam drugi problem kada upalim neki textdraw koji zelim kasnije da se ugasi nece ni sa CancelSelectTextDraw(playerid); funkcijom da ga ugasi?

Mislim nece da se ugasi taj selectable mod nikako, nigde ne priznaje funkciju CancelSelectTextDraw( playerid );
Probao sam i posebno komandu da napravim medjutim i dalje, uvek ga vraca iz nekog razloga nebitno dal bio clickedid ili playertextid textdraw

Stavio sam

[pawn]public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
   if(clickedid == Text:INVALID_TEXT_DRAW) SelectTextDraw(playerid,SERVER_COLOR);[/pawn]

Ali imam infinite loop, nebitno gde da li to bio OnPlayerClickTextDraw ili OnPlayerClickPlayerTextDraw, a svugde stoji funkcija CancelSelectTextDraw( playerid );

I sad mi nije jasno, kako to da prekinem, samo mi to fali i uspeo sam da resim problem? Cak sam i preko komande to probao medjutim nista, uvek mi vraca selecttextdraw...

Citat: Risticc poslato Februar 13, 2024, 15:19:27 POSLE PODNE
Stavio sam

[pawn]public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
   if(clickedid == Text:INVALID_TEXT_DRAW) SelectTextDraw(playerid,SERVER_COLOR);[/pawn]

Ali imam infinite loop, nebitno gde da li to bio OnPlayerClickTextDraw ili OnPlayerClickPlayerTextDraw, a svugde stoji funkcija CancelSelectTextDraw( playerid );

I sad mi nije jasno, kako to da prekinem, samo mi to fali i uspeo sam da resim problem? Cak sam i preko komande to probao medjutim nista, uvek mi vraca selecttextdraw...
Pa stavi cmd:zatvoritd ili bilo sta i zatvoris mu

Citat: Risticc poslato Februar 13, 2024, 15:19:27 POSLE PODNE
Stavio sam

[pawn]public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
   if(clickedid == Text:INVALID_TEXT_DRAW) SelectTextDraw(playerid,SERVER_COLOR);[/pawn]

Ali imam infinite loop, nebitno gde da li to bio OnPlayerClickTextDraw ili OnPlayerClickPlayerTextDraw, a svugde stoji funkcija CancelSelectTextDraw( playerid );

I sad mi nije jasno, kako to da prekinem, samo mi to fali i uspeo sam da resim problem? Cak sam i preko komande to probao medjutim nista, uvek mi vraca selecttextdraw...
Nisam siguran da te razumem 100%, ali ukoliko ti se desava da kad pozoves CancelSelectTextDraw da ti pozove OnPlayerClickTextDraw sa clickedid = INVALID_PLAYER_TEXTDRAW vrednoscu, onda mozes dodati neku pomocnu promenivu u kombinaciji sa ovim sto sad imas, i da i nju provjeravas pa tako da znas da li da mu dozvolis da izadje ili ne...

Da ali zar se onda necu da onemogucim INVALID_TEXTDRAW funkciju, i ESC ce opet biti odobreno? Objasnicu opet sta je problem.. sa tim INVALID_TEXTDRAW sam uspeo da sprecim ESC koriscenje u toku textdrawselecta, e sad problem je kad se upali taj textdraw select, on ne moze da se ugasi sa funkcijom CancelSelectTextDraw, i ide u infinite loop zbog INVALID_TEXTDRAW, i mis konstantno ostaje na ekranu... Ako bih stavio npr bool: promenjivu od koje bi u zavisnosti od true/false omogucila koriscenje invalid_text_draw, opet bi se svelo na pocetak, a to je da ESC opet moze da se klikne... Valjda si sad razumeo, ako postoji mozda neki drugi nacin da onemogucim ESC slobodno kazi, pa da probam to

Citat: toncikica poslato Februar 13, 2024, 17:46:38 POSLE PODNE
Pa stavi cmd:zatvoritd ili bilo sta i zatvoris mu
Nece uopste da ugasi textdraw sa CancelSelectTextDraw( playerid );
Nebitno dal to bila komanda ili preko neke funkcije