SA-MP Forums Archive
[Ajuda] Programaзгo Modular - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Programaзгo Modular (/showthread.php?tid=570577)



Programaзгo Modular - RafaelOsio - 11.04.2015

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.


Re: Programaзгo Modular - arakuta - 11.04.2015

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;




Re: Programaзгo Modular - D3sconn3ct - 11.04.2015

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




Re: Programaзгo Modular - Bruno13 - 11.04.2015

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";



Re: Programaзгo Modular - ProKillerpa - 11.04.2015

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


Re: Programaзгo Modular - PT - 11.04.2015

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.


Re: Programaзгo Modular - D3sconn3ct - 11.04.2015

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!


Re: Programaзгo Modular - RafaelOsio - 11.04.2015

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 ?


Re: Programaзгo Modular - D3sconn3ct - 11.04.2015

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


Re: Programaзгo Modular - RafaelOsio - 11.04.2015

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 ?