/skiniadmina /postaviadmina


Započeo Lian Chang, Jul 06, 2018, 20:40:13 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

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 ]

Evo ti iz SA moda prilagodi svom modu
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;
}


[/b]

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;
}





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;
Poslednja Izmena: Jul 06, 2018, 21:14:53 POSLE PODNE od buLLeT_

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.

@Paul Castellano je upravu , lepo odes na samp wiki i ucis malo  8)