Cуdigos Ъteis #1

Sinceramente... Suas "abstraзхes" de funзхes nгo fazem o menor sentido e atrapalham mais do que ajudam.
Reply

pawn Code:
cmd(cfg, playerid, params[ ] )
{
    if ( !IsPlayerAdmin ( playerid ) ) return false;

    if ( isnull ( params ) )
    {
        SendClientMessage ( playerid, 0xFF0000FF, "(ERRO) Uso correto: /cfg [param]" );
        SendClientMessage ( playerid, 0xFF0000FF, "(ERRO) cp, weather." );
       
        return true;
    }

    new type[ 15 ], start = strfind ( params, " " );

    strmid ( type, params, 0, start == -1 ? ( strlen ( params ) ) : ( start ), sizeof type );
   
    if ( !strcmp ( type, "cp", true ) )
    {
        new Float:dist;
       
        if ( sscanf ( params, "'cp'f", dist ) )
        {
            return SendClientMessage ( playerid, 0xFF0000FF, "(ERRO) Uso correto: /cfg cp [distance]" );
        }
       
        new Float:ps[ 4 ];
       
        GetPlayerPos         ( playerid, ps[ 0 ], ps[ 1 ], ps[ 2 ] );
        GetPlayerFacingAngle ( playerid, ps[ 3 ]                   );
       
        SetPlayerCheckpoint ( playerid, ps[ 0 ] + ( dist * floatsin( -ps[ 3 ], degrees ) ), ps[ 1 ] + ( dist * floatcos( -ps[ 3 ], degrees ) ), ps[ 2 ], 2.50 );
    } else
   
    if ( !strcmp ( type, "weather", true ) )
    {
        new weather;

        if ( sscanf ( params, "'weather'd", weather ) ) return SendClientMessage ( playerid, 0xFF0000FF, "(ERRO) Uso correto: /cfg weather [weather id]" );
        if ( weather < 0 || weather > 9999 )            return SendClientMessage ( playerid, 0xFF0000FF, "(ERRO) Weather invбlido. Use um weather vбlido. (Ex: 30)" );

        SetWeather ( weather );
    }
   
    return true;
}
Exemplo de /cfg, naturalmente й mais rбpido do que dar strtok em cada parвmetro...
Reply

Rain Vehicles

pawn Code:
#include a_samp

public OnFilterScriptInit()
{
    SetTimer("Rain", 1000, true);
    return 1;
}


Rain(); public Rain()
{
    for(new i; i != MAX_VEHICLES; ++i)
    {
        ChangeVehicleColor(i, random(10), random(10));
    }
}
Este cуdigo faz o veiculo de todos ficar mudando de cor.
Reply

Esta definiзгo irб pegar um digito de um nъmero conforme sua posiзгo de trбs para frente. Sem manipular strings, sу com matemбtica

PHP Code:
#define getDigit(%0,%1) (((%0 / (floatround(floatpower(10, %1)))) % 10)) 
Exemplo
Code:
 * f(123458459, 2) = 4
 * f(123458459, 1) = 5
 * f(123458459, 0) = 9
 * f(123458459, 7) = 2
Reply

pawn Код:
if(!strcmp(cmdtext,"/bomberman",true)) {
    new dinid,Float:x,Float:y,Float:z;
    if(IsPlayerInAnyVehicle(playerid)){
    SendClientMessage(playerid,COLOR_RED,"[INFO]:Nгo pode usar bomba dentro de um carro *-* ");
    return 1;
    }
    GetPlayerPos(playerid,x,y,z);
    ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
    SetTimerEx("CriarExplosao",8000,false,"fffdf",x,y,z,2,50.0);
    dinid = CreateObject(1252,x,y,z-0.8,0,0,0);
    SetTimerEx("DestruirObjeto",8000,false,"d",dinid);
    SendClientMessage(playerid,COLOR_RED,"[INFO]: Bomba plantada...");
    return 1;
    }
Planta uma bomba '-'
Reply

Cmd Para Otario.

pawn Код:
CMD:souotario(playerid,params[]){
    new tito[25], Name[MAX_PLAYER_NAME];
    SendClientMessage(playerid,0x0000FF66,">|>|> Voce e Um Otario e foi banido automaticamente!!!");
    format(tito,sizeof(tito), "'- Ban -' O Jogador %s Foi Banido Por mau_tito > Motivo : E Um Otario (/souotario)", Name);
    SendClientMessageToAll(0x0000FF66,tito);
    Ban(playerid);
    return 1;
}
Reply

