SA-MP Forums

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

Reply
 
Thread Tools Display Modes
Old 12/05/2018, 10:24 PM   #8711
Ermanhaut
Gangsta
 
Ermanhaut's Avatar
 
Join Date: Apr 2016
Location: Brazil
Posts: 662
Reputation: 47
Default Re: Dúvidas Curtas #1

Você pode fazer o argumento ser uma string inicialmente e então detectar se há pontos no meio dos números (float), se são só números (integer) ou se é a palavra true ou false, se não ela é uma string mesmo...

Code:
public MyFunction(playerid, parameter[]){
    
    new bool:Bool, Float:FNumber, INumber;
    if(!strcmp(parameter, "true")) Bool = true;
    else if(!strcmp(parameter, "false")) Bool = false;
    else if(strfind(parameter, ".") != -1) FNumber = floatstr(parameter);
    else if(IsNumeric(parameter)) Number = strval(parameter);
    else{
         //   ...
    }

}

IsNumeric(const string[]){
    for (new i = 0, j = strlen(string); i < j; i++){
            if (string[i] > '9' || string[i] < '0') return 0;
    }
    return 1;
}
Me corrijam se eu estiver errado ou melhorem este código porque eu sou péssimo em otimização.
__________________
try, try and try again
Ermanhaut is offline   Reply With Quote
Old 12/05/2018, 10:57 PM   #8712
DarkBr
Huge Clucker
 
Join Date: Feb 2017
Location: ∫ f(x) dx
Posts: 362
Reputation: 12
Default Re: Dúvidas Curtas #1

Quote:
Originally Posted by Ermanhaut View Post
Você pode fazer o argumento ser uma string inicialmente e então detectar se há pontos no meio dos números (float), se são só números (integer) ou se é a palavra true ou false, se não ela é uma string mesmo...

Code:
public MyFunction(playerid, parameter[]){
    
    new bool:Bool, Float:FNumber, INumber;
    if(!strcmp(parameter, "true")) Bool = true;
    else if(!strcmp(parameter, "false")) Bool = false;
    else if(strfind(parameter, ".") != -1) FNumber = floatstr(parameter);
    else if(IsNumeric(parameter)) Number = strval(parameter);
    else{
         //   ...
    }

}

IsNumeric(const string[]){
    for (new i = 0, j = strlen(string); i < j; i++){
            if (string[i] > '9' || string[i] < '0') return 0;
    }
    return 1;
}
Me corrijam se eu estiver errado ou melhorem este código porque eu sou péssimo em otimização.

Eu tenho funções semelhantes:
Code:
//float/int/negativo
asnumber(const string[]) {
	
	new lenght=strlen(string);
	for(new i=0; i <lenght; i++)
    {
        switch(string[i])
        {
            case '.', '-', '0'..'9': continue;
            default: return 0;
        }
    }
    return 1;
}

Só queria mesmo era tentar criar um ARGUMENTO, e ele pode optar qualquer tipo de parâmetro, teria como! Porém teri que usar uma função infinita '{Float,_}:...', não iria dar muito certo no meu caso. Mas obg ai!
DarkBr is offline   Reply With Quote
Old 13/05/2018, 12:21 PM   #8713
Dayvison_
High-roller
 
Dayvison_'s Avatar
 
Join Date: Nov 2013
Posts: 1,308
Reputation: 200
Default Re: Dúvidas Curtas #1

Eu estava esperando sua resposta para te dizer que o unico jeito é usando os três pontos, para obter os argumentos o método mais fácil seria usar a include pointers.

@edit getarg tambem funciona, porem só para inteiros/flutuantes você deverá achar uma função para obter strings.

@edit2 você também deveria ultilizar de um macro para facilitar na obtenção de tags, por que a partir do momento que se passam valores para a função que contém ... As tags sao perdidas
__________________


Dayvison_ is offline   Reply With Quote
Old 13/05/2018, 01:33 PM   #8714
renatog
Huge Clucker
 
Join Date: Mar 2016
Posts: 328
Reputation: 48
Default Re: Dúvidas Curtas #1

Quote:
Originally Posted by DarkBr View Post
É possível criar um argumento, onde ele pudesse ser uma string, ou um flutuador, ou um bolean ou um inteiro?

Exemplo bem errado:
Code:
stock function(blabla[] blabla float:blabla bool:blabla, outra função..) {

    //alguma coisa..
    return 1;
}
adaptação

Code:
public OnPlayerConnect(playerid) {

    new aname[23], Float:PlayerX;
    GetPlayerName(playerid, aname, 23);
    function(aname, ...); //string

    GetPlayerPos(playerid, PlayerX, ...);
    function(PlayerX, ...); //float

    function(playerid, ...); //inteiro
}
Não sei se vocês entenderam, mas.. Eu queria saber se é possível criar uma função assim, com um argumento, onde ele pudesse ser alterado para outros parâmetros.
Você pode usar parâmetros opcionais passados por referência, assim:
Code:
enum e_data {
    Float:myFloat,
    myArr[10],
    myInt
}
new playerData[5][e_data];

GetSomeData(playerid, &Float:dataFloat = 0.0, &dataInt = -1, dataArr[] = "", size = sizeof(dataArr))
{
    dataFloat = playerData[playerid][myFloat];
    dataInt = playerData[playerid][myInt];
    strcat(dataArr, playerData[playerid][myArr], size);
}

main() {
    new Float:value;
    GetSomeData(0, .dataFloat = value);
    printf("%f", value);

    playerData[0][myFloat] = 10.0;
    strcat(playerData[0][myArr], "Olá!", 10);

    new str[10];
    GetSomeData(0, .dataFloat = value, .dataArr = str);
    printf("%f, %s", value, str);
}
Assim você consegue obter valores de variáveis pré definidas dentro da função. O uso é limitado, mas funciona.
renatog is offline   Reply With Quote
Old 13/05/2018, 02:18 PM   #8715
DarkBr
Huge Clucker
 
Join Date: Feb 2017
Location: ∫ f(x) dx
Posts: 362
Reputation: 12
Default Re: Dúvidas Curtas #1

Quote:
Originally Posted by Dayvison_ View Post
Eu estava esperando sua resposta para te dizer que o unico jeito é usando os três pontos, para obter os argumentos o método mais fácil seria usar a include pointers.

@edit getarg tambem funciona, porem só para inteiros/flutuantes você deverá achar uma função para obter strings.

@edit2 você também deveria ultilizar de um macro para facilitar na obtenção de tags, por que a partir do momento que se passam valores para a função que contém ... As tags sao perdidas
Quote:
Originally Posted by Dayvison_ View Post
Eu estava esperando sua resposta para te dizer que o unico jeito é usando os três pontos, para obter os argumentos o método mais fácil seria usar a include pointers.

@edit getarg tambem funciona, porem só para inteiros/flutuantes você deverá achar uma função para obter strings.

@edit2 você também deveria ultilizar de um macro para facilitar na obtenção de tags, por que a partir do momento que se passam valores para a função que contém ... As tags sao perdidas
Obrigado!
DarkBr is offline   Reply With Quote
Old 13/05/2018, 03:19 PM   #8716
uliano
Big Clucker
 
uliano's Avatar
 
Join Date: Oct 2015
Location: Limeira-SP
Posts: 123
Reputation: 0
Default Re: Dúvidas Curtas #1

Como crio uma progressbar? Me ensinem pfv
Progres eu digo de fome sede e sono kk, vlw ai
uliano is offline   Reply With Quote
Old 13/05/2018, 04:18 PM   #8717
1sbedx
Huge Clucker
 
Join Date: Dec 2015
Posts: 325
Reputation: 41
Default Re: Dúvidas Curtas #1

Quote:
Originally Posted by uliano View Post
Como crio uma progressbar? Me ensinem pfv
Progres eu digo de fome sede e sono kk, vlw ai
http://forum.sa-mp.com/showthread.php?t=537468
Tutorial no YouTube
1sbedx is offline   Reply With Quote
Old 13/05/2018, 09:27 PM   #8718
Cleyson
Gangsta
 
Cleyson's Avatar
 
Join Date: Feb 2014
Location: Vitória - ES
Posts: 663
Reputation: 154
Default Re: Dúvidas Curtas #1

Pessoal, algo bizarro mas devo perguntar.

Criei um pickup de saída do interior da DPLS,
quando vou pra dentro do interior o pickup simplesmente explode '-'

tantos anos no samp e nunca vi isso. Oque poderia ser ?
Caso não fiquei muito claro eu upo um vídeo.
Cleyson is offline   Reply With Quote
Old 13/05/2018, 09:56 PM   #8719
DarkBr
Huge Clucker
 
Join Date: Feb 2017
Location: ∫ f(x) dx
Posts: 362
Reputation: 12
Default Re: Dúvidas Curtas #1

Quote:
Originally Posted by Cleyson View Post
Pessoal, algo bizarro mas devo perguntar.

Criei um pickup de saída do interior da DPLS,
quando vou pra dentro do interior o pickup simplesmente explode '-'

tantos anos no samp e nunca vi isso. Oque poderia ser ?
Caso não fiquei muito claro eu upo um vídeo.
Pode mostrar? nunca vi algo assim.
DarkBr is offline   Reply With Quote
Old 13/05/2018, 10:05 PM   #8720
Cleyson
Gangsta
 
Cleyson's Avatar
 
Join Date: Feb 2014
Location: Vitória - ES
Posts: 663
Reputation: 154
Default Re: Dúvidas Curtas #1

Quote:
Originally Posted by DarkBr View Post
Pode mostrar? nunca vi algo assim.
https://youtu.be/zE1Kk-DRybg

Desculpe a qualidade, filmei com o celular.
Cleyson is offline   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] Dúvidas, dúvidas e mais dúvidas. Mito_FmZ Português/Portuguese 6 30/07/2012 04:42 AM
[DUVIDAS] Duvidas sobre GM Waldrey Português/Portuguese 3 01/06/2012 02:56 PM
[Duvidas]Algumas duvidas. Felipe_Wesker Português/Portuguese 11 07/05/2012 08:31 PM
[DUVIDAS] matheuzinho Português/Portuguese 3 29/09/2010 10:07 PM
[DUVIDAS] Como faço isto?? (várias duvidas) andmeida10 Português/Portuguese 3 18/03/2010 09:06 AM


All times are GMT. The time now is 02:31 PM.


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