SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 07/12/2017, 01:44 AM   #1
Pool
Big Clucker
 
Join Date: Nov 2017
Posts: 71
Reputation: 11
Default Visualização e correção

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 Code:
#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(c)\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;

Pool is offline   Reply With Quote
Old 07/12/2017, 03:57 AM   #2
Marllun
Huge Clucker
 
Marllun's Avatar
 
Join Date: Oct 2016
Location: RJ - Rio de Janeiro
Posts: 480
Reputation: 15
Default Re: Visualização e correção

Queimei o cérebro.
PHP Code:
#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(c)\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 Code:
//Lento
new Float:pos[3];
GetPlayerPos(playeridpos[0], pos[1], pos[2]); 
PHP Code:
//Rapido
new Float:xFloat:yFloat:z;
GetPlayerPos(playeridxz); 
__________________
Code:
Skype:marlon10443

Last edited by Marllun; 07/12/2017 at 04:06 AM. Reason: @Edit
Marllun is online now   Reply With Quote
Old 07/12/2017, 11:46 AM   #3
AdrianoStk
Huge Clucker
 
AdrianoStk's Avatar
 
Join Date: Jan 2013
Location: Presidente Prudente-SP
Posts: 235
Reputation: 15
Question Re: Visualização e correção

Uma duvida quanto a isso...
Quote:
Originally Posted by Marllun View Post
PHP Code:
//Lento
new Float:pos[3];
GetPlayerPos(playeridpos[0], pos[1], pos[2]); 
PHP Code:
//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]; ??
__________________
hayllander.ddns.net

Hayllander Server's

Breve, nos servidores
AdrianoStk is offline   Reply With Quote
Old 07/12/2017, 03:55 PM   #4
Marllun
Huge Clucker
 
Marllun's Avatar
 
Join Date: Oct 2016
Location: RJ - Rio de Janeiro
Posts: 480
Reputation: 15
Default Re: Visualização e correção

Por quer sim, olhe http://forum.sa-mp.com/showthread.php?t=580289

faça o test https://pastebin.com/aMkNtaC2
__________________
Code:
Skype:marlon10443
Marllun is online now   Reply With Quote
Old 07/12/2017, 04:37 PM   #5
IlanZ
High-roller
 
IlanZ's Avatar
 
Join Date: Jul 2016
Location: Brasil
Posts: 1,307
Reputation: 72
Default Re: Visualização e correção

Quote:
Originally Posted by AdrianoStk View Post
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 Code:
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 Code:
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
__________________
IlanZ is offline   Reply With Quote
Old 08/12/2017, 01:20 AM   #6
Pool
Big Clucker
 
Join Date: Nov 2017
Posts: 71
Reputation: 11
Default Re: Visualização e correção

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 Code:
/* Forma Bruno13: */
new Float:pos[3];

/* Forma Jelly23: */
new Float:xFloat:yFloat:z
Pool is offline   Reply With Quote
Old 08/12/2017, 03:30 AM   #7
Marllun
Huge Clucker
 
Marllun's Avatar
 
Join Date: Oct 2016
Location: RJ - Rio de Janeiro
Posts: 480
Reputation: 15
Default Re: Visualização e correção

Isso? http://forum.sa-mp.com/showthread.php?t=580289
__________________
Code:
Skype:marlon10443
Marllun is online now   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Ajuda] Correção de bugs startstk2 Português/Portuguese 7 29/02/2016 02:34 PM
[Ajuda] Correção de um comando Feelipe Português/Portuguese 2 03/06/2015 04:11 AM
[Pedido] Pequena correção em um sistema. Junplid Português/Portuguese 3 31/03/2015 10:33 PM
[AJUDA] Correção RequestClass VIP vascaino55 Português/Portuguese 6 04/04/2012 09:05 PM
[AJUDA] Correçao de erros Joao_VS Português/Portuguese 10 20/05/2011 02:33 AM


All times are GMT. The time now is 01:49 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.