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
[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]
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;
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)