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

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

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

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

Исправление багов в моде Rezone-rp v2.0

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

Maxim_Shmakov

Изучающий
Регистрация
18 Сен 2011
Сообщения
540
Лучшие ответы
0
Репутация
118
Привет пользователи pawno-info.ru!
Недавно на форумах появился мод с названием Rezone-rp v2.0 с множеством багов.
Не знаю чем вас привлек этот мод, но мне стало тоже интересно посидеть в нем.
И лично я в разделе "Вопросы по программированию pawn" стал замечать частые вопросы по исправлению багов в этом моде.
Вот решил создать тему с мануалами по исправлению багов в этом моде, что бы не засорять форум множеством вопросов по одному и тому же моду. Думаю некоторым будет полезна эта тема

Автор: Maxim_Shmakov (Я)

Итак начнем!

• 1й баг с интерьерами в армиях. все заметили что когда входишь в ангар то начинаешь лететь с неба.
Как исправить:


Идем в public OnPlayerPickUpPickup(playerid, pickupid) и ищем такие строки:
PHP:
else if(pickupid == sklad[1]) //
	{
	SetPlayerInterior(playerid,0);
	SetPlayerPos(playerid,-1370.39,498.79,11.20);
	SetPlayerFacingAngle(playerid, 92.2485);
	}
	else if(pickupid == sklad[0]) //
	{
	SetPlayerInterior(playerid,6);
	SetPlayerPos(playerid,316.9104,-168.6356,999.5938);
	SetPlayerFacingAngle(playerid, 355.8037);
	}
	else if(pickupid == matiskladls[0]) //
	{
	SetPlayerInterior(playerid,6);
	SetPlayerVirtualWorld(playerid, 5);
	SetPlayerPos(playerid,1023.20,2143.81,995.21);
	SetPlayerFacingAngle(playerid, 355.8037);
	}
	else if(pickupid == matiskladls[1]) //
	{
	SetPlayerInterior(playerid,0);
	SetPlayerPos(playerid,2731.5186,-2451.2383,17.5937);
	SetPlayerFacingAngle(playerid, 355.8037);
	}
	else if(pickupid == matisklad[0]) //
	{
	SetPlayerInterior(playerid,6);
	SetPlayerVirtualWorld(playerid, 4);
	SetPlayerPos(playerid,1023.20,2143.81,995.21);
	SetPlayerFacingAngle(playerid, 355.8037);
	}
	else if(pickupid == matisklad[1]) //
	{
	SetPlayerInterior(playerid,0);
	SetPlayerPos(playerid,338.26,1949.05,22.02);
	SetPlayerFacingAngle(playerid, 355.8037);
	}
После чего заменим их на эти:
PHP:
else if(pickupid == sklad[1]) //
	{
	SetPlayerInterior(playerid,0);
	SetPlayerVirtualWorld(playerid, 0);
	SetPlayerPos(playerid,-1370.39,498.79,11.20);
	SetPlayerFacingAngle(playerid, 92.2485);
	}
	else if(pickupid == sklad[0]) //
	{
	SetPlayerInterior(playerid,6);
        SetPlayerVirtualWorld(playerid, 0);
	SetPlayerPos(playerid,316.9104,-168.6356,999.5938);
	SetPlayerFacingAngle(playerid, 355.8037);
	}
	else if(pickupid == matiskladls[0]) //
	{
	SetPlayerInterior(playerid,6);
	SetPlayerVirtualWorld(playerid, 6);
	SetPlayerPos(playerid,316.9104,-168.6356,999.5938);
	SetPlayerFacingAngle(playerid, 355.8037);
	}
	else if(pickupid == matiskladls[1]) //
	{
	SetPlayerInterior(playerid,0);
	SetPlayerVirtualWorld(playerid, 0);
	SetPlayerPos(playerid,2731.5186,-2451.2383,17.5937);
	SetPlayerFacingAngle(playerid, 355.8037);
	}
	else if(pickupid == matisklad[0]) //
	{
	SetPlayerInterior(playerid,6);
	SetPlayerVirtualWorld(playerid, 4);
	SetPlayerPos(playerid,316.9104,-168.6356,999.5938);
	SetPlayerFacingAngle(playerid, 355.8037);
	}
	else if(pickupid == matisklad[1]) //
	{
	SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid, 0);
	SetPlayerPos(playerid,338.26,1949.05,22.02);
	SetPlayerFacingAngle(playerid, 355.8037);
	}
