Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

mxINI не сохраняет деньги

Статус
В этой теме нельзя размещать новые ответы.

lancelot

Новичок
Админка и система авторизации на mxINI не сохраняет деньги, с банами всё впорядке.

PHP:
#include <a_samp>
#include <mxINI>

#define DialogLogin 		100
#define DialogRegiser 		101
#define DialogPlayer    	102
#define DialogClickPlayer 	103
#define DialogAdminMsg      104
#define DialogSetHP         105
#define DialogSetAR         106
#define DialogSetMN         107
#define DialogKick          108
#define DialogBans          109
#define DialogFreeze        110
#define DialogMuted         111
#define DialogHealth        112
#define DialogArmour        113
#define DialogMoney         114
#define DialogKills         115
#define DialogRazban        116
#define DialogDostup        117

#define ADMIN_SPEC_TYPE_NONE 0
#define ADMIN_SPEC_TYPE_PLAYER 1
#define ADMIN_SPEC_TYPE_VEHICLE 2

#pragma tabsize 0

forward TimeOutMute(playerid);
forward SaveAccounts();

enum pInfo
{
    pMoney,
	pBanned,
	pAdmin
};
new Player[MAX_PLAYERS][pInfo];
new ClickID[MAX_PLAYERS];
new TimeMute[MAX_PLAYERS];
new gSpectateID[MAX_PLAYERS];
new gSpectateType[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
	new pString[64];
    format(pString,64,"users/%s.ini",PlayerName(playerid));
	if (fexist(pString))
	{
		ShowPlayerDialog(playerid,DialogLogin, DIALOG_STYLE_INPUT,
		"Авторизация","Добро пожаловать на сервер!\nВведите пароль указанный при регистрации:", "Ввод", "Выход");
	}
	else
	{
		ShowPlayerDialog(playerid,DialogRegiser, DIALOG_STYLE_INPUT,
		"Регистрация","Добро пожаловать на сервер!\nВаш ник не зарегестрирован\n\
		Пожалуйста, введите пароль для регистрации на сервере:", "Ввод", "Выход");
	}
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	for(new x=0; x<MAX_PLAYERS; x++)
	{
	    if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] == playerid)
		{
	       AdvanceSpectate(x);
		}
	}

	GetPlayerMoney(Player[playerid][pMoney]);
	new sString[64];
    format(sString, 64, "users/%s.ini", PlayerName(playerid));
    new iniFile = ini_openFile(sString);
    ini_setInteger(iniFile, "Money", Player[playerid][pMoney]);
    ini_closeFile(iniFile);
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	for(new x=0; x<MAX_PLAYERS; x++)
	{
	    if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] == playerid)
		{
	       AdvanceSpectate(x);
		}
	}
	return 1;
}

