SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 22/05/2020, 09:35 PM   #1
SkolPlay
Big Clucker
 
Join Date: Aug 2016
Posts: 153
Reputation: 0
Default Transformar em dialog

Eu fiz um comando de guardar skin, com base em um que vi aqui no forum. Eu queria transformar o comando em DIALOG_STYLE_LIST, onde o player possa guardar 5 Skin, e obviamente poder pega-lo e guardar novamente

pawn Code:
new Skin1; Skin2, Skin3, Skin4, Skin5;



CMD:guardar(playerid)
{
    Skin1 = GetPlayerSkin(BPR);
    SetPlayerSkin(BPR, 0);
    SendClientMessage(BPR, Amarelofraco,"[ARMARIO] Você guardou sua Skin.");
    return 1;
}



CMD:pegar(playerid)
{
  SetPlayerSkin(BPR, Skin1);
  SendClientMessage(BPR, Red,"[ARMARIO] Você pegou sua Skin.");
  return 1;
}

Quem me ajudar dou +REP
SkolPlay is offline   Reply With Quote
Old 22/05/2020, 10:09 PM   #2
CALENZ021
Big Clucker
 
Join Date: Jun 2018
Location: Latin America
Posts: 117
Reputation: 5
Default Re: Transformar em dialog

Fiz um código aqui, desculpe se for o que você quer. Não entendi esse tal de "BPR".
Lembrando que eu não compilei, qualquer coisa só avisar.
@edit

pawn Code:
//Só mudar se quiser para mais slots
#define MAX_SKINS 5

//Mude os id conforme sua GM
#define DIALOG_SKIN     1
#define DIALOG_SKIN_GET 2
#define DIALOG_SKIN_SET 3

new SkinSave[MAX_PLAYERS][MAX_SKINS];

public OnPlayerDisconnect(playerid, reason)
{
    for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
    {
        SkinSave[playerid][skinlist] = 0;
    }
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case DIALOG_SKIN:
        {
            if(listitem == 0 && response)
                return ShowPlayerDialog(playerid, DIALOG_SKIN_SET, DIALOG_STYLE_LIST, "Guardar", "Skin 1\nSkin 2\nSkin 3\nSkin 4\nSkin 5\n", "Continuar", "Fechar");

            if(listitem == 1 && response)
                return ShowPlayerDialog(playerid, DIALOG_SKIN_GET, DIALOG_STYLE_LIST, "Pegar", "Skin 1\nSkin 2\nSkin 3\nSkin 4\nSkin 5\n", "Continuar", "Fechar");

            return 1;
        }
        case DIALOG_SKIN_SET: //Guardar
        {
            if(!response)
                return 0;

            for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
            {
                if(listitem == skinlist)
                {
                    SkinSave[playerid][skinlist] = GetPlayerSkin(playerid);
                    return 1;
                }
            }
            return 1;
        }
        case DIALOG_SKIN_GET: //Pegar
        {
            if(!response)
                return 0;

            for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
            {
                if(listitem == skinlist)
                {
                    SetPlayerSkin(playerid, SkinSave[playerid][skinlist]);
                    return 1;
                }
            }
            return 1;
        }
    }
    return 1;
}

CMD:skin(playerid)
{
    ShowPlayerDialog(playerid, DIALOG_SKIN, DIALOG_STYLE_LIST, "Skins", "Guardar\nPegar", "Continuar", "Fechar");
    return 1;
}
__________________




CALENZ021 is offline   Reply With Quote
Old 22/05/2020, 10:28 PM   #3
SkolPlay
Big Clucker
 
Join Date: Aug 2016
Posts: 153
Reputation: 0
Default Re: Transformar em dialog

Bom, eu alterei os #define da dialog pra 550, 551 e 552, dai não deu nenhum conflito, e quando uso o comando que abre guardar e aperto não aparece nada.

pawn Code:
#include <a_samp>
#include <zcmd>

//Só mudar se quiser para mais slots
#define MAX_SKINS 5

//Mude os id conforme sua GM
#define DIALOG_SKIN     550
#define DIALOG_SKIN_GET 551
#define DIALOG_SKIN_SET 552

new SkinSave[MAX_PLAYERS][MAX_SKINS];

