SA-MP Forums

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

Reply
 
Thread Tools Display Modes
Old 06/01/2018, 10:54 AM   #3351
SpikeCompiler
Huge Clucker
 
SpikeCompiler's Avatar
 
Join Date: Dec 2017
Location: Brazil
Posts: 313
Reputation: 20
Default Re: Códigos Úteis #1

Olá, vim postar uns código uteis que uso no meu dia a dia..

Delay para Kick/Ban

Oque seria? como a maioria sabe, o Kick do SA-MP acontece tão rápido que não envia nenhuma mensagem para o player que foi kickado, simplesmente da o Closed, então para aparecer, basta colocar este código em seu GM, Lógicamente colocar a mensagem quando ele for kickado né.

PHP Code:
//Topo do seu GM.

#define Kick(%0) SetTimerEx("Kickar", 200, false, "i", %0)
#define Ban(%0) SetTimerEx("Banir", 200, false, "i", %0)

//Junto com as outras forwards

forward Kickar(playerid);
forward Banir(playerid);

//Final do GM

public Kickar(playerid)
{
    
#undef Kick
    
Kick(playerid);
    
#define Kick(%0) SetTimerEx("Kickar", 150, false, "i", %0)
    
return 1;
}
public 
Banir(playerid)
{
    
#undef Ban
    
Kick(playerid);
    
#define Ban(%0) SetTimerEx("Banir", 150, false, "i", %0)
    
return 1;

Comando de Limpar Chat com Linhas.

Oque seria? simplesmente um comando para você limpar o seu chat no servidor SAMP sem ter que adicionar vários SendClientMessage e ficar ocupando espaço em seu GameMode, com esse comando você pode limpar quantas linhas quiser.

PHP Code:
// Junto as outras Stocks

stock LimparChat(playeridlinhas)
{
    for(new 
0<= linhasb++) SendClientMessage(playerid,CINZA" ");
}

LimparChat(playeridLinhas//Quando for usar o comando, basta adicionar este comando, o 'Linhas' seria as linhas, normalmente eu deixo no 100, no caso 'LimparChat(playerid, 100)' que estária limpando 100 linhas. 
Ant AMX

Oque seria? basicamente um código antigo que trás uma proteção para seu AMX, impedindo de descompila-lo,
hoje em dia pode não funcionar mais, mais é sempre bom usar qualquer proteção.


PHP Code:
//Juntos as Stocks

AntiDeAMX()
{
    new 
a[][] =
    {
        
"Unarmed (Fist)",
        
"Brass K"
    
};
    
#pragma unused a
}

//OnGameModeInit

AntiDeAMX(); 
É isso galera, espero que algum desses códigos seja últil para alguns novatos, tmj.
SpikeCompiler is offline   Reply With Quote
Old 06/01/2018, 11:41 AM   #3352
Marllun
Gangsta
 
Marllun's Avatar
 
Join Date: Oct 2016
Location: Brazil
Posts: 897
Reputation: 35
Default Re: Códigos Úteis #1

AntiDeAMX não funciona mais
__________________
Code:
Discord: Marllun#6297
Marllun is offline   Reply With Quote
Old 06/01/2018, 08:37 PM   #3353
Dayvison_
High-roller
 
Dayvison_'s Avatar
 
Join Date: Nov 2013
Posts: 1,308
Reputation: 200
Default Re: Códigos Úteis #1

Excluir "contas" inutilizadas

Code:
import os
import argparse
import time


def main():
	parser = argparse.ArgumentParser()

	parser.add_argument(
		'-d', '--directory',
		help="path to \"accounts\" folder")

	parser.add_argument(
		'-t', '--time',
		default=30*24*60*60, # 30 days
		help="unmodified time, in seconds",
		type=int)

	args = parser.parse_args()

	if not os.path.exists(args.directory):
		print("Directory not found.", args.directory)
		return 0
	
	if args.time <= 0:
		print("Invalid time. ", args.time)
		return 0

	t = time.time() - args.time

	newfolder = "old files - {}".format(time.strftime("%d-%m-%Y %H:%M"))
	os.mkdir(os.path.join(args.directory, newfolder))

	files = [-1,0]

	for f in os.listdir(args.directory):
		file = os.path.join(args.directory, f)

		files[0] += 1

		if(os.path.getmtime(file) < t):
			files[1] += 1
			os.rename(file, os.path.join(args.directory, newfolder, f))

	print("{} files found, {} deleted".format(files[0], files[1]))

if __name__ == "__main__":
	main()
Para usar basta salvar o arquivo e executalo
Code:
python3 file_name.py -d [Diretório das contas] -t [Tempo inativo, em segundos]
NOTAS
  • Serve para qualquer tipo de arquivo e não somente contas.
  • Tempo por padrão vem em 30 dias(30*24*60*60)
  • Não apaga os arquivos, cria uma pasta chamada old files - DD/MM/AA HH:mm e os move para lá
  • Script se baseia na ultima alteração do arquivo, não em datas salvas ou algo similar
  • Testado apenas com datas pequenas como 1 minuto, porém deve funcionar em qualquer arquivo
Dayvison_ is offline   Reply With Quote
Old 07/01/2018, 01:44 AM   #3354
Dayvison_
High-roller
 
Dayvison_'s Avatar
 
Join Date: Nov 2013
Posts: 1,308
Reputation: 200
Default Re: Códigos Úteis #1

Retornar array de enum

Quando se tenta retornar um "array" de um enum, pawn trata o mesmo como inteiro, esse pequeno macro aqui contorna isto
PHP Code:
#define ret_enum_arr(%0[%1]);  emit CONST.alt variable; emit CONST.pri b; emit retn; 
Exemplo:
PHP Code:
#pragma naked
func(var)
{
    if(var)
    {
        new 
ret[32]="world";
        return 
ret;
    }
    
ret_enum_arr(variable[b]);
    
//return variable[b]; //  error 079: inconsistent return types (array & non-array)

NOTAS
  • Só funciona no pawn 3.10.3+
  • Isto não é um bug do compilador.
Dayvison_ is offline   Reply With Quote
Old 08/01/2018, 07:33 PM   #3355
RazorGuigo
Banned
 
Join Date: May 2016
Location: South is my Country
Posts: 1,135
Reputation: 104
Default Objeto temporario (para efeitos, de agua, sangue, faiscas, bla bla bla..)

PHP Code:
stock TempObj(objectidtempo=100)
    
SetTimerEx("TMP_OBJ_DEST"tempofalse"d"objectid);

forward TMP_OBJ_DEST(objectid);
public 
TMP_OBJ_DEST(objectid)
    return 
DestroyDynamicObject(objectid); 
ele é simples, por isso só coloquei aqui mesmo!
RazorGuigo is offline   Reply With Quote
Old 18/01/2018, 11:47 AM   #3356
Luiiiz
Huge Clucker
 
Join Date: Nov 2015
Location: Casa
Posts: 217
Reputation: 2
Default Re: Códigos Úteis #1

Comando /setadmin bem simples.
Algumas prints:

Digitando o comando /setadmin sem estar logado na RCON ou sem ser pAdmin = 4.
https://imgur.com/a/k6BLv

Digitando o comando /setadmin sem os parâmetros estando logado na RCON.
https://imgur.com/a/2onND

/setadmin id 0:
https://imgur.com/a/1cleB

/setadmin id 1:
https://imgur.com/a/KfzkY

/setadmin id 2:
https://imgur.com/a/faxVr

/setadmin id 3:
https://imgur.com/a/sO33B

/setadmin id 4:
https://imgur.com/a/tglZZ

PHP Code:
CMD:setadmin(playeridparams[])  

    new 
idlevelstring[200], pname[20], iname[20], file[50]; 
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid0xFF0000AA"| ERRO | Comando inválido."); 
    if(
IsPlayerAdmin(playerid) || pAdmin[playerid] == 4
    { 
        if(
sscanf(params"ud"idlevel)) return SendClientMessage(playerid0xFF0000AA"| ERRO | Use: /setadmin [id] [level 0-4]"); 
        if(!
IsPlayerConnected(id)) return SendClientMessage(playerid0xFF0000AA"| ERRO | Esse ID não conectado."); 
        if(
level || level 0) return SendClientMessage(playerid0xFF0000AA"| ERRO | Apenas leveis de 0 a 4."); 
        
format(filesizeof(file), "Contas/%s.ini"iname); 
        
GetPlayerName(playeridpname20); 
        
GetPlayerName(idiname20); 
        if(
level == 0
        { 
            
format(stringsizeof(string), "| Admin | Você removeu o(a) jogador(a) %s(%d) da Staff."inameid); 
            
SendClientMessage(playerid0xFF0000AAstring); 
            
format(stringsizeof(string), "| Admin | Você foi removido(a) da Staff pelo(a) Dono(a) %s(%d)."pnameplayerid); 
            
SendClientMessage(id0xFF0000AAstring); 
            
DOF2_SetInt(file"CargoAdm"0); 
            
DOF2_SaveFile(); 
            
pAdmin[id] = 0
        } 
        if(
level == 1
        { 
            
format(stringsizeof(string), "| Admin | Você promoveu o(a) jogador(a) %s(%d) a Ajudante."inameid); 
            
SendClientMessage(playerid0xFF0000AAstring); 
            
format(stringsizeof(string), "| Admin | Você foi promovido(a) a Ajudante pelo(a) Dono(a) %s(%d)"pnameplayerid); 
            
SendClientMessage(id0xFF0000AAstring); 
            
DOF2_SetInt(file"CargoAdm"1); 
            
DOF2_SaveFile(); 
            
pAdmin[id] = 1
        } 
        if(
level == 2
        { 
            
format(stringsizeof(string), "| Admin | Você promoveu o(a) jogador(a) %s(%d) a Moderador(a)."inameid); 
            
SendClientMessage(playerid0xFF0000AAstring); 
            
format(stringsizeof(string), "| Admin | Você foi promovido(a) a Moderador(a) pelo(a) Dono(a) %s(%d)"pnameplayerid); 
            
SendClientMessage(id0xFF0000AAstring); 
            
DOF2_SetInt(file"CargoAdm"2); 
            
DOF2_SaveFile(); 
            
pAdmin[id] = 2
        } 
        if(
level == 3
        { 
            
format(stringsizeof(string), "| Admin | Você promoveu o(a) jogador(a) %s(%d) a Administrador(a)."inameid); 
            
SendClientMessage(playerid0xFF0000AAstring); 
            
format(stringsizeof(string), "| Admin | Você foi promovido(a) a Administrador(a) pelo(a) Dono(a) %s(%d)"pnameplayerid); 
            
SendClientMessage(id0xFF0000AAstring); 
            
DOF2_SetInt(file"CargoAdm"3); 
            
DOF2_SaveFile(); 
            
pAdmin[id] = 3
        } 
        if(
level == 4
        { 
            
format(stringsizeof(string), "| Admin | Você promoveu o(a) jogador(a) %s(%d) a Dono(a)"inameid); 
            
SendClientMessage(playerid0xFF0000AAstring); 
            
format(stringsizeof(string), "| Admin | Você foi promovido(a) a Dono(a) pelo(a) Dono(a) %s(%d)"pnameplayerid); 
            
SendClientMessage(id0xFF0000AAstring); 
            
DOF2_SetInt(file"CargoAdm"4); 
            
DOF2_SaveFile(); 
            
pAdmin[id] = 4
        } 
    } 
    return 
1

Luiiiz is offline   Reply With Quote
Old 18/01/2018, 12:20 PM   #3357
F1N4L
High-roller
 
F1N4L's Avatar
 
Join Date: Jun 2013
Posts: 2,726
Reputation: 260
Default Re: Códigos Úteis #1

Quote:
Originally Posted by Luiiiz View Post
Comando /setadmin bem simples.
Algumas prints:

Digitando o comando /setadmin sem estar logado na RCON ou sem ser pAdmin = 4.
https://imgur.com/a/k6BLv

Digitando o comando /setadmin sem os parâmetros estando logado na RCON.
https://imgur.com/a/2onND

/setadmin id 0:
https://imgur.com/a/1cleB

/setadmin id 1:
https://imgur.com/a/KfzkY

/setadmin id 2:
https://imgur.com/a/faxVr

/setadmin id 3:
https://imgur.com/a/sO33B

/setadmin id 4:
https://imgur.com/a/tglZZ

...
Otimização, jovem.

Code:
CMD:setadmin(playerid, params[])   
{  
    new id, level, string[200], pname[20], iname[20], file[50];  
    
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Comando inválido.");  
    if(sscanf(params, "ud", id, level)) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Use: /setadmin [id] [level 0-4]");  
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Esse ID não conectado.");  
    if(level > 4 || level < 0) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Apenas leveis de 0 a 4.");  
    
    format(file, sizeof(file), "Contas/%s.ini", iname);  
    GetPlayerName(playerid, pname, 20);  
    GetPlayerName(id, iname, 20);

    if(level > 0)
    {
        format(string, sizeof(string), "| Admin | Você promoveu o(a) jogador(a) %s(%d) a Administrador(a).", iname, id);  
        SendClientMessage(playerid, 0xFF0000AA, string);  
        format(string, sizeof(string), "| Admin | Você foi promovido(a) a Administrador(a) pelo(a) Dono(a) %s(%d)", pname, playerid);  
        SendClientMessage(id, 0xFF0000AA, string);  
    }
    else
    {
        format(string, sizeof(string), "| Admin | Você removeu o(a) jogador(a) %s(%d) da Staff.", iname, id);  
        SendClientMessage(playerid, 0xFF0000AA, string);  
        format(string, sizeof(string), "| Admin | Você foi removido(a) da Staff pelo(a) Dono(a) %s(%d).", pname, playerid);  
        SendClientMessage(id, 0xFF0000AA, string); 
    }

    DOF2_SetInt(file, "CargoAdm", level);  
    DOF2_SaveFile();  

    pAdmin[id] = level;  

    return 1;  
}
F1N4L is offline   Reply With Quote
Old 18/01/2018, 02:11 PM   #3358
Luiiiz
Huge Clucker
 
Join Date: Nov 2015
Location: Casa
Posts: 217
Reputation: 2
Default Re: Códigos Úteis #1

Quote:
Originally Posted by F1N4L View Post
Otimização, jovem.

Code:
CMD:setadmin(playerid, params[])   
{  
    new id, level, string[200], pname[20], iname[20], file[50];  
    
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Comando inválido.");  
    if(sscanf(params, "ud", id, level)) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Use: /setadmin [id] [level 0-4]");  
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Esse ID não conectado.");  
    if(level > 4 || level < 0) return SendClientMessage(playerid, 0xFF0000AA, "| ERRO | Apenas leveis de 0 a 4.");  
    
    format(file, sizeof(file), "Contas/%s.ini", iname);  
    GetPlayerName(playerid, pname, 20);  
    GetPlayerName(id, iname, 20);

    if(level > 0)
    {
        format(string, sizeof(string), "| Admin | Você promoveu o(a) jogador(a) %s(%d) a Administrador(a).", iname, id);  
        SendClientMessage(playerid, 0xFF0000AA, string);  
        format(string, sizeof(string), "| Admin | Você foi promovido(a) a Administrador(a) pelo(a) Dono(a) %s(%d)", pname, playerid);  
        SendClientMessage(id, 0xFF0000AA, string);  
    }
    else
    {
        format(string, sizeof(string), "| Admin | Você removeu o(a) jogador(a) %s(%d) da Staff.", iname, id);  
        SendClientMessage(playerid, 0xFF0000AA, string);  
        format(string, sizeof(string), "| Admin | Você foi removido(a) da Staff pelo(a) Dono(a) %s(%d).", pname, playerid);  
        SendClientMessage(id, 0xFF0000AA, string); 
    }

    DOF2_SetInt(file, "CargoAdm", level);  
    DOF2_SaveFile();  

    pAdmin[id] = level;  

    return 1;  
}
Não sei se percebeu mas não é apenas Administrador o cargo que eu coloquei... Existe Ajudante, Moderador, Administrador E Dono. Caso fosse apenas Administrador, aí sim eu iria otimizar desse jeito. ^^
Luiiiz is offline   Reply With Quote
Old 18/01/2018, 02:28 PM   #3359
DelK
Huge Clucker
 
DelK's Avatar
 
Join Date: Apr 2017
Location: Brazil
Posts: 457
Reputation: 40
Default Re: Códigos Úteis #1

Quote:
Originally Posted by Luiiiz View Post
Não sei se percebeu mas não é apenas Administrador o cargo que eu coloquei... Existe Ajudante, Moderador, Administrador E Dono. Caso fosse apenas Administrador, aí sim eu iria otimizar desse jeito. ^^
E no tópico que você apagou eu te dei um bom exemplo de como fazer isso.
__________________
DelK is offline   Reply With Quote
Old 29/01/2018, 01:56 AM   #3360
BuDweiSeR
Big Clucker
 
BuDweiSeR's Avatar
 
Join Date: Dec 2017
Posts: 101
Reputation: 1
Default Re: Códigos Úteis #1

PHP Code:
CMD:pm(playeridparams[])
{
    new 
rName[MAX_PLAYER_NAME], IDMSG[128], text[128];
    if(
sscanf(params"us[128]"IDMSG))
        return 
SendClientMessage(playerid, -1,"/PM [ID] [TEXTO]");

    if(!
IsPlayerConnected(ID))
        return 
SendClientMessage(playerid, -1"Jogador não conectado.");

    if(
ID == playerid)
        return 
SendClientMessage(playerid, -1"Você não pode enviar mensagem para sí mesmo.");
    
GetPlayerName(IDrNamesizeof(rName));

    
format(textsizeof(text), "»»%s(%d): %s"rNameIDMSG); 
    
SendClientMessage(playeridCOLOR_YELLOWtext);
    
GameTextForPlayer(playerid"~y~MENSAGEM ENVIADA"30004);
    
PlayerPlaySound(playerid10570.00.010.0);

    
format(textsizeof(text), "**%s(%d): %s"Nome[playerid], playeridMSG);
    
SendClientMessage(IDCOLOR_YELLOWtext);
    
GameTextForPlayer(ID"~g~MENSAGEM RECEBIDA"30004);
    
PlayerPlaySound(playerid10570.00.010.0);
    return 
1;

__________________
Code:
Aprendiz Linguagem da Programação.
BuDweiSeR 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 06:03 AM.


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