public OnPlayerText(playerid, text[])
{
	if(GetPVarInt(playerid,"Muted") == 1)return false;
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	if(dialogid == DialogLogin)
	{
	    if(response)
	    {
	        new pString[64],Pass[64];
		    format(pString, 64, "users/%s.ini", PlayerName(playerid));
	 		new iniFile = ini_openFile(pString);

	   		ini_getString(iniFile, "Password", Pass);
			if(!strcmp(inputtext,Pass,true) && (strlen(inputtext) != 0))
			{
		        ini_getInteger(iniFile,"Money",Player[playerid][pMoney]);
		        ini_getInteger(iniFile,"Banned",Player[playerid][pBanned]);
		        ini_getInteger(iniFile,"Admin",Player[playerid][pAdmin]);
		        GivePlayerMoney(playerid,Player[playerid][pMoney]);
			    ini_closeFile(iniFile);

			    if(Player[playerid][pBanned] == 1)
			    {
					SendClientMessage(playerid,0xF6F6F6AA,"Извените, Но {F60000}ваш аккаунт забанен {F6F6F6}на сервере.");
					SendClientMessage(playerid,0xF6F6F6AA,"Соединение с сервером {F60000}закрыто.");
					SendClientMessage(playerid,0xF6F6F6AA,"Наберите {F60000}/q {F6F6F6}для выхода.");
				    Kick(playerid);
				    return true;
				}
				else if(Player[playerid][pAdmin] == 0)
				{
					SetPVarInt(playerid,"ADMINKA",0);
					SendClientMessage(playerid,0xF6F6F6AA,"Авторизация прошла {F60000}успешно!");
				}
   				else if(Player[playerid][pAdmin] == 1)
				{
					SetPVarInt(playerid,"ADMINKA",1);
					SendClientMessage(playerid,0xF6F6F6AA,"Авторизация прошла {F60000}успешно!");
					SendClientMessage(playerid,0xF6F6F6AA,"Вы зашли как {F60000}Модератор.");
				}
				else if(Player[playerid][pAdmin] == 2)
				{
					SetPVarInt(playerid,"ADMINKA",2);
					SendClientMessage(playerid,0xF6F6F6AA,"Авторизация прошла {F60000}успешно!");
					SendClientMessage(playerid,0xF6F6F6AA,"Вы зашли как {F60000}Администратор.");
				}
			    return true;
			}
			else
			{
				ShowPlayerDialog(playerid,DialogLogin, DIALOG_STYLE_INPUT,
				"Авторизация","Введенный пароль не соответствует указанному при регистрации.\nВведите пароль:", "Ввод", "Выход");
				return true;
			}
		}
		else
		{
			new kString[145];
			format(kString,sizeof(kString),"%s[ID:%d] {F6F6F6}Кикнут с сервера. Причина: {F60000}Отказ от авторизации",PlayerName(playerid),playerid);
			SendClientMessageToAll(0xF60000AA,kString);
			Kick(playerid);
		}
		return true;
	}
	if(dialogid == DialogRegiser)
	{
	    if(response)
	    {
	        new pString[64];
		    format(pString, 64, "users/%s.ini", PlayerName(playerid));
		    new iniFile = ini_createFile(pString);
			if(iniFile < 0) ini_openFile(pString);

		    ini_setString(iniFile, "Password", inputtext);
			ini_setInteger(iniFile,"Money",0);
  			ini_setInteger(iniFile,"Banned",0);
  			ini_setInteger(iniFile,"Admin",0);
			ini_closeFile(iniFile);

			new rString[145];
			format(rString,sizeof(rString),"Вы успешно {F60000}зарегестрировались {F6F6F6}с паролем {F60000}%s {F6F6F6}Удачной игры!",inputtext);
			SendClientMessage(playerid,0xF6F6F6AA,rString);
			return true;
		}
		else
		{
			new kString[145];
			format(kString,sizeof(kString),"%s[ID:%d] {F6F6F6}Кикнут с сервера. Причина: {F60000}Отказ от регистрации",PlayerName(playerid),playerid);
			SendClientMessageToAll(0xF60000AA,kString);
			Kick(playerid);
			return true;
		}
	}
/*============================Админ панель====================================*/
	if(dialogid == DialogPlayer)
	{
	    if(response)
	    {
	        if(listitem == 0)
	        {
		        for(new i=0;i<95;i++)SendClientMessageToAll(-1," ");
		        new cString[144];
				format(cString,sizeof(cString),"[Инфо]: Чат очищен администратором {F60000}%s[ID:%d]",PlayerName(playerid),playerid);
				SendClientMessageToAll(0xF6F6F6AA,cString);
				return true;
			}
 	        if(listitem == 1)
	        {
		        if(GetPVarInt(playerid,"ADMINKA") < 1)return SendClientMessage(playerid,0xF6F6F6AA,"[Инфо]: {F60000}Ограничены права доступа");
	            ShowPlayerDialog(playerid,DialogAdminMsg,DIALOG_STYLE_INPUT,"Послать адм сообщение","Введите текст сообщения:","Отправить","Отмена");
	            return true;
		 	}
			if(listitem == 2)
			{
				if(GetPVarInt(playerid,"ADMINKA") < 1)return SendClientMessage(playerid,0xF6F6F6AA,"[Инфо]: {F60000}Ограничены права доступа");
				ShowPlayerDialog(playerid,DialogSetHP,DIALOG_STYLE_INPUT,"Установить всем HP","Введите количество здоровья:","Установить","Отмена");
				return true;
			}
 			if(listitem == 3)
			{
				if(GetPVarInt(playerid,"ADMINKA") < 1)return SendClientMessage(playerid,0xF6F6F6AA,"[Инфо]: {F60000}Ограничены права доступа");
				ShowPlayerDialog(playerid,DialogSetAR,DIALOG_STYLE_INPUT,"Установить всем AR","Введите количество брони:","Установить","Отмена");
				return true;
			}
  			if(listitem == 4)
			{
				if(GetPVarInt(playerid,"ADMINKA") < 1)return SendClientMessage(playerid,0xF6F6F6AA,"[Инфо]: {F60000}Ограничены права доступа");
				ShowPlayerDialog(playerid,DialogSetMN,DIALOG_STYLE_INPUT,"Установить всем Деньги","Введите количество денег:","Установить","Отмена");
				return true;
			}
   			if(listitem == 5)
			{
				if(GetPVarInt(playerid,"ADMINKA") < 2)return SendClientMessage(playerid,0xF6F6F6AA,"[Инфо]: {F60000}Ограничены права доступа");
				for(new i;i <GetMaxPlayers();i++)
				{
				    SpawnPlayer(i);
				}
	   			new hString[144];
				format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}заспавнил всех игроков",PlayerName(playerid),playerid);
				SendClientMessageToAll(0xF6F6F6AA,hString);
				return true;
			}
    		if(listitem == 6)
			{
				if(GetPVarInt(playerid,"ADMINKA") < 2)return SendClientMessage(playerid,0xF6F6F6AA,"[Инфо]: {F60000}Ограничены права доступа");
				for(new i = 0; i < MAX_VEHICLES; i++)
				{
					SetVehicleToRespawn(i);
				}
 				new hString[144];
				format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}заспавнил весь транспорт",PlayerName(playerid),playerid);
				SendClientMessageToAll(0xF6F6F6AA,hString);
				return true;
			}
 			if(listitem == 7)
			{
				if(GetPVarInt(playerid,"ADMINKA") < 1)return SendClientMessage(playerid,0xF6F6F6AA,"[Инфо]: {F60000}Ограничены права доступа");
			    new Float:x,Float:y,Float:z;
			    GetPlayerPos(playerid,x,y,z);
				for(new i;i <GetMaxPlayers();i++)
				{
				    SetPlayerPos(i,x+random(10),y+random(10),z);
				}
    			new hString[144];
				format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}телепортировал всех игроков к себе",PlayerName(playerid),playerid);
				SendClientMessageToAll(0xF6F6F6AA,hString);
				return true;
			}
  			if(listitem == 8)
			{
				if(GetPVarInt(playerid,"ADMINKA") < 2)return SendClientMessage(playerid,0xF6F6F6AA,"[Инфо]: {F60000}Ограничены права доступа");
				new hString[144];
				format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}сделал рестарт сервера",PlayerName(playerid),playerid);
				SendClientMessageToAll(0xF6F6F6AA,hString);
			    SendRconCommand("gmx");
				return true;
			}
   			if(listitem == 9)
			{
				 if(GetPVarInt(playerid,"ADMINKA") < 2)return SendClientMessage(playerid,0xF6F6F6AA,"[Инфо]: {F60000}Ограничены права доступа");
				 ShowPlayerDialog(playerid,DialogRazban,DIALOG_STYLE_INPUT,"Разбанить аккаунт","Введите ник","Разбан","Отмена");
				 return true;
			}
		}
		return true;
	}

	if(dialogid == DialogAdminMsg)
	{
	    if(response)
	    {
	        new aString[144];
	        format(aString,sizeof(aString),"Администратор {F60000}%s[ID:%d]{F6F6F6}: %s",PlayerName(playerid),playerid,inputtext);
	        SendClientMessageToAll(0xF6F6F6AA,aString);
	        return true;
		}
	}
	if(dialogid == DialogSetHP)
	{
	    if(response)
	    {
		    new var = strval(inputtext);
	    	for(new i;i <GetMaxPlayers();i++)
	    	{
				SetPlayerHealth(i,var);
			}
			new hString[144];
			format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}Установил всем кол-во здоровья на {F60000}%s",PlayerName(playerid),playerid,inputtext);
			SendClientMessageToAll(0xF6F6F6AA,hString);
			return true;
		}
	}
	if(dialogid == DialogSetAR)
	{
	    if(response)
	    {
		    new var = strval(inputtext);
	    	for(new i;i <GetMaxPlayers();i++)
	    	{
				SetPlayerArmour(i,var);
			}
			new hString[144];
			format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}Установил всем кол-во брони на {F60000}%s",PlayerName(playerid),playerid,inputtext);
			SendClientMessageToAll(0xF6F6F6AA,hString);
			return true;
		}
	}
	if(dialogid == DialogSetMN)
	{
	    if(response)
	    {
			new var = strval(inputtext);
	    	for(new i;i <GetMaxPlayers();i++)
	    	{
				ResetPlayerMoney(i);
				GivePlayerMoney(i,var);
			}
			new hString[144];
			format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}Установил всем кол-во денег на {F60000}%s",PlayerName(playerid),playerid,inputtext);
			SendClientMessageToAll(0xF6F6F6AA,hString);
			return true;
		}
	}
	if(dialogid == DialogRazban)
	{
	    if(response)
	    {
			new rString[64];
			format(rString,sizeof(rString),"users/%s.ini",inputtext);
			if (fexist(rString))
			{
				new iniFile = ini_openFile(rString);
	  			ini_setInteger(iniFile,"Banned",0);
				ini_closeFile(iniFile);

				new uString[144];
				format(uString,sizeof(uString),"[Инфо]: Аккаунт {F60000}%s {F6F6F6}успешно разбанен!");
				SendClientMessage(playerid,0xF6F6F6AA,uString);
				return true;
			}
			else
			{
				ShowPlayerDialog(playerid,DialogRazban,DIALOG_STYLE_INPUT,"Разбанить аккаунт","Аккаунта не существует\nВведите ник","Разбан","Отмена");
			}
			return true;
		}
	}