public OnPlayerDisconnect(playerid, reason)
{
    for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
    {
        SkinSave[playerid][skinlist] = 0;
    }
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case DIALOG_SKIN:
        {
            if(listitem == 0 && response)
                return ShowPlayerDialog(playerid, DIALOG_SKIN_SET, DIALOG_STYLE_LIST, "Guardar", "Skin 1\nSkin 2\nSkin 3\nSkin 4\nSkin 5\n", "Continuar", "Fechar");

            if(listitem == 1 && response)
                return ShowPlayerDialog(playerid, DIALOG_SKIN_GET, DIALOG_STYLE_LIST, "Pegar", "Skin 1\nSkin 2\nSkin 3\nSkin 4\nSkin 5\n", "Continuar", "Fechar");

            return 1;
        }
        case DIALOG_SKIN_SET: //Guardar
        {
            if(!response)
                return 0;

            for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
            {
                if(listitem == skinlist)
                {
                    SkinSave[playerid][skinlist] = GetPlayerSkin(playerid);
                    return 1;
                }
            }
            return 1;
        }
        case DIALOG_SKIN_GET: //Pegar
        {
            if(!response)
                return 0;

            for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
            {
                if(listitem == skinlist)
                {
                    SetPlayerSkin(playerid, SkinSave[playerid][skinlist]);
                    return 1;
                }
            }
            return 1;
        }
    }
    return 1;
}

CMD:skinxx(playerid)
{
    ShowPlayerDialog(playerid, DIALOG_SKIN, DIALOG_STYLE_LIST, "Skins", "Guardar\nPegar", "Continuar", "Fechar");
    return 1;
}

Alterei o comando pq no servidor ja tem o comando skin
SkolPlay is offline   Reply With Quote
Old 22/05/2020, 10:33 PM   #4
1sbedx
Huge Clucker
 
Join Date: Dec 2015
Posts: 350
Reputation: 47
Default Re: Transformar em dialog

pawn Code:
#define DIALOG_SKINS 5540
#define MAX_SKINS 5

new Skins[MAX_PLAYERS][MAX_SKINS] = { { -1, ... }, ... };

public OnPlayerConnect(playerid) {
  for (new i; i < MAX_SKINS; i++) {
    Skins[playerid][i] = -1;
  }
  return 1;
}

CMD:skins(playerid) {
  MostrarSkins(playerid);

  SendClientMessage(playerid, -1, "Clique em \"Vazio\" para guardar.");
  return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
  if (dialogid == DIALOG_SKINS && response) {
    new skin = -1;

    if ((skin = PegarSkin(playerid, listitem)) != -1) {
      SetPlayerSkin(playerid, skin);
    } else {
      GuardarSkin(playerid, GetPlayerSkin(playerid), listitem);

      // SetPlayerSkin(playerid, 0);

      MostrarSkins(playerid);
    }
  }
  return 1;
}

GuardarSkin(playerid, skin, slot = -1) {
  if (slot != -1) {
    for (new i; i < MAX_SKINS; i++) {
      if (Skins[playerid][i] == skin) {
        Skins[playerid][i] = -1;
        break;
      }
    }

    Skins[playerid][slot] = skin;
    return;
  }

  for (new i; i < MAX_SKINS; i++) {
    if (Skins[playerid][i] == skin || Skins[playerid][i] == -1) {
      Skins[playerid][i] = skin;
      break;
    }
  }
}

PegarSkin(playerid, id) {
  if (!(0 <= id < sizeof(Skins))) {
    return -1;
  }

  new skin = Skins[playerid][id];

  Skins[playerid][id] = -1;
  return skin;
}

MostrarSkins(playerid) {
  new list[MAX_SKINS * 20] = "Skin\tID\n", skin[4];

  for (new i; i < MAX_SKINS; i++) {
    format(list, sizeof(list), "%s\n%i\t%s", list, i + 1, Skins[playerid][i] != -1 ? (format(skin, sizeof(skin), "%i", Skins[playerid][i]), skin) : "Vazio");
  }

  ShowPlayerDialog(playerid, DIALOG_SKINS, DIALOG_STYLE_TABLIST_HEADERS, "Suas Skins", list, "Selecionar", "Fechar");
}

Last edited by 1sbedx; 13/06/2020 at 10:05 PM.
1sbedx is online now   Reply With Quote
Old 22/05/2020, 10:37 PM   #5
SkolPlay
Big Clucker
 
Join Date: Aug 2016
Posts: 153
Reputation: 0
Default Re: Transformar em dialog

Quote:
Originally Posted by 1sbedx View Post
pawn Code:
new Skins[MAX_PLAYERS][5];

