[Tool/Web/Other] (C#) Extern RCON
#1

Inicio/Apresentaзгo: Quem implementaria ?

Ele tб simples, porйm estб bom para iniciar os estudos em C# e entender melhor a respeito de sockets usados no SA-MP.

Pawn source:
pawn Код:
#include <a_samp>
#include <sscanf2>

new params[256], _cmd[40];

public OnRconCommand(cmd[])
{
    sscanf(cmd, "ss", _cmd, params);
   
    if (!strcmp(_cmd, "kick"))
    {
        new sId;
        sscanf(params, "i", sId);

        if (!IsPlayerConnected(sId))
            return true;

        Kick(sId);
    }
   
    if (!strcmp(_cmd, "ban"))
    {
        new sId;
        sscanf(params, "i", sId);

        if (!IsPlayerConnected(sId))
            return true;

        Ban(sId);
    }
   
    if (!strcmp(_cmd, "veh"))
    {
        new sId, sCar;
        sscanf(params, "ii", sId, sCar);
       
        if (!IsPlayerConnected(sId))
            return true;

        new sMsg[50];
           
        if (sCar == -1)
        {
            format(sMsg, sizeof(sMsg), "[RCON] Admin destruiu o seu veнculo.");
            DestroyVehicle(GetPVarInt(sId, "veh"));
            SendClientMessage(sId, 0x03FFFFFF, sMsg);
            return true;
        }
           
        new Float:x, Float:y, Float:z, Float:a;
       
        GetPlayerPos(sId, x, y, z);
        GetPlayerFacingAngle(sId, a);
       
        new veh = CreateVehicle(sCar, x, y, z, a, 0, 0, cellmax);
       
        SetPVarInt(sId, "veh", veh);
       
        format(sMsg, sizeof(sMsg), "[RCON] Admin criou o veнculo %d para vocк.", sCar);
        PutPlayerInVehicle(sId, veh, 0);
        SendClientMessage(sId, 0x03FFFFFF, sMsg);
    }
   
    if (!strcmp(_cmd, "vida"))
    {
        new sId, Float: sHealth;
        sscanf(params, "if", sId, sHealth);
       
        if (!IsPlayerConnected(sId))
            return true;
           
        new sMsg[50];
           
        format(sMsg, sizeof(sMsg), "[RCON] Admin alterou sua vida para %f", sHealth);
        SetPlayerHealth(sId, sHealth);
        SendClientMessage(sId, 0x03FFFFFF, sMsg);
        return true;
    }
   
    if (!strcmp(_cmd, "colete"))
    {
        new sId, Float: sArmour;
        sscanf(params, "if", sId, sArmour);

        if (!IsPlayerConnected(sId))
            return true;

        new sMsg[50];

        format(sMsg, sizeof(sMsg), "[RCON] Admin alterou seu colete para %f", sArmour);
        SetPlayerArmour(sId, sArmour);
        SendClientMessage(sId, 0x03FFFFFF, sMsg);
        return true;
    }
   
    if (!strcmp(_cmd, "msg"))
    {
        new sId, sMsg[128];
        sscanf(params, "is", sId, sMsg);

        if (!IsPlayerConnected(sId))
            return true;

        format(sMsg, sizeof(sMsg), "[RCON] Admin disse: %s", sMsg);
        SendClientMessage(sId, 0x03FFFFFF, sMsg);
        return true;
    }
    return 1;
}
O source pwn й utilizado para receber as mensagens que o programa envia atravйs de sockets,
quando ele recebe alguma mensagem, ela й tratada para se tornar um comando.

C# Source: (C#) Extern RCON Download
OBS: O download й um .rar, ele й seguro, nгo contйm nada de executбvel e nem arquivos estranhos, apenas os arquivos utilizados no VS.

Abraзos.

BETA-TESTERS:
  • PT
  • Dolby
  • BlueX
Reply
#2

Willian por isso eu te amo cara -qqqq
Reply
#3

Muito bom...

Parabйns

quando der dou Reput
Reply
#4

Valeu irei estudar este codigo.
Reply
#5

Very Nice. Otimo Man. иh Bom ter isto em mгos quando nгo pode se acessar o servidor..
Reply
#6

Willian me tira uma dъvida.

Estou estudando o cуdigo e dentro do arquivo PlayersFlags й onde fica os comandos certo? Para adicionar os comandos eu crio eles aqui e no .pwn, certo ?
Reply
#7

eita muito bom mano, parabens
Reply
#8

Quote:
Originally Posted by Juniiro3
Посмотреть сообщение
Willian me tira uma dъvida.

Estou estudando o cуdigo e dentro do arquivo PlayersFlags й onde fica os comandos certo? Para adicionar os comandos eu crio eles aqui e no .pwn, certo ?
PlayersFlags foi a classe que eu criei separada pra organizar os comandos que vou enviar pro .pwn

Tem de criar eles dentro do .pwn, se nгo o SV nгo interpreta como comando...
Olhe o source do pawn que postei, fica mais fбcil de entender...
Lб no PlayersFlags tem por exemplo: "msg {0} {1}"
Onde msg й o nome do comando, {0} й o ID do jogador, e {1} й a mensagem.

Por isso que no .pwn eu usei sscanf pra separar o comando, e os parвmetros {0}, {1}, {2} etc...
Reply
#9

Esse cara, eu quero ser como esse cara... Sem neuroseee
Reply
#10

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
PlayersFlags foi a classe que eu criei separada pra organizar os comandos que vou enviar pro .pwn

Tem de criar eles dentro do .pwn, se nгo o SV nгo interpreta como comando...
Olhe o source do pawn que postei, fica mais fбcil de entender...
Lб no PlayersFlags tem por exemplo: "msg {0} {1}"
Onde msg й o nome do comando, {0} й o ID do jogador, e {1} й a mensagem.

Por isso que no .pwn eu usei sscanf pra separar o comando, e os parвmetros {0}, {1}, {2} etc...
Ah entendi, obrigado

Teria como adaptar para cmds usando essa mesma base da Rcon porйm na OnPlayerCommandText ou OnPlayerCommandReceived no zcmd ?
Reply
#11

ta doido tem ke ser do time professional da codeme -q -q
Reply
#12

Quote:
Originally Posted by Juniiro3
Посмотреть сообщение
Ah entendi, obrigado

Teria como adaptar para cmds usando essa mesma base da Rcon porйm na OnPlayerCommandText ou OnPlayerCommandReceived no zcmd ?
Qual a finalidade disso ?
Reply
#13

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
Qual a finalidade disso ?
Nгo precisar logar na Rcon...

Apesar de nгo ter muita finalidade, й apenas uma curiosidade.

#Edit

Tem uma finalidade sim, o jogador poderia manipular as informaзхes dele sem logar no servidor, porque o jogador nгo saberia a senha Rcon e iria digamos que fazer comandos por fora.
Reply
#14

Sу pra lembrar, quem estuda conexхes em C# e SAMP, na Wiki tem um belo demonstrativo sobre isto.

https://sampwiki.blast.hk/wiki/Query_Mechanism/Csharp

Classe bem funcional!
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)