Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Risticc poslato Februar 10, 2024, 19:40:38 POSLE PODNE

Naslov: Pomoc oko textdrawa
Poruka od: Risticc poslato Februar 10, 2024, 19:40:38 POSLE PODNE
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]
Naslov: Odg: Pomoc oko textdrawa
Poruka od: Risticc poslato Februar 10, 2024, 23:48:55 POSLE PODNE
Bilo ko?
Naslov: Odg: Pomoc oko textdrawa
Poruka od: toncikica poslato Februar 11, 2024, 00:26:56 PRE PODNE
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;
Naslov: Odg: Pomoc oko textdrawa
Poruka od: Risticc poslato Februar 11, 2024, 11:17:52 PRE PODNE
A kako se definise ESC dugme, posto nisam nasao?
Naslov: Odg: Pomoc oko textdrawa
Poruka od: cozmic poslato Februar 11, 2024, 12:23:16 POSLE PODNE
Citat: tyler12
None.

https://sampwiki.blast.hk/wiki/GetPlayerKeys

nema ida za esc :s
Naslov: Odg: Pomoc oko textdrawa
Poruka od: Risticc poslato Februar 11, 2024, 12:24:46 POSLE PODNE
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
Naslov: Odg: Pomoc oko textdrawa
Poruka od: Risticc poslato Februar 11, 2024, 17:07:59 POSLE PODNE
Neko drugi da pomogne?
Naslov: Odg: Pomoc oko textdrawa
Poruka od: Bit Frosty poslato Februar 12, 2024, 18:43:11 POSLE PODNE
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
Naslov: Odg: Pomoc oko textdrawa
Poruka od: Risticc poslato Februar 12, 2024, 21:03:37 POSLE PODNE
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?
Naslov: Odg: Pomoc oko textdrawa
Poruka od: Risticc poslato Februar 12, 2024, 21:18:50 POSLE PODNE
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
Naslov: Odg: Pomoc oko textdrawa
Poruka od: 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...
Naslov: Odg: Pomoc oko textdrawa
Poruka od: toncikica poslato Februar 13, 2024, 17:46:38 POSLE PODNE
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
Naslov: Odg: Pomoc oko textdrawa
Poruka od: Bit Frosty poslato Februar 13, 2024, 19:15:33 POSLE PODNE
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...
Naslov: Odg: Pomoc oko textdrawa
Poruka od: Risticc poslato Februar 13, 2024, 20:03:31 POSLE PODNE
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
Naslov: Odg: Pomoc oko textdrawa
Poruka od: Risticc poslato Februar 13, 2024, 20:07:15 POSLE PODNE
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
Naslov: Odg: Pomoc oko textdrawa
Poruka od: Kraken poslato Februar 13, 2024, 21:27:01 POSLE PODNE
Dodaj funkciju SetPlayerKeySyncEnabled(playerid, enabled)
Naslov: Odg: Pomoc oko textdrawa
Poruka od: rizla poslato Februar 13, 2024, 21:30:01 POSLE PODNE
Zasto bi to radio? Zar nije logicnije da kad koristis ESC da ti zatvori td?

Citat: Risticc poslato Februar 10, 2024, 19:40:38 POSLE PODNE
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?

Uradio si ono sto si vec postavio i samo dodas ovo
[pawn]KupujeDozvole( playerid, bool: show )
{
    //......
    SetPVarInt(playerid, KupujeTD, 1);
}
OnPlayerClickTextDraw(playerid, Text:clickedid)
{
    if(clickedid == Text:INVALID_TEXT_DRAW)
    {
         GetPVarInt(playerid, "KupujeTD") == 1;
         {
              PlayerTextDrawDestroy(playerid, PolaganjeBuy[ playerid ][ i ] );
         }
         return 1;
    }
    return 0;
}
[/pawn]
Naslov: Odg: Pomoc oko textdrawa
Poruka od: Risticc poslato Februar 13, 2024, 23:35:38 POSLE PODNE
Citat: rizla poslato Februar 13, 2024, 21:30:01 POSLE PODNE
Zasto bi to radio? Zar nije logicnije da kad koristis ESC da ti zatvori td?

Uradio si ono sto si vec postavio i samo dodas ovo
[pawn]KupujeDozvole( playerid, bool: show )
{
    //......
    SetPVarInt(playerid, KupujeTD, 1);
}
OnPlayerClickTextDraw(playerid, Text:clickedid)
{
    if(clickedid == Text:INVALID_TEXT_DRAW)
    {
         GetPVarInt(playerid, "KupujeTD") == 1;
         {
              PlayerTextDrawDestroy(playerid, PolaganjeBuy[ playerid ][ i ] );
         }
         return 1;
    }
    return 0;
}
[/pawn]
Iskoristio sam ovo, reseno je hvala svima! Lock.