public OnPlayerConnect(playerid) {
  for (new i = 0; i < sizeof(Skins[]); i++) {
    Skins[playerid][i] = -1;
  }
  return 1;
}

CMD:skins(playerid) {
  MostrarSkins(playerid);

  SendClientMessage(playerid, -1, "Clique em \"Vazio\" para guardar.");
  return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
  if (dialogid == 5540 && response) {
    new skin = -1;

    if ((skin = PegarSkin(playerid, listitem)) != -1) {
      SetPlayerSkin(playerid, skin);
    } else {
      GuardarSkin(playerid, GetPlayerSkin(playerid), listitem);

      MostrarSkins(playerid);
    }
  }
  return 1;
}

GuardarSkin(playerid, skin, slot = -1) {
  if (slot != -1) {
    for (new i = 0; i < sizeof(Skins[]); i++) {
      if (Skins[playerid][i] == skin) {
        Skins[playerid][i] = -1;
        break;
      }
    }

    Skins[playerid][slot] = skin;
    return;
  }

  for (new i = 0; i < sizeof(Skins[]); i++) {
    if (Skins[playerid][i] == skin || Skins[playerid][i] == -1) {
      Skins[playerid][i] = skin;
      break;
    }
  }
}

PegarSkin(playerid, id) {
  if (!(0 <= id < sizeof(Skins))) {
    return -1;
  }

  new skin = Skins[playerid][id];

  Skins[playerid][id] = -1;
  return skin;
}

MostrarSkins(playerid) {
  new list[sizeof(Skins[]) * 10], skin[4];

  for (new i = 0; i < sizeof(Skins[]); i++) {
    format(list, sizeof(list), "%s\n%s", list, Skins[playerid][i] != -1 ? (format(skin, sizeof(skin), "%i", Skins[playerid][i]), skin) : "Vazio");
  }

  ShowPlayerDialog(playerid, 5540, DIALOG_STYLE_LIST, "Suas Skins", list, "Selecionar", "Fechar");
}
Tentei guardar skin e não foi, ficou 0 do mesmo jeito
SkolPlay is offline   Reply With Quote
Old 22/05/2020, 11:49 PM   #6
CALENZ021
Big Clucker
 
Join Date: Jun 2018
Location: Latin America
Posts: 117
Reputation: 5
Default Re: Transformar em dialog

pawn Code:
#include <a_samp>
#include <zcmd>

//Só mudar se quiser para mais slots
#define MAX_SKINS 5

//Mude os id conforme sua GM
#define DIALOG_SKIN     550
#define DIALOG_SKIN_GET 551
#define DIALOG_SKIN_SET 552

new SkinSave[MAX_PLAYERS][MAX_SKINS];

public OnPlayerDisconnect(playerid, reason)
{
    for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
    {
        SkinSave[playerid][skinlist] = 0;
    }
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case DIALOG_SKIN:
        {
            if(listitem == 0 && response)
            {
                new txt[1000], str[100];
                strcat(txt, "Slot\t Skin ID");

                for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
                {
                    if(SkinSave[playerid][skinlist] == -1)
                        format(str, 100, "%d\t N/A\n", skinlist);
                    else
                        format(str, 100, "%d\t %d\n", skinlist, SkinSave[playerid][skinlist]);

                    strcat(txt, str);
                }

                ShowPlayerDialog(playerid, DIALOG_SKIN_SET, DIALOG_STYLE_TABLIST_HEADERS, "Guardar", txt, "Continuar", "Fechar");
                return 1;
            }
            if(listitem == 2 && response)
            {
                new txt[1000], str[100];
                strcat(txt, "Slot\t Skin ID");

                for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
                {
                    if(SkinSave[playerid][skinlist] == -1)
                        format(str, 100, "%d\t N/A\n", skinlist);
                    else
                        format(str, 100, "%d\t %d\n", skinlist, SkinSave[playerid][skinlist]);

                    strcat(txt, str);
                }

                ShowPlayerDialog(playerid, DIALOG_SKIN_GET, DIALOG_STYLE_TABLIST_HEADERS, "Pegar", txt, "Continuar", "Fechar");
                return 1;
            }
            return 1;
        }
        case DIALOG_SKIN_SET: //Guardar
        {
            if(!response) return 0;

            for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
            {
                if(listitem == skinlist)
                {
                    SkinSave[playerid][skinlist] = GetPlayerSkin(playerid);
                    return 1;
                }
            }
            return 1;
        }
        case DIALOG_SKIN_GET: //Pegar
        {
            if(!response) return 0;

            for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
            {
                if(listitem == skinlist)
                {
                    SetPlayerSkin(playerid, SkinSave[playerid][skinlist]);
                    SkinSave[playerid][skinlist] = -1;
                    return 1;
                }
            }
            return 1;
        }
    }
    return 1;
}

CMD:skinxx(playerid)
{
    ShowPlayerDialog(playerid, DIALOG_SKIN, DIALOG_STYLE_LIST, "Skins", "Guardar\nPegar", "Continuar", "Fechar");
    return 1;
}
__________________




CALENZ021 is offline   Reply With Quote
Old 23/05/2020, 11:27 AM   #7
SkolPlay
Big Clucker
 
Join Date: Aug 2016
Posts: 153
Reputation: 0
Default Re: Transformar em dialog

Quote:
Originally Posted by CALENZ021 View Post
pawn Code:
#include <a_samp>
#include <zcmd>

//Só mudar se quiser para mais slots
#define MAX_SKINS 5

//Mude os id conforme sua GM
#define DIALOG_SKIN     550
#define DIALOG_SKIN_GET 551
#define DIALOG_SKIN_SET 552

new SkinSave[MAX_PLAYERS][MAX_SKINS];

public OnPlayerDisconnect(playerid, reason)
{
    for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
    {
        SkinSave[playerid][skinlist] = 0;
    }
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
        case DIALOG_SKIN:
        {
            if(listitem == 0 && response)
            {
                new txt[1000], str[100];
                strcat(txt, "Slot\t Skin ID");

                for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
                {
                    if(SkinSave[playerid][skinlist] == -1)
                        format(str, 100, "%d\t N/A\n", skinlist);
                    else
                        format(str, 100, "%d\t %d\n", skinlist, SkinSave[playerid][skinlist]);

                    strcat(txt, str);
                }

                ShowPlayerDialog(playerid, DIALOG_SKIN_SET, DIALOG_STYLE_TABLIST_HEADERS, "Guardar", txt, "Continuar", "Fechar");
                return 1;
            }
            if(listitem == 2 && response)
            {
                new txt[1000], str[100];
                strcat(txt, "Slot\t Skin ID");

                for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
                {
                    if(SkinSave[playerid][skinlist] == -1)
                        format(str, 100, "%d\t N/A\n", skinlist);
                    else
                        format(str, 100, "%d\t %d\n", skinlist, SkinSave[playerid][skinlist]);

                    strcat(txt, str);
                }

                ShowPlayerDialog(playerid, DIALOG_SKIN_GET, DIALOG_STYLE_TABLIST_HEADERS, "Pegar", txt, "Continuar", "Fechar");
                return 1;
            }
            return 1;
        }
        case DIALOG_SKIN_SET: //Guardar
        {
            if(!response) return 0;

            for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
            {
                if(listitem == skinlist)
                {
                    SkinSave[playerid][skinlist] = GetPlayerSkin(playerid);
                    return 1;
                }
            }
            return 1;
        }
        case DIALOG_SKIN_GET: //Pegar
        {
            if(!response) return 0;

            for(new skinlist = 0; skinlist < MAX_SKINS; skinlist++)
            {
                if(listitem == skinlist)
                {
                    SetPlayerSkin(playerid, SkinSave[playerid][skinlist]);
                    SkinSave[playerid][skinlist] = -1;
                    return 1;
                }
            }
            return 1;
        }
    }
    return 1;
}

CMD:skinxx(playerid)
{
    ShowPlayerDialog(playerid, DIALOG_SKIN, DIALOG_STYLE_LIST, "Skins", "Guardar\nPegar", "Continuar", "Fechar");
    return 1;
}
Continua do mesmo jeito, não guarda
SkolPlay is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Ajuda] Transformar RG de Chat para Dialog Ir123 Português/Portuguese 2 29/11/2018 03:06 AM
[Pedido] Transformar dialog pra dcmd cristiannh2 Português/Portuguese 2 21/10/2017 06:47 AM
[Pedido] Transformar em dialog. Pedro1812 Português/Portuguese 2 04/06/2017 01:36 AM
[Pedido] Transformar meu /admins em dialog. Pietrotm2013 Português/Portuguese 2 20/07/2013 11:26 PM
[Pedido] Transformar Dialog em chat normal FPB_Lipos Português/Portuguese 6 15/01/2013 12:14 PM


All times are GMT. The time now is 03:54 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.