[Pedido] Criando comandos administrativos
#1

Olб galera quero saber como criar comandos IR , Trazer & /setadmin e no /SETADMIN ir colocando os cargos para Setar tipo level 1 , level 2 , level 3 й etc.
Reply
#2

Boa tarde, WL!

Antes de comeзarmos, dк uma olhada em alguns links ъteis:


Sobre os comandos /ir e /trazer
Bom, para comeзar, vocк pode fazer uma funзгo para facilitar e diminuir teu trabalho ao criar os comandos.

PHP код:
/*
    Parвmetros:
         playerid - Player que vai ser enviado
        targetid - Player que vai receber o playerid
*/
SendPlayerToPlayer(playeridtargetid)
{
    
//Obtйm as coordenadas do alvo
    
new Float:xFloat:yFloat:z;
    
GetPlayerPos(targetidxyz);
    
//Altera o mundo virtual e o interior do playerid para o mesmo do alvo
    
SetPlayerInterior(playeridGetPlayerInterior(targetid));
    
SetPlayerVirtualWorld(playeridGetPlayerVirtualWorld(targetid));
    
//Verifica se o jogador estб dirigindo algum veнculo
    
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) {
        
SetPlayerPos(playeridxyz);
    } else {
//Se estiver, envia o carro tambйm
        
new vehicleid GetPlayerVehicleID(playerid);
        
SetVehiclePos(vehicleidxyz);
        
LinkVehicleToInterior(vehicleidGetPlayerInterior(targetid));
        
SetVehicleVirtualWorld(vehicleidGetPlayerVirtualWorld(targetid));
    }

Com a funзгo pronta, vocк pode criar os comandos:
  • /ir:
PHP код:
YCMD:ir(playeridparams[], help)
{
    
//Variбvel para armazenar o jogador alvo
    
new targetid;
    
//Checagem de parвmetros
    
if(sscanf(params"u"targetid))
        return 
SendClientMessage(playeridCOLOR_INFO"* /ir [playerid]");
    
//verificando se o jogador estб conectado
    
if(!IsPlayerConnected(targetid))
        return 
SendClientMessage(playeridCOLOR_ERROR"* O jogador nгo estб conectado.");
    if(
targetid == playerid)
        return 
SendClientMessage(playeridCOLOR_ERROR"* Vocк nгo pode ir atй vocк mesmo.");
    
//Enviando o jogador
    
SendPlayerToPlayer(playeridtargetid);
    return 
1;

  • /trazer: (Mesma coisa, sу inverter os parвmetros da funзгo)
PHP код:
YCMD:trazer(playeridparams[], help)
{
    
//Variбvel para armazenar o jogador alvo
    
new targetid;
    
//Checagem de parвmetros
    
if(sscanf(params"u"targetid))
        return 
SendClientMessage(playeridCOLOR_INFO"* /trazer [playerid]");
    
//verificando se o jogador estб conectado
    
if(!IsPlayerConnected(targetid))
        return 
SendClientMessage(playeridCOLOR_ERROR"* O jogador nгo estб conectado.");
    
//Verificando se o jogador alvo й o mesmo que quem digita o comando
    
if(targetid == playerid)
        return 
SendClientMessage(playeridCOLOR_ERROR"* Vocк nгo pode trazer vocк mesmo.");
    
//Trazendo o jogador
    
SendPlayerToPlayer(targetidplayerid);
    return 
1;



Sobre o sistema de rank administrativo
Tenha certeza que leu a pбgina de Scripting Basics (principalmente a parte de variбveis) antes de comeзar.

Algo bem bбsico, primeiramente, vocк vai precisar de uma variбvel global para cada jogador para controlar o nнvel administrativo de cada um.

PHP код:
AdminLevel[MAX_PLAYERS]; 
Esse MAX_PLAYERS, indica o tamanho do vetor, ou seja, ele tem o tamanho que foi definido na include a_samp de jogadores mбximo que um servidor pode ter, isto й, pode variar entre 500 e 1000.

Agora, й sу criar os comandos para definir o adminlevel de jogadores alvos:
  • /setadmin:
PHP код:
YCMD:trazer(playeridparams[], help)
{
    
//Variбvel para armazenar o jogador alvo
    
new targetid;
    
//Checagem de parвmetros
    
if(sscanf(params"u"targetid))
        return 
SendClientMessage(playeridCOLOR_INFO"* /trazer [playerid]");
    
//verificando se o jogador estб conectado
    
if(!IsPlayerConnected(targetid))
        return 
SendClientMessage(playeridCOLOR_ERROR"* O jogador nгo estб conectado.");
    
//Verificando se o jogador alvo й o mesmo que quem digita o comando
    
if(targetid == playerid)
        return 
SendClientMessage(playeridCOLOR_ERROR"* Vocк nгo pode trazer vocк mesmo.");
    
//Trazendo o jogador
    
SendPlayerToPlayer(targetidplayerid);
    return 
1;


Observaзхes
Caso vocк queira fazer verificaзхes em comandos, e permitir somente administradores de certos leveis a utilizar, й simples:

PHP код:
if(AdminLevel[playerid] < 2)
    return 
SendClientMessage(playeridCOLOR_ERROR"* Vocк nгo estб autorizado."); 
COLOR_ERROR e COLOR_INFO sгo directives, (valores prй-definidos em hexadecimal), vocк pode dar uma olhada neste artigo sobre keywords para saber como defini-las, utilize o modelo abaixo, caso queira:

PHP код:
#define COLOR_ERROR        /*valor hexadecimal*/
#define COLOR_INFO        /*valor hexadecimal*/ 
Й isso, caso tenha alguma dъvida, basta responder a este tуpico.
Reply
#3

Tem ******** para contato? ou Skype?
Reply
#4

Quote:
Originally Posted by WL
Посмотреть сообщение
Tem ******** para contato? ou Skype?
Sim, caso precise me contatar, me procure por mensagem privada.
Antes de me contatar, tenha certeza de que leu minha assinatura.
Reply
#5

Apesar da sua dъvida jб ter sido resolvida..

[ame="http://www.youtube.com/watch?v=Ngr4OiNaRnE"]Guia Definitivo SAMP - Criar comando utilizando ZCMD e SSCANF[/ame]

Depois que vocк ver, vai conseguir criar qualquer comando que utilize zcmd e sscanf.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)