[Tutorials] [BG] SAMP Scripting - 3 (/setadmin)

Раздел за уроци, свързани със скриптирането при SA:MP
Post Reply
User avatar
zepfiz
Потребител
Потребител
Posts: 5
Joined: 24 Nov 2018, 16:15

[Tutorials] [BG] SAMP Scripting - 3 (/setadmin)

Post by zepfiz »

След 1 година, се завърнах. Защо след 1 година? Нямам идея. Просто ми омръзна играта но от скоро се завърнах.
Та така.
Нега да продължим с днешния туториел.

Предишния туториел ви показах как да си направим регистрационна система, ако искате линк, ето: viewtopic.php?f=260&t=176958

Та, в днешния урок ще ви покажа как да използваме ето това

Image

не знам дали снимката работи, ще използваме pAdmin от системата ни. Тя ни запазва нивото на админ и така ние можем да използваме админ команди който нормалните играчи не могат да използват

Нека да започваме, предполагам вие имате кода който писахме в миналия урок за това направо да продължаваме.

Правим команда /setadmin която ви прави или прави някой играч админ в играта. Първо ще трябва да изтеглите sscanf2 от тук: https://github.com/maddinat0r/sscanf/releases

Ако не се справите ще има урок и за това ако трябва.

Така, слагаме ето това в началото на гейммода ни:

Code: Select all

#include <sscanf2>
ако всичко сте направили както трябва, нямате да имате грешки.

След това слагате:

Code: Select all

#define COLOR_RED 0xFF0000FF
Така сега започваме с командата ни:

Code: Select all

CMD:setadmin(playerid, params[])
{
	return 1;
}
това е началото на нашата команда, над return 1; почваме да пишем нашия код за командата.

добавяме над return 1; това:

Code: Select all

new levels;
new Name[MAX_PLAYER_NAME];
new Name2[MAX_PLAYER_NAME];
new ID;
new string[128];
Така, new levels; тук пишем нивото което искаме да станем в играта, ще разберете по късно.
new Name ще вземем нашето име
new Name2 ще вземем името на играча на който ще дадем админ
new ID; е ид-то на играча на който ще дадем админ
new string[128] е колко букви да има в нашето съобщение което ще видите как ще го направим по късно.

За сега кодът ви трябва да изглежда така:

Code: Select all

CMD:setadmin(playerid, params[])
{
   new levels;
   new Name[MAX_PLAYER_NAME];
   new Name2[MAX_PLAYER_NAME];
   new ID;
   new string[128];
   return 1;
}
След това слагаме:

Code: Select all

if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "Трябва да сте RCON ADMIN за да използвате тази команда");
Тук съобщението казва какво прави това. Проверяваме ако играчът който извършва е RCON Admin тогава може да извърши командата, ако не ще му се изпрати съобщението което написахме.

След това слагаме:

Code: Select all

if(sscanf(params, "ui", ID, levels)) return SendClientMessage(playerid, COLOR_RED, "ИЗПОЛЗВАНЕ: /setadmin [ID] [1-5]");
Тук ако играчът ако е написал командата грешно, ще му излезне как да се използва командата.

след това:

Code: Select all

if(levels > 5) return SendClientMessage(playerid, COLOR_RED, "Нива достъпни: 1-5");
Тук вече използваме levels което го въведохме по нагоре, тоест ако играчът напише командата /setadmin 0 6 тоест /setadmin на ИД 0, ЛЕВЕЛ 6
ще му изпише че има само 5 левела админ.

до тук кода ви трябва да изглежда така:

Code: Select all

CMD:setadmin(playerid, params[])
{
   new levels;
   new Name[MAX_PLAYER_NAME];
   new Name2[MAX_PLAYER_NAME];
   new ID;
   new string[128];
   if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "Трябва да сте RCON ADMIN за да използвате тази команда");
   if(sscanf(params, "ui", ID, levels)) return SendClientMessage(playerid, COLOR_RED, "ИЗПОЛЗВАНЕ: /setadmin [ID] [1-5]");
   if(levels > 5) return SendClientMessage(playerid, COLOR_RED, "Нива достъпни: 1-5");
   return 1;
}
Дойде време да вземем името на нашия играч и на играчът на който ще дадем админ.

Code: Select all

GetPlayerName(playerid, Name, sizeof(Name));
GetPlayerName(ID, Name2, sizeof(Name2));
ID е играчът на който ще дадем АДМИНА, за това слагаме Name2 на ID, а Name си е на playerid тоест нашия играч

след това съобщението което ще бъде пратено на всички хора в сървърът.

Code: Select all

format(string, sizeof(string), "{FFFFFF}%s {FF0000}направи {FFFFFF}%s {FF0000}Админ с левел {FFFFFF}%d", Name, Name2, levels);
тоест разликата на string и SendClientMessage е че можем да слагаме цветове на места който ние искаме.

както виждате имаме %s %s %d
%s означава името на нашия играч
%d означава номерът на админ
а останалите са цветовете.

След това има, Name, Name2, levels.

тоест на първото %s слагаме Name, тоест нашето име, което взехме по нагоре.
на второто %s слагаме Name2, тоест името на играчът който дадохме админ, което взехме по нагоре.
и след това %d слагаме levels, тоест нивото което го направихме.

след това слагаме:

Code: Select all

SendClientMessageToAll(COLOR_WHITE, string);
тоест пращаме това дето написахме по нагоре с цвят бял, аз така съм си го направел, няма значение.
И след това string тоест текстът сме го задали като string и го изпращаме.

И след това

Code: Select all

PlayerInfo[playerid][pAdmin] = levels;
това:
PlayerInfo[playerid][pAdmin] е начинът по който системата ви запазва админа.
след това имаме = и след това levels

тоест задаваме нашия админ, на levels което е нивото което ще напишем.

И накрая кодът ви трябва да изглежда така:

Code: Select all

CMD:setadmin(playerid, params[])
{
   new levels;
   new Name[MAX_PLAYER_NAME];
   new Name2[MAX_PLAYER_NAME];
   new ID;
   new string[128];
   if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "Трябва да сте RCON ADMIN за да използвате тази команда");
   if(sscanf(params, "ui", ID, levels)) return SendClientMessage(playerid, COLOR_RED, "ИЗПОЛЗВАНЕ: /setadmin [ID] [1-5]");
   if(levels > 5) return SendClientMessage(playerid, COLOR_RED, "Нива достъпни: 1-5");
   GetPlayerName(playerid, Name, sizeof(Name));
   GetPlayerName(ID, Name2, sizeof(Name2));
   format(string, sizeof(string), "{FFFFFF}%s {FF0000}направи {FFFFFF}%s {FF0000}Админ с левел {FFFFFF}%d", Name, Name2, levels);
   SendClientMessageToAll(COLOR_WHITE, string);
   PlayerInfo[playerid][pAdmin] = levels;
   return 1;
}
Питайте ако има въпроси, знам че не съм най - добрия учител, но ще отговарям на въпроси което не сте разбрали, питайте.
User avatar
GGTELNET
Потребител
Потребител
Posts: 26
Joined: 27 Jun 2018, 11:06
Skype: live:martin.dimitrov03
CS Nick: WhiteNigga_
Steam Community ID: 76561198385677

Re: [Tutorials] [BG] SAMP Scripting - 3 (/setadmin)

Post by GGTELNET »

ЦЪК Едно ерорче ако може да се помогне
User avatar
uzi
Потребител
Потребител
Posts: 3
Joined: 30 Jan 2023, 11:37

Re: [Tutorials] [BG] SAMP Scripting - 3 (/setadmin)

Post by uzi »

GGTELNET wrote: 05 Sep 2021, 09:10 ЦЪК Едно ерорче ако може да се помогне
Не си дефинирал цветовете COLOR_RED и COLOR_WHITE в мода най вероятно. (Не се нуждаеш също от COLOR_WHITE, използвай "-1')

Code: Select all

#define COLOR_WHITE 0xFFFFFFFF
#define COLOR_RED 0xFF0000FF
Post Reply

Return to “GTA SA:MP Scripting Tuts”