Jump to content
  • 0

Ajutor dialog


Mister

Question

Problema intalnita (descriere): Am acest dialog si as dori sa stiu cum selectez acel " case: "
Ero(area / rile) / warning-(ul / urile): nu am.
Liniile de cod / sursa / script-ul(obligatoriu):

if(strcmp(cmd, "/friends", true) == 0)
	{
	    new query[254],
	        i[254],
	        name[512],string2[512];
	        format(query,sizeof(query),"SELECT * FROM `friendlist` WHERE `username` = '%s'",PlayerName(playerid));
	        mysql_query(query);
	        mysql_store_result();

	        if(mysql_num_rows() != 0)
	        {

	                while(mysql_fetch_row_format(query, "|"))
	                {
	                        FriendsData[playerid][TotalFriends] ++;
	                        mysql_fetch_field_row(i,"fr_name"); format(name,sizeof(name),i);
	                        if(IsPlayerOnline(name))
	                        {
	                        format(name,sizeof(name),"{49ec4e} •  {ffffff}%s - {49ec4e}ONLINE\n", name);
	                        strcat(string2,name);
	                        }
	                        else
	                        {
	                            format(name,sizeof(name),"{ec4949} •  {ffffff}%s - {ec4949}OFFLINE\n", name);
	                            strcat(string2,name);
	                        }
	            			ShowPlayerDialog(playerid, 2223, DIALOG_STYLE_LIST, "Prietenii tai:", string2, "Close", "");
	                }
	        }
	        else
	        {
	                ShowPlayerDialog(playerid, DIALOG_NOFRIENDS, DIALOG_STYLE_MSGBOX, "Prietenii tai:","Lista ta este goala!", "Close", "");
	        }
	        return 1;
	}

 

Imagini / Video (optional):  http://i.imgur.com/SBh75rN.png
Ati incercat sa rezolvati singur?: da, stiu ca player1 este al 5-lea din lista adica la ondialogresponse   "case 4:"  este player1 

Dar eu am si alte nume cum pot la acel case sa stiu ce nume are case-ul?

Edited by Mister

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

bun deci la

 

if(dialogid == 2223)

{

ce ar trebui sa pun aici?  ca sa ii daea acest mesaj prietenului pe care la selectat

 

SendClientMessage(ReturnUser(inputtext),-1,"Cineva a dat click pe tine");

}

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
Link to comment
Share on other sites

  • 0

Incerci cu fiecare, dar din cate stiu, la dialog lista nu se foloseste case, se foloseste if(dialogid == id_dialog)

si apoi pui ce sa faca dialogul .

sau folosesti:

switch(dialogid)
{//Deschidem switch-ul
    case 2223://Numele dialogului, in cazul nostru: 2223
    {//Deschidem dialogul
        if(!response) return 1; //Al 2-lea buton (Close)
        //Aici pui ce doresti sa faca acest dialog
        return 1; //1 - Adevarat
    } //Inchidem dialogul
}//Inchidem switch-ul

242086.png

Link to comment
Share on other sites

  • 0

Fă ca în momentul în care selectează un prieten din acea listă să îi afișeze un nou dialog 

ShowPlayerDialog(playerid, DIALOG_MESAJ, DIALOG_STYLE_INPUT, "Mesaj", "Introduceti textul pe care doriti sa il trimiteti", "Trimite", "Renunta");

După aceea, ceea ce scrii în căsuța dialogului, să memoreze într-un string, după care să trimită persoanei selectate, mesajul memorat în string.

SendClientMessage(ID_PRIETEN, COLOR, mesaj);

Sau să-i afișeze prietenului un dialog text:

ShowPlayerDialog(playerid, DIALOG_PRIMIRE_MESAJ, DIALOG_STYLE_MSGBOX, "Mesaj", mesaj, "Raspunde", "Inchide");

PS# In mesaj să salvezi într-un string (ex: mesaj[128]) sub forma:  (”Mesaj privat de la %s: %s”, sender, mesajul_acestuia)

Link to comment
Share on other sites

  • 0

Executând 

mysql_fetch_field_row(i,"fr_name"); format(name,sizeof(name),i);

Ai salvat în name, numele lui, deci acum declară funcția de mai jos care te va ajuta să scoți ID-ul după nume:

stock GetIdFromName(name[])
{
  for(new j = 0; j <= MAX_PLAYERS; j++)
  {
    if(IsPlayerConnected(j))
    {
      new numevalidare[MAX_PLAYER_NAME];
      GetPlayerName(j, numevalidare, sizeof(numevalidare));
      if(strcmp(numevalidare, name, true, strlen(playername)) == 0)
      {
        return j;
      }
    }
  }
  return INVALID_PLAYER_ID;
}

