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

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

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

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

Донат система

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

iljuxO

Новичок
В общем это мой первый урок , прошу строго не судить =)
Я решил создать простую донат систему , в которой можно купить випку , респекты , и деньги , а также снять варны (Просто не знал что еще туда добавить)
Выглядит это примерно так :

Теперь можно приступить к созданию :
  • Сначала надо найти enum pInfo и добавить в него следующею вещь
    PHP:
    pDonateMoney,
  • Потом найти паблик public OnPlayerConnect(playerid)
    и добавить туда :
    PHP:
    PlayerInfo[playerid][pDonateMoney] = 0;
  • После найти паблики public OnPlayerRegister(playerid, password[]) и public OnPlayerSave(playerid)
    и добавить туда :
    PHP:
    dini_IntSet(string, "DonateMoney", PlayerInfo[playerid][pDonateMoney]);
  • Потом нам понадобится паблик public OnPlayerLogin(playerid,password[])
    в который нужно добавить :
    PHP:
    PlayerInfo[playerid][pDonateMoney] = dini_Int(string2,"DonateMoney");
  • После этого нам надо создать диалоги . Для этого идем в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    и создаем там диалоги
    PHP:
    if(dialogid == 11221)
     	{
        	if(response)
        	{
        	if(listitem == 0)
    			{
       	ShowPlayerDialog(playerid,11222,DIALOG_STYLE_LIST,"Покупка респектов","2 респекта - 1 донат\n4 респекта - 2 доната\n10 респектов - 4 доната\n20 респектов - 8 доната","Выбор","Отмена");
       			}
    			if(listitem == 1)
    			{
               	ShowPlayerDialog(playerid,11223,DIALOG_STYLE_LIST,"Покупка денег","1000 долларов - 2 донат\n2000 долларов - 3 доната\n4000 долларов - 4 доната\n10000 долларов - 7 доната","Выбор","Отмена");
    			}
       			if(listitem == 2)
    			{
    			ShowPlayerDialog(playerid,11224,DIALOG_STYLE_LIST,"Дополнительно","Вип аккаунт - 20 донатов\nСнятие варна - 2 доната","Выбор","Отмена");
    			}
         	}
    		return 1;
     	}
     	 else if(dialogid == 11222)
     	{
        	if(response)
        	{
        	if(listitem == 0)
    			{
       			PlayerInfo[playerid][pExp] += 2;
     			PlayerInfo[playerid][pDonateMoney] -= 1;
     			return 1;
       			}
    			if(listitem == 1)
    			{
               	PlayerInfo[playerid][pExp] += 4;
     			PlayerInfo[playerid][pDonateMoney] -= 2;
     			return 1;
    			}
       			if(listitem == 2)
    			{
    			PlayerInfo[playerid][pExp] += 10;
     			PlayerInfo[playerid][pDonateMoney] -= 4;
     			return 1;
    			}
    			if(listitem == 3)
    			{
    			PlayerInfo[playerid][pExp] += 20;
     			PlayerInfo[playerid][pDonateMoney] -= 8;
     			return 1;
    			}
         	}
    		return 1;
     	}
     		 else if(dialogid == 11223)
     	{
        	if(response)
        	{
        	if(listitem == 0)
    			{
       			PlayerInfo[playerid][pMoney] += 1000;
     			PlayerInfo[playerid][pDonateMoney] -= 2;
     			return 1;
       			}
    			if(listitem == 1)
    			{
               	PlayerInfo[playerid][pMoney] += 2000;
     			PlayerInfo[playerid][pDonateMoney] -= 3;
     			return 1;
    			}
       			if(listitem == 2)
    			{
    			PlayerInfo[playerid][pMoney] += 4000;
     			PlayerInfo[playerid][pDonateMoney] -= 4;
     			return 1;
    			}
    			if(listitem == 3)
    			{
    			PlayerInfo[playerid][pMoney] += 10000;
     			PlayerInfo[playerid][pDonateMoney] -= 7;
     			return 1;
    			}
         	}
    		return 1;
     	}
    	else if(dialogid == 11224)
     	{
        	if(response)
        	{
        	if(listitem == 0)
    			{
     			PlayerInfo[playerid][pDonateRank] += 1;
     			PlayerInfo[playerid][pDonateMoney] -= 20;
     			return 1;
       			}
       			if(listitem == 0)
    			{
     			PlayerInfo[playerid][pWarns] -= 1;
     			PlayerInfo[playerid][pDonateMoney] -= 2;
     			return 1;
       			}
         	}
    		return 1;
     	}
  • Ну , а теперь дело осталось за малым . Осталось добавить пару команд идем в public OnPlayerCommandText(playerid, cmdtext[])
    и создаем там 3 команды . 1 Что-бы открыть донать меню . 2 Что-бы передать донат деньги . 3 Что-бы выдать донат деньги через админку.
  • 1 Что-бы открыть донать меню .
    PHP:
    	if (strcmp(cmdtext, "/donatebuy", true)==0)
           {
    		if(IsPlayerConnected(playerid))
    		{
                GetPlayerName(playerid, sendername, sizeof(sendername));
                ShowPlayerDialog(playerid,11221,DIALOG_STYLE_LIST,"Донат услуги","Покупка респектов\nПокупка денег\nДополнительно","Выбор","Отмена");
    	     	return 1;
    		}
    	}
  • 2 Что-бы передать донат деньги .
    PHP:
    	if(strcmp(cmd, "/paydonate", true) == 0)
    	{
    	    if(IsPlayerConnected(playerid))
    	    {
    			tmp = strtok(cmdtext, idx);
    			if(!strlen(tmp))
    			{
    				SendClientMessage(playerid, COLOR_GRAD1, "[RP]HollyWood[RUS]: /paydonate [playerid/PartOfName] [количество]");
    				return 1;
    			}
    			//giveplayerid = strval(tmp);
    	        giveplayerid = ReturnUser(tmp);
    			tmp = strtok(cmdtext, idx);
    			if(!strlen(tmp))
    			{
    				SendClientMessage(playerid, COLOR_GRAD1, "[RP]HollyWood[RUS]: /paydonate [playerid/PartOfName] [количество]");
    				return 1;
    			}
    			moneys = strval(tmp);
    			if(moneys > 5 && PlayerInfo[playerid][pLevel] < 3)
    			{
    				SendClientMessage(playerid, COLOR_GRAD1, "Вы должны быть больше 3 уровня,чтобы передавать больше 5!");
    				return 1;
    			}
    			if(moneys < 1 || moneys > 100)
    			{
    			    SendClientMessage(playerid, COLOR_GRAD1, "Нельзя передать меньше 1, и больше 100.");
    			    return 1;
    			}
    			if(antimult[playerid] == moneys)
    			{
    			    antimult2[playerid] += 1;
    			}
    			if(antimult[playerid] != moneys)
    			{
    			    antimult2[playerid] = 0;
    			}
    			if (IsPlayerConnected(giveplayerid))
    			{
    			    if(giveplayerid != INVALID_PLAYER_ID)
    			    {
    			        if(PlayerInfo[giveplayerid][pLocal] == 106)
    					{
    						SendClientMessage(playerid, COLOR_GRAD1, "Команда запрещена в данной локации.");
    						return 1;
    					}
    					if (ProxDetectorS(5.0, playerid, giveplayerid))
    					{
    						GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    						GetPlayerName(playerid, sendername, sizeof(sendername));
    						playermoney = PlayerInfo[playerid][pMoney];
    						if (moneys > 0 && playermoney >= moneys)
    						{
                                PlayerInfo[giveplayerid][pDonateMoney] += moneys;
    							PlayerInfo[playerid][pDonateMoney] -= moneys;
    							antimult[playerid] = moneys;
    							format(string, sizeof(string), "Вы передали игроку %s, $%d.", giveplayer, moneys);
    							PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
    							SendClientMessage(playerid, COLOR_GRAD1, string);
    							format(string, sizeof(string), "Вы получили $%d от %s.", moneys, sendername);
    							SendClientMessage(giveplayerid, COLOR_GRAD1, string);
    							format(string, sizeof(string), "%s передал %s - $%d", sendername, giveplayer, moneys);
    							log("Pay", string);
    							if(moneys >= 1000000)
    							{
    								ABroadCast(COLOR_YELLOW,string,1);
    							}
    							if(antimult2[playerid] > 10)
    							{
    							    new strMy[255];
    		    	    			new STRname[255];
    	    						GetPlayerName(playerid,STRname,255);
       	    						new STname[255];
    	    						GetPlayerName(giveplayerid,STname,255);
    								format(strMy, sizeof(strMy), "Подозрение на мультиакк передачу донат денег. Игрок %s(id %d) передал %s(id %d) сумму %d$",STRname,playerid,STname,giveplayerid,moneys);
    								SendAdminMessage(0xFF0000FF, strMy);
    							}
    							PlayerPlaySound(giveplayerid, 1052, 0.0, 0.0, 0.0);
    							format(string, sizeof(string), "достал бонусные денги и передал их %s." ,giveplayer);
    							Action(playerid, string);
    						}
    						else
    						{
    							SendClientMessage(playerid, COLOR_GRAD1, "Неправильное количество.");
    						}
    					}
    					else
    					{
    						SendClientMessage(playerid, COLOR_GRAD1, "Вы слишком далеко.");
    					}
    				}//invalid id
    			}
    			else
    			{
    				format(string, sizeof(string), "%d не активый игрок.", giveplayerid);
    				SendClientMessage(playerid, COLOR_GRAD1, string);
    			}
    		}
    		return 1;
    	}
  • 3 Что-бы выдать донат деньги через админку.
    PHP:
    if(strcmp(cmd, "/givedonatemoney", true) == 0)
    	{
    	    if(IsPlayerConnected(playerid))
    	    {
    			tmp = strtok(cmdtext, idx);
    			if(!strlen(tmp))
    			{
    				SendClientMessage(playerid, COLOR_GRAD2, "/givedonatemoney [playerid/PartOfName] [money]");
    				return 1;
    			}
    			new playa;
    			new money;
    			playa = ReturnUser(tmp);
    			tmp = strtok(cmdtext, idx);
    			money = strval(tmp);
    			if (PlayerInfo[playerid][pAdmin] >= 10)
    			{
    			    if(IsPlayerConnected(playa))
    			    {
    			        if(playa != INVALID_PLAYER_ID)
    			        {
    						PlayerInfo[playa][pDonateMoney] += money;
    					}
    				}
    			}
    			else
    			{
    				SendClientMessage(playerid, COLOR_GRAD1, "Недостаточно прав для использования команды.");
    			}
    		}
    		return 1;
    	}
Ну вот и все , все это делал на Diamond'е
Автор IljuxO
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу