SA-MP Forums

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

Reply
 
Thread Tools Display Modes
Old 24/09/2019, 04:06 PM   #3441
RodrigoMSR
High-roller
 
RodrigoMSR's Avatar
 
Join Date: Mar 2015
Location: Brazil
Posts: 1,075
Reputation: 140
Default Re: Códigos Úteis #1

Anti Team Tire Popping

Este código, usando Pawn.Raknet, impede motoristas de receberem tiros de aliados (SetPlayerTeam), evitando que os pneus do veículo sejam perfurados.

Por que não apenas retornar 0 na OnPlayerWeaponShot? Porque, se houver um jogador de outra equipe no banco do passageiro, este também não receberá os tiros e não poderá ser morto. Claro, você poderia impedir jogadores de equipes diferentes estarem no mesmo veículo, mas há casos em que isso não é viável.

PHP Code:
const BULLET_SYNC 206;

OPacket:BULLET_SYNC(playeridBitStream:bs)
{
    if(
GetPlayerTeam(playerid) != NO_TEAM && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
         static 
fromhittypehitid;

        
BS_IgnoreBits(bs8);

        
BS_ReadValue(
            
bs,
             
PR_UINT16from,
            
PR_UINT8hittype,
            
PR_UINT16hitid
        
);
        
        
//BS_SetReadOffset(bs, 0); //se houver outra filtragem do mesmo pacote

        
if(hittype == BULLET_HIT_TYPE_VEHICLE && hitid == GetPlayerVehicleID(playerid))
        {
            if(
GetPlayerTeam(playerid) == GetPlayerTeam(from))
            {
                return 
0;
            }
        }
    }
    return 
1;

__________________
sttserver.net

RodrigoMSR is online now   Reply With Quote
Old 17/11/2019, 04:32 PM   #3442
Unsettled
Big Clucker
 
Unsettled's Avatar
 
Join Date: Nov 2019
Location: South American
Posts: 48
Reputation: 5
Default Re: Códigos Úteis #1

´ LOG DE DADOS

Estou disponibilizando este Código Útil para aqueles que desejam monitorar Commands/Systems. Porém o intuito deste código, é ajuda a identificar falhas em sistemas e problemas operacionais.. Tanto quanto pode salvar informações geradas por usuários do seu servidor!

´ Utilizando da seguinte forma como exemplo:

Code:
p_Log("Open Server", "O servidor foi iniciado!");

new v_Player[4] = "N/A";
p_Log("Open Server", v_Player);

public OnGameModeInit()
{
      p_Log("Open Server", "O servidor foi iniciado!");
      return true;
}
´ Que irá Gerar o caractere 'O servidor foi iniciado!' e em seguida salva-los automaticamente na pasta 'logs_server'.

´ Resultados:




´ Caso use o Código Útil LEMBRE-SE de criar a seguinte pasta logs_server em scriptfiles localizado em seu gamemode..

Code:
enum DATA_TIMER
{
      t_Day,
      t_Year,
      t_Month,
      t_Second,
      t_Minute,
      t_Hour,
}
new s_Timer[DATA_TIMER];
Code:
stock p_Log(f_Log[], const catch[])
{
      new
            File: p_File, p_Path[256]
      ;
	
      getdate(s_Timer[t_Year], s_Timer[t_Month], s_Timer[t_Day]);
      gettime(s_Timer[t_Hour], s_Timer[t_Minute], s_Timer[t_Second]);
	
      format(p_Path, 256, "logs_server/%s.sys", f_Log);
      p_File = fopen(p_Path, io_append);
	
      format(String, 256, "< %02d/%02d/%d | %02d:%02d:%02d > %s\r\n", s_Timer[t_Day], s_Timer[t_Month], s_Timer[t_Year], s_Timer[t_Hour], s_Timer[t_Minute], s_Timer[t_Second], catch);
      fwrite(p_File, String), fclose(p_File);
	
      return true;
}
´ Obs. Estou postando este CÓDIGO ÚTIL aqui pelo seguinte fator: (Não consegui achar um que fosse adequado e organizado para meu Projeto atual). E com este, está sendo minha grande precisão e até agora! Não apresentou nenhum problema.. Atualmente está Gerando os Seguintes 'Log':

- Invasão de Bases,
- Raio de proximidade,
- Spawn e Setagens.
__________________
.Developing
Quote:
.SA-MP 0.3.DL Evolution Z - DayZ VOICE
Unsettled is offline   Reply With Quote
Old 18/11/2019, 11:19 AM   #3443
ipsLuan
High-roller
 
ipsLuan's Avatar
 
Join Date: Feb 2013
Location: Ilhéus, BA
Posts: 4,548
Reputation: 332
Default Re: Códigos Úteis #1

Quote:
Originally Posted by Unsettled View Post
´ LOG DE DADOS

Estou disponibilizando este Código Útil para aqueles que desejam monitorar Commands/Systems. Porém o intuito deste código, é ajuda a identificar falhas em sistemas e problemas operacionais.. Tanto quanto pode salvar informações geradas por usuários do seu servidor!

´ Utilizando da seguinte forma como exemplo:

Code:
p_Log("Open Server", "O servidor foi iniciado!");

new v_Player[4] = "N/A";
p_Log("Open Server", v_Player);

public OnGameModeInit()
{
      p_Log("Open Server", "O servidor foi iniciado!");
      return true;
}
´ Que irá Gerar o caractere 'O servidor foi iniciado!' e em seguida salva-los automaticamente na pasta 'logs_server'.

´ Resultados:




´ Caso use o Código Útil LEMBRE-SE de criar a seguinte pasta logs_server em scriptfiles localizado em seu gamemode..

Code:
enum DATA_TIMER
{
      t_Day,
      t_Year,
      t_Month,
      t_Second,
      t_Minute,
      t_Hour,
}
new s_Timer[DATA_TIMER];
Code:
stock p_Log(f_Log[], const catch[])
{
      new
            File: p_File, p_Path[256]
      ;
	
      getdate(s_Timer[t_Year], s_Timer[t_Month], s_Timer[t_Day]);
      gettime(s_Timer[t_Hour], s_Timer[t_Minute], s_Timer[t_Second]);
	
      format(p_Path, 256, "logs_server/%s.sys", f_Log);
      p_File = fopen(p_Path, io_append);
	
      format(String, 256, "< %02d/%02d/%d | %02d:%02d:%02d > %s\r\n", s_Timer[t_Day], s_Timer[t_Month], s_Timer[t_Year], s_Timer[t_Hour], s_Timer[t_Minute], s_Timer[t_Second], catch);
      fwrite(p_File, String), fclose(p_File);
	
      return true;
}
´ Obs. Estou postando este CÓDIGO ÚTIL aqui pelo seguinte fator: (Não consegui achar um que fosse adequado e organizado para meu Projeto atual). E com este, está sendo minha grande precisão e até agora! Não apresentou nenhum problema.. Atualmente está Gerando os Seguintes 'Log':

- Invasão de Bases,
- Raio de proximidade,
- Spawn e Setagens.
Sempre usei o 'losgs' e nunca tive problema.
__________________
Precisando de algum sistema? Me contate.
ipsLuan is offline   Reply With Quote
Old 18/11/2019, 06:34 PM   #3444
Unsettled
Big Clucker
 
Unsettled's Avatar
 
Join Date: Nov 2019
Location: South American
Posts: 48
Reputation: 5
Default Re: Códigos Úteis #1

Quote:
Originally Posted by ipsLuan View Post
Par ou ímpar?

PHP Code:
//Par ou ímpar?

#include a_samp

main () {}

new 
numberChosen 120;

stock evenOrOdd(number) {
    
number number 2;
    if(
number == 0)
        print(
"Par");
    else
        print(
"Ímpar");
    return 
1;
}

public 
OnGameModeInit() {
    
evenOrOdd(numberChosen);
    return 
1;

Listando todos os números pares e ímpares de uma quantidade escolhida
PHP Code:
//Listando números pares e ímpares até uma quantidade.

#include a_samp

main () {}

new 
numberChosen 10;

public 
OnGameModeInit() {
    new 
contNumber 0number;
    while(
contNumber numberChosen) {
        
contNumber++;
        
number contNumber 2;
        if(
number == 0printf("%d é par."contNumber);
        else 
printf("%d é ímpar."contNumber);
    }
    return 
1;

Listando apenas números pares
PHP Code:
//Listando números pares

#include a_samp

main () {}

new 
numberChosen 10;

public 
OnGameModeInit() {
    new 
contNumber 0number;
    while(
contNumber numberChosen) {
        
contNumber++;
        
number contNumber 2;
        if(
number == 0printf("%d é par."contNumber);
    }
    return 
1;

Listando apenas números ímpares
PHP Code:
//Listando números ímpares

#include a_samp

main () {}

new 
numberChosen 10;

public 
OnGameModeInit() {
    new 
contNumber 0number;
    while(
contNumber numberChosen) {
        
contNumber++;
        
number contNumber 2;
        if(
number != 0printf("%d é ímpar."contNumber);
    }
    return 
1;

´ Interessante e desnecessário..
__________________
.Developing
Quote:
.SA-MP 0.3.DL Evolution Z - DayZ VOICE
Unsettled is offline   Reply With Quote
Old 01/12/2019, 08:34 PM   #3445
CALENZ021
Big Clucker
 
Join Date: Jun 2018
Location: Latin America
Posts: 117
Reputation: 5
Lightbulb Re: Códigos Úteis #1

@Removido
__________________





Last edited by CALENZ021; 06/12/2019 at 01:34 PM.
CALENZ021 is offline   Reply With Quote
Old 01/12/2019, 10:44 PM   #3446
Locky_
High-roller
 
Locky_'s Avatar
 
Join Date: Jul 2012
Posts: 1,605
Reputation: 338
Default Re: Códigos Úteis #1

Quote:
Originally Posted by CALENZ021 View Post

Código

Este código eu uso para que o player não logue com a mesma conta duas ou mais vezes,
evitando assim o bug de duplicar, triplicar,... os dados da conta.

Variáveis:

Armazena o que o player digitou no login
pawn Code:
pPlayerInfo[playerid][pNome]
Armazena o se o player está logado ou não
pawn Code:
PlayerInfo[playerid][Logado]
Armazena o nome do player
pawn Code:
PlayerInfo[playerid][Nome]

Verificar se a conta já está logada
pawn Code:
if(AccountIsLoggedIn(playerid))
{
    Kick(playerid);
    SendClientMessage(playerid, Erro, "| ERRO | Essa conta já está logado no servidor!");
    return 1;
}

Stock que verificar se a conta já está logada
pawn Code:
AccountIsLoggedIn(playerid)
{
    for(new i=0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(playerid) && IsPlayerConnected(i))
        {
            if(PlayerInfo[playerid][Logado] == false && PlayerInfo[i][Logado] == true)
            {
                if(strcmp(pPlayerInfo[playerid][pNome], PlayerInfo[i][Nome], true)==0) // Se o nome que o player digitou já estiver logado...
                {
                    return true;
                }
            }
        }
    }
    return false;
}
By: Eu / Henrique Calenzo ( Se me mostrarem que não é útil eu removo ).
Amigo, se você entrar com um nickname que já está logado, o próprio SA-MP impede o login. Ou seja, o código acaba sendo desnecessário.
Locky_ is offline   Reply With Quote
Old 02/12/2019, 11:10 AM   #3447
ipsLuan
High-roller
 
ipsLuan's Avatar
 
Join Date: Feb 2013
Location: Ilhéus, BA
Posts: 4,548
Reputation: 332
Default Re: Códigos Úteis #1

Quote:
Originally Posted by CALENZ021 View Post
Impede não. Já vi muita gente bugando dinheiro por causa disso.
O próprio SA-MP bloqueia, sim.
Aparece aquele erro de nickname inaceitável (A-Z / 0-9) e bloqueia o acesso imediatamente até a saída do jogador com o mesmo nome.
__________________
Precisando de algum sistema? Me contate.
ipsLuan is offline   Reply With Quote
Old 02/12/2019, 03:27 PM   #3448
Ermanhaut
Gangsta
 
Ermanhaut's Avatar
 
Join Date: Apr 2016
Location: Brazil
Posts: 661
Reputation: 47
Default Re: Códigos Úteis #1

Quote:
Originally Posted by CALENZ021 View Post
Ele bloqueia só pra quem usa o nick no Launcher do sa-mp, mas e pros servidores que usam tela de login em TextDraws( Pedindo nome e senha... ) ? ai que ocorre o bug.
Cara, a conexão do player é rejeitada. Simples assim.
__________________
try, try and try again
Ermanhaut is offline   Reply With Quote
Old 02/12/2019, 03:47 PM   #3449
CALENZ021
Big Clucker
 
Join Date: Jun 2018
Location: Latin America
Posts: 117
Reputation: 5
Default Re: Códigos Úteis #1

Respondendo:

Quote:
Originally Posted by Locky_ View Post
Amigo, se você entrar com um nickname que já está logado, o próprio SA-MP impede o login. Ou seja, o código acaba sendo desnecessário.
Quote:
Originally Posted by ipsLuan View Post
O próprio SA-MP bloqueia, sim.
Aparece aquele erro de nickname inaceitável (A-Z / 0-9) e bloqueia o acesso imediatamente até a saída do jogador com o mesmo nome.
Quote:
Originally Posted by Ermanhaut View Post
Cara, a conexão do player é rejeitada. Simples assim.
Não impede o login. Por que? porque o player loga no launcher do sa-mp com nicks diferentes. mas na tela de login é usado SetPlayerName e dai o player resolve entrar com a mesma conta, assim duplicando os dados.

Pode não fazer login mas duplica os dados sim, mas vou retirar meu poste.
__________________





Last edited by CALENZ021; 06/12/2019 at 01:33 PM.
CALENZ021 is offline   Reply With Quote
Old 03/12/2019, 06:06 PM   #3450
Ermanhaut
Gangsta
 
Ermanhaut's Avatar
 
Join Date: Apr 2016
Location: Brazil
Posts: 661
Reputation: 47
Default Re: Códigos Úteis #1

Quote:
Originally Posted by CALENZ021 View Post
Respondendo:
Não impede o login. Por que? porque o player loga no launcher do sa-mp com nicks diferentes. mas na tela de login é usado SetPlayerName e dai o player resolve entrar com a mesma conta, assim duplicando os dados.
Testa você mesmo aí então. Abre qualquer servidor BR e veja algum nome na lista de players. Troque seu nome para qualquer um logado e tente entrar. Seu conexão vai ser rejeitada.

Se o sistema trocar o nome do jogador, ele deve ter um login e uma senha. Se você colocar o nome do personagem de algum player logado, sua conexão vai ser rejeitada. Se você colocar o login dele, vai pra tela de login e você terá que ter a senha dele. Por acaso, se você acertar a senha dele e seu nome for trocado, SetPlayerName não funcionará porque tem um player logado com o nome que você ia setar.

Code:
1 The name was changed successfully
0 The name is already in use (including by this player at the moment) or the player specified is not connected
-1 The name can not be changed (too long or has invalid characters)
Não tem como ter dois players com o mesmo nome.
__________________
try, try and try again
Ermanhaut 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:01 PM.


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