Рекомендованные сообщения



19 posts in this topic

Основа мода: Social Rp

Вообщем, при загрузке груза можно ставить хоть 5кг а там сразу 100 загружается, еще при нажатии H(для отказа от груза) пишет что прицеп аннулирован, но он снова спавниться и нагружается, Так-же при нажатии H там же выдаются сразу деньги за груз. Как это можно исправить?

Share this post


Link to post
Share on other sites

@Andy выкладывайте код диалога, в котором указывается кол-во для загрузки

Share this post


Link to post
Share on other sites
Спойлер

if(IsPlayerInDynamicArea(playerid,AreaInfo[arTruckLoadCoal]) || IsPlayerInDynamicArea(playerid,AreaInfo[arTruckLoadWood]) || IsPlayerInDynamicArea(playerid,AreaInfo[arTruckLoadWeapon]))
				{
					new loadid = 0;
					if(IsPlayerInDynamicArea(playerid,AreaInfo[arTruckLoadWood])) loadid = 1;
					else if(IsPlayerInDynamicArea(playerid,AreaInfo[arTruckLoadWeapon])) loadid = 3;
					if(pInfo[playerid][pJob] == JOB_TRUCKER && pTemp[playerid][pTruckID] != INVALID_VEHICLE_ID && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && pTemp[playerid][pTruckWagonID] == INVALID_VEHICLE_ID)
					{
						vehicleid = GetPVarInt(playerid,"VehicleEnters");
						model = GetVehicleModel(vehicleid);
						switch(model)
						{
							case 403,514,515:
							{
								new maxcount, level, string[128];
								level = GetPlayerTruckLevel(playerid);
								maxcount = (level == 1) ? (TRUCK_LOAD_1) : (level == 2) ? (TRUCK_LOAD_2) : (TRUCK_LOAD_3);
								SetPVarInt(playerid,"maxamount",maxcount);
								SetPVarInt(playerid,"loadid",loadid);
								switch(loadid)
								{
									case 0:
									{
										format(string, sizeof(string), "{FFFFFF}Сколько угля Вы хотите загрузить? (макс. %d кг)", maxcount);
										ShowPlayerDialog(playerid, dTruckJob+1, 1, "{FFCC00}Загрузка угля", string, "Принять", "Отмена");
									}
									case 1:
									{
										format(string, sizeof(string), "{FFFFFF}Сколько угля Вы хотите загрузить? (макс. %d кг)", maxcount);
										ShowPlayerDialog(playerid, dTruckJob+1, 1, "{FFCC00}Загрузка древесины", string, "Принять", "Отмена");
									}
									case 3:
									{
										format(string, sizeof(string), "{FFFFFF}Сколько оружия Вы хотите загрузить? (макс. %d кг)", maxcount);
										ShowPlayerDialog(playerid, dTruckJob+1, 1, "{FFCC00}Загрузка оружия", string, "Принять", "Отмена");
									}
								}
							}
						}
					}
				}

 

 

Share this post


Link to post
Share on other sites

@Andy не то. dTruckJob+1(диалог) скиньте

Share this post


Link to post
Share on other sites
Спойлер

case dTruckJob+1:
		{
			if(!response) return 1;
			new amount = strval(inputtext);
			new maxamount = GetPVarInt(playerid,"maxamount");
			new loadid = GetPVarInt(playerid,"loadid");
			new string[200];
			if(!(1 <= amount <= maxamount))
			{
			    format(string, sizeof(string),"Значение должно быть от 1 до %d",maxamount);
				SendClientMessage(playerid,COLOR_GREY,string);
				switch(loadid)
				{
					case 0:
					{
						format(string, sizeof(string), "{FFFFFF}Сколько угля Вы хотите загрузить? (макс. %d кг)", maxamount);
						ShowPlayerDialog(playerid, dTruckJob+1, 1, "{FFCC00}Загрузка угля", string, "Принять", "Отмена");
					}
					case 1:
					{
						format(string, sizeof(string), "{FFFFFF}Сколько угля Вы хотите загрузить? (макс. %d кг)", maxamount);
						ShowPlayerDialog(playerid, dTruckJob+1, 1, "{FFCC00}Загрузка древесины", string, "Принять", "Отмена");
					}
					case 3:
					{
						format(string, sizeof(string), "{FFFFFF}Сколько оружия Вы хотите загрузить? (макс. %d кг)", maxamount);
						ShowPlayerDialog(playerid, dTruckJob+1, 1, "{FFCC00}Загрузка оружия", string, "Принять", "Отмена");
					}
				}
				return 1;
			}
			new price = gTruckLoadPrice[loadid]*amount;
			if(GetCash(playerid) < price) return SendClientMessage(playerid,COLOR_GREY,NoMoney);
			new ll;
			for (new i;i<10;i++)
			{
				if(gTruckLoadTurn[loadid][i] == INVALID_PLAYER_ID || i == playerid) continue;
				ll += GetPVarInt(gTruckLoadTurn[loadid][i],"truckamount");
			}
			new warehouse;
			switch(loadid)
			{
				case 0: warehouse = Mineral;
				case 1: warehouse = Lessdrov;
				case 3: warehouse = gGunWorkWH[2];
			}
			if(warehouse - ll < amount)
			{
				switch(loadid)
				{
					case 0: return SendClientMessage(playerid,COLOR_GREY,"Недостаточно угля на складе, либо весь уголь распределен между дальнобойщиками в очереди");
					case 1: return SendClientMessage(playerid,COLOR_GREY,"Недостаточно древесины на складе, либо вся древесина распределена между дальнобойщиками в очереди");
					case 3: return SendClientMessage(playerid,COLOR_GREY,"Недостаточно оружия на складе, либо всё оружие распределено между дальнобойщиками в очереди");
				}
			}
			for(new i;i<10;i++)
			{
				if(gTruckLoadTurn[loadid][i] == INVALID_PLAYER_ID)
				{
					gTruckLoadTurn[loadid][i] = playerid;
					format(string,sizeof(string),"Вы номер %d в очереди на загрузку",i+1);
					SendClientMessage(playerid,COLOR_WHITE,string);
					SetPVarInt(playerid,"truckamount",amount);
					SetPVarInt(playerid,"truckonroad",0);
					SetPVarInt(playerid,"waitgruz",0);
					TransferMoney(playerid,-1,price);
					DeletePVar(playerid,"maxamount");
					return 1;
				}
			}
			SendClientMessage(playerid,COLOR_GREY,"Нет места в очереди. Подождите пожалуйста");
		}

 

 

Share this post


Link to post
Share on other sites

@Andy найдите код, в котором происходит загрузка. Ищите по пварам: truckamount, truckonroad, waitgruz.

Share this post


Link to post
Share on other sites
Спойлер

if(gTruckLoadTurn[i2][0] != INVALID_PLAYER_ID)
		{
			new playerid = gTruckLoadTurn[i2][0];
			new amount = GetPVarInt(playerid,"truckamount");
			if(IsPlayerConnected(playerid))
			{
				if(pTemp[playerid][pTruckWagonID] != INVALID_VEHICLE_ID)
				{
					if(amount - pTemp[playerid][pTruckWeight] == 100)
					{
						pTemp[playerid][pTruckWeight] += 100;
						switch(i2)
						{
							case 0: Mineral -= 100;
							case 1: Lessdrov -= 100;
							case 3: gGunWorkWH[2] -= 100;
						}
						pTemp[playerid][pTruckWagonTime] = 60;
						SendClientMessage(playerid,COLOR_GREEN,"Ваша фура загружена. У Вас есть 1 минута чтобы прицепить её");
						SendClientMessage(playerid,COLOR_GREEN,"Если не успеете заказ будет аннулирован. Деньги не возвращаются");
					}
					else if(pTemp[playerid][pTruckWeight] < amount)
					{
						pTemp[playerid][pTruckWeight] += 100;
						switch(i2)
						{
							case 0: Mineral -= 100;
							case 1: Lessdrov -= 100;
							case 3: gGunWorkWH[2] -= 100;
						}
					}

 

 

Share this post


Link to post
Share on other sites

Так-с, с этим я сделал что теперь как минимум можно 100 загружать с этим теперь всё в порядке. Теперь нужно сделать чтобы когда нажимая на H(чтобы отклонить груз) он снова не спавнился и не загружался + чтобы ник при этом изчезал из списка ожидающих груз

Заметка от DEST , создано

АП раз в 24 часа.
Устное предупреждение.

Share this post


Link to post
Share on other sites

@Andy выкладывайте код, который срабатывает при нажатии на кнопку H. Ищите по ключевым словам в моде, которые пишутся после отказа от загрузки. 

Share this post


Link to post
Share on other sites
Спойлер

for(new i; i < 2; i++)
				{
					if(IsPlayerInDynamicArea(playerid,AreaInfo[arTruckUnload][i]))
					{
						if(pInfo[playerid][pJob] == JOB_TRUCKER && pTemp[playerid][pTruckID] != INVALID_VEHICLE_ID && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && pTemp[playerid][pTruckWagonID] != INVALID_VEHICLE_ID)
						{
							vehicleid = GetPVarInt(playerid,"VehicleEnters");
							if(!IsTrailerAttachedToVehicle(vehicleid))
							{
								SendClientMessage(playerid, COLOR_RED, "Вы потеряли прицеп. Заказ аннулирован");
								if(IsValidDynamic3DTextLabel(pTemp[playerid][pTruckWagonText]))
								{
									DestroyDynamic3DTextLabel(pTemp[playerid][pTruckWagonText]);
									pTemp[playerid][pTruckWagonText] = Text3D:INVALID_3DTEXT_ID;
								}
								if(pTemp[playerid][pTruckWagonID] != INVALID_VEHICLE_ID) DestroyVehicle(pTemp[playerid][pTruckWagonID]);
								pTemp[playerid][pTruckWagonID] = INVALID_VEHICLE_ID;
								pTemp[playerid][pTruckWagonTime] = 0;
								pTemp[playerid][pTruckWeight] = 0;
								pTemp[playerid][pTruckLoadID] = 0;
							}
							new amount = floatround(pTemp[playerid][pTruckWeight]/100.0);
							new loadid = pTemp[playerid][pTruckLoadID];
							new price = amount*gTruckUnloadPrice[loadid];
							new another = (loadid == 0) ? 1 : (loadid == 1) ? 0 : 3;
							new award = 0;
							if(!gGunWorkWH[another]) gGunWorkWH[another] = 1;
							if(gGunWorkWH[another] < gGunWorkWH[loadid]) award = floatround(price / 10.0 * (1 - (float(gGunWorkWH[loadid]) / gGunWorkWH[another])));
							new mes[128];
							format(mes,sizeof(mes),"%d кг груза было продано за {63BD4E}%d$",amount*100,price);
							SendClientMessage(playerid,COLOR_WHITE,mes);
							if(award > 0)
							{
								format(mes,sizeof(mes),"Премия за дифицитный груз: {63BD4E}%d$",award);
								SendClientMessage(playerid,COLOR_WHITE,mes);
								price += award;
							}
							if(doubling_salary)
							{
							    new money2 = price*2;
							    SendMes(playerid, COLOR_YELLOW, "[Информация] {FFFFFF}С учётом акции Вы заработали: {63BD4E}%i$",money2);
							    price = money2;
							}
							TransferMoney(-1,playerid,price,"Получил за привезённый груз",1);
							gGunWorkWH[loadid] += pTemp[playerid][pTruckWeight];
							pInfo[playerid][pTruckSkill] +=  pTemp[playerid][pTruckWeight];
							MysqlUpdatePlayerInt(playerid,"truckskill",pInfo[playerid][pTruckSkill]);
							if(IsValidDynamic3DTextLabel(pTemp[playerid][pTruckWagonText]))
							{
								DestroyDynamic3DTextLabel(pTemp[playerid][pTruckWagonText]);
								pTemp[playerid][pTruckWagonText] = Text3D:INVALID_3DTEXT_ID;
							}
							DetachTrailerFromVehicle(vehicleid);
							DestroyVehicle(pTemp[playerid][pTruckWagonID]);
							pTemp[playerid][pTruckWagonID] = INVALID_VEHICLE_ID;
							pTemp[playerid][pTruckWagonTime] = 0;
							pTemp[playerid][pTruckWeight] = 0;
							pTemp[playerid][pTruckLoadID] = 0;
							SetPVarInt(playerid,"informed",0);
						}
					}
				}

 

 

Share this post


Link to post
Share on other sites

@Andy это не совсем тот код. Нужен код именно отказа от груза или чего там у вас. 

Share this post


Link to post
Share on other sites

@DEST Ну текст "Прицеп Аннулирован" пишеться когда я нажимаю H

Share this post


Link to post
Share on other sites

@Andy этот код в каком паблике расположен? Ищите тот код, который расположен в паблике OnPlayerKeyStateChange

Share this post


Link to post
Share on other sites

@DEST Именно там этот код и расположен.

Спойлер

if(IsPlayerInDynamicArea(playerid,AreaInfo[arTruckLoadCoal]) || IsPlayerInDynamicArea(playerid,AreaInfo[arTruckLoadWood]) || IsPlayerInDynamicArea(playerid,AreaInfo[arTruckLoadWeapon]))
				{
					new loadid = 0;
					if(IsPlayerInDynamicArea(playerid,AreaInfo[arTruckLoadWood])) loadid = 1;
					else if(IsPlayerInDynamicArea(playerid,AreaInfo[arTruckLoadWeapon])) loadid = 3;
					if(pInfo[playerid][pJob] == JOB_TRUCKER && pTemp[playerid][pTruckID] != INVALID_VEHICLE_ID && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && pTemp[playerid][pTruckWagonID] == INVALID_VEHICLE_ID)
					{
						vehicleid = GetPVarInt(playerid,"VehicleEnters");
						model = GetVehicleModel(vehicleid);
						switch(model)
						{
							case 403,514,515:
							{
								new maxcount, level, string[128];
								level = GetPlayerTruckLevel(playerid);
								maxcount = (level == 1) ? (TRUCK_LOAD_1) : (level == 2) ? (TRUCK_LOAD_2) : (TRUCK_LOAD_3);
								SetPVarInt(playerid,"maxamount",maxcount);
								SetPVarInt(playerid,"loadid",loadid);
								switch(loadid)
								{
									case 0:
									{
										format(string, sizeof(string), "{FFFFFF}Сколько угля Вы хотите загрузить? (макс. %d кг)", maxcount);
										ShowPlayerDialog(playerid, dTruckJob+1, 1, "{FFCC00}Загрузка угля", string, "Принять", "Отмена");
									}
									case 1:
									{
										format(string, sizeof(string), "{FFFFFF}Сколько угля Вы хотите загрузить? (макс. %d кг)", maxcount);
										ShowPlayerDialog(playerid, dTruckJob+1, 1, "{FFCC00}Загрузка древесины", string, "Принять", "Отмена");
									}
									case 3:
									{
										format(string, sizeof(string), "{FFFFFF}Сколько оружия Вы хотите загрузить? (макс. %d кг)", maxcount);
										ShowPlayerDialog(playerid, dTruckJob+1, 1, "{FFCC00}Загрузка оружия", string, "Принять", "Отмена");
									}
								}
							}
						}
					}
				}
				for(new i; i < 2; i++)
				{
					if(IsPlayerInDynamicArea(playerid,AreaInfo[arTruckUnload][i]))
					{
						if(pInfo[playerid][pJob] == JOB_TRUCKER && pTemp[playerid][pTruckID] != INVALID_VEHICLE_ID && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && pTemp[playerid][pTruckWagonID] != INVALID_VEHICLE_ID)
						{
							vehicleid = GetPVarInt(playerid,"VehicleEnters");
							if(!IsTrailerAttachedToVehicle(vehicleid))
							{
								SendClientMessage(playerid, COLOR_RED, "Вы потеряли прицеп. Заказ аннулирован");
								if(IsValidDynamic3DTextLabel(pTemp[playerid][pTruckWagonText]))
								{
									DestroyDynamic3DTextLabel(pTemp[playerid][pTruckWagonText]);
									pTemp[playerid][pTruckWagonText] = Text3D:INVALID_3DTEXT_ID;
								}
								if(pTemp[playerid][pTruckWagonID] != INVALID_VEHICLE_ID) DestroyVehicle(pTemp[playerid][pTruckWagonID]);
								pTemp[playerid][pTruckWagonID] = INVALID_VEHICLE_ID;
								pTemp[playerid][pTruckWagonTime] = 0;
								pTemp[playerid][pTruckWeight] = 0;
								pTemp[playerid][pTruckLoadID] = 0;
							}
							new amount = floatround(pTemp[playerid][pTruckWeight]/100.0);
							new loadid = pTemp[playerid][pTruckLoadID];
							new price = amount*gTruckUnloadPrice[loadid];
							new another = (loadid == 0) ? 1 : (loadid == 1) ? 0 : 3;
							new award = 0;
							if(!gGunWorkWH[another]) gGunWorkWH[another] = 1;
							if(gGunWorkWH[another] < gGunWorkWH[loadid]) award = floatround(price / 10.0 * (1 - (float(gGunWorkWH[loadid]) / gGunWorkWH[another])));
							new mes[128];
							format(mes,sizeof(mes),"%d кг груза было продано за {63BD4E}%d$",amount*100,price);
							SendClientMessage(playerid,COLOR_WHITE,mes);
							if(award > 0)
							{
								format(mes,sizeof(mes),"Премия за дифицитный груз: {63BD4E}%d$",award);
								SendClientMessage(playerid,COLOR_WHITE,mes);
								price += award;
							}
							if(doubling_salary)
							{
							    new money2 = price*2;
							    SendMes(playerid, COLOR_YELLOW, "[Информация] {FFFFFF}С учётом акции Вы заработали: {63BD4E}%i$",money2);
							    price = money2;
							}
							TransferMoney(-1,playerid,price,"Получил за привезённый груз",1);
							gGunWorkWH[loadid] += pTemp[playerid][pTruckWeight];
							pInfo[playerid][pTruckSkill] +=  pTemp[playerid][pTruckWeight];
							MysqlUpdatePlayerInt(playerid,"truckskill",pInfo[playerid][pTruckSkill]);
							if(IsValidDynamic3DTextLabel(pTemp[playerid][pTruckWagonText]))
							{
								DestroyDynamic3DTextLabel(pTemp[playerid][pTruckWagonText]);
								pTemp[playerid][pTruckWagonText] = Text3D:INVALID_3DTEXT_ID;
							}
							DetachTrailerFromVehicle(vehicleid);
							DestroyVehicle(pTemp[playerid][pTruckWagonID]);
							pTemp[playerid][pTruckWagonID] = INVALID_VEHICLE_ID;
							pTemp[playerid][pTruckWagonTime] = 0;
							pTemp[playerid][pTruckWeight] = 0;
							pTemp[playerid][pTruckLoadID] = 0;
							SetPVarInt(playerid,"informed",0);
						}
					}
				}

 


Вот полный код .

Этот же код можно найти самому, если вам не сложно то можете скачать любой мод Social Rp. там вы найдёте.

 

@DEST Так как это исправить?

Share this post


Link to post
Share on other sites

@Andy это форум, тут не нужно ждать ежеминутного ответа. У меня еще и свои дела есть. Как время будет - гляну и отвечу. 

@Andy Это код уже доставки груза, а вам нужен код для отказа от груза. Ищите по ключевым словам, которые вам выводятся в игре. Если вы изменяли назначение кнопок, то это тоже повлияет. 

Share this post


Link to post
Share on other sites

@DEST Нет, это именно тот код. При загрузке фуры если еще раз нажать H то пишет что грув потерян и заказ удалён. А если фура в этот момент уже прицеплина то выдаются деньги за неё(тоже баг)

@DEST  Вот этот текст пишет когда отменяю заказ - SendClientMessage(playerid, COLOR_RED, "Вы потеряли прицеп. Заказ аннулирован");

Share this post


Link to post
Share on other sites

@Andy тогда это не отмена заказа, а просто баг. Нужно добавить проверку на координаты для сдачи груза по типу:

Спойлер

if(!IsPlayerInRangeOfPoint(playerid, 10.0, X, Y, Z)) return 1;

 

 

Share this post


Link to post
Share on other sites

@DEST Понял, а можете вставить в код это и скинуть? а то боюсь не туда вставлю и снова баг появиться.

Share this post


Link to post
Share on other sites

@DEST Всё я понял в чём заключался баг и исправил, на самом деле там было указанно 2 координаты выгрузки, то есть там где загружался и там где выгружался, всё исправил всё работает, спасибо! тему можно считать закрытой.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • sawe123
      By sawe123
      Есть ли какая то система видел в моде что можно настраивать вес авто ищу такую систему.