[Ajuda] Comparaзхes de strings
#1

Nгo to sabendo fazer direito eu acho...
Tava fazendo um sistema de /membros que seria gerenciado por dialog, dai por lб ficaria mais dinвmico e fбcil de mexer no server, sem vocк ter que decorar 500 comandos, porйm estou com um problema
Код:
(2934) : warning 229: index tag mismatch (symbol "FactionInfo")
(2937) : warning 229: index tag mismatch (symbol "FactionInfo")
(2940) : warning 229: index tag mismatch (symbol "FactionInfo")
(2943) : warning 229: index tag mismatch (symbol "FactionInfo")
(2946) : warning 229: index tag mismatch (symbol "FactionInfo")
(2949) : warning 229: index tag mismatch (symbol "FactionInfo")
(2952) : warning 229: index tag mismatch (symbol "FactionInfo")
(2955) : warning 229: index tag mismatch (symbol "FactionInfo")
(2958) : warning 229: index tag mismatch (symbol "FactionInfo")
(2961) : warning 229: index tag mismatch (symbol "FactionInfo")
(2964) : warning 229: index tag mismatch (symbol "FactionInfo")
(2967) : warning 229: index tag mismatch (symbol "FactionInfo")
(2970) : warning 229: index tag mismatch (symbol "FactionInfo")
(2973) : warning 229: index tag mismatch (symbol "FactionInfo")
(2976) : warning 229: index tag mismatch (symbol "FactionInfo")
(2980) : error 001: expected token: ")", but found "{"
(2983) : error 035: argument type mismatch (argument 3)
Segue abaixo a lуgica do script:

Код:
enum FactionENUM
{
    // ....
	lider1[30],
	lider2[30],
	lider3[30],
	membro1[30],
	membro2[30],
	membro3[30],
	membro4[30],
	membro5[30],
	membro6[30],
	membro7[30],
	membro8[30],
	membro9[30],
	membro10[30],
	membro11[30],
	membro12[30],
	// ....
}
new FactionInfo[MAX_FACTIONS][FactionENUM];
Код:
	CMD:fmembers(playerid) {
		new nomeorg[30], string[256];
		new orgid = fmembro[playerid];
		format(nomeorg,sizeof(nomeorg),"%s members", FactionInfo[orgid][facname]);
		
		format(string,sizeof(string),"01 - Leader = %s\n02 - Vice-Leader = %s\n03 - Vice-Leader = %s\n04 - Member = %s\n05 - Member = %s\n06 - Member = %s\n07 - Member = %s\n08 - Member = %s\n09 - Member = %s\n10 - Member = %s\n11 - Member = %s\n12 - Member = %s\n13 - Member = %s\n14 - Member = %s\n15 - Member = %s"
		, FactionInfo[orgid][lider1], FactionInfo[orgid][lider2], FactionInfo[orgid][lider3], FactionInfo[orgid][membro1], FactionInfo[orgid][membro2], FactionInfo[orgid][membro3], FactionInfo[orgid][membro4], FactionInfo[orgid][membro5], FactionInfo[orgid][membro6], FactionInfo[orgid][membro7], FactionInfo[orgid][membro8], FactionInfo[orgid][membro9], FactionInfo[orgid][membro10], FactionInfo[orgid][membro11], FactionInfo[orgid][membro12] );
		
		ShowPlayerDialog(playerid, 590, DIALOG_STYLE_LIST, nomeorg, string, "Gerenciar", "Fechar");  
	}
Код:
	if(dialogid == 590)
	{
		new name[30];
		new orgid = fmembro[playerid];
		if(!response) return 1;
		else {
			
			switch( listitem ) {
				case 0: {
					name = FactionInfo[orgid][lider1]; // Linha: 2934
				}
				case 1: {
					name = FactionInfo[orgid][lider2];
				}
				case 2: {
					name = FactionInfo[orgid][lider3];
				}
				case 3: {
					name = FactionInfo[orgid][membro1];
				}
				case 4: {
					name = FactionInfo[orgid][membro2];
				}
				case 5: {
					name = FactionInfo[orgid][membro3];
				}
				case 6: {
					name = FactionInfo[orgid][membro4];
				}
				case 7: {
					name = FactionInfo[orgid][membro5];
				}
				case 8: {
					name = FactionInfo[orgid][membro6];
				}
				case 9: {
					name = FactionInfo[orgid][membro7];
				}
				case 10: {
					name = FactionInfo[orgid][membro8];
				}
				case 11: {
					name = FactionInfo[orgid][membro9];
				}
				case 12: {
					name = FactionInfo[orgid][membro10];
				}
				case 13: {
					name = FactionInfo[orgid][membro11];
				}
				case 14: {
					name = FactionInfo[orgid][membro12];
				}
			}
			
			if(strcmp(name, "Empty") {
				ShowPlayerDialog(playerid, 591, DIALOG_STYLE_INPUT, "Gerenciar", "Digite abaixo o nome do jogador", "Invite", "Cancel");
			}
			else if(strcmp(name, "%s", PlayerName(playerid)) {
				ShowPlayerDialog(playerid, 592, DIALOG_STYLE_INPUT, "Gerenciar", "Pedir Contas", "Select", "Cancel");
			}
			else {	// 	outros membros que existem
				ShowPlayerDialog(playerid, 593, DIALOG_STYLE_INPUT, "Gerenciar", "Demitir\nMudar Cargo", "Select", "Cancel");
			}
		}
	}
Reply
#2

No enum na ultima linha tem " , " .
Reply
#3

Saudaзхes !

Nгo deixe enum com nome de enum .. n sei por qual motivo o sistema nгo aceita isso !

pawn Код:
enum Factioninfos
{
    // ....
    lider1[30],
    lider2[30],
    lider3[30],
    membro1[30],
    membro2[30],
    membro3[30],
    membro4[30],
    membro5[30],
    membro6[30],
    membro7[30],
    membro8[30],
    membro9[30],
    membro10[30],
    membro11[30],
    membro12[30]  // se caso este seja o ultimo
    // ....
}
new FactionInfo[MAX_FACTIONS][Factioninfos];

Mas isso aqui ta bem errado em amigгo, nгo se faz assim ..

pawn Код:
name = FactionInfo[orgid][lider1];

pawn Код:
if(dialogid == 590){
    new name[30];
    new orgid = fmembro[playerid];
    if(!response) return true;

    switch( listitem ) {
        case 0: format(name, 30, "%s", FactionInfo[orgid][lider1]);
        case 1: format(name, 30, "%s", FactionInfo[orgid][lider2]);
        case 2: format(name, 30, "%s", FactionInfo[orgid][lider3]);
        case 3: format(name, 30, "%s", FactionInfo[orgid][membro1]);
        case 4: format(name, 30, "%s", FactionInfo[orgid][membro2]);
        case 5: format(name, 30, "%s", FactionInfo[orgid][membro3]);
        case 6: format(name, 30, "%s", FactionInfo[orgid][membro4]);
        case 7: format(name, 30, "%s", FactionInfo[orgid][membro5]);
        case 8: format(name, 30, "%s", FactionInfo[orgid][membro6]);
        case 9: format(name, 30, "%s", FactionInfo[orgid][membro7]);
        case 10: format(name, 30, "%s", FactionInfo[orgid][membro8]);
        case 11: format(name, 30, "%s", FactionInfo[orgid][membro9]);
        case 12: format(name, 30, "%s", FactionInfo[orgid][membro10]);
        case 13: format(name, 30, "%s", FactionInfo[orgid][membro11]);
        case 14: format(name, 30, "%s", FactionInfo[orgid][membro12]);
    }
    if(strcmp(name, "Empty") {
        ShowPlayerDialog(playerid, 591, DIALOG_STYLE_INPUT, "Gerenciar", "Digite abaixo o nome do jogador", "Invite", "Cancel");
    }
    else if(strcmp(name, "%s", PlayerName(playerid)) {
        ShowPlayerDialog(playerid, 592, DIALOG_STYLE_INPUT, "Gerenciar", "Pedir Contas", "Select", "Cancel");
    }
    else {  //  outros membros que existem
        ShowPlayerDialog(playerid, 593, DIALOG_STYLE_INPUT, "Gerenciar", "Demitir\nMudar Cargo", "Select", "Cancel");
    }
}
Obs: seu cуdigo ta muito confuso eu nгo intendi o que ele faz, mas arrumei para vocк ..
Reply
#4

@sky

Obrigado
+rep

Nossa o switch numa linha sу fica muito mais visнvel e melhor

A ideia do codigo й pegar a vaga selecionada, tipo quando o cara der /membros ele vai escolher qual a vaga ele quer manipular, ai o switch pega a vaga e entra nuns blocos de comandos dependendo de

1- if(strcmp(name, "Empty") {
Vaga estiver com nome: Empty = vazio, que dai serve pro cara convidar

2- else if(strcmp(name, "%s", PlayerName(playerid)) {
Vaga = PlayerName que deu o comando, vaga = ele mesmo

3- else {
Seja qualquer um jogador que nгo seja o Playerid e nгo seja Empty


1 Erro
Код:
error 001: expected token: ")", but found "{"
1 Linha:
Код:
if(strcmp(name, "Empty") {
2 Erro:
Код:
error 035: argument type mismatch (argument 3)
Linha 2:
Код:
else if(strcmp(name, "%s", PlayerName(playerid)) {
Reply
#5

Saudaзхes !

Quote:
Originally Posted by luccagomes15
Посмотреть сообщение
@sky

1 Erro
Код:
error 001: expected token: ")", but found "{"
1 Linha:
Код:
if(strcmp(name, "Empty") {
2 Erro:
Код:
error 035: argument type mismatch (argument 3)
Linha 2:
Код:
else if(strcmp(name, "%s", PlayerName(playerid)) {


Isto ocorre por faltar ')' em seu cуdigo !

modifique para:
pawn Код:
if(strcmp(name, "Empty")) {


else if(strcmp(name, "%s", PlayerName(playerid))) {

Uma pena ^^
Reply
#6

Quote:
Originally Posted by Sky™
Посмотреть сообщение
Saudaзхes !






Isto ocorre por faltar ')' em seu cуdigo !

modifique para:
pawn Код:
if(strcmp(name, "Empty")) {


else if(strcmp(name, "%s", PlayerName(playerid))) {

Uma pena ^^
Nossa eu sou idiota
Vlw, vou te dar outro rep

Mas ta dando erro
error 035: argument type mismatch (argument 3)
Код:
else if(strcmp(name, "%s", PlayerName(playerid))) { // error 035: argument type mismatch (argument 3)
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)