/*===========================Админ панель=====================================*/
	if(dialogid == DialogClickPlayer)
	{
	    if(response)
	    {
			if(listitem == 0)
			{
			    SetPlayerHealth(ClickID[playerid],0.0);
			    new dString[144];
			    format(dString,sizeof(dString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}убил Вас",PlayerName(playerid),playerid);
			    SendClientMessage(ClickID[playerid],0xF6F6F6AA,dString);
			}
			if(listitem == 1)
			{
				new Float:x,Float:y,Float:z;
				GetPlayerPos(ClickID[playerid],x,y,z);
				SetPlayerPos(ClickID[playerid],x,y,z+5);
	   			new sString[144];
			    format(sString,sizeof(sString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}пнул Вас",PlayerName(playerid),playerid);
			    SendClientMessage(ClickID[playerid],0xF6F6F6AA,sString);
			}
 			if(listitem == 2)
			{
				if(GetPVarInt(playerid,"ADMINKA") < 1)return SendClientMessage(playerid,0xF6F6F6AA,"[Инфо]: {F60000}Ограничены права доступа");
				ShowPlayerDialog(playerid,DialogKick,DIALOG_STYLE_INPUT,"Кикнуть игрока","Введите причину:","Кикнуть","Отмена");
			}
  			if(listitem == 3)
			{
				if(GetPVarInt(playerid,"ADMINKA") < 1)return SendClientMessage(playerid,0xF6F6F6AA,"[Инфо]: {F60000}Ограничены права доступа");
				ShowPlayerDialog(playerid,DialogBans,DIALOG_STYLE_INPUT,"Забанить игрока","Введите причину:","Забанить","Отмена");
			}
   			if(listitem == 4)
			{
			    if(GetPVarInt(ClickID[playerid],"Freeze") == 0)
			    {
					ShowPlayerDialog(playerid,DialogFreeze,DIALOG_STYLE_INPUT,"Заморозить игрока","Введите причину:","Заморозка","Отмена");
				}
   				if(GetPVarInt(ClickID[playerid],"Freeze") == 1)
				{
					new hString[144];
					format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}разморозил Вас",
					PlayerName(playerid),playerid);
					SendClientMessage(ClickID[playerid],0xF6F6F6AA,hString);
					TogglePlayerControllable(ClickID[playerid],false);
					SetPVarInt(ClickID[playerid],"Freeze",0);
				}
				return true;
			}
       		if(listitem == 5)
			{
			    if(GetPVarInt(ClickID[playerid],"Muted") == 0)
			    {
					ShowPlayerDialog(playerid,DialogMuted,DIALOG_STYLE_INPUT,"Выключить чат игроку","Введите время в минутах","Выключить","Отмена");
				}
				if(GetPVarInt(ClickID[playerid],"Muted") == 1)
				{
				    SetPVarInt(ClickID[playerid],"Muted", 0);
				    KillTimer(TimeMute[ClickID[playerid]]);

					new GiveNamePlayer[MAX_PLAYER_NAME];
					GetPlayerName(ClickID[playerid],GiveNamePlayer,sizeof(GiveNamePlayer));
         			new hString[144];
					format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}Включил чат игроку %s[ID:%d]",
					PlayerName(playerid),playerid,GiveNamePlayer,ClickID[playerid]);
					SendClientMessageToAll(0xF6F6F6AA,hString);
				}
				return true;
			}
          	if(listitem == 6)
			{
				ShowPlayerDialog(playerid,DialogHealth,DIALOG_STYLE_INPUT,"Установить HP","Введите кол-во","Установить","Отмена");
				return true;
			}
           	if(listitem == 7)
			{
				ShowPlayerDialog(playerid,DialogArmour,DIALOG_STYLE_INPUT,"Установить AR","Введите кол-во","Установить","Отмена");
				return true;
			}
           	if(listitem == 8)
			{
			    StartSpectate(playerid,ClickID[playerid]);
			}
           	if(listitem == 9)
			{
				new Float:x,Float:y,Float:z;
				GetPlayerPos(ClickID[playerid],x,y,z);
				SetPlayerPos(playerid,z,y,z);
				new tString[144];
				new GiveNamePlayer[MAX_PLAYER_NAME];
				GetPlayerName(ClickID[playerid],GiveNamePlayer,sizeof(GiveNamePlayer));
				format(tString,sizeof(tString),"[Инфо]: Вы телепортировались к игроку {F60000}%s[ID:%d]",GiveNamePlayer,ClickID[playerid]);
				SendClientMessage(playerid,0xF6F6F6AA,tString);
				return true;
			}
           	if(listitem == 10)
			{
				if(GetPVarInt(playerid,"ADMINKA") < 1)return SendClientMessage(playerid,0xF6F6F6AA,"[Инфо]: {F60000}Ограничены права доступа");
				new Float:x,Float:y,Float:z;
				GetPlayerPos(playerid,x,y,z);
				SetPlayerPos(ClickID[playerid],x,y+1.0,z);
   				new tString[144];
				format(tString,sizeof(tString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}телепортировал Вас к себе",PlayerName(playerid),playerid);
				SendClientMessage(ClickID[playerid],0xF6F6F6AA,tString);
				return true;
			}
           	if(listitem == 11)
			{
				if(GetPVarInt(playerid,"ADMINKA") < 2)return SendClientMessage(playerid,0xF6F6F6AA,"[Инфо]: {F60000}Ограничены права доступа");
				ShowPlayerDialog(playerid,DialogDostup,DIALOG_STYLE_LIST,"Установить Права доступа",
				"Снять полномочия\n\
				Установить статус Модератор\n\
				Установить статус Администратор","Выбор","Отмена");
				return true;
			}
		}
	}
	if(dialogid == DialogKick)
	{
	    if(response)
	    {
			Kick(ClickID[playerid]);

			new GiveNamePlayer[MAX_PLAYER_NAME];
			GetPlayerName(ClickID[playerid],GiveNamePlayer,sizeof(GiveNamePlayer));
			new hString[144];
			format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%s] {F6F6F6}кикнул игрока {F60000}%s[ID:%d] {F6F6F6}Причина: {F60000}%s",
			PlayerName(playerid),playerid,GiveNamePlayer,ClickID[playerid],inputtext);
			SendClientMessageToAll(0xF6F6F6AA,hString);
		}
	}
	if(dialogid == DialogBans)
	{
	    if(response)
	    {
			new GiveNamePlayer[MAX_PLAYER_NAME];
			GetPlayerName(ClickID[playerid],GiveNamePlayer,sizeof(GiveNamePlayer));
			new hString[144];
			format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}забанил игрока {F60000}%s[ID:%d] {F6F6F6}Причина: {F60000}%s",
			PlayerName(playerid),playerid,GiveNamePlayer,ClickID[playerid],inputtext);
			SendClientMessageToAll(0xF6F6F6AA,hString);

	        new pString[64];
		    format(pString, 64, "users/%s.ini", PlayerName(ClickID[playerid]));
			new iniFile = ini_openFile(pString);
  			ini_setInteger(iniFile,"Banned",1);
			ini_closeFile(iniFile);
			Ban(ClickID[playerid]);
		}
	}
	if(dialogid == DialogFreeze)
	{
	    if(response)
	    {
	    	new hString[144];
			format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}заморозил Вас Причина: {F60000}%s",
			PlayerName(playerid),playerid,inputtext);
			SendClientMessage(ClickID[playerid],0xF6F6F6AA,hString);
			TogglePlayerControllable(ClickID[playerid],true);
			SetPVarInt(ClickID[playerid],"Freeze",1);
			return true;
		}
	}
	if(dialogid == DialogMuted)
	{
	    if(response)
	    {
		    new var = strval(inputtext);
	    	TimeMute[ClickID[playerid]] = SetTimerEx("TimeOutMute",var*60000,0,"d",ClickID[playerid]);
	    	SetPVarInt(ClickID[playerid],"Muted", 1);

  			new GiveNamePlayer[MAX_PLAYER_NAME];
			GetPlayerName(ClickID[playerid],GiveNamePlayer,sizeof(GiveNamePlayer));
     		new hString[144];
			format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}выключил чат игроку {F60000}%s[ID:%d] на: {F60000}%d минут",
			PlayerName(playerid),playerid,GiveNamePlayer,ClickID[playerid],var);
			SendClientMessageToAll(0xF6F6F6AA,hString);
			return true;
		}
	}
        if(dialogid == DialogHealth)
        {
            if(response)
            {
                    new var = strval(inputtext);
                        SetPlayerHealth(ClickID[playerid],var);
                new hString[144];
                        format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}установил Вам HP {F60000}%d",
                        PlayerName(playerid),playerid,inputtext);
                        SendClientMessage(ClickID[playerid],0xF6F6F6AA,hString);
                }
        }
	if(dialogid == DialogArmour)
	{
	    if(response)
	    {
		    new var = strval(inputtext);
			SetPlayerArmour(ClickID[playerid],var);
 	    	new hString[144];
			format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}установил Вам AR {F60000}%d",
			PlayerName(playerid),playerid,inputtext);
			SendClientMessage(ClickID[playerid],0xF6F6F6AA,hString);
		}
	}
	if(dialogid == DialogDostup)
	{
	    if(response)
	    {
			new GiveNamePlayer[MAX_PLAYER_NAME];
			GetPlayerName(ClickID[playerid],GiveNamePlayer,sizeof(GiveNamePlayer));
			new hString[144];

			if(listitem == 0)
			{
				format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}снял полномочия с игрока {F60000}%s[ID:%d]",
				PlayerName(playerid),playerid,GiveNamePlayer,ClickID[playerid]);
				SendClientMessageToAll(0xF6F6F6AA,hString);

		        new pString[64];
			    format(pString, 64, "users/%s.ini", PlayerName(ClickID[playerid]));
				new iniFile = ini_openFile(pString);
	  			ini_setInteger(iniFile,"Admin",0);
				ini_closeFile(iniFile);
				SetPVarInt(ClickID[playerid],"ADMINKA",0);
				return true;
			}
			if(listitem == 1)
			{
				format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}установил статус модератора игроку {F60000}%s[ID:%d]",
				PlayerName(playerid),playerid,GiveNamePlayer,ClickID[playerid]);
				SendClientMessageToAll(0xF6F6F6AA,hString);

		        new pString[64];
			    format(pString, 64, "users/%s.ini", PlayerName(ClickID[playerid]));
				new iniFile = ini_openFile(pString);
	  			ini_setInteger(iniFile,"Admin",1);
				ini_closeFile(iniFile);
				SetPVarInt(ClickID[playerid],"ADMINKA",1);
				return true;
			}
			if(listitem == 2)
			{
				format(hString,sizeof(hString),"[Инфо]: Администратор {F60000}%s[ID:%d] {F6F6F6}установил статус администоратора игроку {F60000}%s[ID:%d]",
				PlayerName(playerid),playerid,GiveNamePlayer,ClickID[playerid]);
				SendClientMessageToAll(0xF6F6F6AA,hString);

		        new pString[64];
			    format(pString, 64, "users/%s.ini", PlayerName(ClickID[playerid]));
				new iniFile = ini_openFile(pString);
	  			ini_setInteger(iniFile,"Admin",2);
				ini_closeFile(iniFile);
				SetPVarInt(ClickID[playerid],"ADMINKA",2);
				return true;
			}
		}
	}
	return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	ClickID[playerid] = clickedplayerid;

	if(GetPVarInt(playerid,"ADMINKA") >= 1)
	{
		if(clickedplayerid == playerid)
		{
		    ShowPlayerDialog(playerid,DialogPlayer, DIALOG_STYLE_LIST,
			"Админ панель сервера",
			"[1] Очистить чат\n\
			 [2] Послать адм сообщ\n\
			 [3] Установить всем HP\n\
			 [4] Установить всем AR\n\
			 [5] Установить всем Деньги\n\
			 [6] Заспавнить всех игроков\n\
			 [7] Заспавнить весь транспорт\n\
			 [8] Телепортировать всех к себе\n\
			 [9] Перезагрузить мод сервера\n\
			 [10] Разбанить аккаунт игрока", "Выбор", "Отмена");
		}
		if(clickedplayerid != playerid)
		{
		    ShowPlayerDialog(playerid,DialogClickPlayer,DIALOG_STYLE_LIST,"Админ панель сервера",
		    "[1] Убить игрока\n\
			 [2] Пнуть игрока\n\
			 {F60000}[3] Кикнуть игрока\n\
			 {F60000}[4] Забанить игрока\n\
			 {F6F6F6}[5] Заморозить игрока\n\
			 [6] Выключить чат ироку\n\
	  		 [7] Установить HP игрока\n\
	   		 [8] Установить AR игрока\n\
			 [9] Наблюдать за игроком\n\
	   		 [10] Телепортироваться к игроку\n\
			 [11] Телепортировать игрока к себе\n\
			 [12] Установить права доступа","Выбор","Отмена");
		}
		return true;
	}
	return true;
}

stock PlayerName(playerid)
{
	new pName[MAX_PLAYER_NAME];
	GetPlayerName(playerid,pName,sizeof(pName));
	return pName;
}

public TimeOutMute(playerid)
{
	new tString[144];
	format(tString,sizeof(tString),"[Инфо]: У игрока {F60000}%s[ID:%d] {F6F6F6}автоматически включился чат.",PlayerName(playerid),playerid);
	SendClientMessageToAll(0xF6F6F6AA,tString);
	SetPVarInt(ClickID[playerid],"Muted", 0);
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && gSpectateID[playerid] != INVALID_PLAYER_ID)
	{
		if(newkeys == KEY_JUMP)
		{
			AdvanceSpectate(playerid);
		}
		else if(newkeys == KEY_SPRINT)
		{
	    	ReverseSpectate(playerid);
		}
 		else if(newkeys == 1024)
		{
		    StopSpectate(playerid);
		}
	}
	return 1;
}


public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
	new x = 0;
	while(x!=MAX_PLAYERS)
	{
	    if( IsPlayerConnected(x) &&	GetPlayerState(x) == PLAYER_STATE_SPECTATING &&
		gSpectateID[x] == playerid && gSpectateType[x] == ADMIN_SPEC_TYPE_PLAYER )
   		{
   		    SetPlayerInterior(x,newinteriorid);
		}
		x++;
	}
}

public OnPlayerEnterVehicle(playerid, vehicleid)
{
	for(new x=0; x<MAX_PLAYERS; x++)
	{
	    if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] == playerid)
		{
	        TogglePlayerSpectating(x, 1);
	        PlayerSpectateVehicle(x, vehicleid);
	        gSpectateType[x] = ADMIN_SPEC_TYPE_VEHICLE;
		}
	}
	return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
	for(new x=0; x<MAX_PLAYERS; x++)
	{
	    if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] == playerid && gSpectateType[x] == ADMIN_SPEC_TYPE_VEHICLE)
		{
	        TogglePlayerSpectating(x, 1);
	        PlayerSpectatePlayer(x, playerid);
	        gSpectateType[x] = ADMIN_SPEC_TYPE_PLAYER;
		}
	}
	return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	switch(newstate)
	{
		case PLAYER_STATE_ONFOOT:
		{
			switch(oldstate)
			{
				case PLAYER_STATE_DRIVER:OnPlayerExitVehicle(playerid,255);
				case PLAYER_STATE_PASSENGER:OnPlayerExitVehicle(playerid,255);
			}
		}
	}
	return 1;
}

stock StartSpectate(playerid, specid)
{
	for(new x=0; x<MAX_PLAYERS; x++)
	{
	    if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] == playerid)
		{
	       AdvanceSpectate(x);
		}
	}
	if(IsPlayerInAnyVehicle(specid))
	{
		SetPlayerInterior(playerid,GetPlayerInterior(specid));
		TogglePlayerSpectating(playerid, 1);
		PlayerSpectateVehicle(playerid, GetPlayerVehicleID(specid));
		gSpectateID[playerid] = specid;
		gSpectateType[playerid] = ADMIN_SPEC_TYPE_VEHICLE;
	}
	else
	{
		SetPlayerInterior(playerid,GetPlayerInterior(specid));
		TogglePlayerSpectating(playerid, 1);
		PlayerSpectatePlayer(playerid, specid);
		gSpectateID[playerid] = specid;
		gSpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER;
	}
	new string[100], name[24];
	GetPlayerName(specid,name,sizeof(name));
	format(string,sizeof(string),"~n~~n~~n~~n~~n~~n~~n~~n~~w~%s - ID:%d~n~< Sprint - Jump >", name,specid);
	GameTextForPlayer(playerid,string,9999999999,3);
	return 1;
}

