CMD:criarcasa(playerid, params[])
{
new precoc, interior, Float:pX, Float:pY, Float:pZ, String[40];
if(sscanf(params,"dd",precoc,interior)) return SCM(playerid, INFOA, "[ERRO] Comando incorreto! Use: /criarcasa [preзo] [interior]");
GetPlayerPos(playerid, pX, pY, pZ);
format(String, sizeof(String), "Interiores/%d.txt",interior);
if(PlayerInfo[playerid][pAdmin] >= 4)
{
CriarCasa(playerid, precoc, DOF2_GetInt(String, "mundo"), Float:pX, Float:pY, Float:pZ, DOF2_GetFloat(String, "x"), DOF2_GetFloat(String, "y"), DOF2_GetFloat(String, "z"));
}
return precoc;
}
stock CriarCasa(playerid, preco, iInt, Float:CX, Float:CY, Float:CZ, Float:ICasaX, Float:ICasaY, Float:ICasaZ)
{
new String[150], INFOC[130];
for(new i = 0; i < MAX_CASAS; i++)
{
format(String, sizeof(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(INFOC, sizeof(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, -1, CX, CY, CZ, 30.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, -1, -1, -1, 200.0);
piCasa[i] = CreateDynamicPickup(DOF2_GetInt(String, "PickU"), 1, CX, CY, CZ, -1, -1, -1, 200.0);
SCM(playerid, INFOA, "[SERVER] Vocк criou uma casa!");
break;
}
}
return 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 ? |
|
vejo gamemodes com centenas de includes , acho desnecessбrio e mal optimizado. Qual sua opiniгo ? |
|
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 код:
|
|
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. |
X, Float
Y, Float
Z, 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, Float
X, Float
Y, Float
Z, 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
|
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. |
native DOF2_CreateFile(file[],password[]="");
stock DOF2::CreateFile (file [], password [] = "")
{
if (!DOF2::FileExists (file))
{
new File: f = fopen (file, io_append);
if (fclose (f))
{
if (password [0])
return DOF2::SetInt (file, USER_PW_HASH_KEY, DOF2::num_hash (password));
return 1;
}
}
return 0;
}
|
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"), Float
X, Float Y, Float Z, 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, Float X, Float Y, Float Z, 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 |
, acho que estб bem claro quem realmente sabe o que estб falando.
|
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
|
|
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
|
Por favor, leia as prуprias asneiras que vocк escreveu. Й bem уbvio quem й o imbecнl aqui.
CriarCasa(params[]) { }
stock CriarCasa(params[]) { }
|
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
|
|
@GSantana
Vocк nгo entendeu o que o Bruno quis dizer, a keyword stock nгo й uma funзгo. Vocк pode simplesmente chamar: PHP код:
PHP код:
|
|
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
|
|
no exemplo que dei eu usei CriarCasa(params[]); e disse que a funзгo estб na stock, qual o erro do que disse ?
|
|
no exemplo que dei eu usei CriarCasa(params[]); e disse que a funзгo estб na stock, qual o erro do que disse ?
|
|
no exemplo que dei eu usei CriarCasa(params[]); e disse que a funзгo estб na stock, qual o erro do que disse ?
|