[Tool/Web/Other] Estrutura em mуdulos para gamemodes de grande porte
#1

Introduзгo
Desde que RebeloX ofereceu а board um tutorial de programaзгo modular, notei que alguns membros tкm tido dъvidas sobre como organizar seu gamemode dessa forma. Portanto, vou disponibilizar uma estrutura que organizei apуs misturar minhas ideias com as contidas em alguns gamemodes que usam desse mйtodo de organizaзгo.


Organizaзгo das pastas


Pasta server:

Na pasta server ficam os arquivos e pastas que vкm quando й baixado o samp-server para Windows. A ъnica modificaзгo feita serб a retirada da pasta pawno, que terб seus arquivos movidos.

Sendo assim, a pasta server terб a seguinte organizaзгo:

Pasta source:

Nesta pasta serгo criadas as seguintes pastas:
  • build: Os arquivos da pasta pawno, incluindo a pasta include, devem ser movidos para esta pasta.
  • lib: Aqui sгo colocadas as includes baixadas pelo desenvolvedor. Ex: zcmd
  • lib\plugins: Aqui sгo colocadas as includes que vкm junto com os plugins. Ex: sscanf2
  • mod: Esta й a principal pasta. Й onde todos os sistemas serгo desenvolvidos. Para diferenciar o tipo de arquivo que estamos tratando, optei por dar aos mуdulos a extensгo .p, o que descobri ser possнvel ao ver o gamemode dynamic roleplay, de RebeloX. Portanto, se vocк desenvolveu o sistema de jogadores, salvarб como player.p.
Alйm das pastas mencionadas, criaremos mais 3 arquivos:
  • main.h: Esta ideia foi tirada do gamemode RioRPG. Neste arquivo, manteremos as definiзхes (cores, dialogs), variбveis, arrays, estruturas de dados e afins. O conteъdo do famoso "topo do gamemode".
  • main.pwn: Este й o arquivo que serб compilado. Nele vocк deve incluir as bibliotecas e mуdulos, alйm de chamar as funзхes dos mуdulos (ver arquivo main.h - hooking).
  • compiler.bat: Criaremos este arquivo para, alйm de compilar o main.pwn, mover o arquivo main.amx, que serб gerado na pasta source, para a pasta server/gamemodes.
- compiler.bat

Код:
build\pawncc main.pwn -(+ -;+
move main.amx ..\server\gamemodes
Para entender mais sobre os argumentos: https://sampforum.blast.hk/showthread.php?tid=569228

Portanto, a pasta source ficarб da seguinte maneira:


Finalizando


Como dito no tнtulo, esta estrutura foi pensada para gamemodes de grande porte, como RPG e Roleplay. Se vocк possui um pequeno servidor apenas para se juntar com alguns amigos para que fiquem se matando, nгo hб nenhum sentido em se organizar de tal forma.

Acredito que apenas com conteъdo escrito, alguns nгo conseguirгo compreender o tуpico. Portanto, segue o link para download da pasta jб estruturada, com uma include e um plugin baixados para melhor entendimento, alйm de um mуdulo criado.

http://www.mediafire.com/download/as...e/gamemode.rar


Tуpicos com grandes explicaзхes estгo longe de ser meu forte. Sendo assim, peзo que caso alguйm ache que algo nгo ficou claro, comente abaixo para que eu possa esclarecer.


Crйditos a RebeloX pelo Dynamic Roleplay e a steki, pelo RioRPG.
Reply
#2

Ficou muito bom e facil de se entender.
+rep
Reply
#3

Eu uso algo muito parecido com isso por acaso nгo uso esse mйtodo para compilar, qual a diferenзa?


Eu uso a extensгo .pwn nos modulos em vez de .inc ou .p
Reply
#4

Gostei, eu uso a extensгo .module... Penso que nгo tem diferenзa a extensгo pois apenas serve para diferenciar.

Eu coloquei o cуdigo do compiler do Sublime para compilar logo o ficheiro main sem estarmos nele...
Reply
#5

Sinceramente nгo gosto deste mйtodo especificamente de organizaзгo. prefiro deixar meu servidor organizado com a estrutura padrгo e apenas criar uma pasta para modulos dentro da include, e no local da lib manter em "pawno/includes" mesmo.
Reply
#6

Na minha opiniгo a organizaзгo parte de cada, cada um organiza seus arquivos binбrios, seus arquivos de perssistencia, source e etc do forma que achar melhor, achei bem manhosa essa parte de organizaзгo.

Relaзгo a extensгo dos arquivos qualquer merda vai rodar ,vai compilar, entгo organizaзгo de suas estruturas a parte. Run once run anywhere.

Quote:
Originally Posted by PT
Посмотреть сообщение
Eu uso algo muito parecido com isso por acaso nгo uso esse mйtodo para compilar, qual a diferenзa?

Eu uso a extensгo .pwn nos modulos em vez de .inc ou .p
Me estranha vocк perguntando isto.
Reply
#7

Quote:
Originally Posted by PT
Посмотреть сообщение
Eu uso algo muito parecido com isso por acaso nгo uso esse mйtodo para compilar, qual a diferenзa?


Eu uso a extensгo .pwn nos modulos em vez de .inc ou .p
Como eu disse, o arquivo main.pwn estб na pasta source. Ao compilar, o main.amx ficarб lб tambйm. O compiler.bat contйm a instruзгo move para levar o .amx atй a pasta server/gamemodes.

Quote:
Originally Posted by Day_
Посмотреть сообщение
Sinceramente nгo gosto deste mйtodo especificamente de organizaзгo. prefiro deixar meu servidor organizado com a estrutura padrгo e apenas criar uma pasta para modulos dentro da include, e no local da lib manter em "pawno/includes" mesmo.
Quote:
Originally Posted by riajedA
Посмотреть сообщение
Na minha opiniгo a organizaзгo parte de cada, cada um organiza seus arquivos binбrios, seus arquivos de perssistencia, source e etc do forma que achar melhor, achei bem manhosa essa parte de organizaзгo.
Cada um tem seu mйtodo. Eu apenas propus uma estrutura para facilitar para os que se confundem.
Reply
#8

Quote:
Originally Posted by riajedA
Посмотреть сообщение
Me estranha vocк perguntando isto.
Nunca usei nenhum .bat para compilar nгo tinha percebido muito bem como ele tinha explicado.
Pelo que vi nгo farб diferenзa mesmo nenhuma sу na organizaзгo mesmo.

Quote:
Originally Posted by zPain
Посмотреть сообщение
Como eu disse, o arquivo main.pwn estб na pasta source. Ao compilar, o main.amx ficarб lб tambйm. O compiler.bat contйm a instruзгo move para levar o .amx atй a pasta server/gamemodes.
Ah agora percebi valeu!
Reply
#9

Gostei da tua forma de organizaзгo e a simplicidade do tуpico, tambйm agradeзo pela referкncia ao meu tutorial xD
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)