Jump to content
  • 0

Dublu click


Browse

Question

Cum fac ca atunci când dau dublu click pe un textdraw sa se intample ceva? Nu sa dau click doar odata, de 2x.

E ceva legat de OnPlayerClickPlayerTextDraw, da nu imi dau seama cum sa fac ca ca atunci cand apas odata sa apara ceva si cand apas de 2x vreau pe acelasi textdraw sa apara alt textdraw.

Edited by Browse
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 2
new clicked_textdraws[MAX_PLAYERS][2];

// la click
clicked_textdraws[playerid][0]++;
defer reset_clicks(playerid);
if(clicked_textdraws[playerid][0] == 2) 
{
	// ce se intampla

	clicked_textdraws[playerid][0] = 0;
}

poti face printr-un timer chestia cu click-urile rapide:

 

timer reset_clicks[4000](playerid)
{
	for(new i; i < 2; i++) clicked_textdraws[playerid][i] = 0;
}

 

  • Like 1
Link to comment
Share on other sites

  • 1

Salut @Browse,

Poti face pur si simplu o variabila, la care sa adaugi '+1', de fiecare daca cand jucatorul da click pe textdraw.

Spre exemplu:

new 
	click_Times[MAX_PLAYERS];

click_Times[playerid] ++;

if(click_Times[playerid] == 2)
{
	//ce se intampla cand a apasat de 2 ori.

	//dupa care, va trebui sa resetezi variabila
	click_Times[playerid] = 0;
}
else 
{
	//ce se intampla cand apasa o singura data
}

Cam asta e ideea.

O seara/zi buna!

  • Like 1

Daca te-am ajutat =>

spacer.png

Link to comment
Share on other sites

  • 0
40 minutes ago, shane said:

Salut @Browse,

Poti face pur si simplu o variabila, la care sa adaugi '+1', de fiecare daca cand jucatorul da click pe textdraw.

Spre exemplu:

new 
	click_Times[MAX_PLAYERS];

click_Times[playerid] ++;

if(click_Times[playerid] == 2)
{
	//ce se intampla cand a apasat de 2 ori.

	//dupa care, va trebui sa resetezi variabila
	click_Times[playerid] = 0;
}
else 
{
	//ce se intampla cand apasa o singura data
}

Cam asta e ideea.

O seara/zi buna!

Pai si daca as vrea sa contorizez clickurile pentru un textdraw specific? Buna ideea apropo.

EDIT: Am gasit o solutie pentru asta!!

Dar de exemplu daca nu as vrea sa se contorizeze clickurile ci doar sa fie de exemplu 2 clickuri rapide si daca le apesi rar sa nu se puna nu stiu daca intelegi la ce ma refer, stiu ca ma abat de la intrebarea principala dar daca mi-ai dat ideea asta cred ca este posibil..

Edited by Browse
Link to comment
Share on other sites

  • 0
54 minutes ago, irinelbro69 said:
new clicked_textdraws[MAX_PLAYERS][2];

// la click
clicked_textdraws[playerid][0]++;
defer reset_clicks(playerid);
if(clicked_textdraws[playerid][0] == 2) 
{
	// ce se intampla

	clicked_textdraws[playerid][0] = 0;
}

poti face printr-un timer chestia cu click-urile rapide:

 

timer reset_clicks[4000](playerid)
{
	for(new i; i < 2; i++) clicked_textdraws[playerid][i] = 0;
}

 

Ce face

defer reset_clicks(playerid);
Link to comment
Share on other sites

  • 0

Salut @Browse,

In legatura cu ce ai spus mai sus, nu trebuie sa faci neaparat un timer pentru asta. Mai avantajos ar fi sa te folosesti de functia 'GetTickCount'.

Iti voi prezenta un exemplu:

// va trebui sa creezi o variabila noua, per jucator (adica playerid)
new 
	clicked_TickCount[MAX_PLAYERS];

if((GetTickCount() - clicked_TickCount[playerid]) < 500)
{
	//aici vei adauga ce se va intampla, daca va apasa de 2 ori pe textdraw si vei reseta variabila
    
	clicked_TickCount[playerid] = 0;
}
else clicked_TickCount[playerid] = GetTickCount(); // iar aici, vei detecta momentul in care a fost apasat textdraw-ul, daca nu a fost apasat in mai putinde 500 de milisecunde (cred, nu mai stiu cum e la functia asta, dar imi e prea lene sa mai caut)

Iar daca vrei sa specifici si textdraw-ul, va trebui sa stochezi id-ul textdrawului intr-o alta variabila, tot per player (playerid), iar codul va arata ceva de genul:

// va trebui sa creezi o variabila noua, per jucator (adica playerid)
// am refacut putin codul, sa arate mai bine si mai aranjat

enum 
	TEXTDRAW_DUBLE_ENUM
	{
		TEXTDRAW_CLICKED_TICK,
		TEXTDRAW_CLICKED_ID
	};

new 
	TEXTDRAW_VARIABLE[MAX_PLAYERS][TEXTDRAW_DUBLE_ENUM];

//in functia OnPlayerClickTextdraw (sau PlayerTextdraw), adaugi urmatoarele in codul tau:

if((GetTickCount() - TEXTDRAW_VARIABLE[playerid][TEXTDRAW_CLICKED_TICK]) < 500 && TEXTDRAW_VARIABLE[playerid][TEXTDRAW_CLICKED_ID] == clickedid)
{
	//aici vei adauga ce se va intampla, daca va apasa de 2 ori pe textdraw si vei reseta variabila
    
	TEXTDRAW_VARIABLE[playerid][TEXTDRAW_CLICKED_TICK] = 0;
    	TEXTDRAW_VARIABLE[playerid][TEXTDRAW_CLICKED_ID] = -1; //de asemenea, vei reseta si textdraw-ul pe care a apasat
}
else
{
	TEXTDRAW_VARIABLE[playerid][TEXTDRAW_CLICKED_TICK] = GetTickCount(); // iar aici, vei detecta momentul in care a fost apasat textdraw-ul, daca nu a fost apasat in mai putinde 500 de milisecunde (cred, nu mai stiu cum e la functia asta, dar imi e prea lene sa mai caut)
    	TEXTDRAW_VARIABLE[playerid][TEXTDRAW_CLICKED_ID] = clickedid; // iar aici, vei seta id-ul textdraw-ului pe care a dat click prima data.
}

Eu nu stiu exact ce vrei tu sa faci, dar te poti ajuta de exemplele pe care ti le-am oferit. Practic, nici nu mai lua in calcul primul raspuns, asta e mult mai bun. :)) 

Posibil ca 500 de milisecunde sa fie cam mult, cred ca cel mai bine incerci cu 300 sau 400, pe acolo.

O zi/seara buna!

Edited by shane

Daca te-am ajutat =>

spacer.png

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.