Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: dlitl_yozy poslato Jul 16, 2018, 18:44:24 POSLE PODNE

Naslov: Pomoc oko Pawn.CMD
Poruka od: dlitl_yozy poslato Jul 16, 2018, 18:44:24 POSLE PODNE
Problem(error/warning): Ulg.. radi sve dok ovo ne postavim da mogu iskoristavat flags i tako to hah ak me kontate :) inc ovo se nalazi OnPlayerCommandReceived
Dio skripte: [pawn]        if ((flags & CMD_ADMIN) && !pAdmin[playerid])
     return SendErrorMessage(playerid, "Niste ovlasteni!");
     //
   if ((flags & CMD_GM) && !pGM[playerid])
     return SendErrorMessage(playerid, "Niste ovlasteni!");
     //
   if ((flags & CMD_ADMINGM) && !pAdmin[playerid] && !pGM[playerid])
     return SendErrorMessage(playerid, "Niste ovlasteni!"); [/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): //
Slika/video ingame problema(obavezno ako je ingame problem): //
Errori: https://pastebin.com/CZxLpu6X
Naslov: Odg: Pomoc oko Pawn.CMD
Poruka od: Łuk@ poslato Jul 16, 2018, 18:56:05 POSLE PODNE


[pawn]public OnPlayerCommandReceived(playerid, cmd[], params[], flags)
{
///
if(flags)
{
      if(flags > varijabla za admin level)
      {
         SendClientMessage(playerid, -1, "komanda ne postoji");
         return 0;
      }

      if(!varijablazaduznost)
      {
         SendClientMessage(playerid, 0xFFFFFFFF, "niste na admin duznosti");
         return 0;
      }
   }
return 1;
}[/pawn]

[pawn]public OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags)
{
    if(result == -1)
    {
      SendClientMessage(playerid, -1, "komanda ne postoji");
        return 0;
    }
    return 1;
}[/pawn]

medju enumatorima kreiras jos jedan enumator ovog tipa
[pawn]enum
{
   CMD_USER,
   CMD_HELPER,
   CMD_MODERATOR,
   CMD_SUPER_MODERATOR,
   CMD_GAME_OPERATOR,
   CMD_ADMIN
}[/pawn]

i na kraju moda pises ovako
[pawn]flags:imekomande(CMD_HELPER);[/pawn]


nisam ti ja roki najbolji za ova objasnjavanja, bolje procitaj dokumentaciju
Naslov: Odg: Pomoc oko Pawn.CMD
Poruka od: dlitl_yozy poslato Jul 16, 2018, 23:04:02 POSLE PODNE
tnx pokusat cu <3
Naslov: Odg: Pomoc oko Pawn.CMD
Poruka od: Łuk@ poslato Jul 16, 2018, 23:08:00 POSLE PODNE
CitatUsing flags
You can set flags for a command.

#include <Pawn.CMD>

enum (<<= 1)
{
    CMD_ADMIN = 1, // 0b00000000000000000000000000000001
    CMD_MODER,     // 0b00000000000000000000000000000010
    CMD_JR_MODER   // 0b00000000000000000000000000000100
};

new pPermissions[MAX_PLAYERS];

flags:ban(CMD_ADMIN);
cmd:ban(playerid, params[])
{
    // code here
    return 1;
}
alias:ban("block");

flags:kick(CMD_ADMIN | CMD_MODER);
cmd:kick(playerid, params[])
{
    // code here
    return 1;
}

flags:jail(CMD_ADMIN | CMD_MODER | CMD_JR_MODER);
cmd:jail(playerid, params[])
{
    // code here
    return 1;
}

public OnPlayerCommandReceived(playerid, cmd[], params[], flags)
{
    if (!(flags & pPermissions[playerid]))
    {
        printf("player %d doesn’t have access to command '%s'", playerid, cmd);

        return 0;
    }

    return 1;
}

public OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags)
{
    if(result == -1)
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "SERVER: Unknown command.");

        return 0;
    }

    return 1;
}

public PC_OnInit()
{
    const testAdminPlayerId = 1, testModerPlayerId = 2, testJrModerPlayerId = 3, testSimplePlayerId = 4;

    pPermissions[testAdminPlayerId] = CMD_ADMIN | CMD_MODER | CMD_JR_MODER;
    pPermissions[testModerPlayerId] = CMD_MODER | CMD_JR_MODER;
    pPermissions[testJrModerPlayerId] = CMD_JR_MODER;
    pPermissions[testSimplePlayerId] = 0;

    PC_EmulateCommand(testAdminPlayerId, "/ban 4 some reason"); // ok
    PC_EmulateCommand(testModerPlayerId, "/ban 8 some reason"); // not ok, moder doesn’t have access to 'ban'
    PC_EmulateCommand(testModerPlayerId, "/kick 15 some reason"); // ok
    PC_EmulateCommand(testModerPlayerId, "/jail 16 some reason"); // ok, moder can use commands of junior moderator
    PC_EmulateCommand(testJrModerPlayerId, "/jail 23 some reason"); // ok
    PC_EmulateCommand(testSimplePlayerId, "/ban 42 some reason"); // not ok
}

evo procitaj i ovo
Naslov: Odg: Pomoc oko Pawn.CMD
Poruka od: dlitl_yozy poslato Jul 16, 2018, 23:10:11 POSLE PODNE
NAPRAVIO LOCK