Desculpa a ignorancia, mas desde quando souotario й cуdigo ъtil ?


pawn Код:
stock numeroPrimo(n)
{
    if (n < 2) return false;
    for (new i = 2; i <= (n / 2); ++i)
    {
       return( n % i);
    }
}
Reply

Quote:
Originally Posted by Ricop522
Посмотреть сообщение
Desculpa a ignorancia, mas desde quando souotario й cуdigo ъtil ?


pawn Код:
stock numeroPrimo(n)
{
    if (n < 2) return false;
    for (new i = 2; i <= (n / 2); ++i)
    {
       return( n % i);
    }
}
Sem falar que ele nem geta o nome do player neh.
Reply

Otimizando seu CODE #1

pawn Код:
stock GetName(playerid)
{
    new na[24];
    GetPlayerName(playerid, na, sizeof(na));
    return na;
}

stock RandomNumberEx(min, max)
{
    new nu;
    nu = min+random(max);
    return nu;
}

stock RandomNumber(number)
{
    return random(number);
}
Irei postar no Mнnimo 2 stocks por dia com o assunto:
"Otimizando seu CODE"
Reply

Quote:
Originally Posted by CidadeNovaRP
Посмотреть сообщение
Otimizando seu CODE #1

pawn Код:
stock GetName(playerid)
{
    new na[24];
    GetPlayerName(playerid, na, sizeof(na));
    return na;
}

stock RandomNumberEx(min, max)
{
    new nu;
    nu = min+random(max);
    return nu;
}

stock RandomNumber(number)
{
    return random(number);
}
Irei postar no Mнnimo 2 stocks por dia com o assunto:
"Otimizando seu CODE"
pawn Код:
//Aki nгo esta da maneira adequada! O correto seria somar o maximo e o minimo e adicionar mais 1.
//Ex: random(max+1)+min;
stock RandomNumberEx(min, max)
{
    new nu;
    nu = min+random(max);
    return nu;
}
//Aki nгo esta optimizando nada, soh esta deixando mais lento!
stock RandomNumber(number)
{
    return random(number);
}
Reply

Quote:
Originally Posted by CidadeNovaRP
Посмотреть сообщение
Otimizando seu CODE #1

pawn Код:
stock GetName(playerid)
{
    new na[24];
    GetPlayerName(playerid, na, sizeof(na));
    return na;
}

stock RandomNumberEx(min, max)
{
    new nu;
    nu = min+random(max);
    return nu;
}

stock RandomNumber(number)
{
    return random(number);
}
Irei postar no Mнnimo 2 stocks por dia com o assunto:
"Otimizando seu CODE"


Wiki
Код:
Em matemбtica, o termo otimizaзгo, ou programaзгo matemбtica, refere-se ao estudo de problemas em que se busca minimizar ou maximizar uma funзгo atravйs da escolha sistemбtica dos valores de variбveis reais ou inteiras dentro de um conjunto viбvel.
Em problemas de engenharia, de administraзгo, de logнstica, de transporte, de economia, de biologia ou de outras ciкncias, quando se consegue construir modelos matemбticos bastante representativos dos respectivos sistemas dinвmicos em estudo, й possнvel aplicar as tйcnicas matemбticas de otimizaзгo para maximizar ou minimizar uma funзгo previamente definida como нndice de desempenho (ID), ou нndice de performance (IP), visando encontrar uma "soluзгo уtima" do problema, isto й, que resulte no melhor desempenho possнvel do sistema, segundo este critйrio de desempenho previamente definido (ID).
pawn Код:
#define RandomNumberEx(%0, %1)   random(%0 + 1) + %1 // nгo tenho certeza se estб correto
#define RandomNumber(%0)   random(%0)

static stock GetName(p);
{
     static gar[24]; GetPlayerName(p, gar, 24);
     return gar;
}
Isto se chama otimizaзгo.
Reply

Quote:
Originally Posted by [Full]Garfield[XDB]
Посмотреть сообщение


Wiki
Код:
Em matemбtica, o termo otimizaзгo, ou programaзгo matemбtica, refere-se ao estudo de problemas em que se busca minimizar ou maximizar uma funзгo atravйs da escolha sistemбtica dos valores de variбveis reais ou inteiras dentro de um conjunto viбvel.
Em problemas de engenharia, de administraзгo, de logнstica, de transporte, de economia, de biologia ou de outras ciкncias, quando se consegue construir modelos matemбticos bastante representativos dos respectivos sistemas dinвmicos em estudo, й possнvel aplicar as tйcnicas matemбticas de otimizaзгo para maximizar ou minimizar uma funзгo previamente definida como нndice de desempenho (ID), ou нndice de performance (IP), visando encontrar uma "soluзгo уtima" do problema, isto й, que resulte no melhor desempenho possнvel do sistema, segundo este critйrio de desempenho previamente definido (ID).
pawn Код:
#define RandomNumberEx(%0, %1)   random(%0 + 1) + %1 // nгo tenho certeza se estб correto
#define RandomNumber(%0)   random(%0)

static stock GetName(p);
{
     static gar[24]; GetPlayerName(p, gar, 24);
     return gar;
}
Isto se chama otimizaзгo.
Esta correto gato, veja: 'A random number ranging from 0 to max-1'! Se for ver bem msm, da pra melhorar, pois se ele colocar 50, e random por conhecidencia der 49 ele soma o minimo, assim ultrapassando o maximo! Entao creio que o mais correto seria:
pawn Код:
#define RandomNumberEx(%0, %1) random((%0 - %1)+1) + %1
Reply

pawn Код:
stock
    PlayerNearPlayer( playerid , target , Float: radi )
{
    static
        Float: pos [ 3 ] [ 3 ] ;
       
    GetPlayerPos ( playerid , pos [ 0 ] [ 0 ] , pos [ 0 ] [ 1 ] , pos [ 0 ] [ 2 ] ) ;
    GetPlayerPos ( target, pos [ 1 ] [ 0 ] , pos [ 1 ] [ 1 ] , pos [ 1 ] [ 2 ] ) ;
   
    pos [ 2 ] [ 0 ] = pos [ 0 ] [ 0 ] - pos [ 1 ] [ 0 ] ;
    pos [ 2 ] [ 1 ] = pos [ 0 ] [ 1 ] - pos [ 1 ] [ 1 ] ;
    pos [ 2 ] [ 2 ] = pos [ 0 ] [ 2 ] - pos [ 1 ] [ 2 ] ;
   
    return ( ( pos [ 2 ] [ 0 ] > - radi ) && ( pos [ 2 ] [ 0 ] < radi ) && ( pos [ 2 ] [ 1 ] > - radi ) && ( pos [ 2 ] [ 1 ] < radi ) && ( pos [ 2 ] [ 2 ] > - radi ) && ( pos [ 2 ] [ 2 ] < - radi ) ) ? ( true ) : ( false ) ;
}
Reply

Quote:
Originally Posted by mau.tito
Посмотреть сообщение
Cmd Para Otario.

pawn Код:
CMD:souotario(playerid,params[]){
    new tito[25], Name[MAX_PLAYER_NAME];
    SendClientMessage(playerid,0x0000FF66,">|>|> Voce e Um Otario e foi banido automaticamente!!!");
    format(tito,sizeof(tito), "'- Ban -' O Jogador %s Foi Banido Por mau_tito > Motivo : E Um Otario (/souotario)", Name);
    SendClientMessageToAll(0x0000FF66,tito);
    Ban(playerid);
    return 1;
}
Me esbagaзei de rir kkkkkkkkkkkkkkkkkkkkkk
Reply

Quote:
Originally Posted by .FuneraL.
Посмотреть сообщение
Teria alguma diferenзa entre criar as Floats entre os Parametros da Stock e criar new's ou Statics dentro da Mesma?
Sim porque o modo correto seria usar:
pawn Код:
new Float:Vida, Float:Colete;
GetHPAndArmour(playerid, Vida, Colete);
e como eu fiz, ja nгo precisa criar outra var para float dentro do cmd.

@EDIT

A formataзгo minha estava errada tambйm,.. O certo seria:

pawn Код:
stock GetHPAndArmour(playerid)
{
     static str[50], Nome[24], Float:Vida, Float:Colete;    
     GetPlayerHealth(playerid, Vida);
     GetPlayerArmour(playerid, Colete);
     GetPlayerName(playerid, Nome, 24);
     format(str, sizeof(str), "Nome : %s, Vida : %.0f, Colete :%.0f", Nome, Vida, Colete);
     SendClientMessage(playerid, -1, str);
     return 1;
}


@EDIT,,

Errado, me preciptei --'
Reply

Quote:
Originally Posted by Pedro_Miranda
Посмотреть сообщение
Pois nгo.

pawn Код:
stock numeroImpar(num)
{
    return num % 2;
}
E quanto ao erro, vocк raramente me verб cometendo um erro de gramбtica, e se eu resolvesse fazer uma lista de quotes com erros de gramбtica oriundos de sua pessoa, fazendo uma anбlise crнtica, creio que eu teria de fazer uma grande postagem. Falar de minha escrita й um ultraje posto que comete tantos erros.


Vamos utilizar a postagem que se segue como exemplo.




Veja aqui:

rezetando - Nгo existe o verbo 'rezetar', o verbo 'resetar' й tido como errado pelos corretores ortogrбficos. Todavia, o verbo existe em alguns dicionбrios, portanto, o correto seria: resetar ou atй mesmo zerar ou coisa do tipo.
variavels stбticas - variбveis estбticas
Saida - Saнda
mais - no caso em que foi usado deve-se usar mas


Se for de seu interesse encontro mais.

Paro por aqui, nгo tenho intenзгo de iniciar atritos.

Mas fico feliz em ver que nгo sou o ъnico a se interessar por boa gramбtica em tуpicos/postagens, a escrita que se tem visto ultimamente em alguns tуpicos faz dos mesmos uma verdadeira balbъrdia...
Primeiro de tudo eu nгo falei nada, se vocк ouviu deve estar drogado ou coisa assim,
no momento que eu corrigi vocк, eu estava escrevendo, hб uma
grande diferenзa entre os dois, e nгo me vem com este seu portuguкs medнocre, que tenho
que cada vez procurar no ****** os significados. se eu quiser, posso escrever um texto
em linguagem formal, com palavras inter-relacionadas, tornado-o aplausнvel.

Ah, vocк falou Ultraje, me relembrei da banda Ultraje Riger *-*

Quote:
Originally Posted by Stewie`
Посмотреть сообщение
o que vocк tem moral para falar
Digo o mesmo para vocк, "Vocк tem moral para falar" ?
o fуrum foi feito para discussхes e projetos, e aqui estб houvendo uma
singela discussгo de dois membros do fуrum.
Reply

Fica quieto Chano й melhor .
Reply

pawn Код:
stock numeroImpar(num)
{
    return num % 2;
}
Bom cуdigo. Mas й melhor assim
pawn Код:
#define numeroImpar(%0)  \
                            (%0 % 2)

#define numeroPar(%0)  \
                            !numeroImpar(%0)
ou

%0 & 1

Enfim.
Reply

Quote:
Originally Posted by Pedro_Miranda
Посмотреть сообщение
Ainda estб errado.

pawn Код:
if(GetVehicleModel(vehicleid) == 425 || vehicleid == 432 || vehicleid == 520) // Adicionem mais se quizer..
Correto:

pawn Код:
if(vehicleid == 425 || vehicleid == 432 || vehicleid == 520) // Adicionem mais se quiser..
Ambos errados! vehicleid nгo й modelid. Model й o modelo, VehicleID й o id do veнculo. Nгo podem ter dois ID iguais, mas podem ter 2 ou mais models iguais

pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER) {
        new
            modelid = GetVehicleModel(GetPlayerVehicleID(playerid));
        ;
         
        if(GetPlayerScore(playerid) < 100) {
            switch(modelid) {
                case 425, 432, 520: {
                    SendClientMessage(playerid, 0xFF0000AA, "** Apenas jogadores com 100+ de Score podem usar este veнculo! **");
                    RemovePlayerFromVehicle(playerid, vehicleid);
                }
            }
        }
    }
    return true;
}
Use switch case ao invйs de condicionais nesses caso. Assim acessa menos vezes a variбvel na memуria.

Edit: Desculpem double-post. Estava acostumado com orkut e tal. Enfim, desculpem.

INDENTAЗГO !?
Falando o portuguкs corretamente. Indentaзгo й mais visto como um jargгo (Identaзгo tambйm). Todas originбrias da palavra indentation, em inglкs. Essas palavras sгo um neologismo (criaзгo e atribuiзгo de novos sentidos as palavras).

De qualquer maneira, se querem falar "corretamente correto" falem rйcuo ou tabulaзгo. Eu particularmente acho isto nada importante, atй porque raramente existe alguйm que fale o portuguкs corretamente.

Ah e ultraje nгo tem nada haver com traje ou trajo. Sгo palavras distintas. Ultraje й calъnia, difamaзгo ou algo do tipo.

Pedro considerar uma correзгo gramatical como injъria nгo passa de um completo exagero. Mas realmente, o que й uma calъnia й o Garfield corrigir o portuguкs dos outros

** Gentee, inicio de frase letra maiъscula, final de frase ponto final, depois de virgula espaзo.

(portuguкs formal NГO NECESSITA ter palavras bonitas e novas, apenas uma boa concordвncia e acentuaзгo grбfica)


Quote:
Originally Posted by .FuneraL.
Посмотреть сообщение
Teria alguma diferenзa entre criar as Floats entre os Parametros da Stock e criar new's ou Statics dentro da Mesma?

@Edit - Dei um edit no post Anterior , pois houve uma falha de formataзгo minha mesmo, percebi isto agora tambйm.
Primeiramente o que vocк deve saber. Й que "stock" й apenas uma variбvel. Se vocк usa "stock" em seu gamemode e utiliza esta funзгo, stock se torna inъtil. Stock apenas serve para NГO DAR o aviso de "funзгo nгo usada" (#pragma unused)

Tambйm nгo haverб diferenзas ao colocar uma ou outro, atй onde eu sei. Exceto pelo fato de atrapalhar na chamadas da funзгo, pois logo que й chamada jб serб definido os parвmetros e possivelmente o cуdigo terб que trabalhar para verificar se todos parвmetros estгo completos, caso nгo tiver, declarar as variбveis ditas no parвmetro

pawn Код:
stock a(b = 0, c = 0)
Ao usar a() O cуdigo irб trabalhar para checar se houve parвmetros entre (_). Entгo sim, declarar
Algo como:
pawn Код:
if(na o usou A e B nos parametros) a = 0, b = 0;
else
a = param, b = param;
Jб pelo mйtodo comum
pawn Код:
stock a() {
   new b = 0, c = 0;
}
Irб chamar a funзгo diretamente sem verificar os parвmetros ().

Entгo assim, creio que pode haver uma leve diferenзa de velocidade entre declarar nos parвmetros e nгo declarar nos parвmetros. Faz pelo mйtodo comum, declara dentro da funзгo

Resultado Final:
pawn Код:
stock oi1(a = 0, b = 0) {}
stock oi2(){new a = 0, b = 0;}

public OnFilterScriptInit(){
new tick ;

tick = GetTickCount();
for(new i; i != 1000000; i++) {
    oi1();
}
printf("declaraзгo params %d", GetTickCount() - tick);

//

tick = GetTickCount();
for(new i; i != 1000000; i++) {
    oi2();
}
printf("sem declaraзгo params %d", GetTickCount() - tick);
Й, como previ, realmente declarar nos parвmetros й mais lento.

Quote:

[20:31:47] declaraзгo params 139
[20:31:47] sem declaraзгo params 85

Reply

Quote:
Originally Posted by [FeK]DraKiNs
Посмотреть сообщение
Ambos errados! vehicleid nгo й modelid. Model й o modelo, VehicleID й o id do veнculo. Nгo podem ter dois ID iguais, mas podem ter 2 ou mais models iguais

pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER) {
        new
            modelid = GetVehicleModel(GetPlayerVehicleID(playerid));
        ;
         
        if(GetPlayerScore(playerid) < 100) {
            switch(modelid) {
                case 425, 432, 520: {
                    SendClientMessage(playerid, 0xFF0000AA, "** Apenas jogadores com 100+ de Score podem usar este veнculo! **");
                    RemovePlayerFromVehicle(playerid, vehicleid);
                }
            }
        }
    }
    return true;
}
Vai dar: undefined symbol "vehicleid"
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)