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

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

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

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

/donate на основе рублей

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

Derzilla

Умник
Приветствую, Уважаемые форумчане. Лазил в пучине своего жесткого диска и наткнулся на мод Fortune RP. Нашел там интересную команду /donate с основной "донат-валютой" Рубликами. Итак... Начнём!​

Автор мода: CRAZy_Str (Artur_Freeman)
Ссылка на мод: ТыК

1. В enum pInfo добавляем переменную рублей:
PHP:
pRub,
2. В public OnPlayerConnect(playerid) ко всем похожим добавляем:
PHP:
PlayerInfo[playerid][pRub] = 0;
3. В public OnPlayerCommandText(playerid, cmdtext[]) добавляем, а если есть заменяем команду /donate и добавляем /giverubles (выдать рубли)
PHP:
if(strcmp(cmd, "/donate", true) == 0)
		{
			if(IsPlayerConnected(playerid))
			{
			    if(PlayerInfo[playerid][pRub] == 0) return SendClientMessage(playerid,COLOR_RED,"На вашем счету недостаточно средств для Доната");
    			new lvlexp[70];
            	new level = PlayerInfo[playerid][pRub];
            	format(lvlexp,70,"Меню доната у вас %d руб.",level);
            	SPD(playerid, 1444, 2, lvlexp, "Снять предупреждения\t | 15р\nОбменять рубли на вирты\nСменить номер автомобиля\t | 2p\nКупить мотоцикл\nСменить цвет автомобиля\t | 3 руб.\nУволиться из фракции\t\t | 1p", "»", "X");
			}
			else
			{
			    SendClientMessage(playerid,COLOR_BLUE,"Вы не авторизированы");
			}
			return true;
		}
//==========Выдать рубли========
if(strcmp(cmd, "/giverubles", true) == 0)
        {
            if(PlayerInfo[playerid][pAdmin] > 6)
            {
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp)) return    SendClientMessage(playerid, COLOR_WHITE, "» Введите: /giverubles [ид] [сумма]");
                new playa;
                new money;
                playa = ReturnUser(tmp);
                tmp = strtok(cmdtext, idx);
                money = strval(tmp);
                if (PlayerInfo[playerid][pAdmin] >= 6)
                {
                        if(IsPlayerConnected(playa))
                    {
                        if(playa != INVALID_PLAYER_ID)
                        {
                            format(string, sizeof(string), "- %d рублей переведены на счёт игроку", money);
                            SendClientMessage(playerid, COLOR_WHITE, string);
                            GetPlayerName(playerid, sendername, sizeof(sendername));
								GetPlayerName(playa, giveplayer, sizeof(giveplayer));
								format(string, sizeof(string), "Администратор %s[%d] перевел %d донат-очков на счёт игроку %s[%d]",sendername,playerid,money,giveplayer,playa); // Показываем всем админам, для крыс-админов
								ABroadCast(COLOR_WHITE, string,1);
                                format(string, sizeof(string), "]=====================[ЧЕК]=====================[\nВам зачислено: \t\t\t %d рублей\nТекущий баланс: \t\t\t %d рублей\nЗачислил администратор: \t\t %s[%d]\nИспользуйте /donate для использования рублей\n]=====================[ЧЕК]=====================[", money,PlayerInfo[playa][pRub],sendername,playerid);
                                ShowPlayerDialog(playa,11222,DIALOG_STYLE_MSGBOX,"Чек пополнения рублей",string,"Ясно","Понятно"); // чек
                                //
                        }
                    }
                }
            }
            return true;
        }
P.S. Можете добавить проверку на доступ админа для /giverubles. Для этого:
После:
PHP:
tmp = strtok(cmdtext, idx);
				money = strval(tmp);
				if (PlayerInfo[playerid][pAdmin] >= 6)
Ставим это:
PHP:
if (dostup[playerid] <= 0) return ShowPlayerDialog(playerid,2934,DIALOG_STYLE_PASSWORD,"Доступ администратора","Введите пароль от административной панели","Ок","Отмена");
P.S.S Цены можете подправить, но не забудьте и в "кейсах"