Apelul returnează ID-ul; Nu mai ai de făcut decât să faci 

new id_fri = GetIdFromName(name);
SendClientMessage(id_fri, COLOR, mesaj);

SAU

new id_fri = GetIdFromName(name);
ShowPlayerDialog(id_fri, DIALOG_PRIMIRE_MESAJ, DIALOG_STYLE_MSGBOX, "Mesaj", mesaj, "Raspunde", "Inchide");

 

Link to comment
Share on other sites

  • 0

Nu merge, nu cred ca intelegeti ce vreau sa spun

cand scriu comanda aia  /friends imi apar prietenii din lista

 

SBh75rN.png

 

si eu vreau sa ii dea mesaj playerului dar ganditiva ca acolo nu e lista doar cu player1 e lista cu gigel  rand doi   manu rand trei blabla 

si vreau sa ii dea mesaj aceluia care l-am selectat si nu stiu cum sa ii iau idul de pe joc Cu returnUser(name) dar cum? ce tre sa am la ondialogresponse?

 

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
Link to comment
Share on other sites

  • 0
  • 0
 

poti face ceva de genu:

Da stiu si eu sa fac sa arata idul in textul de la dialog dar eu vreau in dialogresponse sa ii dea mesajul acelui

PlayerName(name)

cum fac asta? ca am explicat destul de clar...

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
Link to comment
Share on other sites

  • 0
  • 0

Pai da cam asta sunt curios cum se face, vreau sa dau click pe linia de pe dialog si sa ii dea mesaj aluia de pe linie cu x a dat click pe tine

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
Link to comment
Share on other sites

  • 0

Se vede ca multi sunteti paraleli cu scripting-ul:

//Undeva la mama naibii in afara oricarui callback aka variabila globala:
#define MAX_FRIENDS (nr de prieteni maxim)
new friendDialogInfo[MAX_PLAYERS][MAX_FRIENDS]; // are rolul de a memora id-urile jucatorilor in functie de randul din lista

if(strcmp(cmd, "/friends", true) == 0)
{
    new query[254],
        i[254],
        name[512],string2[512];
        format(query,sizeof(query),"SELECT * FROM `friendlist` WHERE `username` = '%s'",PlayerName(playerid));
        mysql_query(query);
        mysql_store_result();
    new x; // memoreaza locul din lista
        if(mysql_num_rows() != 0)
        {
                while(mysql_fetch_row_format(query, "|"))
                {
                        FriendsData[playerid][TotalFriends] ++;
                        mysql_fetch_field_row(i,"fr_name"); format(name,sizeof(name),i);
                        if(IsPlayerOnline(name))
                        {
                            friendDialogInfo[playerid][x] = GetPlayerIDFromName(name); // poti folosi aici functia data de DCosmin
                            format(name,sizeof(name),"{49ec4e} •  {ffffff}%s - {49ec4e}ONLINE\n", name);
                            strcat(string2,name);
                        }
                        else
                        {
                            friendDialogInfo[playerid][x] = INVALID_PLAYER_ID; // jucatorul e offline, deci nu prea ai ce id sa afli
                            format(name,sizeof(name),"{ec4949} •  {ffffff}%s - {ec4949}OFFLINE\n", name);
                            strcat(string2,name);
                        }
                        x++; // am terminat cu randul asta, trecem la urmatorul
                        ShowPlayerDialog(playerid, 2223, DIALOG_STYLE_LIST, "Prietenii tai:", string2, "Close", "");
                }
        }
        else
        {
                ShowPlayerDialog(playerid, DIALOG_NOFRIENDS, DIALOG_STYLE_MSGBOX, "Prietenii tai:","Lista ta este goala!", "Close", "");
        }
        return 1;
}
// la OnDialogResponse:
case 2223: // id-ul dialogului cu lista
{
    if(!response) return 1;
    
    if(friendDialogInfo[playerid][listitem] == INVALID_PLAYER_ID) // in cazul asta jucatorul pe care a dat click e offline si nu se poate intampla nimic
    {
        SendClientMessage(playerid, -1, "Prieten offline.");
        return 1;
    }
    
    SendClientMessage(friendDialogInfo[playerid][listitem], -1, "Salut, ce faci?");
    return 1;
    
    // friendDialogInfo[playerid][listitem] - reprezinta id-ul jucatorului pe care a dat click; daca este egal cu INVALID_PLAYER_ID inseamna ca jucatorul nu e conectat
}
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • 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.