[Pedido] Й possнvel ?
#1

Й possнvel criar um servidor sem tantas includes , somente com zcmd , sscanf e dof2 ?

й necessбrio ter mais includes para criar sistemas como casas / empresas ?

vejo gamemodes com centenas de includes , acho desnecessбrio e mal optimizado. Qual sua opiniгo ?
Й possнvel criar um servidor sem tantas includes , somente com zcmd , sscanf e dof2 ?
Reply
#2

Sim, porйm ficaria uma GM gigantesca, por exemplo, o DOF2 usa funзхes do propio SA-MP para fazer o salvamento, sу que ele meio que otimiza isso por exemplo, vou explicar em forma de cуdigo, vou usar meu comando criar casa:

PHP код:

CMD
:criarcasa(playeridparams[])
{
    new 
precocinteriorFloat:pXFloat:pYFloat:pZString[40];
    
    if(
sscanf(params,"dd",precoc,interior)) return  SCM(playeridINFOA"[ERRO] Comando incorreto! Use: /criarcasa [preзo] [interior]");
    
GetPlayerPos(playeridpXpYpZ);
    
    
    
format(Stringsizeof(String), "Interiores/%d.txt",interior);
    if(
PlayerInfo[playerid][pAdmin] >= 4)
     {
      
CriarCasa(playeridprecocDOF2_GetInt(String"mundo"), Float:pXFloat:pYFloat:pZDOF2_GetFloat(String"x"), DOF2_GetFloat(String"y"), DOF2_GetFloat(String"z"));
     }
    return 
precoc;
}
stock CriarCasa(playeridprecoiIntFloat:CXFloat:CYFloat:CZFloat:ICasaXFloat:ICasaYFloat:ICasaZ)
{
    new 
String[150], INFOC[130];
    
    for(new 
0MAX_CASASi++)
    {
    
format(Stringsizeof(String), "Casas/Casa %d.txt"i);
    
     if(!
DOF2_FileExists(String))
     {
    
DOF2_CreateFile(String);
    
    
DOF2_SetInt(String"Id"i);
    
DOF2_SetInt(String"Preco"preco);
    
DOF2_SetInt(String"Nivel"0);
    
DOF2_SetInt(String"Mundo"iInt);
    
DOF2_SetInt(String"PickU"1273);
    
DOF2_SetInt(String"tDono"0);
    
DOF2_SetInt(String"Trancada"0);
    
    
DOF2_SetFloat(String"IX"ICasaX);
    
DOF2_SetFloat(String"IY"ICasaY);
    
DOF2_SetFloat(String"IZ"ICasaZ);
    
    
DOF2_SetFloat(String"PX"CX);
    
DOF2_SetFloat(String"PY"CY);
    
DOF2_SetFloat(String"PZ"CZ);
    
    
DOF2_SetString(String"Dono""Ninguem");
    
DOF2_SetString(String"Comprar""/comprarcasa");
    
DOF2_SaveFile();
    
    
format(INFOCsizeof(INFOC), "{87CEFA}Dono: {FFFF00}%s\n{87CEFA}Preзo: {FFFF00}%d\n{87CEFA}Nivel: {FFFF00}%d\n\n{87CEFA}Use:{FFFFFF} /comprarcasa"DOF2_GetString(String"Dono"), DOF2_GetInt(String"Preco"), DOF2_GetInt(String"Nivel"));
    
Ctexto[i] = CreateDynamic3DTextLabel(INFOC, -1CXCYCZ30.0INVALID_PLAYER_IDINVALID_VEHICLE_ID1, -1, -1, -1200.0);
    
piCasa[i] = CreateDynamicPickup(DOF2_GetInt(String"PickU"), 1CXCYCZ, -1, -1, -1200.0);
    
    
SCM(playeridINFOA"[SERVER] Vocк criou uma casa!");
    break;
    }
    
    
    }
    return 
1;

em vez de eu usar esse cуdigo que estб na stock toda vez que uma funзгo cria uma casa, eu crio um stock e apenas chamo ela quando quero criar uma casa, й basicamente isso que includes fazem, elas pega um cуdigo enorme e colocam em um public, ai vocк sу chama essa public em vez de colocar um cуdigo enorme em suas funзхes, ou seja, sua GM й mais otimizada com inlude, do que sem (aos crнticos peguem leve se falei merda, e nгo sei se й bom este meu sistema de criar casa)
Reply
#3

Da atй pra descartar o DOF2 e usar o SQLite, consigo fazer um GM dboa sу com o streamer, zcmd e sscanf
Reply
#4

Quote:
Originally Posted by dimy
Посмотреть сообщение
Й possнvel criar um servidor sem tantas includes , somente com zcmd , sscanf e dof2 ?

й necessбrio ter mais includes para criar sistemas como casas / empresas ?

vejo gamemodes com centenas de includes , acho desnecessбrio e mal optimizado. Qual sua opiniгo ?
Й possнvel criar um servidor sem tantas includes , somente com zcmd , sscanf e dof2 ?
Eu digo que depende. As includes vem para ajudar, sу use uma caso ela tenha utilidade. Tem muitos gamemodes de clientes que eu pego e tem inъmeras includes sem uso, entгo evite isso.
Reply
#5

Quote:

vejo gamemodes com centenas de includes , acho desnecessбrio e mal optimizado. Qual sua opiniгo ?

Use apenas as dependкncias (includes) que vocк precisa, simples. Sу vem a ser desnecessбrio se vocк incluir alguma lib que vocк nгo precise utilizar.

Em questгo de otimizaзгo, isso nгo tem nada ver com a quantidade de includes e sim o cуdigo em si. Nгo й sу por que vocк se limita na quantidade das dependкncias que seu script utiliza, que ele й "otimizado", isso nгo define a qualidade do seu cуdigo em questгo de boas prбticas.

Quote:
Originally Posted by GSantana
Посмотреть сообщение
Sim, porйm ficaria uma GM gigantesca, por exemplo, o DOF2 usa funзхes do propio SA-MP para fazer o salvamento, sу que ele meio que otimiza isso por exemplo, vou explicar em forma de cуdigo, vou usar meu comando criar casa
"Otimizar", sobre isso nгo vou falar nada...

Quote:
Originally Posted by GSantana
Посмотреть сообщение
PHP код:

CMD
:criarcasa(playeridparams[])
{
    new 
precocinteriorFloat:pXFloat:pYFloat:pZString[40];
    
    if(
sscanf(params,"dd",precoc,interior)) return  SCM(playeridINFOA"[ERRO] Comando incorreto! Use: /criarcasa [preзo] [interior]");
    
GetPlayerPos(playeridpXpYpZ);
    
    
    
format(Stringsizeof(String), "Interiores/%d.txt",interior);
    if(
PlayerInfo[playerid][pAdmin] >= 4)
     {
      
CriarCasa(playeridprecocDOF2_GetInt(String"mundo"), Float:pXFloat:pYFloat:pZDOF2_GetFloat(String"x"), DOF2_GetFloat(String"y"), DOF2_GetFloat(String"z"));
     }
    return 
precoc;
}
stock CriarCasa(playeridprecoiIntFloat:CXFloat:CYFloat:CZFloat:ICasaXFloat:ICasaYFloat:ICasaZ)
{
    new 
String[150], INFOC[130];
    
    for(new 
0MAX_CASASi++)
    {
    
format(Stringsizeof(String), "Casas/Casa %d.txt"i);
    
     if(!
DOF2_FileExists(String))
     {
    
DOF2_CreateFile(String);
    
    
DOF2_SetInt(String"Id"i);
    
DOF2_SetInt(String"Preco"preco);
    
DOF2_SetInt(String"Nivel"0);
    
DOF2_SetInt(String"Mundo"iInt);
    
DOF2_SetInt(String"PickU"1273);
    
DOF2_SetInt(String"tDono"0);
    
DOF2_SetInt(String"Trancada"0);
    
    
DOF2_SetFloat(String"IX"ICasaX);
    
DOF2_SetFloat(String"IY"ICasaY);
    
DOF2_SetFloat(String"IZ"ICasaZ);
    
    
DOF2_SetFloat(String"PX"CX);
    
DOF2_SetFloat(String"PY"CY);
    
DOF2_SetFloat(String"PZ"CZ);
    
    
DOF2_SetString(String"Dono""Ninguem");
    
DOF2_SetString(String"Comprar""/comprarcasa");
    
DOF2_SaveFile();
    
    
format(INFOCsizeof(INFOC), "{87CEFA}Dono: {FFFF00}%s\n{87CEFA}Preзo: {FFFF00}%d\n{87CEFA}Nivel: {FFFF00}%d\n\n{87CEFA}Use:{FFFFFF} /comprarcasa"DOF2_GetString(String"Dono"), DOF2_GetInt(String"Preco"), DOF2_GetInt(String"Nivel"));
    
Ctexto[i] = CreateDynamic3DTextLabel(INFOC, -1CXCYCZ30.0INVALID_PLAYER_IDINVALID_VEHICLE_ID1, -1, -1, -1200.0);
    
piCasa[i] = CreateDynamicPickup(DOF2_GetInt(String"PickU"), 1CXCYCZ, -1, -1, -1200.0);
    
    
SCM(playeridINFOA"[SERVER] Vocк criou uma casa!");
    break;
    }
    
    
    }
    return 
1;

em vez de eu usar esse cуdigo que estб na stock toda vez que uma funзгo cria uma casa, eu crio um stock e apenas chamo ela quando quero criar uma casa, й basicamente isso que includes fazem, elas pega um cуdigo enorme e colocam em um public, ai vocк sу chama essa public em vez de colocar um cуdigo enorme em suas funзхes, ou seja, sua GM й mais otimizada com inlude, do que sem (aos crнticos peguem leve se falei merda, e nгo sei se й bom este meu sistema de criar casa)
Sу para deixar claro, vocк nгo estб criando um "stock" e sim uma FUNЗГO.

A palavra-chave (keyword) "stock" manda o compilador ignorar funзхes/variбveis nгo utilizadas, nгo gerando um aviso apуs a compilaзгo, ъtil quando vocк estб escrevendo uma biblioteca (lib/include) onde nгo hб garantia que o usuбrio venha a utilizar todas as funзхes que vocк previdenciou. Diferente da crenзa popular do pessoal da comunidade, a keyword stock NГO й um requerimento.

Vocк tambйm parece nгo saber para qual necessidade funзхes utilizam a keyword "public", entгo permita me explicar.

Vocк deve apenas usar para casos como: Executar uma callback com um timer, CallLocal/RemoteFunction ou se pretende executar a callback na instвncia da AMX a partir de um plugin.

Pawn й compilado para bytecode (p-code) que "roda" na mбquina abstrata. A keyword torna a funзгo visнvel para a mбquina abstrata (Vocк tambйm jб deve ter percebido como funзхes com a keyword public tem o seu nome legнvel na .amx), e esse й exatamente o motivo pelo qual as callbacks do SA-MP utilizam a keyword, para que elas possam ser executadas pelo prуprio nome com amx_FindPublic. As funзхes "normais" (Nesse caso, sem a keyword public), sу tem simplesmente seus endereзos em instruзхes "jump". Se o seu caso nгo for nenhum acima, nгo utilize a keyword 'public' em sua funзгo.

Em questгo das outras asneiras que vocк falou, nem vou perder meu tempo, simplesmente nгo vale a pena, mas me irrita ver indivнduos como vocк passando informaзгo invбlida para os usuбrios aqui da board. Pseudointelectual.
Reply
#6

Includes sгo meios fбceis de fazer alguns cуdigos.
Vocк pode usa-las ou tentar fazer de novo algo que alguйm jб fez.

Os plugins sгo ferramentas que agilizam MUITO ou atй criam meios de fazer algumas coisas no SAMP.
Vocк pode usa-los ou nгo, aн й da sua escolha.

Mas o trio indispensбvel й sscanf, streamer e ZCMD (ou um outro processador de comandos).
O mйtodo de salvamento й o SQLite, й nativo e fбcil de usar.
Reply
#7

Quote:
Originally Posted by BrunoBM23
Посмотреть сообщение
Use apenas as dependкncias (includes) que vocк precisa, simples. Sу vem a ser desnecessбrio se vocк incluir alguma lib que vocк nгo precise utilizar.

Em questгo de otimizaзгo, isso nгo tem nada ver com a quantidade de includes e sim o cуdigo em si. Nгo й sу por que vocк se limita na quantidade das dependкncias que seu script utiliza, que ele й "otimizado", isso nгo define a qualidade do seu cуdigo em questгo de boas prбticas.


"Otimizar", sobre isso nгo vou falar nada...



Sу para deixar claro, vocк nгo estб criando um "stock" e sim uma FUNЗГO.

A palavra-chave (keyword) "stock" manda o compilador ignorar funзхes/variбveis nгo utilizadas, nгo gerando um aviso apуs a compilaзгo, ъtil quando vocк estб escrevendo uma biblioteca (lib/include) onde nгo hб garantia que o usuбrio venha a utilizar todas as funзхes que vocк previdenciou. Diferente da crenзa popular do pessoal na comunidade, a keyword stock NГO й um requerimento.

Vocк tambйm parece nгo saber para qual necessidade funзхes utilizam a keyword "public", entгo permita me explicar. Vocк deve apenas usar para casos "especiais", como: Executar uma callback com um timer, CallLocal/RemoteFunction etc. Pawn й compilado para bytecode (p-code) que "roda" na mбquina abstrata. A keyword torna a funзгo visнvel para a mбquina abstrata (Vocк tambйm jб deve ter percebido como funзхes com a keyword public tem o seu nome legнvel na .amx), permitindo que ela possa ser executada pelo nome, e esse й exatamente o motivo pelo qual as callbacks do SA-MP utilizam a keyword, para que elas possam ser executadas pelo nome com amx_FindPublic. As funзхes "normais" (Nesse caso, sem a keyword public), sу tem simplesmente seus endereзos em instruзхes "jump". Tambйm, como dito pelo ******, funзхes com a keyword public usam mais memуria.

Em questгo das outras asneiras que vocк falou, nem vou perder meu tempo, simplesmente nгo vale a pena, mas me irrita ver indivнduos como vocк repassando informaзгo invбlida para os usuбrios aqui da board. Pseudointelectual.
falou falou falou e falou merda, estou dando um exemplo para o cara, nгo falei que й assim que funciona, talvez a maneira do exemplo foi equivocada, no caso das includes seria como chamar uma public colocando seus parвmetros, CriarCasa(playerid, precoc, DOF2_GetInt(String, "mundo"), FloatX, FloatY, FloatZ, DOF2_GetFloat(String, "x"), DOF2_GetFloat(String, "y"), DOF2_GetFloat(String, "z")); no caso a funзгo de criar casa nгo й a melhor para exemplo, mas oque quero dizer й que й melhor usar: CriarCasa(playerid, preзo,mundo, FloatX, FloatY, FloatZ, X, Y, Z); e preencher os parвmetros da stock/public do que usar o cуdigo que estб na stock e public varias vezes, ficou meio confuso de entender mas para bons entendedores, um pingo й um i
Reply
#8

Quote:
Originally Posted by BrunoBM23
Посмотреть сообщение
Use apenas as dependкncias (includes) que vocк precisa, simples. Sу vem a ser desnecessбrio se vocк incluir alguma lib que vocк nгo precise utilizar.

Em questгo de otimizaзгo, isso nгo tem nada ver com a quantidade de includes e sim o cуdigo em si. Nгo й sу por que vocк se limita na quantidade das dependкncias que seu script utiliza, que ele й "otimizado", isso nгo define a qualidade do seu cуdigo em questгo de boas prбticas.


"Otimizar", sobre isso nгo vou falar nada...



Sу para deixar claro, vocк nгo estб criando um "stock" e sim uma FUNЗГO.

A palavra-chave (keyword) "stock" manda o compilador ignorar funзхes/variбveis nгo utilizadas, nгo gerando um aviso apуs a compilaзгo, ъtil quando vocк estб escrevendo uma biblioteca (lib/include) onde nгo hб garantia que o usuбrio venha a utilizar todas as funзхes que vocк previdenciou. Diferente da crenзa popular do pessoal na comunidade, a keyword stock NГO й um requerimento.

Vocк tambйm parece nгo saber para qual necessidade funзхes utilizam a keyword "public", entгo permita me explicar.

Vocк deve apenas usar para casos como: Executar uma callback com um timer, CallLocal/RemoteFunction etc. Pawn й compilado para bytecode (p-code) que "roda" na mбquina abstrata. A keyword torna a funзгo visнvel para a mбquina abstrata (Vocк tambйm jб deve ter percebido como funзхes com a keyword public tem o seu nome legнvel na .amx), e esse й exatamente o motivo pelo qual as callbacks do SA-MP utilizam a keyword, para que elas possam ser executadas pelo prуprio nome com amx_FindPublic. As funзхes "normais" (Nesse caso, sem a keyword public), sу tem simplesmente seus endereзos em instruзхes "jump". Se o seu caso nгo for nenhum acima, nгo utilize a keyword 'public' em sua funзгo.

Em questгo das outras asneiras que vocк falou, nem vou perder meu tempo, simplesmente nгo vale a pena, mas me irrita ver indivнduos como vocк passando informaзгo invбlida para os usuбrios aqui da board. Pseudointelectual.
outra coisa, vou usar as prуpias stock do DOF2 para provar que vocк estб errado olha ai

PHP код:
native DOF2_CreateFile(file[],password[]="");
stock DOF2::CreateFile (file [], password [] = "")
{
    if (!
DOF2::FileExists (file))
    {
        new 
Filefopen (fileio_append);
        
        if (
fclose (f))
        {
            if (
password [0])
                return 
DOF2::SetInt (fileUSER_PW_HASH_KEYDOF2::num_hash (password));
            return 
1;
        }
    }
    return 
0;

ai vocк preenche DOF2_CreateFile(file[],password[]=""); e й executado oque estб na stock, acho que o pseudointelectual aqui й vc que nгo sabe interpretar um texto
Reply
#9

Quote:
Originally Posted by GSantana
Посмотреть сообщение
falou falou falou e falou merda, estou dando um exemplo para o cara, nгo falei que й assim que funciona, talvez a maneira do exemplo foi equivocada, no caso das includes seria como chamar uma public colocando seus parвmetros, CriarCasa(playerid, precoc, DOF2_GetInt(String, "mundo"), FloatX, FloatY, FloatZ, DOF2_GetFloat(String, "x"), DOF2_GetFloat(String, "y"), DOF2_GetFloat(String, "z")); no caso a funзгo de criar casa nгo й a melhor para exemplo, mas oque quero dizer й que й melhor usar: CriarCasa(playerid, preзo,mundo, FloatX, FloatY, FloatZ, X, Y, Z); e preencher os parвmetros da stock/public do que usar o cуdigo que estб na stock e public varias vezes, ficou meio confuso de entender mas para bons entendedores, um pingo й um i
O ъnico que falou e continua falando merda й vocк. Se vocк nгo tem o conhecimento necessбrio para ajudar alguйm, nгo ajude. E por favor, veja o conteъdo que eu providencei e continuo providenciando no fуrum , acho que estб bem claro quem realmente sabe o que estб falando.
Reply
#10

Quote:
Originally Posted by BrunoBM23
Посмотреть сообщение
O ъnico que falou e continua falando merda й vocк. Se vocк nгo tem o conhecimento necessбrio para ajudar alguйm, nгo ajude.
se estou a falar merda. Pq a include do DOF2 funciona exatamente igual meu comando de criar casa ? a include cria uma stock com os parвmetros a serem preenchidos, e quando se usa DOF2::CreateFile(File, passaword); й executado oque estб na stock, se dъvida abra a include e olhe vocк mesmo
Reply
#11

Quote:
Originally Posted by GSantana
Посмотреть сообщение
se estou a falar merda. Pq a include do DOF2 funciona exatamente igual meu comando de criar casa ? a include cria uma stock com os parвmetros a serem preenchidos, e quando se usa DOF2::CreateFile(File, passaword); й executado oque estб na stock, se dъvida abra a include e olhe vocк mesmo
Sim, vocк estб falando merda. Nunca disse que a include nгo faz o que promete fazer. E novamente, vocк nгo estб criando uma "stock" e sim uma funзгo.
Reply
#12

Quote:
Originally Posted by BrunoBM23
Посмотреть сообщение
Sim, vocк estб falando merda. Nunca disse que a include nгo faz o que promete fazer. E novamente, vocк nгo estб criando uma "stock" e sim uma funзгo.
a Stock constitui a funзгo cara, й o mesmo que vocк falar que uma variбvel ou String nгo й varбvel ou String e sim uma funзгo, a funзгo estб dentro da Stock, vocк fez uma infeliz interpretaзгo do que eu disse, foi refutado e agora nгo assume que estб errado
Reply
#13

Quote:
Originally Posted by GSantana
Посмотреть сообщение
a Stock constitui a funзгo cara, й o mesmo que vocк falar que uma variбvel ou String nгo й varбvel ou String e sim uma funзгo, a funзгo estб dentro da Stock, vocк fez uma infeliz interpretaзгo do que eu disse, foi refutado e agora nгo assume que estб errado
Eu errado? Por favor, leia as prуprias asneiras que vocк escreveu. Й bem уbvio quem й o imbecнl aqui.
Reply
#14

@GSantana

Vocк nгo entendeu o que o Bruno quis dizer, a keyword stock nгo й uma funзгo.

Vocк pode simplesmente chamar:

PHP код:
 CriarCasa(params[]) { } 
ao invйs de

PHP код:
 stock CriarCasa(params[]) { } 
A keyword stock sу faz o compilador ignorar o warning de quando a funзгo/variбvel nгo й utilizada, basta vocк fazer um teste em seu compilador e verб.
Reply
#15

Quote:
Originally Posted by GSantana
Посмотреть сообщение
a Stock constitui a funзгo cara, й o mesmo que vocк falar que uma variбvel ou String nгo й varбvel ou String e sim uma funзгo, a funзгo estб dentro da Stock, vocк fez uma infeliz interpretaзгo do que eu disse, foi refutado e agora nгo assume que estб errado
Cara, recomendo que estude mais antes de falar, nгo foi erro de interpretaзгo do Bruno, vocк estб se referindo a uma coisa com nome de outra totalmente diferente
Reply
#16

Quote:
Originally Posted by CaioTJF
Посмотреть сообщение
@GSantana

Vocк nгo entendeu o que o Bruno quis dizer, a keyword stock nгo й uma funзгo.

Vocк pode simplesmente chamar:

PHP код:
 CriarCasa(params[]) { } 
ao invйs de

PHP код:
 stock CriarCasa(params[]) { } 
A keyword stock sу faz o compilador ignorar o warning de quando a funзгo/variбvel nгo й utilizada, basta vocк fazer um teste em seu compilador e verб.
no exemplo que dei eu usei CriarCasa(params[]); e disse que a funзгo estб na stock, qual o erro do que disse ?
Reply
#17

Quote:
Originally Posted by GSantana
Посмотреть сообщение
a Stock constitui a funзгo cara, й o mesmo que vocк falar que uma variбvel ou String nгo й varбvel ou String e sim uma funзгo, a funзгo estб dentro da Stock, vocк fez uma infeliz interpretaзгo do que eu disse, foi refutado e agora nгo assume que estб errado
Reply
#18

Quote:
Originally Posted by GSantana
Посмотреть сообщение
no exemplo que dei eu usei CriarCasa(params[]); e disse que a funзгo estб na stock, qual o erro do que disse ?
https://sampwiki.blast.hk/wiki/Scripting_Basics#Functions
Leia a prуpria wiki do samp e saberб seu erro
Reply
#19

Quote:
Originally Posted by GSantana
Посмотреть сообщение
no exemplo que dei eu usei CriarCasa(params[]); e disse que a funзгo estб na stock, qual o erro do que disse ?
Estude antes de vir falar. Й vocк que nгo consegue nem interpretar a prуpria porcaria que vocк escreveu
Reply
#20

Quote:
Originally Posted by GSantana
Посмотреть сообщение
no exemplo que dei eu usei CriarCasa(params[]); e disse que a funзгo estб na stock, qual o erro do que disse ?
Eu entendi oque quis dizer, ele quis mostrar como uma include funciona, meio que facilitando e diminuindo, talvez ele se expressou mau, oque eu entendi й que oque elr quis dizer oque o cуdigo que estб na Stock pode ser usado em qualquer lugar, e se estivese no comando sу seria usado ali, por isso na stock й mais vantagem. Bom isso foi oque interpretei
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)