[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(playeridparams[]) {
    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]"textopergunta)) return SendClientMessage(playerid, -1"[ ERRO ] {FF0000}Use: /pergunta criar [pergunta]");
        new 
file[50];
        for(new 
1MAX_PERGUNTASi++) {
            
format(filesizeof(file), PASTA_PERGUNTASi);
            if(!
DOF2_FileExists(file)) {
                new 
aname[MAX_PLAYER_NAME], string[128];
                
GetPlayerName(playeridanamesizeof(aname));
                
DOF2_CreateFile(file);
                
DOF2_SetInt(file"ID"i);
                
DOF2_SetString(file"Pergunta"pergunta);
                
DOF2_SetString(file"Criado"aname);
                
DOF2_SaveFile();
                
format(stringsizeof(string), "* Vocк criou a pergunta ID: %d agora qual й a resposta ? use: /pergunta resposta [id da pergunta] [resposta]"i);
                
SendClientMessage(playerid0xFF8080AAstring);
                return 
1;
            }
        }
        return 
1;
    }
    else if(
strfind(texto"responder"true) != -1) {
        new 
resposta[128], id;
        if(
sscanf(params"s[20]ds[128]"textoidresposta)) return SendClientMessage(playerid, -1"[ ERRO ] {FF0000}Use: /pergunta responder [ID da Pergunta] [texto]");
        new 
file[50];
        
format(filesizeof(file), PASTA_PERGUNTASid);
        if(
DOF2_FileExists(file)) {
            if(!
strcmp(DOF2_GetString(file"Resposta"), resposta)) {
                new 
string[155], pname[MAX_PLAYER_NAME];
                
GetPlayerName(playeridpnamesizeof(pname));
                
format(stringsizeof(string), "* RESULTADO * O(A) Administrador(a) %s havia criado a pergunta ID: %d ( %s )"DOF2_GetString(file"Criado"), idDOF2_GetString(file"Pergunta"));
                
SendClientMessageToAll(0xFFFF00AAstring);
                
format(stringsizeof(string), "* PREMIADO * %s respondeu que a pergunta ( %s ) ID: %d й ( %s ) e ganhou R$4.000"pnameDOF2_GetString(file"Pergunta"), idresposta);
                
SendClientMessageToAll(0xFFFF00AAstring);
                
GivePlayerMoney(playeridPREMIO_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 
idresposta[128];
        if(
sscanf(params"s[20]ds[128]"textoidresposta)) return SendClientMessage(playerid, -1"[ ERRO ] {FF0000}Use: /pergunta resposta [ID da Pergunta] [resposta]");
        new 
file[50], aname[MAX_PLAYER_NAME];
        
GetPlayerName(playeridanamesizeof(aname));
        
format(filesizeof(file), PASTA_PERGUNTASid);
        if(
DOF2_FileExists(file) && strfind(DOF2_GetString(file"Criado"), anametrue) != -1) {
            new 
string[128];
            
DOF2_SetString(file"Resposta"resposta);
            
DOF2_SaveFile();
            
format(stringsizeof(string), "* PERGUNTA * O(A) Administrador(a) %s criou a pergunta ID: %d ( %s )"anameidDOF2_GetString(file"Pergunta"));
            
SendClientMessageToAll(0xFFFF00AAstring);
            
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

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

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

DOF2 й realmente necessбrio?

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(playeridparams[]) 

    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 
1MAX_PERGUNTASi++) { 
            
format(filesizeof(file), PASTA_PERGUNTASi); 
            if(!
DOF2_FileExists(file)) { 
                new 
aname[MAX_PLAYER_NAME], string[128]; 
                
GetPlayerName(playeridanamesizeof(aname)); 
                
DOF2_CreateFile(file); 
                
DOF2_SetInt(file"ID"i); 
                
DOF2_SetString(file"Pergunta"params); 
                
DOF2_SetString(file"Criado"aname); 
                
DOF2_SaveFile(); 
                
format(stringsizeof(string), "* Vocк criou a pergunta ID: %d agora qual й a resposta ? use: /pergunta resposta [id da pergunta] [resposta]"i); 
                
SendClientMessage(playerid0xFF8080AAstring); 
                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)