[Ajuda] Programaзгo Modular
#1

Olб galera. Eu gostaria de saber sobre a tal programaзгo modular. Achei vбrios tutoriais e cheguei na conclusгo que isso se trata da divisгo de tudo que farб parte do servidor. Essa divisгo seria feita por arquivos .inc onde iriam conter os sistemas. A minha pergunta й a seguinte: Como eu crio esses arquivos, ou melhor, o que contйm nesses arquivos ? Eu tentei criar um documento em branco e coloquei a include a_samp, logo apуs tentei usar a callback onplayerconnect e colocar uma mensagem, apenas para testar esse tipo de programaзгo. Salvei com a extensгo .inc e ao incluir meu modulo em meu GM, deu um erro. O que fiz estб errado, mas eu gostaria de faze isso, entгo me ajudem por favor.
Reply
#2

O arquivo "mуdulo" serб embutido no arquivo principal, entгo se vocк faz isto no seu GM:

PHP Code:
#include <a_samp>
#include <modulo>
public OnPlayerConnect(playerid)
{
     
// fazer algo algo
     
return 1;

E fizer a mesma coisa no mуdulo, vocк terб o exemplo acima duplicado.

O mуdulo serб embutido no GM final.

Se modulo.inc for

PHP Code:
MinhaFuncao()
{
    
// Algo

o GM final serб:

PHP Code:
#include <a_samp>
MinhaFuncao()
{
    
// Algo
}
public 
OnPlayerConnect(playerid)
{
     
// fazer algo algo
     
return 1;

Reply
#3

Ou poderб criar callback hook

Com a include y_hooks

Vocк poderar criar mуdulos com calbacks,


GAMEMODE
PHP Code:
#include <a_samp>
#include "modulo.inc"
public OnGameModeInit()
{
    
// normal
    
return 1;
}
public 
OnPlayerConnect(playerid

     
// normal
     
return 1

MODULO
PHP Code:
#include <YSI\y_hooks>
hook OnPlayerConnect(playerid

     
// alguma coisa separada
     
return 1

Reply
#4

Programaзгo Modular nгo necessariamente teria de trabalhar com extensхes .inc, mas sim quais preferir, como .models, ou a que couber a seu gosto. A Programaзгo Modular ela trabalha de uma maneira em que vocк pode se organizar melhor inserindo informaзхes e partes de um script em um molde, por exemplo, em meu servidor eu tenho varias etapas: defines, variбveis, callbacks, etc...Entгo para uma melhor organizaзгo, onde ha por exemplo as minhas variбveis, eu as coloco dentro de um arquivo .models em linha corrida, sem ser dentro de quaisquer callbacks e sem possuir a declaraзгo da include a_samp ou outras (uma vez que eu utilizar este molde abaixo as includes declaradas) para ficar mais fбcil de me achar. Irei lhe dar um exemplo:

Meu cуdigo sem moldes:
pawn Code:
#include <a_samp>

new varA;
new varB;
new varC;

new varD[3] = "abc";


public OnGameModeInit()
{
....

Meu cуdigo com moldes:
pawn Code:
#include <a_samp>

#include "modulos/vars.models" //caminho: scriptfiles > modulos > vars.models


public OnGameModeInit()
{
....
E no meu vars.models eu teria simplesmente:
pawn Code:
new varA;
new varB;
new varC;

new varD[3] = "abc";
Reply
#5

Se tiver um conhecimento mais avanзado, leia isso.
Temos tambйm um tutorial sobre isso na board PT-BR, Aqui.
Reply
#6

Quote:
Originally Posted by gelton
View Post
Ou poderб criar callback hook

Com a include y_hooks

Vocк poderar criar mуdulos com calbacks,


GAMEMODE
PHP Code:
#include <a_samp>
#include "modulo.inc"
public OnGameModeInit()
{
    
// normal
    
return 1;
}
public 
OnPlayerConnect(playerid

     
// normal
     
return 1

MODULO
PHP Code:
#include <YSI\y_hooks>
hook OnPlayerConnect(playerid

     
// alguma coisa separada
     
return 1

Eu uso este metodo.

Mas deixe dizer que aconselho a usar 1 hook manual em cada callback para que esta seja sempre a 1Є a ser chamada.
Reply
#7

Quote:
Originally Posted by PT
View Post
deixe dizer que aconselho a usar 1 hook manual em cada callback para que esta seja sempre a 1Є a ser chamada.
Sim eu faзo isso, coloquei ai so para citar um exemplo
esse metedo e bem fбcil, uso bastante!
Reply
#8

Quote:
Originally Posted by arakuta
View Post
O arquivo "mуdulo" serб embutido no arquivo principal, entгo se vocк faz isto no seu GM:

PHP Code:
#include <a_samp>
#include <modulo>
public OnPlayerConnect(playerid)
{
     
// fazer algo algo
     
return 1;

E fizer a mesma coisa no mуdulo, vocк terб o exemplo acima duplicado.

O mуdulo serб embutido no GM final.

Se modulo.inc for

PHP Code:
MinhaFuncao()
{
    
// Algo

o GM final serб:

PHP Code:
#include <a_samp>
MinhaFuncao()
{
    
// Algo
}
public 
OnPlayerConnect(playerid)
{
     
// fazer algo algo
     
return 1;

Tentei fazer algo bбsico apenas para testes. Mas ao chamar meu mуdulo, o compilador acusa um erro. Eu crei um arquivo com uma simples variбvel: new haha[123]; e salvei com a extensгo .inc dentro da pasta SCRIPTFILES > MODULOS
Quando eu coloco a #include teste.inc e compilo, apresenta o seguinte erro: fatal error 100: cannot read from file: "teste.inc"

Como devo proceder ?
Reply
#9

Quote:
Originally Posted by RafaelOsio
View Post
pasta SCRIPTFILES > MODULOS
Quando eu coloco a #include teste.inc e compilo, apresenta o seguinte erro: fatal error 100: cannot read from file: "teste.inc"
Como devo proceder ?
Cria uma pasta MODULOS na pasta Gamemodes e coloque o seus modos .inc na tal pasta

Agora va na sua GM e no caminho do modulo mude para

#define "MODULOS/teste.inc"

OBS:
Nгo ficara na pasta scriptfiles, mais sim na pasta gamemodes, teste como mesmo, e fale se funciona
Reply
#10

Quote:
Originally Posted by gelton
View Post
Cria uma pasta MODULOS na pasta Gamemodes e coloque o seus modos .inc na tal pasta

Agora va na sua GM e no caminho do modulo mude para

#define "MODULOS/teste.inc"

OBS:
Nгo ficara na pasta scriptfiles, mais sim na pasta gamemodes, teste como mesmo, e fale se funciona
Funcionou! Muito obrigado.
agora eu tenho outra dъvida: eu tenho um sistema que sera ativado quando eu utilizar um comando, eu posso colocar #define "MODULOS/teste.inc dentro desse comando para chamar o meu modulo ?
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)