4. Ко всем case'aм добавляем:
PHP:
			case 1444:
				{
				    if(response)
				    {
						switch(listitem)
						{
						    case 0:
							{
							    if(PlayerInfo[playerid][pWarns] < 0) return SendClientMessage(playerid,COLOR_BLUE,"У вас нет предупреждений");
							    if(PlayerInfo[playerid][pRub] < 15) return SendClientMessage(playerid,COLOR_BLUE,"У вас недостаточно рублей для снятия предупреждений");
								PlayerInfo[playerid][pWarns] = 0;
								PlayerInfo[playerid][pRub] -= 15;
								SendClientMessage(playerid,COLOR_LIGHTBLUE,"Предупреждения сняты");
							}
						    case 1: SPD(playerid,1666,1,"Информация по обмену",
							"Информация\n\n\
							25руб. = 200.000 вирт\n\
							50руб. = 400.000 вирт\n\
							100руб. = 1.000.000 вирт\n\
							300руб. = 5.000.000 вирт\n\
							750руб. = 15.000.000 вирт\n\
							1000руб. = 25.000.000 вирт\n\
							2000руб. = 50.000.000 вирт","Далее","Отменить");
							case 2: SPD(playerid,8002,1,"Смена автомобильного номера","Введите номер автомобиля","Ок","Отмена");
							case 3: SPD(playerid,1777,2,"Покупка мотоцикла","1. PCJ-600\t | 9 руб.\n2. Freeway\t | 12 руб.\n3. Sanchez\t | 10 руб.\n4. Quad\t\t | 8 руб.\n5. FCR-900\t | 11 руб.\n6. NRG-500\t | 15 руб.\n7. BF-400\t | 7 руб.\n8. Wayfarer\t | 13 руб.","Ok","Отмена");
							case 4: SPD(playerid,2222,2,"Выберите цвет","Красный \nГолубой \nЖелтый \nЗеленый \nСерый \nОранжевый \nЧерный \nБелый", "ОК", "Отмена");
							case 5: SPD(playerid,1555,0,"Увольнение из фракции","Вы действительно хотите уволиться из фракции?","Да","Нет");
						}
					}
					else
					{
					    return true;
					}
				}
				case 1777:
				{
				    if(response)
				    {
						switch(listitem)
						{
						    case 0:
						    {
						        if(PlayerInfo[playerid][pRub] < 9) return SendClientMessage(playerid,COLOR_BLUE,"У вас недостаточно рублей для покупки этого мотоцикла");
						        PlayerInfo[playerid][pRub] -= 9, PlayerInfo[playerid][pCar] = 461, SendClientMessage(playerid,COLOR_LIGHTBLUE,"Поздравляем вас с покупкой PCJ-600");
							}
							case 1:
							{
							    if(PlayerInfo[playerid][pRub] < 12) return SendClientMessage(playerid,COLOR_BLUE,"У вас недостаточно рублей для покупки этого мотоцикла");
							    PlayerInfo[playerid][pRub] -= 12, PlayerInfo[playerid][pCar] = 463, SendClientMessage(playerid,COLOR_LIGHTBLUE,"Поздравляем вас с покупкой Freeway");
							}
							case 2:
							{
							    if(PlayerInfo[playerid][pRub] < 10) return SendClientMessage(playerid,COLOR_BLUE,"У вас недостаточно рублей для покупки этого мотоцикла");
							    PlayerInfo[playerid][pRub] -= 10, PlayerInfo[playerid][pCar] = 468, SendClientMessage(playerid,COLOR_LIGHTBLUE,"Поздравляем вас с покупкой Sanchez");
							}
							case 3:
							{
						    	if(PlayerInfo[playerid][pRub] < 8) return SendClientMessage(playerid,COLOR_BLUE,"У вас недостаточно рублей для покупки этого Квадроцикла");
							    PlayerInfo[playerid][pRub] -= 8, PlayerInfo[playerid][pCar] = 471, SendClientMessage(playerid,COLOR_LIGHTBLUE,"Поздравляем вас с покупкой Quad");
							}
							case 4:
							{
						    	if(PlayerInfo[playerid][pRub] < 11) return SendClientMessage(playerid,COLOR_BLUE,"У вас недостаточно рублей для покупки этого мотоцикла");
							    PlayerInfo[playerid][pRub] -= 11, PlayerInfo[playerid][pCar] = 521, SendClientMessage(playerid,COLOR_LIGHTBLUE,"Поздравляем вас с покупкой FCR-900");
							}
							case 5:
							{
						    	if(PlayerInfo[playerid][pRub] < 15) return SendClientMessage(playerid,COLOR_BLUE,"У вас недостаточно рублей для покупки этого мотоцикла");
							    PlayerInfo[playerid][pRub] -= 15, PlayerInfo[playerid][pCar] = 522, SendClientMessage(playerid,COLOR_LIGHTBLUE,"Поздравляем вас с покупкой NRG-500");
							}
							case 6:
							{
							    if(PlayerInfo[playerid][pRub] < 7) return SendClientMessage(playerid,COLOR_BLUE,"У вас недостаточно рублей для покупки этого мотоцикла");
							    PlayerInfo[playerid][pRub] -= 7, PlayerInfo[playerid][pCar] = 581, SendClientMessage(playerid,COLOR_LIGHTBLUE,"Поздравляем вас с покупкой BF-400");
							}
							case 7:
							{
							    if(PlayerInfo[playerid][pRub] < 13) return SendClientMessage(playerid,COLOR_BLUE,"У вас недостаточно рублей для покупки этого мотоцикла");
								PlayerInfo[playerid][pRub] -= 13, PlayerInfo[playerid][pCar] = 586, SendClientMessage(playerid,COLOR_LIGHTBLUE,"Поздравляем вас с покупкой BF-400");
							}
						}
					}
					else
					{
					    return true;
					}
				}
				case 1555:
				{
				    if(response)
				    {
			        	if(IsPlayerConnected(playerid))
			           	{
			            	if(PlayerInfo[playerid][pMember] == 0) return SendClientMessage(playerid, COLOR_GREY, "Вы не состоите в организации");
		            		if(PlayerInfo[playerid][pRub] < 1) return SendClientMessage(playerid,COLOR_GRAD1,"У вас недостаточно рублей для увольнения"); // Если он не донат 3 lvl выводим сообщение
							PlayerInfo[playerid][pMember] = 0;
							PlayerInfo[playerid][pRank] = 0;
							PlayerInfo[playerid][pLeader] = 0;
							PlayerInfo[playerid][pJob] = 0;
							PlayerInfo[playerid][pRub] -= 1;
							SetPlayerArmourAC(playerid,0);
							SpawnPlayer(playerid);
							Delgun(playerid);
			               	SendClientMessage(playerid, COLOR_BLUE, "Вы были уволены по собственному желанию!");
	     			   	}//not connected
					}
	    			return true;
				}
				case 1666:
				{
	  				if(response)
		    		{
	      				if(!strcmp(inputtext,"25",true))
		        		{
		        		    if(PlayerInfo[playerid][pRub] < 25) return SendClientMessage(playerid,COLOR_RED,"У вас недостаточно рублей");
		        			PlayerInfo[playerid][pCash] += 200000, PlayerInfo[playerid][pRub] -= 25;
						}
						else if(!strcmp(inputtext,"50",true))
						{
	                        if(PlayerInfo[playerid][pRub] < 50) return SendClientMessage(playerid,COLOR_RED,"У вас недостаточно рублей");
	                        PlayerInfo[playerid][pCash] += 400000, PlayerInfo[playerid][pRub] -= 50;
						}
						else if(!strcmp(inputtext,"100",true))
						{
	                        if(PlayerInfo[playerid][pRub] < 100) return SendClientMessage(playerid,COLOR_RED,"У вас недостаточно рублей");
	                        PlayerInfo[playerid][pCash] += 1000000, PlayerInfo[playerid][pRub] -= 100;
						}
						else if(!strcmp(inputtext,"300",true))
						{
						    if(PlayerInfo[playerid][pRub] < 300) return SendClientMessage(playerid,COLOR_RED,"У вас недостаточно рублей");
						    PlayerInfo[playerid][pCash] += 5000000, PlayerInfo[playerid][pRub] -= 300;
						}
						else if(!strcmp(inputtext,"750",true))
						{
						    if(PlayerInfo[playerid][pRub] < 750) return SendClientMessage(playerid,COLOR_RED,"У вас недостаточно рублей");
						    PlayerInfo[playerid][pCash] += 15000000, PlayerInfo[playerid][pRub] -= 750;
						}
						else if(!strcmp(inputtext,"1000",true))
						{
						    if(PlayerInfo[playerid][pRub] < 1000) return SendClientMessage(playerid,COLOR_RED,"У вас недостаточно рублей");
						    PlayerInfo[playerid][pCash] += 25000000, PlayerInfo[playerid][pRub] -= 1000;
						}
						else if(!strcmp(inputtext,"2000",true))
						{
						    if(PlayerInfo[playerid][pRub] < 2000) return SendClientMessage(playerid,COLOR_RED,"У вас недостаточно рублей");
						    PlayerInfo[playerid][pCash] += 50000000, PlayerInfo[playerid][pRub] -= 2000;
						}
						SendClientMessage(playerid,COLOR_YELLOW,"Поздравляем вас с обменом рублей");
					}
					return true;
				}
				case 8002:
				{
					if(response)
					{
					    if(PlayerInfo[playerid][pRub] < 2) return SendClientMessage(playerid,COLOR_BLUE,"У вас недостаточно рублей для смены номера");
					    if(!strlen(inputtext)) return SPD(playerid,8002,1,"Смена номера","Введите номера авто в окошко","Готово","Отмена");
				    	if(strlen(inputtext) > 10) return SPD(playerid,8002,1,"Смена номера","Cлишком длинный номер!\nВведите номера авто в окошко","Готово","Отмена");
			            new Float:x,Float:y,Float:z,Float:ang;
			            SetVehicleNumberPlate(GetPlayerVehicleID(playerid), inputtext);
						GetVehiclePos(GetPlayerVehicleID(playerid),x,y,z);
						GetVehicleZAngle(GetPlayerVehicleID(playerid),ang);
						SetVehicleToRespawn(GetPlayerVehicleID(playerid));
						SetVehiclePos(GetPlayerVehicleID(playerid),x,y,z);
						PutPlayerInVehicle(playerid,GetPlayerVehicleID(playerid),0);
						SetVehicleZAngle(GetPlayerVehicleID(playerid),ang);
						PlayerInfo[playerid][pRub] -= 2;
						SendClientMessage(playerid,COLOR_LIGHTBLUE,"Вы сменили номер автомобиля");
					}
				}
case 2222:
				{
					if(response)
					{
					    if(PlayerInfo[playerid][pRub] < 3) return SendClientMessage(playerid,COLOR_BLUE,"У вас недостаточно рублей для смены цвета");
					    switch(listitem)
					    {
				 			case 0: Cvet[playerid] = 3, ChangeVehicleColor(vehicleid, 3, 3), PlayerInfo[playerid][pCvet] = 3;
							case 1: Cvet[playerid] = 79, ChangeVehicleColor(vehicleid, 79, 79), PlayerInfo[playerid][pCvet] = 79;
							case 2: Cvet[playerid] = 65, ChangeVehicleColor(vehicleid, 65, 65), PlayerInfo[playerid][pCvet] = 65;
							case 3: Cvet[playerid] = 86, ChangeVehicleColor(vehicleid, 86, 86), PlayerInfo[playerid][pCvet] = 86;
							case 4: Cvet[playerid] = 9, ChangeVehicleColor(vehicleid, 9, 9), PlayerInfo[playerid][pCvet] = 9;
							case 5: Cvet[playerid] = 6, ChangeVehicleColor(vehicleid, 6, 6), PlayerInfo[playerid][pCvet] = 6;
							case 6: Cvet[playerid] = 0, ChangeVehicleColor(vehicleid, 0, 0), PlayerInfo[playerid][pCvet] = 0;
							case 7: Cvet[playerid] = 1, ChangeVehicleColor(vehicleid, 1, 1), PlayerInfo[playerid][pCvet] = 1;
						}
						PlayerInfo[playerid][pRub] -= 3;
						PlayerInfo[playerid][pCvet] = Cvet[playerid];
						PlayerPlaySound(playerid,1134,0.0,0.0,0.0);
						SPD(playerid, 2222, 2, "Выбор цвета", "Красный \nГолубой \nЖелтый \nЗеленый \nСерый \nОранжевый \nЧерный \nБелый", "ОК", "Назад");
					}
					else
					{
						return true;
					}
				}

Мануал пишу для PI первый раз. Сильно не пинать ;) если было прошу прощения :)

UPDATE! /giverubles теперь показывает игроку диалог-чек. Думаю так будет красивей​
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу