Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Lian Chang poslato Jul 06, 2018, 20:40:13 POSLE PODNE

Naslov: /skiniadmina /postaviadmina
Poruka od: Lian Chang poslato Jul 06, 2018, 20:40:13 POSLE PODNE
Problem(error/warning): Nije error samo mi treba pomoc kako da napravim ove 2 koamnde
Dio skripte: [ pawn ]Ako bude šta trebalo poslacu nije problem[ /pawn ]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [ code ]//[ /code ]
Naslov: Odg: /skiniadmina /postaviadmina
Poruka od: delete poslato Jul 06, 2018, 21:06:01 POSLE PODNE
Evo ti iz SA moda prilagodi svom modu
[pawn]YCMD:postaviadmina(playerid, params[],help)
{
    #pragma unused help
    if(UlogovanProvera[playerid] == 0) return SCM(playerid,-1,"SA:RP | "CRVENA"Moras se ulogovati da bi koristio ovu komandu!");
   if(PlayerInfo[playerid][pAdmin] >= 6 || IsPlayerAdmin(playerid))
   {
      new player, level, string[512];
      if(sscanf(params, "ud", player, level)) return SendClientMessage(playerid, -1, "SA:RP Pomoc | "ZUTA"/postaviadmina [ID/Ime] [Level (1-6)]");
      if(!IsPlayerConnected(player)) return SCM(playerid, -1,""CRVENA"[SA:RP] "BELA"Pogresan ID!");
      if(level < 0 || level > 6) return SendClientMessage(playerid, -1, ""CRVENA"[SA:RP] "SIVA"Admin Level ne moze biti manji od 0 i veci od 6!");
      PlayerInfo[player][pAdmin] = level;
      format(string, sizeof(string), ""ZUTA"A | "BELA"Admin %s vam je postavio %d Admin Level.", GetName(playerid), level);
      SendClientMessage(player, -1, string);
      format(string, sizeof(string), ""ZUTA"A | "BELA"Igracu %s ste postavili Admin Level na %d.", GetName(player), level);
      SendClientMessage(playerid, -1, string);
      if(level == 0)
      {
         SetPlayerColor(player, BELA2);
         AdminDuty[player] = 0;
      }
      else
      {
         PlayerInfo[player][pAdminpin] = 10000+random(899999);
         new INI:File = INI_Open(Korisnici(player));
         INI_WriteInt(File,"Adminpin",PlayerInfo[player][pAdminpin]);
         INI_Close(File);
         format(string, sizeof(string), ""ZUTA"A | "BELA"Vas pin kod je: %d  "CRVENA"OBAVEZNO ZAPISI", PlayerInfo[player][pAdminpin]);
         SendClientMessage(player, -1, string);
         new arank[128];
         if(PlayerInfo[playerid][pSkripter] == 1) { arank = "Skripter"; }
         else if(PlayerInfo[playerid][pVlasnik] == 1) { arank = "Vlasnik"; }
         else if(PlayerInfo[playerid][pAdmin] == 6) { arank = "Direktor"; }
         else { arank = "Admin"; }
         format(string, sizeof(string), "Cestitamo Vam, postali ste admin na Skill Arena RolePlay serveru!\nAdmin Level %d Vam je dao %s %s.\nVazno : Pri svakom ulasku na server trazice Vam se provera PIN koda radi sigurnosti!\nZapisite negde ovaj broj na papir ili neki txt dokument i sacuvajte, da znate za ubuduce!\nKOD : %d",level,arank, GetName(playerid),PlayerInfo[player][pAdminpin]);
         ShowPlayerDialog(player, 336, DIALOG_STYLE_MSGBOX, "Admin", string, "Uredu", "");
      }
      SavePlayer(player);
   }
   else
   {
       SendClientMessage(playerid, -1, ""CRVENA"[SA:RP] "SIVA"Samo Vlasnik!");
   }
   return 1;
}[/pawn]

Naslov: Odg: /skiniadmina /postaviadmina
Poruka od: bc-cod2 poslato Jul 06, 2018, 21:10:40 POSLE PODNE
COMMAND:posaviadmina(playerid, params[])
{
new id,alvl;
new Query[1000];
if (!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Samo RCON!");
if(sscanf(params, "ud", id,alvl)) return SendClientMessage(playerid, -1, "/postaviadmina [ ID ] [ Level ]");
if(alvl > 1338 || alvl < 1) return 1;
if(!IsPlayerConnected(id)) return 1;
if(alvl == 0) return 1;
mysql_format(bazaPodataka, Query, sizeof( Query ), "SELECT * FROM admini WHERE Ime = '%s'", ImeIgraca(id));
mysql_pquery( bazaPodataka, Query, "PostaviAdmina", "iii", playerid, id, alvl );
return 1;
}

COMMAND:smjeniadmina(playerid, params[])
{
if (!IsPlayerAdmin(playerid))
{
SendClientMessage(playerid, -1, "Samo RCON!");
return 1;
}
new smjeniadmina[66];
if (sscanf(params, "s[66]", smjeniadmina))
{
SendClientMessage(playerid, -1, "/smjeniadmina [ Nick ]");
return 1;
}
new Query[ 1000 ];
mysql_format(bazaPodataka, Query, sizeof( Query ), "SELECT * FROM admini WHERE Ime = '%s'", smjeniadmina);
mysql_pquery( bazaPodataka, Query, "SmjeniAdmina", "is", playerid, smjeniadmina );
return 1;
}



Funkcije:

forward PostaviAdmina(playerid, id, alvl);
public PostaviAdmina(playerid, id, alvl)
{
    new string[1000];
    new Query[1000];
new rows;
    cache_get_row_count(rows);
if(rows ) // Igrac postoji u `admini` na bazi podataka
{
    SendClientMessage(playerid, -1, "Igrac je administrator!");
    return 1;
    }
    else // igrac postavljen za admina ...
    {
mysql_format(bazaPodataka, Query, sizeof(Query), "INSERT INTO `admini` (`Ime`, `Level`) VALUES ('%s', '%d')", ImeIgraca(id), alvl);
mysql_tquery( bazaPodataka,Query);
        SetPVarInt(id, "AdminLevel", alvl);
    format(string, sizeof(string), "Postavljen vam je level %d Admina.", alvl);
SendClientMessage(id, 0xFF6347AA, string);
    }
return 1;
}
forward SmjeniAdmina(playerid, ime[]);
public SmjeniAdmina(playerid, ime[])
{
    new rows;
    new Query[1000];
    cache_get_row_count(rows);
    new trazimigraca[MAX_PLAYER_NAME];
if(rows )
{
    new jelonlinesmrad = 0; new idigraca = -1;
for(new i=0; i<MAX_PLAYERS; i++) {

if(IsPlayerConnected(i)) // Provjerava jel igrac online
{
      GetPlayerName(i, trazimigraca, sizeof(trazimigraca));
        if(strcmp(trazimigraca,ime,true)==0)
          {
              idigraca = i; // id igraca za online micanje admina
          jelonlinesmrad=1; // Igrac je online
    }
      }
}
if(jelonlinesmrad==1) // online micanje admina
{
    SendClientMessage(idigraca, -1, "Smjenjeni ste sa admin pozicije!");
SetPVarInt(idigraca, "AdminLevel", 0):
mysql_format( bazaPodataka,Query, sizeof(Query),"DELETE from `admini` where `Ime` = '%s'", ime);
mysql_tquery( bazaPodataka, Query );
      return 1;
}
else // offline micanje admina
{
mysql_format( bazaPodataka,Query, sizeof(Query),"DELETE from `admini` where `Ime` = '%s'", ime);
mysql_tquery( bazaPodataka, Query );
}
}
else
{
    SendClientMessage(playerid, -1, "Taj igrac nije admin!");
}
return 1;
}


Provjerava da li je igrac admin na logiranju
new Query[256];
format( Query, sizeof( Query ), "SELECT * FROM admini WHERE Ime = '%s'", ImeIgraca(playerid));
mysql_pquery( bazaPodataka, Query, "ProvjeraAdminPozicije", "i", playerid );


forward ProvjeraAdminPozicije(playerid);
public ProvjeraAdminPozicije(playerid)
{
    if(GetPVarInt(playerid, "AdminLevel") > 0)
{
    new rows;
    cache_get_row_count(rows);
if(rows )
{
    new lvl;
    cache_get_value_name_int(0, "Level", lvl);
    if(GetPVarInt(playerid, "AdminLevel") != lvl)
    {
        // igracu promjenjen admin level
        SetPVarInt(playerid, "AdminLevel);
    }
}
else
{
    // Tekst kad je igrac smjenjen
    SetPVarInt(playerid, "AdminLevel", 0);
}
}
return 1;
}

//----------- ime igraca (smrada)
stock ImeIgraca(playerid)
{
    new imesmrada[MAX_PLAYER_NAME];
    GetPlayerName(playerid, imesmrada, MAX_PLAYER_NAME);
    return imesmrada;
}


Komanda za listu admina

COMMAND:admini(playerid, params[])
{
    new qadmin[1000];
SendClientMessage(playerid, COLOR_LIGHTBLUE, "admini na serveru:");
mysql_format( bazaPodataka, qadmin, sizeof( qadmin ), "SELECT * FROM `admini`");
mysql_pquery( bazaPodataka, qadmin, "serverAdmins", "i", playerid );
return 1;
}

// izvrsavanje querya

forward serverAdmins(playerid);
public serverAdmins(playerid)
{
    new rows, admBroj, adminBrojac = 1;
    cache_get_row_count(rows);
new adminIme[100][MAX_PLAYER_NAME], adminLevel[100];
new trazimigraca[MAX_PLAYER_NAME];
if( rows )
{
for( new i = 0; i < rows; i ++ )
{
    admBroj = adminBrojac;
    cache_get_value_name( i, "Ime", adminIme[ admBroj ], 129 );
    cache_get_value_name_int( i, "Level", adminLevel[admBroj]);
    new jelonlinesmrad = 0;
for(new p=0; p<MAX_PLAYERS; p++)
    {
    if(IsPlayerConnected(p))
      {
      GetPlayerName(p, trazimigraca, sizeof(trazimigraca));
        if(strcmp(trazimigraca,adminIme[ admBroj ],true)==0)
          {
          jelonlinesmrad=1;
    }
      }
}
new string[256];
new status[54];
if(jelonlinesmrad == 0) { status = "{DB023E}Offline"; } // nije tu
else if(jelonlinesmrad == 1) { status = "{33AA33}Online"; } // tu je
format(string, sizeof(string),"- %s (lvl: %d ) %s", adminIme[ admBroj ], adminLevel[admBroj], status);
SendClientMessage(playerid, -1, string);// Ispisuje informacije o adminu
adminBrojac++;
}
}
return 1;
}


(http://noobot.info/uploader/image.php?di=3RBN)


SQL

CREATE TABLE `admini` (
  `broj` int(11) NOT NULL,
  `Ime` varchar(129) NOT NULL,
  `Level` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Indexes for table `admini`
--
ALTER TABLE `admini`
  ADD PRIMARY KEY (`broj`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `admini`
--
ALTER TABLE `admini`
  MODIFY `broj` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
COMMIT;
Naslov: Odg: /skiniadmina /postaviadmina
Poruka od: Paul Castellano poslato Jul 07, 2018, 11:45:12 PRE PODNE
Ako na takav način misliš skriptati,poštedi i sebe i nas - Odustani.

Ako zaista želiš naučiti skriptati ne možeš početi "učiti" praviti takve komandu dok ne poznaješ neke osnovne stvari.
Naslov: Odg: /skiniadmina /postaviadmina
Poruka od: NenaD22 poslato Jul 08, 2018, 04:28:32 PRE PODNE
@Paul Castellano je upravu , lepo odes na samp wiki i ucis malo  8)