Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <a_mysql>
- #include <zcmd>
- #define DIALOG_FORUM_CATEGORY 666
- #define DIALOG_FORUM_THREAD 667
- #define DIALOG_FORUM_POST 668
- #define DIALOG_FORUM_SUBMIT 669
- #undef MAX_PLAYERS
- #define MAX_PLAYERS 25
- new handle;
- new SQL[500];
- new STR[144];
- new f_Categorias[1000];
- new f_Threads[1000];
- new f_Post[2000];
- new f_categoriasID[10];
- new f_threadsID[MAX_PLAYERS][10];
- new p_Thread[MAX_PLAYERS];
- new p_Categoria[MAX_PLAYERS];
- new p_Post[MAX_PLAYERS];
- forward CarregarCategorias();
- forward AbreTopicos(playerid,catid);
- forward AbrePost(playerid,postid);
- forward OnPlayerPost(playerid,threadid);
- new TemForum;
- public OnFilterScriptInit()
- {
- handle = mysql_connect("127.0.0.1","root","foruminterno","ahuehue123");
- printf("handle: %d",handle);
- CarregarForum();
- return 1;
- }
- public OnFilterScriptExit()
- {
- mysql_close(handle);
- }
- CMD:forumteste(playerid)
- {
- if(!TemForum)
- return 1;
- ShowPlayerDialog(playerid,DIALOG_FORUM_CATEGORY,DIALOG_STYLE_LIST,"Categorias",f_Categorias,"Selecionar","Sair");
- p_Categoria[playerid] = 0;
- p_Thread[playerid] = 0;
- return 1;
- }
- public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
- {
- switch(dialogid)
- {
- case DIALOG_FORUM_THREAD:
- {
- if(response)
- {
- format(SQL,200,"SELECT * FROM posts WHERE thread = %d LIMIT 10",f_threadsID[playerid][listitem]);
- mysql_function_query(handle,SQL,true,"AbrePost","dd",playerid,f_threadsID[playerid][listitem]);
- p_Thread[playerid] = f_threadsID[playerid][listitem];
- printf("Abrindo tópico %d",p_Thread[playerid]);
- }
- else
- {
- cmd_forumteste(playerid);
- }
- }
- case DIALOG_FORUM_CATEGORY:
- {
- if(response)
- {
- format(SQL,200,"SELECT * FROM threads WHERE category = %d LIMIT 10",f_categoriasID[listitem]);
- mysql_function_query(handle,SQL,true,"AbreTopicos","dd",playerid,f_categoriasID[listitem]);
- p_Categoria[playerid] = f_categoriasID[listitem];
- }
- }
- case DIALOG_FORUM_POST:
- {
- if(response)
- {
- ShowPlayerDialog(playerid,DIALOG_FORUM_SUBMIT,DIALOG_STYLE_INPUT,"Postar","Digite o texto que você quer acrescentar ao tópico","Postar","Voltar");
- }
- else
- {
- format(SQL,200,"SELECT * FROM threads WHERE category = %d LIMIT 10",p_Categoria[playerid]);
- mysql_function_query(handle,SQL,true,"AbreTopicos","dd",playerid,p_Categoria[playerid]);
- }
- }
- case DIALOG_FORUM_SUBMIT:
- {
- if(response)
- {
- new name[24];
- GetPlayerName(playerid,name,24);
- format(SQL,500,"INSERT INTO posts (username,content,thread,date) VALUES ('%s','%s','%d','%s');",name,inputtext,p_Thread[playerid],FormatDate());
- mysql_function_query(handle,SQL,false,"OnPlayerPost","dd",playerid,p_Thread[playerid]);
- printf("Postando %s",inputtext);
- }
- else
- {
- format(SQL,200,"SELECT * FROM posts WHERE thread = %d LIMIT 10",p_Thread[playerid]);
- mysql_function_query(handle,SQL,true,"AbrePost","dd",playerid,p_Thread[playerid]);
- printf("Abrindo tópico %d",p_Thread[playerid]);
- }
- }
- }
- return 1;
- }
- stock CarregarForum()
- {
- SQL = "SELECT * FROM categorias WHERE 1";
- mysql_function_query(handle,SQL,true,"CarregarCategorias","");
- }
- stock FormatDate()
- {
- new m, d, y, h, M, date[25];
- getdate(y,m,d);
- gettime(h,M);
- format(date,25,"%02d/%02d/%02d as %02d:%02d",m,d,y,h,M);
- return date;
- }
- public CarregarCategorias()
- {
- new rows,fields;
- cache_get_data(rows,fields,handle);
- if(rows)
- {
- for(new i = 0; i < rows; ++i)
- {
- cache_get_field_content(i,"id",SQL,handle);
- f_categoriasID[i] = strval(SQL);
- cache_get_field_content(i,"nome",SQL,handle);
- format(f_Categorias,1000,"%s%s%s",f_Categorias,i ? ("\n") : (""),SQL);
- }
- printf("%d categorias carregadas.",rows);
- TemForum = 1;
- }
- else
- print("Não existem categorias no forum. Será desabilitado.");
- return 1;
- }
- public AbreTopicos(playerid,catid)
- {
- new rows,fields;
- cache_get_data(rows,fields,handle);
- if(rows)
- {
- strdel(f_Threads,0,1000);
- for(new i = 0; i < rows; ++i)
- {
- cache_get_field_content(i,"id",SQL,handle);
- f_threadsID[playerid][i] = strval(SQL);
- cache_get_field_content(i,"title",SQL,handle);
- format(f_Threads,1000,"%s%s%s",f_Threads,i ? ("\n") : (""),SQL);
- }
- ShowPlayerDialog(playerid,DIALOG_FORUM_THREAD,DIALOG_STYLE_LIST,"Tópicos",f_Threads,"Selecionar","Voltar");
- printf("%d topicos carregados.",rows);
- }
- else
- {
- SendClientMessage(playerid,-1,"[FORUM] Não existem tópicos nessa categoria.");
- cmd_forumteste(playerid);
- }
- return 1;
- }
- public AbrePost(playerid,postid)
- {
- new rows,fields;
- cache_get_data(rows,fields,handle);
- if(rows)
- {
- strdel(f_Post,0,2000);
- new by[25];
- for(new i = 0; i < rows; ++i)
- {
- cache_get_field_content(i,"id",SQL,handle);
- f_threadsID[playerid][i] = strval(SQL);
- cache_get_field_content(i,"username",by,handle);
- cache_get_field_content(i,"content",SQL,handle);
- // Quebra de linha a cada 50 caracteres
- new size = strlen(SQL);
- if(size > 100)
- strins(SQL,"\n",100);
- if(size > 50)
- strins(SQL,"\n",50);
- format(f_Post,1000,"%s%s{FF2222}Postado por %s\n{FFFFFF}%s",f_Post,i ? ("\n\n") : (""),by,SQL);
- }
- ShowPlayerDialog(playerid,DIALOG_FORUM_POST,DIALOG_STYLE_MSGBOX,"Post",f_Post,"Responder","Voltar");
- }
- else
- {
- SendClientMessage(playerid,-1,"[FORUM] O tópico selecionado não existe.");
- }
- return 1;
- }
- public OnPlayerPost(playerid,threadid)
- {
- format(SQL,200,"SELECT * FROM posts WHERE thread = %d LIMIT 10",threadid);
- mysql_function_query(handle,SQL,true,"AbrePost","dd",playerid,threadid);
- p_Thread[playerid] = threadid;
- printf("Abrindo tópico %d após postagem %d.",p_Thread[playerid],cache_insert_id(handle));
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement