[FilterScript] [RU]Helper System
#1

Вот сделал систему хелперов для сервера.
Описание: есть 5 уровней хелпера, 5 самый главный который может назначить хелпером когото.
Есть функция 3Д текстов над игроком в котором написан уровень хелпера игрока.
Команды:
/quest
/reply
/helpers
/hchat
/sethelperlevel
Код:
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT

#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <Dini>

#define DialogHelpersOnline 1069
#define HelperFile "HelperDats/%s.ini"
new bool:LoggedSkin[MAX_PLAYERS];
new Text3D:HelperLevel3D[MAX_PLAYERS];
enum InfoHelperData
{
	HelperLevel,
	bool:Helper,
	HelperName
}
new HelperData[MAX_PLAYERS][InfoHelperData];
new InfoHelperLevel[6][60] =
{
	{" [ этот игрок не являеться хелпером ]"},
	{"{FF0000}Начальный хелпер[1]{FFFFFF}"},
	{"{00FF00}Модератор хелперов[2]{FFFFFF}"},
	{"{FFFF00}Хелпер[3]{FFFFFF}"},
	{"{0000FF}Заместитель главного хелпера[4]{FFFFFF}"},
	{"{FF0000}Главный хелпер[5]{FFFFFF}"}
};
HelperFile_Create(playerid)
{
	new file[100], File:PFile, Name[24], LineForFile[100];
	format(Name, sizeof(Name), HelperData[playerid][HelperName]);
	format(file, sizeof(file), HelperFile, Name);


	PFile = fopen(file, io_write);

	format(LineForFile, 100, "Level %i\r\n", 0);
	fwrite(PFile, LineForFile);


	fclose(PFile);

	return 1;
}

// This function will load the player's datafile (used when a player connects to the server)
HelperFile_Load(playerid)
{
	// Setup local variables
	new file[100], File:PFile, Name[24], LineFromFile[100], ParameterName[50], ParameterValue[50];

	format(Name, sizeof(Name), HelperData[playerid][HelperName]); // Get the playername
	format(file, sizeof(file), HelperFile, Name); // Construct the complete filename for this player's account

	// Check if the player's datafile exists
	if (fexist(file))
	{
		PFile = fopen(file, io_read); // Open the playerfile for reading

		fread(PFile, LineFromFile); // Read the first line of the file

		// Keep reading until the end of the file is found (no more data)
		while (strlen(LineFromFile) > 0)
		{
			StripNewLine(LineFromFile); // Strip any newline characters from the LineFromFile
			sscanf(LineFromFile, "s[50]s[50]", ParameterName, ParameterValue); // Extract parametername and parametervalue
			if (strcmp(ParameterName, "Level", false) == 0) // If the parametername is correct ("Level")
			    HelperData[playerid][HelperLevel] = strval(ParameterValue); // Store the playerlevel
		}

		fclose(PFile); // Close the file

		return 1; // Return if the file was read correctly
	}
	else
	    return 0; // Return 0 if the file couldn't be read (doesn't exist)
}

