Problema con dialogo
#1

Hola estube pasando un sistema de clan a dialogo y el problema es que si yo escribo el nombre por ejemplo: "ejemploclan" sin comillas
asi no funciona pero si yo escribo "ejemplo clan" ahi si tengo que escribir 2 palabras para que se ejecute la funciуn de crear el clan...

asн lo tengo

pawn Код:
case dialog_clan+1:
        {
        if(response)
        {

        /*if(!strlen(inputtext)) return SendClientMessage(playerid, -1, "{FF0000}Error, no introduciste nada");
        if(strlen(inputtext) < 4 || strlen(inputtext) > 10) return SCM(playerid, -1, ""RO"* El nombre del clan debe ser entre 3 y 15 carбcteres");
        if(!IsValidName(inputtext)) return SCM(playerid, -1, ""RO"* El nombre contiene carбcteres no permitidos, elнje otro");
        if(GANG_NUMBER >= MAX_GANG)*/


    if(IsValidName(inputtext))
    {
    if(strlen(inputtext) > 2 || strlen(inputtext) < 11)
    {
    if(GANG_NUMBER >= MAX_GANG)
    {
    new string[128];
    new file[30];
    for(new i = 0; i <= GANG_NUMBER; i++)
    {
    format(file, sizeof(file), GANG_FILE, i);
    if(dini_Exists(file) && dini_Int(file,"GANG_MEMBERS") <= 1)
    {
    dini_Remove(file);
    format(string, sizeof(string), ""CE"* ID: %d, Miembros: %d, Nombre: %s", i, GangInfo[i][GANG_MEMBERS], GangInfo[i][GANG_NAME]);
    SendClientMessage(playerid, -1, string);
    format(string, sizeof(string), ""CE"* el clan %s estб vacнa!", GangInfo[i][GANG_NAME]);
    SendClientMessageToAll(-1, string);
    for(new p; p < MAX_PLAYERS; p++)
    {
    if(PlayerGang[p] == i && IsPlayerConnected(p))
    {
    dUserSetINT(nombre(playerid)).("clan",0);
    PlayerGang[p] = 0;
    }
    }
    }
    }
    }
    }
    else
    {
    SendClientMessage(playerid, -1, ""RO"* El nombre del clan debe ser entre 3 y 15 carбcteres");
    }
    return 1;
    }
    new gangid = 0;
    for(new i; i < GANG_NUMBER; i++)
    {

    new file[100];
    format(file, sizeof(file), GANG_FILE, i);
    if(dini_Exists(file))
    {
    new gname[15];
    strcat(gname, dini_Get(file, "GANG_NAME"),15);

    if(strfind(inputtext, gname, true) == 0)return SendClientMessage(playerid, -1, ""RO"* Ya hay un clan llamada asн");

    }
    else if(!dini_Exists(file) && i != 0) gangid = i;

    }

    if(gangid == 0)
    {
    GANG_NUMBER++;
    gangid = GANG_NUMBER;
    }
    dini_IntSet(CFG,"GANG_NUMBER",GANG_NUMBER);

    new gfile[100];
    format(gfile, sizeof(gfile), GANG_FILE, gangid);
    dini_Create(gfile);
    new string3[256];
    format(GangInfo[gangid][GANG_NAME], sizeof(string3), "%s", inputtext);
    dini_Set(gfile, "GANG_NAME", GangInfo[gangid][GANG_NAME]);
    dini_IntSet(gfile, "GANG_ID", gangid);
    dini_IntSet(gfile,"GANG_MEMBERS",0);
    GangInfo[gangid][GANG_ID] = gangid;
    GangInfo[gangid][GANG_MEMBERS] = 0;
    GangInfo[gangid][GANG_COLOR] = RandomColors[gangid];

    new string[128];
    format(string, sizeof(string), ""CE"* Has creado un clan! Nombre: %s, ID: %d", GangInfo[gangid][GANG_NAME], GangInfo[gangid][GANG_ID]);
    SendClientMessage(playerid, -1, string);
    JoinGang(playerid, gangid);
    }
    }
por favor si me pudieran ayudar... donde se escribe el nombre del clan es en otro dialogo pero me gustaria que me revisen arriba que estarб mal por favor
Reply
#2

Primeramente debo decir que no nos haces el trabajo nada fбcil si no indentas tu cуdigo, es bastante difнcil saber donde termina cada bloque. No se si tenga algo que ver pero uno de los bloques comienza con una condiciуn validando el nombre del clan, y dentro de ese bloque solo se evalъa una posible situaciуn (GANG_NUMBER >= MAX_GANG) ademбs de que haber un "return" lo que significa que cada vez que el nombre sea vбlido solo se ejecutarб el siguiente cуdigo:

pawn Код:
if(strlen(inputtext) > 2 || strlen(inputtext) < 11)
    {
    if(GANG_NUMBER >= MAX_GANG)
    {
    new string[128];
    new file[30];
    for(new i = 0; i <= GANG_NUMBER; i++)
    {
    format(file, sizeof(file), GANG_FILE, i);
    if(dini_Exists(file) && dini_Int(file,"GANG_MEMBERS") <= 1)
    {
    dini_Remove(file);
    format(string, sizeof(string), ""CE"* ID: %d, Miembros: %d, Nombre: %s", i, GangInfo[i][GANG_MEMBERS], GangInfo[i][GANG_NAME]);
    SendClientMessage(playerid, -1, string);
    format(string, sizeof(string), ""CE"* el clan %s estб vacнa!", GangInfo[i][GANG_NAME]);
    SendClientMessageToAll(-1, string);
    for(new p; p < MAX_PLAYERS; p++)
    {
    if(PlayerGang[p] == i && IsPlayerConnected(p))
    {
    dUserSetINT(nombre(playerid)).("clan",0);
    PlayerGang[p] = 0;
    }
    }
    }
    }
    }
    }
Es decir, que si el nombre del gang es vбlido y GANG_NUMBER es menor a MAX_GANG entonces nunca se guardarнa el gang. Creo que eso explicarнa porque cuando escribes un nombre separado por un espacio (quizб ese sea el nombre invбlido) si se guarda el gang. їTiene sentido lo que digo?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)