Autor Tema: [GUIA] Community o Bulletin Board System  (Leído 944 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Geralt

  • Grado C
  • *
  • Topic Author
  • Mensajes: 137
  • Agradecimientos: 725
  • Cronica: : Interlude/GF
  • Revision: None
  • S.O: Windows Server 2008
  • Serverpack : L2Off
[GUIA] Community o Bulletin Board System
« en: Julio 06, 2014, 11:00:24 am »
gracias
Este post tiene 2 agradecimientos
  • Añade a tus favoritos
  • Voy a explicar como configurar y poder usar el foro que hay dentro del juego, el lin2comm. Es bastante simple basta con abrir la base de datos y leer. Empezemos.
    Para crear un nuevo foro o subforo usamos tenemos que abrir el procedimiento de almacenado dbo.Lin_MakeBoard en SQL Server Managment Studio 2005 se encuentra en:
    Databases ->Lin2comm -> Programability-> Stored Procedures.
    Lo editamos y veremos esto:

    Código: [Seleccionar]

    USE [lin2comm]
    GO
    /****** Object:  StoredProcedure [dbo].[lin_MakeBoard]    Script Date: 04/02/2013 11:37:43 ******/
    SET ANSI_NULLS OFF
    GO
    SET QUOTED_IDENTIFIER ON
    GO




    /********************************************
    lin_MakeBoard
       do make board
    INPUT
    OUTPUT
    return
    made by
       young
    date
       2003-04-22
    ********************************************/
    ALTER PROCEDURE [dbo].[lin_MakeBoard]
       @parent_bid   int,
       @name   nvarchar(50),
       @description   nvarchar(200),
       @type      int,
       @admin      nvarchar(50),
       @permission   int,
       @world_id   smallint,
       @keyword   int,
       @location   int,
       @classid   int,
       @pledge_id   int=0,
       @page_size   smallint=13

    AS
    SET NOCOUNT ON
    declare @return int
    declare @sql nvarchar(1024)
    declare @table_name nvarchar(64)
    declare @board_id int
    declare @node_id int
    declare @identity nvarchar(12)
    set @return = 0

    -- insert into board_list
    insert into board_list ( name, description, type, admin, parent_bid , permission, pledge_id, world_id, page_size , location , keyword_type , board_classid )
    values ( @name, @description, @type, @admin, @parent_bid, @permission, @pledge_id, @world_id, @page_size , @location , @keyword , @classid )

    set @board_id = @@IDENTITY
    set @identity = cast ( @board_id as NVARCHAR)
    -- make board_####
    set @table_name = 'board_' + @identity
    -- begin tran
    set @sql = ' CREATE TABLE [dbo].[' + @table_name + '] ( '
       +'   [root_bid] [int] NOT NULL , '
       +'   [thread_order] [smallint] NOT NULL , '
       +'   [bid] [int] IDENTITY (1, 1) NOT NULL , '
       +'   [step] [smallint] NULL , '
       +'   [parent_bid] [int] NOT NULL , '
       +'   [char_id] [int] NULL , '
       +'   [char_name] [nvarchar] (50) , '
       +'   [account_id] [int] NULL , '
       +'   [account_name] [nvarchar] (50) , '
       +'   [world_id] [smallint] NULL , '
       +'   [title] [nvarchar] (128) , '
       +'   [content] [nvarchar] (3000) , '
       +'   [post_date] [datetime] NULL , '
       +'   [modify_date] [datetime] NULL , '
       +'   [read_count] [int] NULL , '
       +'   [status] [int] NULL,  '
       +'   [ip] [nvarchar] (20),  '
       +'   [comment_cnt] [smallint] NULL , '
       +'   [keyword] [nvarchar] (20)  '
       +') ON [PRIMARY] '
    exec (@sql)
    if (@@ERROR <> 0 ) goto EXEC_FAILED

    set @sql = ' ALTER TABLE [dbo].[' + @table_name + '] WITH NOCHECK ADD  '
       +'   CONSTRAINT [DF_' + @table_name + '_root_bid] DEFAULT (0) FOR [root_bid], '
       +'   CONSTRAINT [DF_' + @table_name + '_thread_order] DEFAULT (0) FOR [thread_order], '
       +'   CONSTRAINT [DF_' + @table_name + '_parent_bid] DEFAULT (0) FOR [parent_bid],'
       +'   CONSTRAINT [DF_' + @table_name + '_step] DEFAULT (0) FOR [step],'
       +'   CONSTRAINT [DF_' + @table_name + '_world_id] DEFAULT (1) FOR [world_id],'
       +'   CONSTRAINT [DF_' + @table_name + '_post_date] DEFAULT (getdate()) FOR [post_date],'
       +'   CONSTRAINT [DF_' + @table_name + '_read_count] DEFAULT (0) FOR [read_count], '
       +'   CONSTRAINT [DF_' + @table_name + '_status] DEFAULT (0) FOR [status], '
       +'   CONSTRAINT [DF_' + @table_name + '_comment_cnt] DEFAULT (0) FOR [comment_cnt] '
    exec (@sql)
    if (@@ERROR <> 0 ) goto EXEC_FAILED


    -- CREATE  CLUSTERED  INDEX [ix_board_114_1] ON [dbo].[board_114]([root_bid] DESC , [thread_order]) ON [PRIMARY]
    -- CREATE  INDEX [IX_board_114] ON [dbo].[board_114]([bid] DESC ) ON [PRIMARY]

    set @sql = ' CREATE CLUSTERED  INDEX [IX_' + @table_name + '_1] ON [dbo].[' + @table_name + ']([root_bid] DESC , [thread_order ] )  WITH FILLFACTOR = 90 ON [PRIMARY] '
    exec (@sql)
    if (@@ERROR <> 0 ) goto EXEC_FAILED

    set @sql = ' CREATE  INDEX [IX_' + @table_name + '] ON [dbo].[' + @table_name + ']([bid] DESC )  WITH FILLFACTOR = 90 ON [PRIMARY] '
    exec (@sql)
    if (@@ERROR <> 0 ) goto EXEC_FAILED


    -- make comment_####
    set @table_name = 'comment_' + @identity
    set @sql = ' CREATE TABLE [dbo].[' + @table_name + '] ( '
       +'   [comment_id] [int] IDENTITY (1, 1) NOT NULL , '
       +'   [bid] [int] NULL , '
       +'   [comment_date] [datetime] NULL , '
       +'   [char_id] [int] NULL , '
       +'   [char_name] [nvarchar] (50) , '
       +'   [account_id] [int] NULL , '
       +'   [account_name] [nvarchar] (50) , '
       +'   [world_id] [smallint] NULL , '
       +'   [comment] [nvarchar] (128) , '
       +'   [status] [int] NULL  '
       +') ON [PRIMARY] '
    exec (@sql)
    if (@@ERROR <> 0 ) goto EXEC_FAILED
    set @sql =' ALTER TABLE [dbo].[' + @table_name + '] WITH NOCHECK ADD '
       +'   CONSTRAINT [DF_' + @table_name + '_comment_date] DEFAULT (getdate()) FOR [comment_date], '
       +'   CONSTRAINT [DF_' + @table_name + '_world_id] DEFAULT (1) FOR [world_id], '
       +'   CONSTRAINT [DF_' + @table_name + '_status] DEFAULT (0) FOR [status] '
    exec (@sql)
    if (@@ERROR <> 0 ) goto EXEC_FAILED
    set @sql = ' CREATE  INDEX [IX_' + @table_name + '] ON [dbo].[' + @table_name + ']([bid] DESC )  WITH FILLFACTOR = 90 ON [PRIMARY] '
    exec (@sql)
    if (@@ERROR <> 0 ) goto EXEC_FAILED

    set @sql = ' CREATE  CLUSTERED INDEX [IX_' + @table_name + '_1] ON [dbo].[' + @table_name + ']([comment_id] DESC ) WITH FILLFACTOR = 90  ON [PRIMARY] '
    exec (@sql)
    if (@@ERROR <> 0 ) goto EXEC_FAILED


    -- commit tran
    set @return = 1
    select @return
    return
    EXEC_FAILED:
    --   rollback tran
       set @return = 0
       select @return
       return

    Editamos estos valores y ejecutamos la consulta, con esto creará un board con los datos que hemos ediatado, nos podemos fijar en las secciones predterminadas creadas por los SQL.

    Código: [Seleccionar]
    values ( @name, @description, @type, @admin, @parent_bid, @permission, @pledge_id, @world_id, @page_size , @location , @keyword , @classid )
    Restricciones y permisos de moderación y administración de los board.
    Es bastante simple, si se abre la tabla y se lee, opino que es muy intuitivo. Empezemos:
    Abrimos la tabla dbo.board_rest, alli veremos un total de 6 columnas a rellenar. Y con ello podremos moderar y administrar las los boards como si se tratara de un foro.

    Código: [Seleccionar]
    char_id - Es la ID del personaje al que aplicaremos la restricción.
    pledge_id - Es la ID del clan al que pertenece el personaje.
    bid - Es el board_id, o la ID del board que vamos a permitir o restringir al personaje.
    world_id - Es la ID del mundo donde se juega, por defecto y con un solo mundo el valor es 1.
    permission - Es el permiso que le aplicamos, la numeración es la misma que en la tabla anterior, siendo 255 el permiso avanzado. El 10 es el permiso de escritura y lo tienen todos por defecto, el 255 se recomienda usar para los GM's, para que puedan editar el contenido el community board.
    rest_id - Es la id de la restricción la cual la base de datos la va aumentando, el número va aumentando de manera consecutiva al número de  filas, siendo 1 para la primera fila, 2 para la segunda fila, y así de manera sucesiva, se puede escribir de manera manual, pero tiene que ir en orden.
    NO RESPONDO A LOS E-MAILS