[FilterScript] Sistema de Perguntas por ID
#1

Boa noite a todos este sistema de perguntas nгo й para inovar nada porйm foi apenas para ajudar um membro aqui do fуrum e como o funcionamento ficou excelente resolvi publicar aqui para vocкs, quem quiser usar use quem nгo quiser fica a seu critйrio, quem quiser editar tambйm fica a seu critйrio.

ATENЗГO Й NECESSБRIO: Criar uma pasta dentro da pasta scriptfiles com o nome de: Perguntas

O prкmio dado pelo acerto da pergunta й em dinheiro e pode ser alterado na бrea de
PHP код:
#define PREMIO_VALOR 4000 
Para criar uma pergunta ou a resposta de uma pergunta й necessбrio estar logado na RCON.
* COMANDOS *
/pergunta criar [texto] - Cria uma pergunta.
/pergunta resposta [id da pergunta] [texto] - Cria uma resposta para tal pergunta referente ao ID dela.
/pergunta responder [id da pergunta] [resposta] - Responde a uma pergunta referente ao ID dela.
/pergunta deletar [id da pergunta] - Deleta uma pergunta criada.
PHP код:
/*****************************************************************************
    Criado por: Leonardo Bradoks
    Referente ao Tуpico: https://sampforum.blast.hk/showthread.php?tid=652142&page=2
*****************************************************************************/
#include <a_samp>
#include <zcmd>
#include <dof2>
#include <sscanf2>
#define PASTA_PERGUNTAS  "Perguntas/pergunta%d.ini"
#define MAX_PERGUNTAS 100
#define PREMIO_VALOR 4000
public OnFilterScriptInit()
{
    print(
"\n------------------------------------------------");
    print(
"- Sistema de Perguntas - Apenas Logado na RCON -");
    print(
"------------------------------------------------\n");
    return 
1;
}
public 
OnFilterScriptExit()
{
    
DOF2_Exit();
    return 
1;
}
CMD:pergunta(playerid, params[]) {
    new 
texto[20];
    if(
sscanf(params, "s[20]", texto)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Use: /pergunta [criar] ou [responder] ou [resposta]");
    if(
strfind(texto, "criar", true) != -1) {
        if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Vocк nгo tem acesso a este comando !");
        new 
pergunta[128];
        if(
sscanf(params, "s[20]s[128]", texto, pergunta)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Use: /pergunta criar [pergunta]");
        new 
file[50];
        for(new 
i = 1; i < MAX_PERGUNTAS; i++) {
            
format(file, sizeof(file), PASTA_PERGUNTAS, i);
            if(!
DOF2_FileExists(file)) {
                new 
aname[MAX_PLAYER_NAME], string[128];
                
GetPlayerName(playerid, aname, sizeof(aname));
                
DOF2_CreateFile(file);
                
DOF2_SetInt(file, "ID", i);
                
DOF2_SetString(file, "Pergunta", pergunta);
                
DOF2_SetString(file, "Criado", aname);
                
DOF2_SaveFile();
                
format(string, sizeof(string), "* Vocк criou a pergunta ID: %d agora qual й a resposta ? use: /pergunta resposta [id da pergunta] [resposta]", i);
                
SendClientMessage(playerid, 0xFF8080AA, string);
                return 
1;
            }
        }
        return 
1;
    }
    else if(
strfind(texto, "responder", true) != -1) {
        new 
resposta[128], id;
        if(
sscanf(params, "s[20]ds[128]", texto, id, resposta)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Use: /pergunta responder [ID da Pergunta] [texto]");
        new 
file[50];
        
format(file, sizeof(file), PASTA_PERGUNTAS, id);
        if(
DOF2_FileExists(file)) {
            if(!
strcmp(DOF2_GetString(file, "Resposta"), resposta)) {
                new 
string[155], pname[MAX_PLAYER_NAME];
                
GetPlayerName(playerid, pname, sizeof(pname));
                
format(string, sizeof(string), "* RESULTADO * O(A) Administrador(a) %s havia criado a pergunta ID: %d ( %s )", DOF2_GetString(file, "Criado"), id, DOF2_GetString(file, "Pergunta"));
                
SendClientMessageToAll(0xFFFF00AA, string);
                
format(string, sizeof(string), "* PREMIADO * %s respondeu que a pergunta ( %s ) ID: %d й ( %s ) e ganhou R$4.000", pname, DOF2_GetString(file, "Pergunta"), id, resposta);
                
SendClientMessageToAll(0xFFFF00AA, string);
                
GivePlayerMoney(playerid, PREMIO_VALOR);
                
DOF2_RemoveFile(file);
                return 
1;
            } else {
                return 
SendClientMessage(playerid, -1, "[ RESULTADO ] {FF0000}Poxa que pena nгo foi desta vez !");
            }
        } else {
            return 
SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Estб ID de pergunta nгo existe !");
        }
    }
    else if(
strfind(texto, "resposta", true) != -1) {
        if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Vocк nгo tem acesso a este comando !");
        new 
id, resposta[128];
        if(
sscanf(params, "s[20]ds[128]", texto, id, resposta)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Use: /pergunta resposta [ID da Pergunta] [resposta]");
        new 
file[50], aname[MAX_PLAYER_NAME];
        
GetPlayerName(playerid, aname, sizeof(aname));
        
format(file, sizeof(file), PASTA_PERGUNTAS, id);
        if(
DOF2_FileExists(file) && strfind(DOF2_GetString(file, "Criado"), aname, true) != -1) {
            new 
string[128];
            
DOF2_SetString(file, "Resposta", resposta);
            
DOF2_SaveFile();
            
format(string, sizeof(string), "* PERGUNTA * O(A) Administrador(a) %s criou a pergunta ID: %d ( %s )", aname, id, DOF2_GetString(file, "Pergunta"));
            
SendClientMessageToAll(0xFFFF00AA, string);
            
SendClientMessageToAll(0x0080FFAA, "* Para responder a pergunta use: /pergunta responder [id da pergunta] [resposta]");
            return 
1;
        } else {
            return 
SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Nгo й possнvel setar a resposta pois ou o arquivo nгo existe ou vocк nгo й o criador da pergunta !");
        }
    }
    return 
1;
} 
Download via Pastebin
Filterscript criado referente ao tуpico
Reply
#2

simples e agradбvel, jб compilei mas ainda nao testei mas parece ser funcional parabйns dps que eu fazer o teste in game te dou +rep
Reply
#3

Muito bom
Reply
#4

Bom tlabalho seu madugla.

Polйm, recomendalia utilizar SQLite ao invйs de DOF2.
Reply
#5

Ficaria legal um sistema de perguntas aleatуrias (random), o administrador iniciaria estas e a cada X minutos a pergunta aparecia no chat, um quiz por exemplo.

Ficou bacana!
Reply
#6

1° recomendo utilizar MySQL ou SQLlite pra esse tipo de sistema, й muito mais recomendбvel, por inumeras rasхes.

2° nгo sei se reparou, mas nгo tem como visualizar as perguntas, sу quem as criou sabe qual foi, se esqueceu deste pequeno detalhe

3°DOF2 й realmente necessбrio?

4° hб um erro logico, pois utilizou-se de strfind, que й uma pessima ideia, se eu der "/pergunta responder 3 criar um vetor bla bla bla", eu vou criar uma pergunta e nгo responde-la:

PHP код:
//exemplo de correзгo:
CMD:pergunta(playerid, params[]) 
{ 
    new 
texto[20]; 
    
sscanf(params, "s[20]S[108]", texto,params);
    if(!
strcmp(texto, "criar")) { 
        if(!
IsPlayerAdmin(playerid)) 
                return 
SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Vocк nгo tem acesso a este comando !"); 
        new 
file[50]; 
        for(new 
i = 1; i < MAX_PERGUNTAS; i++) { 
            
format(file, sizeof(file), PASTA_PERGUNTAS, i); 
            if(!
DOF2_FileExists(file)) { 
                new 
aname[MAX_PLAYER_NAME], string[128]; 
                
GetPlayerName(playerid, aname, sizeof(aname)); 
                
DOF2_CreateFile(file); 
                
DOF2_SetInt(file, "ID", i); 
                
DOF2_SetString(file, "Pergunta", params); 
                
DOF2_SetString(file, "Criado", aname); 
                
DOF2_SaveFile(); 
                
format(string, sizeof(string), "* Vocк criou a pergunta ID: %d agora qual й a resposta ? use: /pergunta resposta [id da pergunta] [resposta]", i); 
                
SendClientMessage(playerid, 0xFF8080AA, string); 
                return 
1; 
            } 
        } 
        return 
1; 
    } 
    else if(!
strcmp(texto, "responder") 
    else if(!
strcmp(texto, "resposta")  
    else
       return 
SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Use: /pergunta [criar] ou [responder] ou [resposta]"); 
    return 
1; 
} 
Reply
#7

Gostei do sistema, parabйns !!
Reply
#8

Quote:
Originally Posted by ThiagoScottish
Посмотреть сообщение
Gostei do sistema, parabйns !!
Obrigado
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)