• 2й баг мне рассказал John_Flad. при наборе в банде команды /uninvite id (при этом указывать id члена другой банды) у него пропадет оружие
Ищем в моде команду /uninvite и убираем от туда эти строчки:
PHP:
	Delgun(para1);
ResetPlayerWeapons(para1);
• 3й баг существует не только в этом моде но и во всех rls модах. командой /setrpr можно давать бесконечный минус рейтинга (например -99999)
Ищем в моде команду /setrpr и заменяем ее на эту:
PHP:
else if(strcmp(cmd, "/setrpr", true) == 0)
    {
        if(!strlen(tmp))
         {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
              {
                        SendClientMessage(playerid, COLOR_WHITE, "*Введите: /setrpr [id] [Уважение] [причина]");
                        return 1;
            }
              giveplayerid = ReturnUser(tmp);
            if(IsPlayerConnected(giveplayerid))
            {
                if(giveplayerid != INVALID_PLAYER_ID)
                {
                    tmp = strtok(cmdtext, idx);
                    if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "*Введите: /setrpr [id] [Уважение] [причина]");
                    if(giveplayerid == playerid) return    SendClientMessage(playerid, COLOR_GRAD1, "Вы не можете голосовать за себя");
                    new amount;
                    new result[64];
                    new length = strlen(cmdtext);
                        while ((idx < length) && (cmdtext[idx] <= ' '))
                        {
                            idx++;
                        }
                        new offset = idx;
                    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
                    {
                    result[idx - offset] = cmdtext[idx];
                    idx++;
                    }
                    result[idx - offset] = EOS;
                    amount = strval(tmp);
                    if(PlayerInfo[giveplayerid][pLevel] < amount) return SendClientMessage(playerid, COLOR_WHITE, "LvL игрока ниже указанного вами репутацией");
                    if(PlayerInfo[playerid][pRp] <= -1) return SendClientMessage(playerid, COLOR_GRAD1, "Вы не можете голосовать, ваша репутация слишком мала");
                    if(amount < -5) return SendClientMessage(playerid, COLOR_GREY, "Нельзя меньше -5");
                    if(golosov[playerid] >= 5) return    SendClientMessage(playerid, COLOR_GRAD1, "Вы уже голосовали больше 5 раз");
                    if(PlayerInfo[giveplayerid][pRp] <=-150) return     SendClientMessage(playerid, COLOR_GREY, "У игрока меньше -149 rpr рейтинга");
                                PlayerInfo[giveplayerid][pRp] += amount;
                                format(string, sizeof(string), "Вы изменили игроку rp рейтинг на: %d", amount);
                                SendClientMessage(playerid, COLOR_YELLOW2, string);
                                   GetPlayerName(playerid, sendername, sizeof(sendername));
                                   golosov[playerid] +=1;
                                format(string, sizeof(string), "Ваш rp рейтинг изменил(à) %s на %d . Причина: %s",sendername,amount, (result));
                                SendClientMessage(giveplayerid, COLOR_GREEN, string);
                }
        }
    }
        return 1;
}
• 4й баг, информация о владельце дома работает некорректно
Идем в public CustomPickups() и ищем такие строки:
PHP:
for(new h = 0; h < sizeof(HouseInfo); h++)
                {
                    if(PlayerToPoint(0.5, i, HouseInfo[h][hEntrancex], HouseInfo[h][hEntrancey], HouseInfo[h][hEntrancez]))
                    {
                        if(HouseInfo[h][hOwned] == 1)
                        {
                            if(HouseInfo[h][hKlass] == 0)
                            {
                                format(string, sizeof(string), "Владелец: %s\nКласс: Nope\nНомер дома: %d",HouseInfo[h][hOwner],h);
                            }
                            else if(HouseInfo[h][hKlass] == 1)
                            {
                                format(string, sizeof(string), "Владелец: %s\nКласс: D\nНомер дома: %d",HouseInfo[h][hOwner],h);
                            }
                            else if(HouseInfo[h][hKlass] == 2)
                            {
                                format(string, sizeof(string), "Владелец: %s\nКласс: C\nНомер дома: %d",HouseInfo[h][hOwner],h);
                            }
                            else if(HouseInfo[h][hKlass] == 3)
                            {
                                format(string, sizeof(string), "Владелец: %s\nКласс: B\nНомер дома: %d",HouseInfo[h][hOwner],h);
                            }
                               else
                            {
                                format(string, sizeof(string), "Владелец: %s\nКласс: A\nНомер дома: %d",HouseInfo[h][hOwner],h);
                            }
                            ShowPlayerDialog(i,10075,DIALOG_STYLE_MSGBOX,"Квартира куплена",string,"Войти","Отмена");
                            return 1;
                        }
                        else
                        {
                        if(HouseInfo[h][hKlass] == 0)
                            {
                                    format(string, sizeof(string), "Цена: %d\nКласс: Nope\nНомер дома: %d",HouseInfo[h][hValue],h);
                            }
                            else    if(HouseInfo[h][hKlass] == 1)
                            {
                                    format(string, sizeof(string), "Цена: %d\nКласс: D\nНомер дома: %d",HouseInfo[h][hValue],h);
                            }
                            else    if(HouseInfo[h][hKlass] == 2)
                            {
                                    format(string, sizeof(string), "Цена: %d\nКласс: C\nНомер дома: %d",HouseInfo[h][hValue],h);
                            }
                            else    if(HouseInfo[h][hKlass] == 3)
                            {
                                    format(string, sizeof(string), "Цена: %d\nКласс: B\nНомер дома: %d",HouseInfo[h][hValue],h);
                            }
                            else
                            {
                            format(string, sizeof(string), "Цена: %d\nКласс: A\nНомер дома: %d",HouseInfo[h][hValue],h);
                        }
                        ShowPlayerDialog(i,10026,DIALOG_STYLE_MSGBOX,"Квартира продаётся",string,"Купить","Отмена");//Диалог домов
                        return 1;
                }
        }
    }
    }
    }
}
    return 1;
}
Заменяем их на эти:
PHP:
for(new h = 0; h < sizeof(HouseInfo); h++)
                {
                    if(PlayerToPoint(0.5, i, HouseInfo[h][hEntrancex], HouseInfo[h][hEntrancey], HouseInfo[h][hEntrancez]))
                    {
                        if(HouseInfo[h][hOwned] == 1)
        {

                new ttextt[32];
                if(IsPlayerConnected(GetPlayerID(HouseInfo[h][hOwner]))) { ttextt = "[{22ff00}Online{F2EEF0}]"; }
                else if(!IsPlayerConnected(GetPlayerID(HouseInfo[h][hOwner]))) { ttextt = "[{ff001c}Offline{F2EEF0}]"; }



                if(HouseInfo[h][hKlass] == 0)format(string, sizeof(string), "{F2EEF0}Владелец: {639BE4}%s{F2EEF0}  %s\n{EAEDF0}Класс: {A4F91C}Nope\n{F5F7F1}Номер дома: %d",HouseInfo[h][hOwner],ttextt,h);
                else if(HouseInfo[h][hKlass] == 1)format(string, sizeof(string), "{F2EEF0}Владелец: {639BE4}%s{F2EEF0}  %s\n{EAEDF0}Класс: {A4F91C}D\n{F5F7F1}Номер дома: %d",HouseInfo[h][hOwner],ttextt,h);
                else if(HouseInfo[h][hKlass] == 2)format(string, sizeof(string), "{F2EEF0}Владелец: {639BE4}%s{F2EEF0}  %s\n{EAEDF0}Класс: {A4F91C}C\n{F5F7F1}Номер дома: %d",HouseInfo[h][hOwner],ttextt,h);
                else if(HouseInfo[h][hKlass] == 3)format(string, sizeof(string), "{F2EEF0}Владелец: {639BE4}%s{F2EEF0}  %s\n{EAEDF0}Класс: {A4F91C}B\n{F5F7F1}Номер дома: %d",HouseInfo[h][hOwner],ttextt,h);
                else format(string, sizeof(string), "{F2EEF0}Владелец: {639BE4}%s{F2EEF0}  %s\n{EAEDF0}Класс: {A4F91C}A\n{F5F7F1}Номер дома: %d",HouseInfo[h][hOwner],ttextt,h);
                ShowPlayerDialog(i,10075,DIALOG_STYLE_MSGBOX,"Дом занят",string,"Войти","Отмена");
                return 1;

                    }
                        else
                        {
                        if(HouseInfo[h][hKlass] == 0)
                            {
                                    format(string, sizeof(string), "Цена: %d\nКласс: Nope\nНомер дома: %d",HouseInfo[h][hValue],h);
                            }
                            else    if(HouseInfo[h][hKlass] == 1)
                            {
                                    format(string, sizeof(string), "Цена: %d\nКласс: D\nНомер дома: %d",HouseInfo[h][hValue],h);
                            }
                            else    if(HouseInfo[h][hKlass] == 2)
                            {
                                    format(string, sizeof(string), "Цена: %d\nКласс: C\nНомер дома: %d",HouseInfo[h][hValue],h);
                            }
                            else    if(HouseInfo[h][hKlass] == 3)
                            {
                                    format(string, sizeof(string), "Цена: %d\nКласс: B\nНомер дома: %d",HouseInfo[h][hValue],h);
                            }
                            else
                            {
                            format(string, sizeof(string), "Цена: %d\nКласс: A\nНомер дома: %d",HouseInfo[h][hValue],h);
                        }
                        ShowPlayerDialog(i,10026,DIALOG_STYLE_MSGBOX,"Квартира продается",string,"Купить","Отмена");
                        return 1;
                }
        }
    }
    }
    }
}
    return 1;
}
И где нибудь в конце мода добавляем:
PHP:
stock GetPlayerID(string[])
{
    for(new i = 0; i <= MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i) == 1)
        {
            new testname[MAX_PLAYER_NAME];
            GetPlayerName(i, testname, sizeof(testname));
            if(strcmp(testname, string, true, strlen(string)) == 0)
            {
                return i;
            }
        }
    }
    return INVALID_PLAYER_ID;
}
• 5й баг, при смене формы у грузчиков и шахтеров она меняется на скин CJ'я или вообще не меняется
У грузчиков. Ищем диалог if(dialogid == 405) и заменяем на мой:
PHP:
if(dialogid == 405)
{
        if(response)
        {
			if(PlayerInfo[playerid][pMember] != 0) return SendClientMessage(playerid,COLOR_GRAD1,"Вы состоите во фракции");
        	if(Works[playerid] == true) return SendClientMessage(playerid,COLOR_GRAD1,"Вы уже устроились");
		    Works[playerid] = true; JobAmmount[playerid] = 0; JobCP[playerid] = 1;
			SetPlayerCheckpoint(playerid,2230.3528,-2286.1353,14.3751,1.5);
   			new skin = random(2);
   				if(skin == 1) SetPlayerSkin(playerid,260);
				else SetPlayerSkin(playerid,16);
				SendClientMessage(playerid,COLOR_GREEN,"Отправляйтесь носить мешки!");
				PicCP[playerid] = 0;
			}
        else
        {
    	if(Works[playerid] == false) return SendClientMessage(playerid,COLOR_GRAD1,"Вы не устроены на работу");
		    if(JobAmmount[playerid] != 0) return SendClientMessage(playerid,0xFFFFFFFF,"Вы должны получить зарплату в офисе");
		    SendClientMessage(playerid,COLOR_GREEN,"Рабочий день завершён!");
		    Works[playerid] = false; JobAmmount[playerid] = 0; JobCP[playerid] = 0; Employer[playerid] = 999;
		    SetPlayerSkin(playerid,PlayerInfo[playerid][pChar]);
		    DisablePlayerCheckpoint(playerid);
		return 1;
        }
    }
У шахтеров. Ищем диалог if(dialogid == 9995) и заменяем на мой:
PHP:
if(dialogid == 9995)
{
        if(response)
        {
       	if(Shaht[playerid] == true)
		    OldSkin[playerid] = GetPlayerSkin(playerid);
		    Shaht[playerid] = true; ShahtAmmount[playerid] = 0; ShahtCP[playerid] = 1;
			SetPlayerCheckpoint(playerid,-1809.7257,-1645.8424,22.9631,1.5);
			SetPlayerSkin(playerid,260);
			SendClientMessage(playerid,0xFFFFFFFF," Чтобы взять уголь, иди на красную метку на радаре.");
		   return 1;
        }
        else
        {
    	if(Shaht[playerid] == false) return SendClientMessage(playerid,0xFFFFFFFF,"Ты неработаеш шахтёром!");
		    if(ShahtAmmount[playerid] != 0) return SendClientMessage(playerid,0xFFFFFFFF," Сначала ты должен получить зарплату!");
		    SendClientMessage(playerid,0xFFFFFFFF,"Ты завершил рабочий день!");
		    Works[playerid] = false; JobAmmount[playerid] = 0; JobCP[playerid] = 0; Employer[playerid] = 999;
            SetPlayerSkin(playerid,PlayerInfo[playerid][pChar]);
            DisablePlayerCheckpoint(playerid);
		return 1;
        }
    }
• 6й баг в работе дальнобойщиков, (рассказал о баге Emanuele_Russo). при наборе команды /delivery пишет "Вы должны быть в Фуре за рулём!" хотя я и так за рулем
Ищем в команде /delivery такие строки:
PHP:
if(PlayerInfo[playerid][pJob] != 15)
		{
 	     SendClientMessage(playerid,COLOR_ORANGE," Вы должны быть в Фуре за рулём!");
			return true;
			}
И заменяем на мои:
PHP:
if(PlayerInfo[playerid][pJob] != 16)
		{
 	     SendClientMessage(playerid,COLOR_ORANGE," Вы не дальнобойщик!");
			return true;
			}
• 7й баг с гонками, нельзя зарегистрироваться и выйти из интерьера
В public OnPlayerPickUpPickup(playerid, pickupid) ищем:
PHP:
else if(pickupid == gonkae[1]) //гонка выход
	{
И сразу после скобки добавляем:
PHP:
chet[playerid] =0;
	SetPlayerInterior(playerid,0);
 	SetPlayerPos(playerid,1952.9702,-2177.6379,13.5469);
 	SetPlayerFacingAngle(playerid,353.8560);
 	SetPlayerVirtualWorld(playerid,0);
 	PlayerKarting[playerid] = 0;
 	CP[playerid] = 0;
 	KartingPlayers -= 1;
 	}
Находим эту строчку:
PHP:
arace = CreatePickup(1314, 23,1099.5614,1601.5493,12.5469); //
И заменяем на мою:
PHP:
arace = CreatePickup(1314, 23, 822.3992,2.7049,1004.1797); //
• 8й баг. медикам LS нельзя писать в /gov
В команду /gov добавьте:
PHP:
else if(PlayerInfo[playerid][pMember] == 22 || PlayerInfo[playerid][pLeader] == 22)
					{
	                    if(PlayerInfo[playerid][pRank] == 8) { rtext = "Глав. врач LS"; }
					}
• 9й баг. с нарко, не проходит эфект (погода) только после перезахода
Нужно создать таймер для нарко. для начало создадим forward:
PHP:
forward NarkoTimer(playerid);
Далее ко всем new добавляем:
PHP:
new narkotimer;
Создаем public:
PHP:
public NarkoTimer(playerid)
 {
 SetPlayerWeather(playerid, 14);
 }
И в команду /usedrugs добавляем:
PHP:
narkotimer = SetTimerEx( "NarkoTimer", 20000 , false, "i", playerid);
P.S. 20000 - это время через которое погода опять становится обычной (в мс)


• 10й баг. с ломкой, бесконечно флудит в чат о том что у вас ломка (/usedrugs не помогает!)
С этим багом я долго мучался, но так нече и не смог сделать. пришлось просить помощи на форуме и смотреть команду /usedrugs в других модах. Спасибо DOKER-NeO за исправление бага (наполовину)
Итак для начала удалим все что связанно с PlayerLomkaTime а именно:
PHP:
new PlayerLomkaTime[MAX_PLAYERS];//Для ломки
Ищем и удаляем в public SetPlayerUnjail это:
PHP:
if(PlayerLomkaTime[i] > 0)
				{

				    GetPlayerName(i,sendername,sizeof(sendername));
				    PlayerLomkaTime[i] --;
				    if(PlayerLomkaTime[i] == 0)
				    {
						TogglePlayerControllable(i,1);
						ClearAnimations(i);
						format(string, sizeof(string), "%s очнулся", sendername);
				    	ProxDetector(30.0, i, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
					}
				}
				if(PlayerInfo[i][pNarcoZavisimost] > 1000)
				{
	  			    PlayerInfo[i][pNarcoLomka] --;
				    if(PlayerLomkaTime[i] == 0)
				    {
				        GetPlayerName(i,sendername,sizeof(sendername));
				    	ApplyAnimation(i, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
						SendClientMessage(i,COLOR_REDD,"--== У Вас началась ломка ==--");
						SendClientMessage(i,COLOR_WHITE,"[1] Принять дозу: /usedrugs [2] Вызвать скорую: /c ");
						PlayerInfo[i][pNarcoLomka] = 400;
    					}
				}
В public OnPlayerText(playerid, text[]) ищем и удаляем это:
PHP:
if(PlayerStoned[playerid] >= 4)
					{
						//GameTextForPlayer(playerid, "~w~You are~n~~p~Stoned", 4000, 1);
						PlayerLomkaTime[playerid] = 3600;
						//TogglePlayerControllable(playerid,0);
						ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 300000000);
						SendClientMessage(playerid, COLOR_GREEN, "Вы без сознания...");
						return 0;
					}
Ну и последнее. заменяем свою команду /usedrugs на мою:
if(strcmp(cmdtext, "/usedrugs", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pDrugs] >= 1)
{
if(PlayerInfo[playerid][pDrugtime] > 0) return SendClientMessage(playerid,COLOR_GRAD1,"Употребить наркотики можно через 30 секунд");
new Float:health;
GetPlayerHealth(playerid, health);
if(health >= 120.0) { SetPlayerWeather(playerid, -68); PlayerStoned[playerid] = 0;}
narkotimer = SetTimerEx( "NarkoTimer", 20000 , false, "i", playerid);
if(PlayerInfo[playerid]
PHP:
 >=120)	{ return 1;}
			        SetPlayerHealthAC(playerid, health + 20.0);
			        PlayerInfo[playerid][pHP] +=20;
			        SetPlayerTime(playerid,17,0); //noon
			        SetPlayerWeather(playerid, -68);
  	  				PlayerStoned[playerid] += 1;
			   		PlayerInfo[playerid][pDrugs] -= 1;
			    	PlayerInfo[playerid][pKongfuSkill] -=50;
			    	PlayerInfo[playerid][pBoxSkill] -= 50;
			        PlayerInfo[playerid][pKickboxSkill] -= 50;
			    	SetPlayerDrunkLevel (playerid, 3000);
			   		GetPlayerName(playerid, sendername, sizeof(sendername));
			    	ApplyAnimation(playerid,"SMOKING","M_smk_drag",4.1,0,0,0,0,0,1);
				    format(string,sizeof(string), "Употребил(a) наркотики");
					SetPlayerChatBubble(playerid,string,COLOR_PURPLE,30.0,10000);
					if(startnarko[playerid] == 1)
					{
					startnarko[playerid] = 0;
					ApplyAnimation(playerid,"SMOKING","M_smk_drag",4.1,0,0,0,0,0,1);
					send[playerid] = 0;
					}
				    SetPlayerWeather(playerid, -68);
			    	PlayerInfo[playerid][pNarcoZavisimost] += 5;
				    PlayerInfo[playerid][pNarcoZavisimost] += 5;
				    //SetPlayerSpecialAction(playerid,21);
   				}
			else
			{
			    SendClientMessage(playerid, COLOR_GREY, "Не достаточно наркотиков!");
			}
		}//not connected
		return 1;
	}[/QUOTE]
Не вставил в PHP т.к в коде присутствует [pHP]


[I][COLOR="#00FF00"][B]• 11й баг. Мафии могут брать друг у друга в особняке оружие (Хотя для некоторых это не баг!)[/B][/COLOR][/I]
[COLOR="#A52A2A"]Итак баг тут из за того что в команде стоит проверка на мафию но везде стоят одинаковые координаты. т.к особняки у мафий одинаковые! Тут можно либо поменять мафиям интерьеры (поставить разные) либо каждой мафии установить разные координаты для получения оружия. Я сделал так: Теперь мафии могут брать оружия возле своих особняков. при этом например LCN не может брать оружие у РМ ну и т.д

Итак ищем команду /getweapon и заменяем на эту:[/COLOR]

[PHP]else if(strcmp(cmd, "/getweapon", true) == 0)
	{
			switch(PlayerInfo[playerid][pMember])
			{
			case 6:
			{
	        if(PlayerToPoint(30.0,playerid,1465.7830,2773.6199,10.6719))//яки getgun
            {
            if(PlayerInfo[playerid][pRank] <= 2)return SendClientMessage(playerid,COLOR_GRAD1,"Оружие можно взять с 3 ранга!");
            new listitems[] = "- Deagle [70 матов/50 патронов]\n- Shotgun [50 матов/15 патронов]\n- Rifle [100 матов/10 патронов]\n- M4 [500 матов/100 патронов]\n- AK-47 [500 матов/100 патронов]\n- Mp5 [400 матов/200 патронов]\n- Sdpistol [100 матов/100 патронов])";
  			ShowPlayerDialog(playerid, 2013, DIALOG_STYLE_LIST, "Взять оружие со склада Yakuza", listitems, "Выбрать", "Отмена");
            }
            }
  			case 5:
			{
          	if(PlayerToPoint(30.0,playerid,1449.0206,751.5092,11.0234))//lcn getgun
			{
           	if(PlayerInfo[playerid][pRank] <= 2)return SendClientMessage(playerid,COLOR_GRAD1,"Оружие можно взять с 3 ранга!");
            new listitems[] = "- Deagle [70 матов/50 патронов]\n- Shotgun [50 матов/15 патронов]\n- Rifle [100 матов/10 патронов]\n- M4 [500 матов/100 патронов]\n- AK-47 [500 матов/100 патронов]\n- Mp5 [400 матов/200 патронов]\n- Sdpistol [100 матов/100 патронов])";
  			ShowPlayerDialog(playerid, 2014, DIALOG_STYLE_LIST, "Взять оружие со склада LCN", listitems, "Выбрать", "Отмена");
            }
            }
            case 14:
            {
            if(PlayerToPoint(30.0,playerid,943.6813,1734.0588,8.8516))//рм getgun
            {
            if(PlayerInfo[playerid][pRank] <= 2)return SendClientMessage(playerid,COLOR_GRAD1,"Оружие можно взять с 3 ранга!");
            new listitems[] = "- Deagle [70 матов/50 патронов]\n- Shotgun [50 матов/15 патронов]\n- Rifle [100 матов/10 патронов]\n- M4 [500 матов/100 патронов]\n- AK-47 [500 матов/100 патронов]\n- Mp5 [400 матов/200 патронов]\n- Sdpistol [100 матов/100 патронов])";
  			ShowPlayerDialog(playerid, 2015, DIALOG_STYLE_LIST, "Взять оружие со склада Русской Мафии", listitems, "Выбрать", "Отмена");
            }
            }
            }
            return 1;
	}
Если вы заметили то я просто изменил точку где брать оружие. (Возле особняка каждой мафии)

Вот вроде и все! если нашли какой то баг или недоработку пишите попробую исправить. Я конечно не профи скриптер но немного все таки научился.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу