Доступ к готовым решениям

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

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

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

Мануал Хитманы

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

tryp

Умник
Всем добрый день. Пиступим делать хитманов!

для начало создаем переменные
PHP:
new GotHit[MAX_PLAYERS];
new GoChase[MAX_PLAYERS];
new GetChased[MAX_PLAYERS];
new hitfound = 0;
new hitid = 999;
new PlayerValue[MAX_PLAYERS];
далее идем в enum pinfo и добовляем
PHP:
pHeadValue,
Теперь добавляем в public OnPlayerRegister(playerid, password[])
PHP:
ini_setInteger(iniFile,"HeadValue",PlayerInfo[playerid][pHeadValue]);
public OnPlayerLogin(playerid, password[])
PHP:
ini_getInteger(iniFile,"HeadValue",PlayerInfo[playerid][pHeadValue]);
и сохраняем у меня stock SavePlayer(playerid)
PHP:
ini_setInteger(iniFile,"HeadValue",PlayerInfo[playerid][pHeadValue]);
Идем в public onplayerConnect
PHP:
GoChase[playerid] = 999; GetChased[playerid] = 999;GotHit[playerid] = 0;
и PlayerInfo[playerid][pHeadValue] = 0;
Теперь создаем саму фракцию вот по этому уроку >>тык<<
Теперь создаем команду /portable и /contract
PHP:
if(strcmp(cmd, "/contract", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	   	{
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp)) return   SendClientMessage(playerid, COLOR_GRAD1, " * Использование: /contract [playerid/PartOfName] [amount]");
			giveplayerid = ReturnUser(tmp);
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp)) return  SendClientMessage(playerid, COLOR_GRAD1, " * Использование: /contract [playerid/PartOfName] [amount]");
			moneys = strvalEx(tmp);
			if(moneys < 1000 || moneys > 100000) { SendClientMessage(playerid, COLOR_GREY, "   Сумма котрактов должна быть минимум $1000, и максимум $100000!"); return 1; }
			if (IsPlayerConnected(giveplayerid))
			{
			    if(giveplayerid != INVALID_PLAYER_ID)
			    {
				    if(PlayerInfo[giveplayerid][pMember] == 29 && PlayerInfo[playerid][pMember] == 29) return  SendClientMessage(playerid, COLOR_GREY, " * Нельзя заказать контракт на члена вашего агенства!");
				    else if(PlayerInfo[giveplayerid][pLeader] == 29 && PlayerInfo[playerid][pMember] == 29)   return   SendClientMessage(playerid, COLOR_GREY, " * Нельзя заказать контракт на члена вашего агенства!");
				    else if(PlayerInfo[giveplayerid][pMember] == 29||PlayerInfo[giveplayerid][pLeader] == 29) return  SendClientMessage(playerid, COLOR_GREY, " * Вы неможете заказать этого человека!");
				    else if(PlayerInfo[playerid][pMember] == 29) return  SendClientMessage(playerid, COLOR_GREY, "Вы не хитман");
				    if(IsACop(giveplayerid) && moneys >= 3000)
				    {
				        SendClientMessage(playerid, COLOR_GREY, " * Только контракты больше $3000 могут быть положены на копов!");
				        return 1;
				    }
				    if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, " * Вы не можете заказать себя!"); return 1; }
					GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
					GetPlayerName(playerid, sendername, sizeof(sendername));
					playermoney = PlayerInfo[playerid][pCash];
					if (moneys > 0 && playermoney >= moneys)
					{
                        PlayerInfo[playerid][pCash] -= moneys;
    			        PlayerInfo[playerid][pCash] -= moneys;
						GiveMoney(playerid, (0 - moneys));
						PlayerInfo[giveplayerid][pHeadValue]+=moneys;
						format(string, sizeof(string), " * %s заказал %s на сумму $%d.",sendername, giveplayer, moneys);
						SendFamilyMessage(29, COLOR_YELLOW, string);
						format(string, sizeof(string), " * Вы сделали контракт на %s за $%d.",giveplayer, moneys);
						SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
						PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
					}
					else
					{
						SendClientMessage(playerid, COLOR_GRAD1, " * У вас не хватает денег!");
					}
				}
			}
			else
			{
				format(string, sizeof(string), "   %d не активный игрок.", giveplayerid);
				SendClientMessage(playerid, COLOR_GRAD1, string);
			}
		}
		return true;
	}
if(strcmp(cmd,"/portable",true)==0)
	{
	    if(IsPlayerConnected(playerid))
	    {
		    if(PlayerInfo[playerid][pMember] == 29 || PlayerInfo[playerid][pLeader] == 29)//меняем на свой
		    {
                        ShowPlayerDialog(playerid,7763,DIALOG_STYLE_LIST,"Хитман Menu","Доступные контракты\nПодписать контракт\nПриобрести оружие\nОтказаться от заказа\nНайти цель\nРазъедениться","Далее","Отмена");
		    }
		}
	    return 1;
	}
Теперь добавляем диалоги
PHP:
 case 7763:
  {
 	  if(response)
  	  {
 			if(listitem == 0)
     		{
		    	SearchingHit(playerid);
     		}
     		if(listitem == 1)
     		{
				if(hitfound == 0)
		    	{
		        	SendClientMessage(playerid, TEAM_AZTECAS_COLOR, "• {FFFFFF}Нет доступных контрактов!");
		        	return false;
		    	}
     			ShowPlayerDialog(playerid,7764,DIALOG_STYLE_INPUT,"{b3f9b0}","{FFFFFF}Введите ID игрока кому хотите поручить контракт и нажмите {b3f9b0}'Принять'","Принять","");
     		}
     		if(listitem == 2)
     		{
     		    ShowPlayerDialog(playerid,7765,DIALOG_STYLE_INPUT,"{b3f9b0}Покупка","{FFFFFF}Впишите номер комплекта оружия и нажмите {b3f9b0}'Купить'\n\tКомплект оружия № 1 (5.000)\n\tКомплект оружия № 2 (6.000)\n\tКомплект оружия № 3 (7.000)\n\tКомплект оружия № 4 (8.000)\n\tКомплект оружия № 5 (9.000)\n\tКомплект оружия № 6 (10.000)\n\tКомплект оружия № 7 (11.000)\n","Купить","Отмена");
     		}
     		if(listitem == 3)
     		{
     		new giver[MAX_PLAYER_NAME];
 	        new giveplayer[MAX_PLAYER_NAME];
 	        new giveplayerid;
            if(IsPlayerConnected(hitid))
			    {
					new sendername[MAX_PLAYER_NAME];
		        	GetPlayerName(playerid,sendername,sizeof(sendername));
		        	GetPlayerName(playerid, sendername, sizeof(sendername));
			        GetPlayerName(giveplayerid, giver, sizeof(giver));
			        GetPlayerName(hitid, giveplayer, sizeof(giveplayer));
					format(string,sizeof(string),"• {FFFFFF}Хитман {b3f9b0}%s {FFFFFF}отказался от выполнения заказа на {b3f9b0}(ID:%d)",sendername,GoChase[playerid]);
					SendFamilyMessage(29,0xb3f9b0FF,string);
	                              GotHit[playerid] = 0;
                                     GoChase[playerid] = 999
					return false;
		    	}
				else
				{
			    	SendClientMessage(playerid,COLOR_WHITE,"{f9b0b0}x {FFFFFF}У Вас нет заказа");
			    	return false;
				}
     		}
     		if(listitem == 4)
     		{
		    	if(GoChase[playerid]!=999)
		    	{
                    new giver[MAX_PLAYER_NAME];
		        	GetPlayerName(GoChase[playerid],giver,sizeof(giver));
					format(string,sizeof(string),"Цель {b3f9b0}%s[ID: %d] {FFFFFF}отмечена у Вас на карте, следуйте за ней",giver,GoChase[playerid]);
					SendClientMessage(playerid,COLOR_WHITE,string);
					new Float:X,Float:Y,Float:Z;
					GetPlayerPos(GoChase[playerid], X,Y,Z);
					SetPlayerCheckpoint(playerid, X,Y,Z, 6);
					return false;
		    	}
		    	else
		    	{
		    	    SendClientMessage(playerid,COLOR_WHITE,"{f9b0b0}x {FFFFFF}Вы не за кем не охотитесь");
		    	    return false;
		    	}
     		}
     		if(listitem == 5)
     		{
				SendClientMessage(playerid, TEAM_AZTECAS_COLOR, "• {FFFFFF}Вы отключились от агенства и выключили ноутбук");
      			ConnectPC[playerid] = 0;
		    	return false;
     		}
	  }
  }
  case 7764:
  {
 	  if(response)
  	  {
   			new giveplayerid = strval(inputtext);
			if(IsPlayerConnected(giveplayerid))
			{
			    if(giveplayerid != INVALID_PLAYER_ID)
			    {
			        if(PlayerInfo[giveplayerid][pMember] == 29 || PlayerInfo[giveplayerid][pLeader] == 29)
				    {
					    if(GoChase[giveplayerid] < 999)
					    {
					        SendClientMessage(playerid, COLOR_GREY, "• Тот хитман уже занят");
							return false;
					    }
					    if(IsPlayerConnected(hitid))
					    {
                            new giver[MAX_PLAYER_NAME];
                            new sendername[MAX_PLAYER_NAME];
                            new giveplayer[MAX_PLAYER_NAME];
					        GetPlayerName(playerid, sendername, sizeof(sendername));
					        GetPlayerName(giveplayerid, giver, sizeof(giver));
					        GetPlayerName(hitid, giveplayer, sizeof(giveplayer));
			    			format(string, sizeof(string), "« %s[%d] заключил контракт с %s[%d] на убийство %s[%d] »", sendername,playerid, giver,giveplayerid, giveplayer, hitid);
			    			SendFamilyMessage(29, TEAM_AZTECAS_COLOR, string);
			    			GoChase[giveplayerid] = hitid;
			    			GetChased[hitid] = giveplayerid;
			    			GotHit[hitid] = 1;
			    			hitid = 0;
			    			hitfound = 0;
					        return false;
					    }
					    else
					    {
					        SendClientMessage(playerid, TEAM_AZTECAS_COLOR, "• {FFFFFF}Человек на которого контракт сейчас нет в игре!");
					        return false;
					    }
				    }
				    else
				    {
				        SendClientMessage(playerid, TEAM_AZTECAS_COLOR, "• {FFFFFF}Тот игрок не хитман");
				        return false;
				    }
				}
				return false;
			}
			else
			{
			    SendClientMessage(playerid, TEAM_AZTECAS_COLOR, "• {FFFFFF}Нет такого игрока!");
			    return false;
			}
  	  }
  }
  case 7765:
  {
 	  if(response)
  	  {
  	  		new i = playerid;
    		if(!strcmp(inputtext, "1",true))
    		{
    		    if(GetPlayerMoney(i) > 5000)
				{
      				GiveRichGun(i, 24, 50); GiveRichGun(i, 29, 500); GiveRichGun(i, 25, 50); GiveRichGun(i, 4, 1);
					PlayerInfo[playerid][pCash] -= 5000;
     				SendClientMessage(i, COLOR_LIGHTBLUE, "• {FFFFFF}Вы приобрели комплект оружия № 1.");
     			}
				else
				{
					SendClientMessage(i, COLOR_LIGHTBLUE, "• {FFFFFF}У Вас недостаточно денег.");
				}
    		}
    		if(!strcmp(inputtext, "2",true))
    		{
    		    if(GetPlayerMoney(i) > 6000)
				{
                	GiveRichGun(i, 24, 50); GiveRichGun(i, 29, 500); GiveRichGun(i, 25, 50); GiveRichGun(i, 31, 500); GiveRichGun(i, 4, 1);
                	PlayerInfo[playerid][pCash] -=6000;
     				SendClientMessage(i, COLOR_LIGHTBLUE, "• {FFFFFF}Вы приобрели комплект оружия № 2.");
     			}
				else
				{
					SendClientMessage(i, COLOR_LIGHTBLUE, "• {FFFFFF}У Вас недостаточно денег.");
				}
    		}
    		if(!strcmp(inputtext, "3",true))
    		{
    		    if(GetPlayerMoney(i) > 7000)
				{
                	GiveRichGun(i, 24, 50); GiveRichGun(i, 29, 500); GiveRichGun(i, 25, 50); GiveRichGun(i, 30, 500); GiveRichGun(i, 4, 1);
                	PlayerInfo[playerid][pCash] -=7000;
     				SendClientMessage(i, COLOR_LIGHTBLUE, "• {FFFFFF}Вы приобрели комплект оружия № 3.");
     			}
				else
				{
					SendClientMessage(i, COLOR_LIGHTBLUE, "• {FFFFFF}У Вас недостаточно денег.");
				}
    		}
    		if(!strcmp(inputtext, "4",true))
    		{
    		    if(GetPlayerMoney(i) > 8000)
				{
                	GiveRichGun(i, 24, 50); GiveRichGun(i, 29, 500); GiveRichGun(i, 25, 50); GiveRichGun(i, 31, 500); GiveRichGun(i, 4, 1); GiveRichGun(i, 34, 20);
                	PlayerInfo[playerid][pCash] -= 8000;
     				SendClientMessage(i, COLOR_LIGHTBLUE, "• {FFFFFF}Вы приобрели комплект оружия № 4.");
     			}
				else
				{
					SendClientMessage(i, COLOR_LIGHTBLUE, "• {FFFFFF}У Вас недостаточно денег.");
				}
    		}
    		if(!strcmp(inputtext, "5",true))
    		{
    		    if(GetPlayerMoney(i) > 10000)
				{
                	GiveRichGun(i, 24, 50); GiveRichGun(i, 29, 500); GiveRichGun(i, 25, 50); GiveRichGun(i, 30, 500); GiveRichGun(i, 4, 1); GiveRichGun(i, 34, 20);
                	PlayerInfo[playerid][pCash] -= 10000;
     				SendClientMessage(i, COLOR_LIGHTBLUE, "• {FFFFFF}Вы приобрели комплект оружия № 5.");
     			}
				else
				{
					SendClientMessage(i, COLOR_LIGHTBLUE, "• {FFFFFF}У Вас недостаточно денег.");
				}
    		}
    		if(!strcmp(inputtext, "6",true))
			{
			    if(GetPlayerMoney(i) > 11000)
				{
                	GiveRichGun(i, 24, 50); GiveRichGun(i, 29, 500); GiveRichGun(i, 25, 50); GiveRichGun(i, 31, 500); GiveRichGun(i, 4, 1); GiveRichGun(i, 34, 20);
                	PlayerInfo[playerid][pCash] -= 11000;
     				SendClientMessage(i, COLOR_LIGHTBLUE, "• {FFFFFF}Вы приобрели комплект оружия № 6.");
				}
				else
				{
					SendClientMessage(i, COLOR_LIGHTBLUE, "• {FFFFFF}У Вас недостаточно денег.");
				}
    		}
    		if(!strcmp(inputtext, "7",true))
    		{
    		    if(GetPlayerMoney(i) > 12000)
				{
                	GiveRichGun(i, 24, 50); GiveRichGun(i, 29, 500); GiveRichGun(i, 25, 50); GiveRichGun(i, 30, 500); GiveRichGun(i, 4, 1); GiveRichGun(i, 34, 20);
                	PlayerInfo[playerid][pCash] -= 12000;
     				SendClientMessage(i, COLOR_LIGHTBLUE, "• {FFFFFF}Вы приобрели комплект оружия № 7.");
     			}
				else
				{
					SendClientMessage(i, COLOR_LIGHTBLUE, "• {FFFFFF}У Вас недостаточно денег.");
				}
    		}
	  }
  }
Теперь в конец мода добавляем паблик
PHP:
stock SearchingHit(playerid)
{
	new string[150];
	new giveplayer[MAX_PLAYER_NAME];
	new searchhit = 0;
	for(new i=0; i<GetMaxPlayers(); i++)
	{
		if(IsPlayerConnected(i))
		{
		    if(searchhit == 0)
		    {
			    if(PlayerInfo[i][pHeadValue] > 0 && GotHit[i] == 0 && PlayerInfo[i][pMember] != 29)
			    {
			        GetPlayerName(i, giveplayer, sizeof(giveplayer));
			        searchhit = 1;
			        hitfound = 1;
			        hitid = i;
			        for(new k=0; k<GetMaxPlayers(); k++)
					{
						if(IsPlayerConnected(k))
						{
				        	if(PlayerInfo[k][pMember] == 29 || PlayerInfo[k][pLeader] == 29)//меняем на свое
				        	{
				                format(string, sizeof(string), "Цель: %s[%d] Цена: $%d", giveplayer, i, PlayerInfo[i][pHeadValue]);
								SendClientMessage(k, COLOR_GREEN, string);
								SendClientMessage(k, COLOR_GREEN, "Откройте меню и выберите пункт 'Подписать контракт'");
	      					}
					    }
					}
					return false;
			    }
			}
		}
	}
	if(searchhit == 0)
	{
	    SendClientMessage(playerid, COLOR_WHITE, "{f9b0b0}x {FFFFFF}Нет доступных контрактов.");
	}
	return false;
}
Теперь идем в public OnPlayerDeath(playerid, killerid, reason)
PHP:
if(PlayerInfo[playerid][pHeadValue] > 0)
	{
	    if(IsPlayerConnected(killerid))
	    {
		    if(PlayerInfo[killerid][pLeader] == 29 || PlayerInfo[killerid][pMember] == 29)
		    {
		        if(GoChase[killerid] == playerid)
		        {
					new killer[MAX_PLAYER_NAME];
					GetPlayerName(killerid, killer, sizeof(killer));
					PlayerInfo[killerid][pCash] += PlayerInfo[playerid][pHeadValue];
					format(string,128,"<< Хитман %s выполнил контракт на %s и получил $%d >>",killer,name,PlayerInfo[playerid][pHeadValue]);
					SendFamilyMessage(29, COLOR_YELLOW, string);
					SendClientMessage(playerid, COLOR_LIGHTRED," * Вы были убиты хитманом по заказу!");
					PlayerInfo[playerid][pHeadValue] = 0;
					GotHit[playerid] = 0;
					GetChased[playerid] = 999;
					GoChase[killerid] = 999;
				}
			}
		}
	}
Вырезано с мода.
SendFamilyMessage(29, COLOR_YELLOW, string);//номер 29 менять на свой ид фракции хитманов
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу