SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese > Lançamentos/Releases

Reply
 
Thread Tools Display Modes
Old 02/08/2014, 12:57 PM   #2921
SeV_
High-roller
 
SeV_'s Avatar
 
Join Date: Jul 2012
Location: __________________.
Posts: 1,456
Reputation: 154
Default Re: Códigos Úteis #1

Verificar se o veículo está capotado.

Special thanks to Alex ( ****** )
pawn Code:
stock VehicleFlipped(vID)
{
    new
        Float:sw,
        Float:sx,
        Float:sy,
        Float:sz;

    GetVehicleRotationQuat(vID, sw, sz, sx, sy);
    sx = atan2(2.0 * (sx * sw - sy * sz), 1.0 - 2.0 * (sx * sx + sz * sz));
    return sx <= -90.0 || sx >= 90.0;
}
__________________
Importação de peças para veículos do grupo VAG.
SeV_ is offline   Reply With Quote
Old 09/08/2014, 05:58 AM   #2922
zSuYaNw
Godfather
 
zSuYaNw's Avatar
 
Join Date: Apr 2010
Location: Santa Catarina
Posts: 6,840
Reputation: 672
Default Re: Códigos Úteis #1

pawn Code:
stock Continue(str[], max_chars = 60, _sz = sizeof(str)){
    str[max_chars] = '\0';
   
    strcat(str, "...", _sz);
}

Caso a frase ultrapassar 60 caracteres, a função deleta os que ultrapassou e adiciona tres pontos "...".


Exemplo:

Player digita:
Code:
Vai lá Brasil, que a hora é essa! Eu esse ano vou querer o Hexa Mostre para o mundo toda nossa tradição, me dê um grito de GOOL
Aparecerá:

Code:
Vai lá Brasil, que a hora é essa! Eu esse ano vou querer o H...

Uso


pawn Code:
new str[200] = "Vai lá Brasil, que a hora é essa! Eu esse ano vou querer o Hexa Mostre para o mundo toda nossa tradição, me dê um grito de GOOL";
   
    Continue(str);

    printf(str);
zSuYaNw is offline   Reply With Quote
Old 17/08/2014, 11:11 PM   #2923
Lucas-Fc
High-roller
 
Join Date: Sep 2012
Location: minha casa
Posts: 1,146
Reputation: 24
Default Re: Códigos Úteis #1

Ant Hack de crash.

a solução para o Hack de Crash, que consiste em crashar jogadores próximos com um veículo modificado, você não será crashado mas o povo ao seu redor sim.

pawn Code:
public OnVehicleMod(playerid,vehicleid,componentid)
{
        if(IsPlayerConnected(playerid) && GetPlayerInterior(playerid) != 0)
        {
                if(componentid != 1010)
                {
                Ban(playerid);
                }
        }
        return 1;
}
Lucas-Fc is offline   Reply With Quote
Old 17/08/2014, 11:20 PM   #2924
zSuYaNw
Godfather
 
zSuYaNw's Avatar
 
Join Date: Apr 2010
Location: Santa Catarina
Posts: 6,840
Reputation: 672
Default Re: Códigos Úteis #1

Um foguete da hora :B

pawn Code:
stock foguete(p, lvl = 5){
    new
        Float: _@p[3], _@i, _@f
    ;
   
    lvl <<= _: (0b1100100 ^ 0x1);
    _@i   = 0;

   
    GetPlayerPos(p, _@p[0],_@p[1],_@p[2]);
   
    _@p[2] = 23.00;
   
    for( ; ; )
    {
   
   
        for( _@f = 0; _@f ^ (0xFFF << 6); ++_@f) {}
       
        _@p[2] =  ( _@p[2] + _: _@i);


       
        printf("%f", _:_@p[2]);

 
        #emit LOAD.S.pri _@i
        #emit CONST.alt  1
        #emit ADD
        #emit STOR.s.pri _@i
       
        printf("%d", _@i);
       
        SetPlayerPos(p, _@p[0],_@p[1],_@p[2]);
       
        if(!(lvl ^ _@i)) break;
       
    }
   
    GivePlayerWeapon(p, 46, 1);
}
zSuYaNw is offline   Reply With Quote
Old 17/08/2014, 11:29 PM   #2925
Lucas-Fc
High-roller
 
Join Date: Sep 2012
Location: minha casa
Posts: 1,146
Reputation: 24
Default Re: Códigos Úteis #1

zSuYaNw que desgraça foi essa ai que você programou ?? não entendi uma linha.

_@p[2] = ( _@p[2] + _: _@i);

masoq
Lucas-Fc is offline   Reply With Quote
Old 18/08/2014, 12:30 AM   #2926
steki.
High-roller
 
steki.'s Avatar
 
Join Date: Nov 2010
Location: São Paulo, Brasil
Posts: 2,557
Reputation: 317
Default Re: Códigos Úteis #1

Quote:
Originally Posted by zSuYaNw View Post
Um foguete da hora :B

pawn Code:
stock foguete(p, lvl = 5){
    new
        Float: _@p[3], _@i, _@f
    ;
   
    lvl <<= _: (0b1100100 ^ 0x1);
    _@i   = 0;

   
    GetPlayerPos(p, _@p[0],_@p[1],_@p[2]);
   
    _@p[2] = 23.00;
   
    for( ; ; )
    {
   
   
        for( _@f = 0; _@f ^ (0xFFF << 6); ++_@f) {}
       
        _@p[2] =  ( _@p[2] + _: _@i);


       
        printf("%f", _:_@p[2]);

 
        #emit LOAD.S.pri _@i
        #emit CONST.alt  1
        #emit ADD
        #emit STOR.s.pri _@i
       
        printf("%d", _@i);
       
        SetPlayerPos(p, _@p[0],_@p[1],_@p[2]);
       
        if(!(lvl ^ _@i)) break;
       
    }
   
    GivePlayerWeapon(p, 46, 1);
}
Isso não faz porra nenhuma e ainda não faz nenhum sentido. Sabe fazer tag cast e increase com emit. Grande bosta.
__________________
Rio
steki. is offline   Reply With Quote
Old 18/08/2014, 01:55 AM   #2927
Sn0wk
Banned
 
Join Date: Mar 2013
Posts: 97
Reputation: 77
Default Respuesta: Códigos Úteis #1

MapAndreasFlatGround

pawn Code:
MapAndreasFlatGround(Float:x, Float:y, Float:z, Float: size = 2.0) {

    static Float: xx[7], Float:yy[7];
   
    //
   
    xx[0] = x;
    yy[0] = y;
   
    xx[1] = x+size;
    yy[1] = y;
   
    xx[2] = x+size;
    yy[2] = y+size;
   
    xx[3] = x;
    yy[3] = y+size;
   
    //
   
    xx[4] = x-size;
    yy[4] = y;

    xx[5] = x-size;
    yy[5] = y-size;

    xx[6] = x;
    yy[6] = y-size;


    return
        DiagonalRoute(x, y, z, xx[1],yy[1],z, .maxSteps = 15.0) &&
        DiagonalRoute(x, y, z, xx[2],yy[2],z, .maxSteps = 15.0) &&
        DiagonalRoute(x, y, z, xx[3],yy[3],z, .maxSteps = 15.0) &&
        DiagonalRoute(x, y, z, xx[4],yy[4],z, .maxSteps = 15.0) &&
        DiagonalRoute(x, y, z, xx[5],yy[5],z, .maxSteps = 15.0) &&
        DiagonalRoute(x, y, z, xx[6],yy[6],z, .maxSteps = 15.0)
    ;
}

O que faz está função? Ela verifica se o terreno é plano num radio de X. Útil para sistema de spawns por exemplo. Caso você deseja spawnar carros em locais planos e não em morros


Essa função precisa do DiagonalRoute.inc

O modo de uso é simples:
PHP Code:
if( MapAndreasFlatGround(0.0,0.0,0.015.0)) {

  print(
"não há morros num raio de 15 metros");
}
else {

  print(
"há morros num raio de 15 metros");


também é util para spawnar carros longe de casas por exemplo, pois se há um edificio dentro do raio a função retorna false! Isto é foda pra fazer um sistema de colisões também, no Projeto WarZ/DayZ estou estudando em como usar isto de forma benéfica, o problema é a lentidão das checagens!






Quote:
(0b1100100 ^ 0x1)
Isto irá sempre retornar 101. Logo:


pawn Code:
lvl <<= 101;


isto aqui

pawn Code:
if(!(lvl ^ _@i)) break;

pode ser trocado por for(new i ;


pra que isto? ele não está fazendo nada no código, ao não ser travando o servidor.


pawn Code:
for( _@f = 0; _@f ^ (0xFFF << 6); ++_@f) {}


enfim ..

pawn Code:
stock foguete(p, lvl = 5){
    new
        Float: pos[3]
    ;
   
    lvl <<= 101;
   
    if(!GetPlayerPos(p, pos[0],pos[1],pos[2]))
        return false;
   
    pos[2] += 23.00;
   
    for(new i; lvl ^ i; i++){
              SetTimerEx("pular", 1500*i, false, "ifff", p, pos[0],pos[1],( pos[2] + float(i)));  
               
    }
   
    GivePlayerWeapon(p, 46, 1);
}

forward pular(playerid, Float:x, Float:y, Float:z);
public pular(playerid, Float:x, Float:y, Float:z) {

    SetPlayerPos(playerid, x,y,z);  

    return true;
}

Seu código estava ridículo, só colocou operadores pra deixar mais bonito e acabou desotimizando e deixando um completo descaso com o real objetivo dele. Não faça isto. Se for pra deixar o código bonito, que seja otimizando ele, não colocando coisas desnecessárias.

+ REP pro steki ter me feito observar os erros do código, não tinha parado pra analisar
Sn0wk is offline   Reply With Quote
Old 18/08/2014, 02:02 AM   #2928
zSuYaNw
Godfather
 
zSuYaNw's Avatar
 
Join Date: Apr 2010
Location: Santa Catarina
Posts: 6,840
Reputation: 672
Default Re: Respuesta: Códigos Úteis #1

Quote:
Originally Posted by steki. View Post
Isso não faz porra nenhuma e ainda não faz nenhum sentido. Sabe fazer tag cast e increase com emit. Grande bosta.
Quote:
Originally Posted by Sn0wk View Post
Isto irá sempre retornar 101. Logo:


pawn Code:
lvl <<= 101;


isto aqui

pawn Code:
if(!(lvl ^ _@i)) break;

pode ser trocado por for(new i ;


pra que isto? ele não está fazendo nada no código, ao não ser travando o servidor.


pawn Code:
for( _@f = 0; _@f ^ (0xFFF << 6); ++_@f) {}


enfim ..

pawn Code:
stock foguete(p, lvl = 5){
    new
        Float: pos[3]
    ;
   
    lvl <<= 101;
   
    if(!GetPlayerPos(p, pos[0],pos[1],pos[2]))
        return false;
   
    pos[2] += 23.00;
   
    for(new i; lvl ^ i; i++){
              SetTimerEx("pular", 1000, false, "ifff", p, pos[0],pos[1],( pos[2] + float(i)));  
               
    }
   
    GivePlayerWeapon(p, 46, 1);
}

forward pular(playerid, Float:x, Float:y, Float:z);
public pular(playerid, Float:x, Float:y, Float:z) {

    SetPlayerPos(playerid, x,y,z);  

    return true;
}

Seu código estava ridículo, só colocou operadores pra deixar mais bonito e acabou desotimizando e deixando um completo descaso com o real objetivo dele. Não faça isto. Se for pra deixar o código bonito, que seja otimizando ele, não colocando coisas desnecessárias.

+ REP pro steki ter me feito observar os erros do código, não tinha parado pra analisar
Só chamando a atenção mesmo para o pessoal postar algo aqui, porque pq.p.
Ah, o código funciona sim, usei um LOOP em forma de timer.
zSuYaNw is offline   Reply With Quote
Old 23/08/2014, 02:43 PM   #2929
Pocahontas
Little Clucker
 
Join Date: Jul 2014
Posts: 47
Reputation: 0
Default Re: Códigos Úteis #1

Modo eficiente de resetar um enumerador.
pawn Code:
for(new i; Enumerador:i < Enumerador; i++)
    {
        Variavel[playerid][Enumerador:i] = 0;
    }
Exemplo:
pawn Code:
// topo:
enum pInfo
{
    pAdmin,
    ...
};
new PlayerInfo[MAX_PLAYERS][pInfo];

// OnPlayerConnect.
for(new i; pInfo:i < pInfo; i++)
    {
        PlayerInfo[playerid][pInfo:i] = 0;
    }
Isso pode evitar bugs futuros.
Pocahontas is offline   Reply With Quote
Old 23/08/2014, 03:30 PM   #2930
Sn0wk
Banned
 
Join Date: Mar 2013
Posts: 97
Reputation: 77
Default Respuesta: Re: Códigos Úteis #1

Quote:
Originally Posted by Pocahontas View Post
Modo eficiente de resetar um enumerador.

...


É um método eficiente mas é um tanto lento perto do que pode-se fazer. Em Pawn tem atribuição por arrays, algo que muito mais eficiente e rápido, só vai ocupar um pouco mais de memória dependendo da array, mas o processamento é mais rápido

pawn Code:
new t[20] = {1,...};
new b[20] ;

main() {
  t = b;
}

Logo t que era tudo 1, vai colocar tudo 0.

De qualquer forma:

http://forum.sa-mp.com/showpost.php?...56&postcount=7

Sn0wk 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
[FilterScript] Menus Úteis [SKIN|CARROS|ARMAS] SlashPT Lançamentos/Releases 25 02/05/2014 03:56 PM
[Include] [INC]Várias e Uteis Funções andmeida10 Lançamentos/Releases 28 14/12/2012 01:49 PM
[PEDIDO] Codigos Hashtag Português/Portuguese 7 16/11/2011 10:09 PM


All times are GMT. The time now is 01:53 PM.


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