HelperFile_Save(playerid)
{
	new file[100], File:PFile, Name[24], LineForFile[100];
	format(Name, sizeof(Name), HelperData[playerid][HelperName]);
	format(file, sizeof(file), HelperFile, Name);

	PFile = fopen(file, io_write); 
	format(LineForFile, 100, "Level %i\r\n",HelperData[playerid][HelperLevel]); 
	fwrite(PFile, LineForFile); 
	return 1;
}
Update3DTextLabel(playerid)
{
	new msg[60];
	format(msg, 60, "%s", InfoHelperLevel[playerid][HelperData[playerid][HelperLevel]]);
	HelperLevel3D[playerid] = Create3DTextLabel(msg, 0xFFFFFFFF, 0.0,0.0, 0.0, 20.0, 0, 0);
	Attach3DTextLabelToPlayer(HelperLevel3D[playerid], playerid, 0.0, 0.0, 0.0);
}
public OnPlayerConnect(playerid)
{
	GetPlayerName(playerid, HelperData[playerid][HelperName], 24);
	LoggedSkin[playerid] = false;
	HelperData[playerid][Helper] = false;
	if (HelperFile_Create(playerid) > 1)
	    SendClientMessage(playerid, 0xFF0000FF, "____________________________________________________________");
	else
	    HelperFile_Create(playerid);
	SetPlayerVirtualWorld(playerid, 0);
	SetPlayerInterior(playerid, 0);
	return 1;
}
public OnPlayerDisconnect(playerid)
{
    HelperFile_Save(playerid);
    Delete3DTextLabel(HelperLevel3D[playerid]);
    HelperData[playerid][Helper] = false;
    HelperData[playerid][HelperLevel] = 0;
}
public OnPlayerSpawn(playerid)
{
	if (HelperData[playerid][HelperLevel] >= 1)
	    HelperData[playerid][Helper] = true;
    LoggedSkin[playerid] = true;
	HelperFile_Load(playerid);
	Update3DTextLabel(playerid);
	SendClientMessage(playerid, 0xFF0000FF, "Helper System {0000FF}By Trucker_98_{FF0000} загружена!");
	return 1;
}
public OnPlayerText(playerid, text[])
{
	new mes[1024], name[24];
	GetPlayerName(playerid, name, 24);
	if(HelperData[playerid][HelperLevel] >= 1)
	{
	    format(mes, 1024, "..::[%s]::..%s[%d]: {00FF00}%s", InfoHelperLevel[playerid][HelperData[playerid][HelperLevel]], name, playerid, text);
	    SendClientMessageToAll(0xFFFFFFFF, mes);
	}
	else
		return 0;
	return 0;
}

COMMAND:helpers(playerid, params[])
{
	new HelperName1[24], ShowHelpers[1024];
	if (IsPlayerConnected(playerid))
	{
	    for(new i; i < MAX_PLAYERS; i++)
	    {
	        if (HelperData[i][Helper] == true)
	        {
	            GetPlayerName(i, HelperName1, 24);
	            format(ShowHelpers, 1024, "%s _[]_ %s\r\n",InfoHelperLevel[playerid][HelperData[playerid][HelperLevel]], HelperName1);
			}
			if(strlen(ShowHelpers) > 0)
			    ShowPlayerDialog(playerid, DialogHelpersOnline, DIALOG_STYLE_LIST, "Хелперы Онлайн", ShowHelpers, "Закрыть", "");
			else
			    ShowPlayerDialog(playerid, DialogHelpersOnline, DIALOG_STYLE_MSGBOX, "Message", "В данный момент на сервере нету хелперов.", "Закрыть", "");
				
		}
	}
	else
	    return 0;
	return 1;
}
COMMAND:quest(playerid, params[])
{
	new Question[100], Name[24], MessageToHelpers[150];
	if (IsPlayerConnected(playerid))
	{
	    if (sscanf(params, "s[100]", Question)) SendClientMessage(playerid, 0xFF0000FF, "ВВЕДИТЕ ПРАВЕЛЬНО КОМАНДУ:  /quest [опрос]");
		else
		{
		    GetPlayerName(playerid, Name, 24);
		    format(MessageToHelpers, 150, "Опрос от: {0000FF}%s:{00FF00} %s", Name, Question);
		    SendClientMessage(playerid, 0x00FF00FF, "Ваш опрос отправлен хелперам!");
		    SendClientMessage(playerid, 0x00FF00FF, "Если вам не приходит ответ, пожалуйста проверьте есть ли хелперы на сервере!>> /quest [опрос] <<");
		    for (new i; i < MAX_PLAYERS; i++)
		    {
		        if (HelperData[i][Helper] == true)
	        	{
	        	    SendClientMessage(i, 0xFF0000FF, MessageToHelpers);
	        	    GameTextForPlayer(i, "New Question", 3, 3000);
	        	}
	        }
	    }
	}
	else
		return 0;
	return 1;
}
COMMAND:reply(playerid, params[])
{
	new Reply[100], ID, Name[24], MessageToPlayer[150];
	if (IsPlayerConnected(playerid))
	{
	    if (HelperData[playerid][Helper] == true)
	    {
	    	if (LoggedSkin[playerid] == true)
		    {
			    if (sscanf(params, "i, s[100]",ID, Reply)) SendClientMessage(playerid, 0xFF0000FF, "ВВЕДИТЕ ПРАВЕЛЬНО КОМАНДУ:  /reply [ID игрока] [ответ]");
				else
				{
				    if (IsPlayerConnected(ID))
				    {
				    	GetPlayerName(playerid, Name, 24);
				    	format(MessageToPlayer, 150, "Ответ от:{00FF00}%s:{FFFF00} %s", Name, Reply);
  						SendClientMessage(ID, 0xFF0000FF, MessageToPlayer);
			   	    	GameTextForPlayer(ID, "]]OTBET OT XELIIEPA]]", 3, 3000);
			    	}
			    	else
			    	    SendClientMessage(playerid, 0xFF0000FF, "Игрок под этом ID-ом не находиться на сервере.");
				}
			}
			else
				SendClientMessage(playerid, 0xFF0000FF, "Что-бы пользоваться этой командой вы должны спавниться!");
		}
		else
		    SendClientMessage(playerid, 0xFF0000FF, "Вы не являетесь хелпером на этом сервере.");
	}
	else
		return 0;
	return 1;
}
COMMAND:hchat(playerid, params[])
{
	new Name[24], Message[456], text[128];
	if (IsPlayerConnected(playerid))
	{
	    if (HelperData[playerid][Helper] == true)
	    {
	        if (LoggedSkin[playerid] == true)
	        {
	            if (sscanf(params, "s[128]", text)) SendClientMessage(playerid, 0xFF0000FF, "ВВЕДИТЕ ПРАВЕЛЬНО КОМАНДУ: /hctat [text]");
	            else
	            {
	                GetPlayerName(playerid, Name, 24);
	            	format(Message, 1024, "[HELPER CHAT]{00FF00}%s[%d]: {9933FF}%s", Name, playerid, text);
	            }
				for(new i; i < MAX_PLAYERS; i++)
				{
	            	if (HelperData[i][Helper] == true)
	            	{
	               		SendClientMessage(i, 0xFFFFFFFF, Message);
	            	}
	        	}
	        }
	        else
	            SendClientMessage(playerid, 0xFF0000FF, "Что-бы пользоваться этой командой вы должны спавниться!");
		}
		else
		    SendClientMessage(playerid, 0xFF0000FF, "Вы не являетесь хелпером на этом сервере.");
	}
	else
	    return 0;
	return 1;
}
COMMAND:sethelpervelev(playerid, params[])
{
	new P_Name[24], H_Name[24], Msg[500], NEWLEVEL, ID;
	if (IsPlayerConnected(playerid))
	{
	    if (LoggedSkin[playerid] == true)
	    {
	        if (HelperData[playerid][HelperLevel] == 5)
	        {
	            if (sscanf(params, "ii", ID, NEWLEVEL)) SendClientMessage(playerid, 0xFF0000FF, "ВВЕДИТЕ ПРАВЕЛЬНО КОМАНДУ: /sethelperlevel [id] [level]");
				else
				{
				    GetPlayerName(playerid, P_Name, 24);
				    GetPlayerName(ID, H_Name, 24);
				    HelperData[ID][HelperLevel] = NEWLEVEL;
				    format(Msg, 500, "Главный хелпер {00FF00}%s{FFFFFF} дал хелперу/игроку {FFFF00}%s{FF0000} уровень {FF0000}%i{FFFFFF} (%s).", P_Name, H_Name,NEWLEVEL, InfoHelperLevel[ID][HelperData[ID][HelperLevel]]);
					SendClientMessageToAll(0xFFFFFFFF, Msg);
					GameTextForPlayer(ID, "Watch the chat please", 2, 3000);
					HelperFile_Save(ID);
					Update3DTextLabel(playerid);
				}
			}
			else
			    SendClientMessage(playerid, 0xFF0000FF, "Вы не являетесь главным хелпером этого сервера.");
		}
		else
		    SendClientMessage(playerid, 0xFF0000FF, "Что-бы пользоваться этой командой вы должны спавниться!");
	}
	else
	    SendClientMessage(playerid, 0xFF0000FF, "Вы не являетесь хелпером на этом сервере.");
	return 1;
}
Reply
#2

This is Wrong Section m8.
Reply
#3

чувак, запости на русскоязычный раздел форума
Reply
#4

хорошо
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)