[AJUDA]Conflito de Dialog
#1

eaw bom vo logo no asunto й o seguinte eu baixei um FS de enquete ele funfa certim tudo normal mais quando eu coloco o FS de login Box que eu tenho aki ele ta conflito com o FS de enquete quando eu crio uma enquete ai vai para o player responder em dialogid SIM ou NГO quando ele clika em qualquer um dos dois es vкs de apareзer o normal que й "Vocк votou sim ou vc vou nгo" depois que o player vota apareзe o dialogid de Registrar falando que ele nгo й registra para ele se registrar... Alquem sabe o porque desse conflito!

FS de enquete Crйditos ao FreeGells

pawn Код:
#include <a_samp>

#define Dialog 1

new Sim;
new Nao;
new Votos;
new Criada;

forward Finalizar();

public OnFilterScriptInit()
{
    print("\n' -------------------------------------- '");
    print("  Sistema de Enquetes Por FreeGells!");
    print("  Carregando...");
    print("' -------------------------------------- '\n");
    return 1;
}


public OnFilterScriptExit()
{
    print("\n ' -------------------------------------- '");
    print("   Sistema de Enquetes Por FreeGells!");
    print("   Descarregando...");
    print(" ' -------------------------------------- '\n");
    return 1;
}


public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[64], idx;
    cmd = strtok(cmdtext, idx);

    if(strcmp(cmd, "/ecriar", true) == 0)
    {
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xC4000FFF, "[ERRO] Apenas Administradores Podem Criar Enquete!");
        if(Criada == 1) return SendClientMessage(playerid, 0xC4000FFF, "[ERRO] Jб existe uma enquete Criada!");
        new length = strlen(cmdtext);
        while ((idx < length) && (cmdtext[idx] <= ' ')) {
            idx++;
        }
        new offset = idx;
        new result[64];
        while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) {
            result[idx - offset] = cmdtext[idx];
            idx++;
        }
        result[idx - offset] = EOS;
        if(!strlen(result)) return SendClientMessage(playerid, 0xC4000FFF, "[ERRO] Use: /EnqueteCriar [Pergunta]");
        for(new i = 0; i < MAX_PLAYERS; i ++)
    {
            if(IsPlayerConnected(i))
        {
                ShowPlayerDialog(i, Dialog, DIALOG_STYLE_MSGBOX, "Enquete:", result, "Sim", "Nгo");
            }
        }
        SendClientMessage(playerid, 0x76DD04FF, "[SaW INFORMA] Enquete Criada com Sucesso!");
        new str[128], n[MAX_PLAYER_NAME];
        GetPlayerName(playerid, n, 24);
        format(str, sizeof str, "[SaW INFORMA] O Administrador %s Criou uma enquete, ela irб finalizar em 2 Minutos!", n);
        SendClientMessageToAll(0x76DD04FF, str);
        Criada = 1;
        SetTimer("Finalizar", 120000, false);
        return 1;
    }
    return 0;
}


public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == Dialog)
    {
        switch(response)
    {
            case 0:
            {
                SendClientMessage(playerid, 0x76DD04FF, "[SaW INFORMA] Vocк votou em Nгo!");
                Nao ++;
                Votos ++;
                MandarAdmin();
            }
            case 1:
            {
                SendClientMessage(playerid, 0x76DD04FF, "[SaW INFORMA] Vocк votou em Sim!");
                Sim ++;
                Votos ++;
                MandarAdmin();
            }
        }
    }
    return 1;
}


public Finalizar()
{
    new str[128];
    SendClientMessageToAll(0xFF6215FF, "[SaW INFORMA] A enquete Foi encerrada! Resultado:");
    format(str, sizeof str, "**** Sim: %d ****\n\n **** Nгo: %d ****\n\n ****Total de Votos: %d ****\n\n", Sim, Nao, Votos);
    SendClientMessageToAll(0x76DD04FF, str);
    Sim = 0;
    Nao = 0;
    Criada = 0;
    Votos = 0;
    return 1;
}


stock MandarAdmin()
{
    for(new i = 0; i < MAX_PLAYERS; i ++)
    {
        if(IsPlayerAdmin(i))
    {
            new str[64];
            format(str, sizeof str, "[SaW INFORMA] Sim: %d Nгo: %d / Votos: %d", Sim, Nao, Votos);
            SendClientMessage(i, 0x76DD04FF, str);
        }
    }
    return 1;
}


strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' ')) {
        index++;
    }

    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}
FS de Registrar nгo sei de quem й os crйditos se alguem souber posta ai que eu edito
pawn Код:
#include <a_samp>
#include <Dini>

#define FILTERSCRIPT

#define REGISTRO 1
#define LOGIN    2

#define CONTAS "Players/%s.ini"

new Matou[MAX_PLAYERS];
new Morreu[MAX_PLAYERS];
new Logou[MAX_PLAYERS];


public OnFilterScriptInit()
{
    return 1;
}

public OnFilterScriptExit()
{
    for(new i=0; i<MAX_PLAYERS; i++)
    SalvarPlayer(i);
    return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
    return 1;
}
public OnPlayerConnect(playerid)
{
    new Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, sizeof(Nome));
    new String[100];
    format(String, sizeof(String), CONTAS, Nome);
    if(!dini_Exists(String))
    {
        format(String, sizeof(String), "{7FFFD4}Nick: {1E90FF}%s  {1E90FF}Nгo Registrado\n\n{FFFFFF} Digite Uma Senha Para Continuar", Nome);
        ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_INPUT, "Registro", String, "Registrar", "Cancelar");
    }
    else
    {
        format(String, sizeof(String), "{7FFFD4}Nick: {1E90FF}%s  {1E90FF}Registrado\n\n{FFFFFF} Digite Sua Senha Para Logar", Nome);
        ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_INPUT, "Registro", String, "Logar", "Cancelar");
    }
    return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    SalvarPlayer(playerid);
    return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
    if(IsPlayerConnected(killerid))
    {
        Matou[killerid]++;
    }
    Morreu[playerid]++;
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/Meustatus", cmdtext, true, 8) == 0)
    {
        Status(playerid);
        return 1;
    }
    return 0;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == REGISTRO)
    {
        if(response)
        {
            if(!strlen(inputtext))
            {
                new Nome[MAX_PLAYER_NAME];
                GetPlayerName(playerid, Nome, sizeof(Nome));
                new String[150];
                format(String, sizeof(String), "{7FFFD4}Nick: {1E90FF}%s  {1E90FF}Nгo Registrado\n\n{FFFFFF} Digite Uma Senha Para Continuar", Nome);
                ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_INPUT, "Registro", String, "Registrar", "Cancelar");
                SendClientMessage(playerid,0x1E90FFAA,"Senha invalida, digite uma senha vбlida");
                return 1;
            }
            new Nome[MAX_PLAYER_NAME];
            GetPlayerName(playerid, Nome, sizeof(Nome));
            new String[100];
            format(String, sizeof(String), CONTAS, Nome);
            dini_Create(String);
            dini_Set(String,"Senha",inputtext);
            dini_IntSet(String,"Matou",0);
            dini_IntSet(String,"Morreu",0);
            dini_IntSet(String,"Logou",0);
            ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_INPUT, "Login", "{1E90FF}Pronto vocк se registrou agora digite Sua Senha Para Logar-Se", "Logar", "Cancelar");
            return 1;
        }
        else
        {   new pname[MAX_PLAYER_NAME];
            GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
            new string[256];
            format(string, sizeof(string), "[SaW INFORMA]*** {F60000}%s {008080}Foi Kickado Porque Nгo Quis Se {F60000}(Registrar)", pname);
            SendClientMessageToAll(0x0000BBAA, string);
            SendClientMessage(playerid, 0x008080AA, "Vocк Foi Kickado Porque Nгo Quis Se Registrar!!");
           
            Kick(playerid);
            return 1;
        }
    }
    if(dialogid == LOGIN)
    {
        if(response)
        {
            if(!strlen(inputtext))
            {
                new Nome[MAX_PLAYER_NAME];
                GetPlayerName(playerid, Nome, sizeof(Nome));
                new String[100];
                format(String, sizeof(String), "{7FFFD4}Nick: {1E90FF}%s  {1E90FF}Registrado\n\n{FFFFFF} Digite Sua Senha Para Logar", Nome);
                ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_INPUT, "Registro", String, "Logar", "Cancelar");
                SendClientMessage(playerid,0x1E90FFAA,"Senha Incorreta !");
                return 1;
            }
            new Nome[MAX_PLAYER_NAME];
            GetPlayerName(playerid, Nome, sizeof(Nome));
            new String[100];
            format(String, sizeof(String), CONTAS, Nome);
            if(!strcmp(inputtext,dini_Get(String,"Senha"),false))
            {
                SetarPlayer(playerid);
                Logou[playerid]++;
                SendClientMessage(playerid,0x00FF00AA,"Vocк Foi Logado Com Sucesso No SaW Server > Escolha Seu Skin!");
                return 1;
            }
            else
            {
                SendClientMessage(playerid,0x00FF00AA,"Senha incorreta digite-a novamente");
                format(String, sizeof(String), "{7FFFD4}Nick: {1E90FF}%s  {1E90FF}Registrado\n\n{FFFFFF} Digite Sua Senha Para Logar", Nome);
                ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_INPUT, "Registro", String, "Logar", "Cancelar");
            }
            return 1;
        }
        else
        {
            new pname[MAX_PLAYER_NAME];
            GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
            new string[256];
            format(string, sizeof(string), "[SaW INFORMA]*** {F60000}%s {008080}Foi Kickado Porque Nгo Quis {F60000}(Logar-Se)!!", pname);
            SendClientMessageToAll(0x008080AA, string);
            SendClientMessage(playerid, 0xFF0000AA, "Vocк nгo quis se logar, por este motivo serб Kickado");
            Kick(playerid);
            return 1;
        }
 }
    return 1;
}

SalvarPlayer(playerid)
{
    new Float:Vida;
    new Float:Colete;
    GetPlayerHealth(playerid, Vida);
    GetPlayerArmour(playerid, Colete);
    new Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, sizeof(Nome));
    new String[50];
    format(String, sizeof(String), CONTAS, Nome);
    dini_IntSet(String,"Matou", Matou[playerid]);
    dini_IntSet(String,"Morreu", Morreu[playerid]);
    dini_IntSet(String,"Logou", Logou[playerid]);
    return 1;
}

SetarPlayer(playerid)
{
    new Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, sizeof(Nome));
    new String[50];
    format(String, sizeof(String), CONTAS, Nome);
    Matou[playerid] = dini_Int(String, "Matou");
    Morreu[playerid] = dini_Int(String, "Morreu");
    Logou[playerid] = dini_Int(String, "Logou");
    return 1;
}

Status(playerid)
{
    new Nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nome, sizeof(Nome));
    new String[128];
    SendClientMessage(playerid, 0xFF0000AA, "================================================");
    format(String, sizeof(String),"Status De %s",Nome);
    SendClientMessage(playerid, 0xFFFF00AA,String);
    format(String, sizeof(String),"Matou: %d",Matou[playerid]);
    SendClientMessage(playerid, 0x1E90FFAA,String);
    format(String, sizeof(String),"Morreu: %d",Morreu[playerid]);
    SendClientMessage(playerid, 0x1E90FFAA,String);
    format(String, sizeof(String),"Vocк Jб Logou %d Vezes Neste Servidor",Logou[playerid]);
    SendClientMessage(playerid, 0x1E90FFAA,String);
    SendClientMessage(playerid, 0xFF0000AA, "================================================");
    return 1;
}
OBS: eu mudei os valor das Define porem resolve o conflito com o FS de registro mais ai buga o FS de enquete vou explicar: quando eu crio a enquete, ele vai para o player responder normal em dialog quando ele responde sim ou nгo , nгo apareзe mais nd fica normal teria que apareзer "Vocк Votou Sim ou Vocк Votou Nгo" atй ai tudo bem, mais depois que finaliza a enquete mostra o Total de votos Sim/nгo .. mais ai apareзe tudo 0 como se ninguem tivesse votado.
Reply
#2

Vocк tem duas define com o mesmo valor

veja:

pawn Код:
#define Dialog 1
e
#define REGISTRO 1
No FS de dialog troque o valor de 1 para 3.

da estrelinha se te ajudei :P


EDIT:

#define ALGUMACOISA numero
й usado para definir os ID's de dialogs ou qualquer coisa do gкnero, como vocк pode perceber aqui:
pawn Код:
ShowPlayerDialog(i, Dialog, DIALOG_STYLE_MSGBOX, "Enquete:", result, "Sim", "Nгo");
o segundo parвmetro, й o Dialog, lб ficaria no caso o DIALOG_ID, porem o Dialog estб definido no topo do GM, com o mesmo valor do FS de registro.

Reply
#3

RESOLVIDO tive que colocar dessa forma la no server.cfg "filterscripts registrar Enquete" ai funciono mais ta de boa vou te dar um REP+
Reply
#4

Caso tenha poucas dialogs, nгo precisa de definir o nъmero delas... coloque logo

pawn Код:
#define Registo 1
#define Login 2

ShowPlayerDialog(playerid, Registo, ...);
ShowPlayerDialog(playerid, Login, ...);
pode fazer logo isto:
pawn Код:
ShowPlayerDialog(playerid, 1, ...);
ShowPlayerDialog(playerid, 2, ...);
apenas define se tiver vбrias, para nгo construir dialogs com os mesmos nъmeros.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)