Вопросы

Доброго времени суток,у меня такая проблема возникла ,взял я мод ,начал по тихоньку баги исправлять,и тут наткнулся на такую капость как отсутствие команды Sellcar.
Она как бы есть (Sellmycar) но она позволяет продать транспорт игроку,а вот слить в гос нет возможности,прошу вашей помощи,как быть?

CMD:sellmycar(playerid, params[])
{
    if(!pTemp[playerid][pLogined]) return 1;
	if(!pData[playerid][pCar]) return SendClientMessage(playerid,CGRAY,"У Вас нет т/с");
	new slot = GetCarSlot(pData[playerid][pCar]);
	new Float:x, Float:y, Float:z;
	new vehicleid = gCars[slot][carVid];
	GetVehiclePos(vehicleid,x,y,z);
	new Float:x2,Float:y2,Float:z2;
	GetPlayerPos(playerid,x2,y2,z2);
	if(PointToPoint3D(x,y,z,x2,y2,z2) > 3.0) return SendClientMessage(playerid,CGRAY,"Вы далеко от своего т/с");
	if(sscanf(params, "udd",params[0],params[1])) return	SendClientMessage(playerid, CYELLOW, "• [Подсказка]:{"#cWHITE"} /sellmycar [id] [цена]");
	new carID = GetCarSlot(pData[playerid][pCar]);
	if(carID == -1) return SendClientMessage(playerid,CRED,"Ошибка. Т/С не найдено");
	if(pTemp[playerid][pTaxiID] != INVALID_VEHICLE_ID || pTemp[playerid][pTaxiPass] != INVALID_PLAYER_ID) return SendClientMessage(playerid,CGRAY,"Нельзя использовать данную Команду сейчас");
	new modelid = GetVehicleModel(vehicleid) - 400;
	if(params[0] == playerid || !IsPlayerConnected(params[0])) return SendClientMessage(playerid,CGRAY,"Неверный ID игрока");
	if(!pData[params[0]][pHouse] && !pData[params[0]][pGarajePlayer]) return 1;
	if(pData[params[0]][pHouse])
	{
		new houseid = pData[params[0]][pHouse] - 1;
		if(gHouses[houseid][houseOwnerID] != pData[params[0]][pMysqlID])
		{
			if(!pData[params[0]][pGarajePlayer]) return SendClientMessage(playerid,CGRAY,"Машина может быть только у владельца дома");
		}
	}
	if(pData[params[0]][pCar]) return SendClientMessage(playerid,CGRAY,"У игрока уже есть своя машина.");
	if(GetPlayerDistanceToPlayer(playerid,params[0]) > 3.0 || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(params[0])) return SendClientMessage(playerid,CGRAY,"Вы далеко друг от друга");
	new classname[12]; new mes[158];
	GetCarClassName(gTransport[modelid][trClass],classname);
    if(params[1]< 1000 || params[1] > gTransport[modelid][trPrice])
	{
	    new goscena[128];
		format(goscena,sizeof(goscena), "Цена не может быть меньше 1000$ и больше %d$", gTransport[modelid][trPrice]);
		SendClientMessage(playerid,CGRAY,goscena);
		return 1;
	}
	format(mes,sizeof(mes),"Вы предложили {FF6600}%s{3399FF} купить Ваше транспортное средство за {00CC00}%d$ {FE2E2E}.",pData[params[0]][pNickname],params[1]);
	SendClientMessage(playerid,0x3399FFFF,mes);
	format(mes,sizeof(mes),"%s предлагает Вам купить его транспортное средство за {00CC00}%d$ {FE2E2E}.",pData[playerid][pNickname],params[1]);
	SendClientMessage(params[0],0x3399FFFF,mes);
	format(mes,sizeof(mes),"Название: {00CC00}%s {3399FF}| Класс: {00CC00}%s {3399FF}| Гос.Цена: {00CC00}%d$",gTransport[modelid][trName],classname,gTransport[modelid][trPrice]);
	SendClientMessage(params[0],0x3399FFFF,mes);
	SendClientMessage(params[0],-1, "Нажмите {00CC00}Y "W"чтобы согласиться или {FF6600}N "W"для отказа");
	pTemp[playerid][pSellCarOffer] = playerid;
	pTemp[params[0]][pSellCarOffer] = playerid;
	pTemp[params[0]][pSellCarOffee] = params[0];
	pTemp[params[0]][pSellCarPrice] = params[1];
	pTemp[params[0]][pSellCarID] = carID;
	return true;
}

 

Поделиться сообщением


Ссылка на сообщение

5 ответов на этот вопрос

  • 0

Команда :

CMD:sellcar(playerid, params[])
{
	if(!pData[playerid][pCar]) return SendClientMessage(playerid,CGRAY,"У вас нет личного т/с");
  	new carID = GetCarSlot(pData[playerid][pCar]); new vehicleid = gCars[carID][carVid]; new modelid = GetVehicleModel(vehicleid) - 400;
  	new price = floatround(gTransport[modelid][trPrice]/100*80);
  	SetPVarInt(playerid,"psellcarPrice",price);
  	SetPVarInt(playerid,"psellcarID",carID);
  	new mes[228];
  	format(mes,sizeof(mes),"\t\t\t{"#cWHITE"}Вы хотите продать свой автомобиль за {"#cGREEN"}$%d?\n\n\t\t\t\t\t{FFFF00}• [Подсказка] •\n\t{"#cWHITE"}Чтобы продать автомобиль другому игроку используйте команду /sellmycar [id] [цена]",price);
  	ShowPlayerDialog(playerid,dSellCar,0,"Продажа автомобиля",mes,"Продать","Отмена");
  	return 1;
}

Диалог:

case dSellCar:
		{
			if(!response) return 1;
			new price = GetPVarInt(playerid,"psellcarPrice");
			new carID = GetPVarInt(playerid,"psellcarID");
			new vehicleid = gCars[carID][carVid];
			DeletePVar(playerid,"psellcarPrice");
			DeletePVar(playerid,"psellcarID");
			new query[256];
			format(query,sizeof(query),"DELETE FROM `cars` WHERE `id` = '%d'",pData[playerid][pCar]);
			sql_query(zConn, query);
			UpdatePlayerData(playerid,"car",0);
			pData[playerid][pCar] = 0;
			DestroyVehicle(vehicleid);
			gCars[carID][carOwnerid] = 0;
			gCars[carID][carMysqlID] = 0;
			gCars[carID][carModelid] = 0;
			gCars[carID][carFuel] = 0.0;
			gCars[carID][carDrived] = 0.0;
			gCars[carID][carHealth] = 0.0;
			gCars[carID][carColor1] = 0;
			gCars[carID][carColor2] = 0;
			gCars[carID][carVid] = INVALID_VEHICLE_ID;
			strdel(gCars[carID][carPlate],0,12);
			TransferMoney(-1,playerid,price,"gossellcar");
			new str[40]; new string[128];
			format(str, sizeof(str), "~g~ +%d$",price);
			GameTextForPlayer(playerid,str,2000,1);
			format(string, sizeof(string), "Ваше транспортное средство продано государству за {0099FF}%d$",price);
			SendClientMessage(playerid, 0x66CC00FF, string);
		}

Вопрос был решен в личных сообщениях на форуме. 

Поделиться сообщением


Ссылка на сообщение
  • 0

Покажи пожалуйста паблик OnPlayerKeyStateChange

Поделиться сообщением


Ссылка на сообщение
  • 0
9 минут назад, Покемон сказал:

Покажи пожалуйста паблик OnPlayerKeyStateChange

Весь? он большой :) может в текстовик загрузить его?

Вот его часть которая вроди бы относится к данной функции

		if(pTemp[playerid][pSellCarOffee] == playerid)
		{
			new offerid = pTemp[playerid][pSellCarOffer];
			new carID = pTemp[playerid][pSellCarID];
			new price = pTemp[playerid][pSellCarPrice];
			if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CGRAY,"У вас нет дома");
			new houseid = pData[playerid][pHouse]-1;
			if(!gCars[carID][carOwnerid] || !pData[offerid][pCar])
			{
				SendClientMessage(playerid,CGRAY,"Авто было продано в гос.");
				pTemp[offerid][pSellCarOffer] = INVALID_PLAYER_ID;
				pTemp[playerid][pSellCarOffer] = INVALID_PLAYER_ID;
				pTemp[playerid][pSellCarOffee] = INVALID_PLAYER_ID;
				pTemp[playerid][pSellCarPrice] = 0;
				pTemp[playerid][pSellCarID] = 0;
				return 1;
			}
			if(pTemp[offerid][pSellCarOffer] == INVALID_PLAYER_ID || !IsPlayerConnected(offerid))
			{
				SendClientMessage(playerid,CGRAY,"Продавец вышел из игры");
				pTemp[offerid][pSellCarOffer] = INVALID_PLAYER_ID;
				pTemp[playerid][pSellCarOffer] = INVALID_PLAYER_ID;
				pTemp[playerid][pSellCarOffee] = INVALID_PLAYER_ID;
				pTemp[playerid][pSellCarPrice] = 0;
				pTemp[playerid][pSellCarID] = 0;
				return 1;
			}
			if(GetPlayerMoneyEx(playerid) < price)
			{
				SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"У Вас недостаточно денег на руках");
				SendClientMessage(offerid,CGRAY,"У покупателя недостаточно денег");
				pTemp[offerid][pSellCarOffer] = INVALID_PLAYER_ID;
				pTemp[playerid][pSellCarOffer] = INVALID_PLAYER_ID;
				pTemp[playerid][pSellCarOffee] = INVALID_PLAYER_ID;
				pTemp[playerid][pSellCarPrice] = 0;
				pTemp[playerid][pSellCarID] = 0;
				return 1;
			}
			new query[256];
			format(query,sizeof(query),"UPDATE `cars` SET `owner` = '%d' WHERE `id` = '%d'",pData[playerid][pMysqlID],pData[offerid][pCar]);
			sql_query(zConn, query, QUERY_THREADED);
			UpdatePlayerData(playerid,"car",pData[offerid][pCar]);
			UpdatePlayerData(offerid,"car",0);
			gCars[carID][carOwnerid] = pData[playerid][pMysqlID];
			pData[playerid][pCar] = pData[offerid][pCar];
			pData[offerid][pCar] = 0;
			foreach(new i:Player)
           	{
		    	if(pData[i][pVehicleKey] == pData[offerid][pCar])
		    	{
	        	    pData[i][pVehicleKey] = 0;
	            	UpdatePlayerData(i,"vehiclekey",0);
				}
			}
			new modelid = gCars[carID][carModelid];
   			new string[128], str[128];
			SendClientMessage(playerid, 0x66CC00FF,"Поздравляем с покупкой нового транспорта!");
			format(string, sizeof(string),"Вы продали транспортное средство {FF6600}%s{3399FF} за {00CC00}%d$", pData[playerid][pNickname], price);
			SendClientMessage(offerid,0x66CC00FF, string);
			format(str, sizeof(str), "~r~ -%d$",price);
			GameTextForPlayer(playerid,str,2000,1);
			format(str, sizeof(str), "~g~ +%d$",price);
			GameTextForPlayer(offerid,str,5000,1);
			TransferMoney(playerid,offerid,price,"sellcar");
			DestroyVehicle(gCars[carID][carVid]);
			new vehicleid = CreateVehicle(gTransport[modelid][trModel],gHouses[houseid][houseParkX],gHouses[houseid][houseParkY],gHouses[houseid][houseParkZ],gHouses[houseid][houseParkR],gCars[carID][carColor1],gCars[carID][carColor2],-1);
			gCars[carID][carVid] = vehicleid;
			if(gCars[carID][carHealth] < 300.0) gCars[carID][carHealth] = 300.0;
			SetVehicleHealthEx(vehicleid,gCars[carID][carHealth]);
			pTemp[offerid][pSellCarOffer] = INVALID_PLAYER_ID;
			pTemp[playerid][pSellCarOffer] = INVALID_PLAYER_ID;
			pTemp[playerid][pSellCarOffee] = INVALID_PLAYER_ID;
			pTemp[playerid][pSellCarPrice] = 0;
			pTemp[playerid][pSellCarID] = 0;
		}

 

Отредактировано пользователем edikzver
Причина: Дополнил

Поделиться сообщением


Ссылка на сообщение
  • 0

У тебя в таблице записывает цену транспорта ? если же да то скинь enum gCars и загрузку транспорта. 

Поделиться сообщением


Ссылка на сообщение
  • 0
5 минут назад, Покемон сказал:

У тебя в таблице записывает цену транспорта ? если же да то скинь enum gCars и загрузку транспорта. 

enum CAR_DATA
{
	carMysqlID,
	carOwnerid,
	carModelid,
	carPlate[12],
	Float:carFuel,
	Float:carDrived,
	Float:carHealth,
	carColor1,
	carColor2,
	carPaintJob,
	carTuning[14],
	carVid

}

Нет в таблице нет цены :|

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Узбек
      От Узбек
      Всем добрый вечер ребят! 
      Я начинающий, сегодня я вам сливаю команду 2(шт) на технические работы
      Ловите 
       
    • nazpol9
      От nazpol9
      Привет всем.

      У меня имеется мод для самп сервера и VPS с Ubuntu, на котором я пытаюсь его запустить.

      В чем суть проблемы: при запуске samp03svr, сервер запускается, но на версии 0.3.DL R-1. Когда я пытаюсь запустить этот же мод локально на Windows, сервер работает на версии 0.3.7 и я могу зайти на него без клиента 0.3.DL.

      Для решения этой проблемы я уже пробовал заменять инклуды и исполнительные файлы теми, что есть в архивах на официальном сайте сампа, перекомпилировал мод, и ничего не изменилось.
       
      #include <a_samp> #include <a_mysql> #include <foreach> #include <Pawn.RakNet> #include <streamer> #include <sscanf2> #include <float2> #include <crashdetect> #include <fmt> #include <a_http> #include <Pawn.CMD> #include <Pawn.Regex> #include <requests> #include <callbacks> #include <MD5> #include <mxdate> #include <TOTP> #include <gvar> #include <md-sort> #include <nex-ac> #include <weapon-config> #include <discord-connector> #include <3DTryg> #include <textdraw-streamer>  
      plugins crashdetect.so streamer.so textdraw-streamer.so sscanf.so pawnraknet.so pawncmd.so mysql.so requests.so profiler.so pawnregex.so TOTP.so gvar.so discord-connector.so

      Если у кого-то будут какие-либо догадки, прошу ими поделиться, если понадобится больше информации - я постараюсь её предоставить.