stock StopSpectate(playerid)
{
	TogglePlayerSpectating(playerid, 0);
	gSpectateID[playerid] = INVALID_PLAYER_ID;
	gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;
	GameTextForPlayer(playerid,"~n~~n~~n~~n~~n~~n~~n~~n~~w~Spectate off",1000,3);
	return 1;
}

stock AdvanceSpectate(playerid)
{
    if(ConnectedPlayers() == 2)
	{
		StopSpectate(playerid);
		return 1;
	}
	if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && gSpectateID[playerid] != INVALID_PLAYER_ID)
	{
	    for(new x=gSpectateID[playerid]+1; x<=MAX_PLAYERS; x++)
		{
	    	if(x == MAX_PLAYERS)
			{
				x = 0;
			}
	        if(IsPlayerConnected(x) && x != playerid)
			{
				if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] != INVALID_PLAYER_ID ||
					(GetPlayerState(x) != 1 && GetPlayerState(x) != 2 && GetPlayerState(x) != 3))
				{
					continue;
				}
				else
				{
					StartSpectate(playerid, x);
					break;
				}
			}
		}
	}
	return 1;
}

stock ReverseSpectate(playerid)
{
    if(ConnectedPlayers() == 2)
	{
		StopSpectate(playerid);
		return 1;
	}
	if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && gSpectateID[playerid] != INVALID_PLAYER_ID)
	{
	    for(new x=gSpectateID[playerid]-1; x>=0; x--)
		{
	    	if(x == 0)
			{
				 x = MAX_PLAYERS;
		    }
	        if(IsPlayerConnected(x) && x != playerid)
			{
				if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] != INVALID_PLAYER_ID ||
					(GetPlayerState(x) != 1 && GetPlayerState(x) != 2 && GetPlayerState(x) != 3))
				{
					continue;
				}
				else
				{
					StartSpectate(playerid, x);
					break;
				}
			}
		}
	}
	return 1;
}

stock ConnectedPlayers()
{
	new count;
	for(new x=0; x<MAX_PLAYERS; x++)
	{
	    if(IsPlayerConnected(x))
		{
			count++;
		}
	}
	return count;
}

stock adminspec_strtok(const string[], &index)
{
	new length = strlen(string);
	while ((index < length) && (string[index] <= ' '))
	{
		index++;
	}

	new offset = index;
	new result[20];
	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
	{
		result[index - offset] = string[index];
		index++;
	}
	result[index - offset] = EOS;
	return result;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу