[Ajuda] Sistema de convite
#1

Estava tentando fazer um sistema de "Convite" que faz o seguinte, Envia o convite em "Dialog" BlaBla Tal ORG/GG
(Aceitar - Recusar)...

Recusar --> Tudo certo

Aceitar --> As vezes o player nгo entra para ORG/GG, quando й aceito vai para seleзгo de SKIN da ORG/GG e ai entra o problema, a seleзгo de skin vai para o lнder que ofereceu o convite...

Enfim, Vou mandar os cуdigos aqui, se alguйm souber como resolver agradeзo imensamente


Код:
	switch(dialogid)
	{
		case 180://Se a dialog for DConvite
        {
            if(!response)//se ele recusar
            {
            new pName[256];
			GetPlayerName(playerid, pName, sizeof(pName));
            new convite[260];
            format(convite,sizeof(convite),"[Info] O jogador %s Rejeitou o convite.",pName);
            SendTeamMessage(PlayerInfo[playerid][pMember],COLOR_RED,convite);
            }
            if(response)//se ele aceitar
            {
            new para1;
            new str[256];
            GetPlayerName(playerid, sendername, sizeof(sendername));
            new pName[256];
            new convite1[260];
            new convite[260];
			GetPlayerName(playerid, pName, sizeof(pName));
			format(str, 256, "%s Aceitou seu convite.", sendername);
 		    SendClientMessage(InviteOffer[playerid], COLOR_LIGHTBLUE, str);
            SendClientMessage(GetPVarInt(playerid, "Lider"), COLOR_LIGHTBLUE, convite1);//avisa ao lнder
            format(convite,sizeof(convite),"[Info] O jogador %s Aceitou o convite.",pName);
            SendTeamMessage(PlayerInfo[playerid][pMember],COLOR_YELLOW,convite);
            PlayerInfo[playerid][pMember] = GetPVarInt(playerid, "Lider");
            PlayerInfo[playerid][pMember] = PlayerInfo[InviteOffer[playerid]][pLeader];
   	        PlayerInfo[playerid][pRank] = 1;
   	        SetPlayerHealth(playerid,999);
   	        SendClientMessage(para1,COLOR_YELLOW,"|- Use 'proximo' para selecionar seu uniforme -|");
   	        SendClientMessage(para1,COLOR_YELLOW,"|- Se vocк gostou do uniforme digite 'confirma' -|");
			TogglePlayerControllable(para1, 0);
   			SelectChar[para1] = 255;
		    SelectCharID[para1] = PlayerInfo[para1][pMember];
		    SelectCharPlace[para1] = 1;
		    PlayerInfo[para1][pModel] = ChosenSkin[para1];
	    	PlayerInfo[para1][pChar] = ChosenSkin[para1];
            GetPVarInt(playerid, "Lider");
            Invite[playerid] = 0;
Reply
#2

pawn Код:
if(response)//se ele aceitar
            {
            new para1;
            new str[256];
            GetPlayerName(playerid, sendername, sizeof(sendername));
            new pName[256];
            new convite1[260];
            new convite[260];
            GetPlayerName(playerid, pName, sizeof(pName));
            format(str, 256, "%s Aceitou seu convite.", sendername);
            SendClientMessage(InviteOffer[playerid], COLOR_LIGHTBLUE, str);
            SendClientMessage(GetPVarInt(playerid, "Lider"), COLOR_LIGHTBLUE, convite1);//avisa ao lнder
            format(convite,sizeof(convite),"[Info] O jogador %s Aceitou o convite.",pName);
            SendTeamMessage(PlayerInfo[playerid][pMember],COLOR_YELLOW,convite);
            PlayerInfo[playerid][pMember];
            PlayerInfo[playerid][pRank] = 1;
            SetPlayerHealth(playerid,999);
            SendClientMessage(para1,COLOR_YELLOW,"|- Use 'proximo' para selecionar seu uniforme -|");
            SendClientMessage(para1,COLOR_YELLOW,"|- Se vocк gostou do uniforme digite 'confirma' -|");
            TogglePlayerControllable(para1, 0);
            SelectChar[para1] = 255;
            SelectCharID[para1] = PlayerInfo[para1][pMember];
            SelectCharPlace[para1] = 1;
            PlayerInfo[para1][pModel] = ChosenSkin[para1];
            PlayerInfo[para1][pChar] = ChosenSkin[para1];
            Invite[playerid] = 0;
Reply
#3

Nгo deu certo, quando o player aceita o convite a seleзгo de skin vai para min... T.T
E deu um aviso na linha "PlayerInfo[playerid][pMember];" >expression has no effect<

Ajuda ai por favor

Essa й a primeira parte do sistema...

pawn Код:
if(strcmp(cmd, "/convidar", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USO: /convidar [playerid/Parte-do-Nick]");
                return 1;
            }
            new para1;
            new ftext[20];
            para1 = ReturnUser(tmp);
                if(IsPlayerConnected(para1))
                {
                    if(para1 != INVALID_PLAYER_ID)
                    {
                        if (gTeam[para1]==TEAM_GREEN && PlayerInfo[para1][pMember] == 0 && PlayerInfo[para1][pFMember] == 255)
                        {
                            if(PlayerInfo[playerid][pLeader] == 1) { ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 2) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 3) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 4) {  ftext = "**";  }
                            else if(PlayerInfo[playerid][pLeader] == 5) {  ftext = "**";  }
                            else if(PlayerInfo[playerid][pLeader] == 6) {  ftext = "**";  }
                            else if(PlayerInfo[playerid][pLeader] == 7) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 8) {  ftext = "**";  }
                            else if(PlayerInfo[playerid][pLeader] == 9) {  ftext = "**";  }
                            else if(PlayerInfo[playerid][pLeader] == 10) {  ftext = "**";  }
                            else if(PlayerInfo[playerid][pLeader] == 11) {  ftext = "**";  }
                            else if(PlayerInfo[playerid][pLeader] == 12) {  ftext = "**";  }
                            else if(PlayerInfo[playerid][pLeader] == 13) {  ftext = "**";  }
                            else if(PlayerInfo[playerid][pLeader] == 14) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 15) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 16) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 17) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 18) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 19) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 20) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 21) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 22) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 23) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 24) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 25) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 26) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 27) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 28) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 29) {  ftext = "**"; }
                            else if(PlayerInfo[playerid][pLeader] == 30) {  ftext = "**"; }
                            else { return 1; }
                            new string[260];
                            new convite[260];
                            GetPlayerName(para1, giveplayer, sizeof(giveplayer));
                            GetPlayerName(playerid, sendername, sizeof(sendername));
                            format(convite,sizeof(convite),"Vocк foi convidado para a organizaзгo %s",ftext);
                            printf("|Admin: %s convidou %s para entrar no grupo dos: '%s'|", sendername, giveplayer, ftext);
                            format(string, sizeof(string), "Vocк convidou %s para sua profissгo '%s'.", giveplayer,ftext);
                            SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                            Invite[para1] = 1;
                            SetPVarInt(pLeader, "Lider", playerid);
                            InviteOffer[para1] = playerid;
                            InviteJob[para1] = PlayerInfo[playerid][pLeader];
                            ShowPlayerDialog(para1,180,DIALOG_STYLE_MSGBOX,"Convite",convite,"Aceitar","Recusar");
                    }
                }//Nгo conectado
            }
            else
            {
            SendClientMessage(playerid, COLOR_GRAD1, "   Vocк nгo estб autorizado a ultilizar este comando !");
            }
        }
        return 1;
    }
Reply
#4

Vocк estб testando isso com quantos jogadores ? 2 ? Provavelmente, este bug acontecerб com o ID 0, visto que a variбvel para1 foi criada, mas nгo teve seu valor atribuнdo a nenhum jogador.

Lembre-se, tambйm, que o jogador convidado й tido como playerid, pois й ele quem aceita o convite na dialog, e o jogador que faz o convite й o InviteOffer[playerid].
Reply
#5

Entгo como ficaria?
Devo retirar o "para1" da parte da seleзгo de skin? e substituir por "playerid"?

To meio confuso da para fazer para min

pawn Код:
if(response)//se ele aceitar
            {

            /*---------------------------

            new para1;// Retirar esta?

            ---------------------------*/


            new str[256];
            GetPlayerName(playerid, sendername, sizeof(sendername));
            new pName[256];
            new convite1[260];
            new convite[260];
            GetPlayerName(playerid, pName, sizeof(pName));
            format(str, 256, "%s Aceitou seu convite.", sendername);
            SendClientMessage(InviteOffer[playerid], COLOR_LIGHTBLUE, str);
            SendClientMessage(GetPVarInt(playerid, "Lider"), COLOR_LIGHTBLUE, convite1);//avisa ao lнder
            format(convite,sizeof(convite),"[Info] O jogador %s Aceitou o convite.",pName);
            SendTeamMessage(PlayerInfo[playerid][pMember],COLOR_YELLOW,convite);
            PlayerInfo[playerid][pMember];
            PlayerInfo[playerid][pRank] = 1;
            SetPlayerHealth(playerid,999);

        /*--------------------playerid nesta parte?--------------------
            SendClientMessage(para1,COLOR_YELLOW,"|- Use 'proximo' para selecionar seu uniforme -|");
            SendClientMessage(para1,COLOR_YELLOW,"|- Se vocк gostou do uniforme digite 'confirma' -|");
            TogglePlayerControllable(para1, 0);
            SelectChar[para1] = 255;
            SelectCharID[para1] = PlayerInfo[para1][pMember];
            SelectCharPlace[para1] = 1;
            PlayerInfo[para1][pModel] = ChosenSkin[para1];
            PlayerInfo[para1][pChar] = ChosenSkin[para1];
            Invite[playerid] = 0;
        --------------------Playerid nesta parte?--------------------*/
Reply
#6

pawn Код:
/**/switch(dialogid)
    {
        case 180://Se a dialog for DConvite
        {
            if(!response)//se ele recusar
            {
                new pName[256];
                GetPlayerName(playerid, pName, sizeof(pName));
                new convite[260];
                format(convite,sizeof(convite),"[Info] O jogador %s Rejeitou o convite.",pName);
                SendTeamMessage(PlayerInfo[playerid][pMember],COLOR_RED,convite);
            }
            if(response)//se ele aceitar
            {
                new str[256];
                GetPlayerName(playerid, sendername, sizeof(sendername));
               
                new pName[256];
                new convite1[260];
                new convite[260];
               
                GetPlayerName(playerid, pName, sizeof(pName));
                format(str, 256, "%s Aceitou seu convite.", sendername);
                SendClientMessage(InviteOffer[playerid], COLOR_LIGHTBLUE, str);
                SendClientMessage(GetPVarInt(playerid, "Lider"), COLOR_LIGHTBLUE, convite1);//avisa ao lнder
               
                format(convite,sizeof(convite),"[Info] O jogador %s Aceitou o convite.",pName);
                SendTeamMessage(PlayerInfo[playerid][pMember],COLOR_YELLOW,convite);
               
                PlayerInfo[playerid][pMember] = GetPVarInt(playerid, "Lider");
                PlayerInfo[playerid][pMember] = PlayerInfo[InviteOffer[playerid]][pLeader];
                PlayerInfo[playerid][pRank] = 1;
               
                SetPlayerHealth(playerid,999);
               
                SendClientMessage(playerid,COLOR_YELLOW,"|- Use 'proximo' para selecionar seu uniforme -|");
                SendClientMessage(playerid,COLOR_YELLOW,"|- Se vocк gostou do uniforme digite 'confirma' -|");
               
                TogglePlayerControllable(playerid, 0);
               
                SelectChar[playerid] = 255;
                SelectCharID[playerid] = PlayerInfo[para1][pMember];
                SelectCharPlace[playerid] = 1;
                PlayerInfo[playerid][pModel] = ChosenSkin[playerid];
                PlayerInfo[playerid][pChar] = ChosenSkin[playerid];
                GetPVarInt(playerid, "Lider");
                Invite[playerid] = 0;
Reply
#7

Й eu tinha isso e deu certo, vlw todos ae o/
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)