[Pedido] Visualizaзгo e correзгo
#1

Vim estudando algumas funзхes, um pouco de matriz e enumerador de valores.

Visualizem e corrijam o que estiver nгo de tгo agrado e o incorreto.

Funзгo abaixo.
PHP код:
#include <a_samp>
#include <pawn.cmd>
enum InfoVars_{
a,
    
b,
        
c,
            
d
}
new var[
InfoVars_][MAX_PLAYERS];
CMD:init(playerid)
{
    if(var[
a][playerid] == 0)
    {
        var[
a][playerid] = 5;
        if(var[
a][playerid] != 10)
        {
            var[
b][playerid] = 10;
            if(var[
b][playerid] == 10)
            {
                var[
c][playerid] = 10;
                if(var[
c][playerid] == 10)
                {
                    var[
d][playerid] = 5;
                    if(var[
d][playerid] != 10)
                    {
                        
/* Aqui, simplesmente eu poderia ter adicionado a matriz em valor para se ajuntar junto com a variбvel flutuante 'pos'.
                           Mas eu preferi fazer algo mais organizado e para vocкs poderem visualizar com uma boa visгo. */
                        
new Float:pos[3], Float:r[1];
                        
GetPlayerPos(playeridpos[0], pos[1], pos[2]);
                        
GetPlayerFacingAngle(playeridr[0]);
                        
CreateVehicle(520pos[0], pos[1]+3pos[2], r[0]+3, -1, -1, -10);
                    }
                    else
                        return 
SendClientMessage(playerid, -1"Vocк nгo possui 10 pontos em var(d).");
                }
            }
        }
        else
            return 
SendClientMessage(playerid, -1"Vocк nгo possui 10 pontos em var(a).");
    }
    return 
true;
}
CMD:repoin_var_d(playerid)
{
    if(var[
d][playerid] != 10)
    {
        
SendClientMessage(playerid, -1"Vocк possui seus pontos em var(d) inseridos.");
        var[
d][playerid] = 10;
    }
    return 
true;
}
CMD:repoin_var_a(playerid)
{
    if(var[
a][playerid] != 10)
    {
        
SendClientMessage(playerid, -1"Vocк possui seus pontos em var(a) inseridos.");
        var[
a][playerid] = 10;
    }
    return 
true;
}
CMD:visu(playerid)
{
    new 
str[125];
    
format(strsizeof(str), "Vocк possui %d pontos em var(a)\nVocк possui %d pontos em var(b)\nVocк possui %d pontos em var©\nVocк possui %d em var(d)", var[a][playerid], var[b][playerid], var[c][playerid], var[d][playerid]);
    
ShowPlayerDialog(playerid0015DIALOG_STYLE_MSGBOX"Seus pontos em var's"str"Fechar","");
    return 
true;

Reply
#2

Queimei o cйrebro.
PHP код:
#include <a_samp>
#include <pawn.cmd>
enum InfoVars_{
a,
    
b,
        
c,
            
d
}
new var[
InfoVars_][MAX_PLAYERS];
CMD:init(playerid)
{
    if(var[
a][playerid] == 0//ser a for ingual a 0
    
{
        var[
a][playerid] = 5//a irб ser = 5
        
if(var[a][playerid] != 10// a for diferente de 10
        
{
            var[
b][playerid] = 10//b irб ser = 10
            
if(var[b][playerid] == 10//ser b for ingual a 10
            
{
                var[
c][playerid] = 10// c irб ser = 10
                
if(var[c][playerid] == 10)//ser c for ingual a 10
                
{
                    var[
d][playerid] = 5;//d irб ser = 5
                    
if(var[d][playerid] != 10)//ser  d for diferente de 10
                    
{
                        new 
Float:pos[3], Float:r[1];
                        
GetPlayerPos(playeridpos[0], pos[1], pos[2]);
                        
GetPlayerFacingAngle(playeridr[0]);
                        
CreateVehicle(520pos[0], pos[1]+3pos[2], r[0]+3, -1, -1, -10);
                        
//por mim
                         
new Float:pos[5];
                        
GetPlayerPos(playeridpos[0], pos[1], pos[2]);
                        
GetPlayerFacingAngle(playeridpos[4]);
                        
CreateVehicle(520pos[0], pos[1]+3pos[2], pos[3]+3, -1, -1, -10);
                        
                        
                        
                    }
                    else
                        return 
SendClientMessage(playerid, -1"Vocк nгo possui 10 pontos em var(d).");
                }
            }
        }
        else
            return 
SendClientMessage(playerid, -1"Vocк nгo possui 10 pontos em var(a).");
    }
    return 
true;
}
CMD:repoin_var_d(playerid)
{
    if(var[
d][playerid] != 10)//olhei
    
{
        
SendClientMessage(playerid, -1"Vocк possui seus pontos em var(d) inseridos.");
        var[
d][playerid] = 10;
    }
    return 
true;
}
CMD:repoin_var_a(playerid)//olhei
{
{
    if(var[
a][playerid] != 10)
    {
        
SendClientMessage(playerid, -1"Vocк possui seus pontos em var(a) inseridos.");
        var[
a][playerid] = 10;
    }
    return 
true;
}
CMD:visu(playerid)//nem olhei
{
    new 
str[125];
    
format(strsizeof(str), "Vocк possui %d pontos em var(a)\nVocк possui %d pontos em var(b)\nVocк possui %d pontos em var©\nVocк possui %d em var(d)", var[a][playerid], var[b][playerid], var[c][playerid], var[d][playerid]);
    
ShowPlayerDialog(playerid0015DIALOG_STYLE_MSGBOX"Seus pontos em var's"str"Fechar","");
    return 
true;

@Edit
Uma dica
Speed Tests:

Array (10 Atribuiзхes):2444,2448,2473
Nгo-Array (10 Atribuiзхes):972,975,963


PHP код:
//Lento
new Float:pos[3];
GetPlayerPos(playeridpos[0], pos[1], pos[2]); 
PHP код:
//Rapido
new Float:xFloat:yFloat:z;
GetPlayerPos(playeridxz); 
Reply
#3

Uma duvida quanto a isso...
Quote:
Originally Posted by Marllun
Посмотреть сообщение
PHP код:
//Lento
new Float:pos[3];
GetPlayerPos(playeridpos[0], pos[1], pos[2]); 
PHP код:
//Rapido
new Float:xFloat:yFloat:z;
GetPlayerPos(playeridxz); 
Porque utilizar variбveis declaradas simples EX: Float:X, Float:Y, Float:Z;
Seria mais rapido do que utilizar um vetor de float EX: Float:Pos[3]; ??
Reply
#4

Por quer sim, olhe https://sampforum.blast.hk/showthread.php?tid=580289

faзa o test https://pastebin.com/aMkNtaC2
Reply
#5

Quote:
Originally Posted by AdrianoStk
Посмотреть сообщение
Uma duvida quanto a isso...


Porque utilizar variбveis declaradas simples EX: Float:X, Float:Y, Float:Z;
Seria mais rapido do que utilizar um vetor de float EX: Float:Pos[3]; ??
Compare os cуdigo em Assembly:

new Float:X, Float:Y, Float:Z (Mais eficiente, em questгo de desempenho)
PHP код:
push.c 0 
push
.c 0 
push
.c 0 
push
.adr fffffff4 
push
.adr fffffff8 
push
.adr fffffffc 
new Float:Pos[3] (Menos eficiente, em questгo de desempenho)

PHP код:
zero.pri 
addr
.alt fffffff4 
fill c 
line 6 
break    ; 2c 
addr
.pri fffffff4 
add
.c 8 
push
.pri 
;$par 
addr
.pri fffffff4 
add
.c 4 
push
.pri 
Fontes: Jelly23
Reply
#6

Vi um tуpico sobre uma pequena discussгo, entre o membro Bruno13 e o/a Jelly23.

Bruno utilizava da mesma forma que eu utilizei, mas por fim, Jelly mostrou um tуpico onde mostra que na realidade, a melhor forma й fazer com que os valores a serem armazenados й mais eficiente serem armazenados separadamente, e nгo compactados por vetores.
PHP код:
/* Forma Bruno13: */
new Float:pos[3];
/* Forma Jelly23: */
new Float:xFloat:yFloat:z
Reply
#7

Isso? https://sampforum.blast.hk/showthread.php?tid=580289
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)