Question

if(pickupid == Pickup[46])// штрафстоянка
{
	if(CarInfo[p][i][cModel], SalonRandSpawn[r][0], SalonRandSpawn[r][1], SalonRandSpawn[r][2], SalonRandSpawn[r][3], CarInfo[p][i][cColor1], CarInfo[p][i][cColor2], 90000) return SendClientMessage(playerid, COLOR_GREY, "{BEBEBE}[INFO] Вашего авто нет на страфстоянке!");
	{
		ShowPlayerDialog(playerid, D_PODEZD+8,DIALOG_STYLE_MSGBOX,"{FFCC00}Штрафстоянка","{ffffff}Вы не припоркавали свое авто и Вам был выписан штраф в размере {FFCC00}5000 рублей?", "Забрать", "Нет");
	}
}

 

Edited by odosenok

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

Неужели сложно было по-человечески код выложить?

Share this post


Link to post

8 answers to this question

  • 0

Получайте координаты машины через https://wiki.sa-mp.com/wiki/GetVehiclePos и проверяете коорд-ы на равенство. 

Share this post


Link to post
  • 0

с кодом извените при копировании косяк получился

 

Прописал по Вашему приведенному примеру вот так

	if(pickupid == Pickup[46])// штрафстоянка
	{
		new currentveh;
		currentveh = GetPlayerVehicleID(playerid);
		new Float:vehx, Float:vehy, Float:vehz;
		GetVehiclePos(currentveh, 2065.4912,-2579.1953,10.4813);

		new vehpostext[96];
		format(vehpostext, sizeof(vehpostext), "Вашего авто на штрафстоянке нет! %f, %f, %f", vehx, vehy, vehz);
		SendClientMessage(playerid, 0xFFFFFFFF, vehpostext);
		else
	    {
	        ShowPlayerDialog(playerid, D_PODEZD+8,DIALOG_STYLE_MSGBOX,"{FFCC00}Штрафстоянка","{ffffff}Вы не припоркавали свое авто и Вам был выписан штраф в размере {FFCC00}5000 рублей?", "Забрать", "Нет");
	    }
	}
Спойлер

и получил в ответ вот такие две ошибки


D:\МОЙ СЕРВЕР\локальный сервер\gamemodes\mrpv1.pwn(21741) : error 035: argument type mismatch (argument 2)
D:\МОЙ СЕРВЕР\локальный сервер\gamemodes\mrpv1.pwn(21746) : error 029: invalid expression, assumed zero
Pawn compiler 3.10.8	 	 	Copyright (c) 1997-2006, ITB CompuPhase


2 Errors.

 

 

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

Объединил сообщения.

Share this post


Link to post
  • 0
36 минут назад, Андрей Лазарев сказал:

 


GetVehiclePos(currentveh, 2065.4912,-2579.1953,10.4813);

 

 

Здесь координаты не нужны. Если вы хотите проверить, находится ли транспорт возле этих координат, используйте следующий фрагмент кода:

new Float:dist = GetVehicleDistanceFromPoint(vehicleid, 2065.4912,-2579.1953,10.4813); // получим расстояние от штрафстоянки до транспорта
if(dist > 30.0) { // если это расстояние больше 30.0
	// транспортное средство находится за пределами штрафстоянки
}

 

Share this post


Link to post
  • 0
1 час назад, odosenok сказал:

 

Здесь координаты не нужны. Если вы хотите проверить, находится ли транспорт возле этих координат, используйте следующий фрагмент кода:


new Float:dist = GetVehicleDistanceFromPoint(vehicleid, 2065.4912,-2579.1953,10.4813); // получим расстояние от штрафстоянки до транспорта
if(dist > 30.0) { // если это расстояние больше 30.0
	// транспортное средство находится за пределами штрафстоянки
}

 

Акуда это все вставить?

Share this post


Link to post
  • 0
if(dist > 30.0)
{
new vehpostext[96];
		format(vehpostext, sizeof(vehpostext), "Вашего авто на штрафстоянке нет! %f, %f, %f", vehx, vehy, vehz);
		SendClientMessage(playerid, 0xFFFFFFFF, vehpostext);
}

 

Share this post


Link to post
  • 0

вылетело сразу куча ошибок

 

Вот все координаты куда отправляются авто может через этот new можно как то реализовать?

new Float:SalonRandSpawn[][4] =
{
	{2065.4912,-2579.1953,10.4813,91.0366}, // íå ïðèïîðêîâàë
	{2065.5889,-2582.6274,10.4814,90.4351}, // íå ïðèïîðêîâàë
	{2065.6494,-2586.1033,10.4893,89.6405}, // íå ïðèïîðêîâàë
	{2065.6750,-2589.3721,10.4891,90.1443}, // íå ïðèïîðêîâàë
	{2065.7200,-2592.7258,10.4890,90.4671}, // íå ïðèïîðêîâàë
	{2065.6912,-2596.0198,10.4892,89.8759}, // íå ïðèïîðêîâàë
	{2065.9014,-2599.2756,10.4890,89.0267}, // íå ïðèïîðêîâàë
	{2066.0120,-2605.9817,10.4893,90.5266}, // íå ïðèïîðêîâàë
	{2065.7261,-2609.3379,10.4890,90.5358}, // íå ïðèïîðêîâàë
	{2065.8752,-2602.6418,10.4890,90.8253} // íå ïðèïîðêîâàë
};

 

Share this post


Link to post
  • 0

@Андрей Лазарев, можешь изложить логику этой минисистемы, чтобы я уловил ее суть? Меня некоторые строки смущают, поэтому не могу даже прикинуть какой-то вариант тебе.

Share this post


Link to post
  • 0
9 часов назад, Talex сказал:

@Андрей Лазарев, можешь изложить логику этой минисистемы, чтобы я уловил ее суть? Меня некоторые строки смущают, поэтому не могу даже прикинуть какой-то вариант тебе.

Суть заключается в том что при покупке авто его нужно припорковать. Но если при выходе из игры авто не было припарковано то при следующем заходе в игру оно спавнится на штрафстоянке вот мне и нужно чтобы при заходе на пикап страфстоянки была проверка на авто находится ли оно по данным координатам или нет. Так как сейчас пикап работает постоянно не зависимо от того есть там авто или нет все ровно требует заплатить штраф

Share this post


Link to post
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

    • zerolora
      By zerolora
      Всем привет, помогите пожалуйста разобраться. Что за беда с командой. Младшие ранги могут банить основателей на раз-два. Хотя в команде вроде как есть защита FD
       
      CMD:ban(playerid, params[]) {     if(PI[playerid][pAdmin] < 3) return SCM(playerid, COLOR_RED, NO_DOSTUP_TEXT);     if(!ADuty{playerid}) return callcmd::apanel(playerid);     static id, days, reason[30];     if(sscanf(params, "uds[30]", id, days, reason)) return SCM(playerid, COLOR_RED, !"Используй: /ban [id] [days 1-30] [Причина]");     if(id == INVALID_PLAYER_ID) return 0;     if(GetString(PN(id), ""FULL_FD"") && !GetString(PN(id), ""FULL_FD2"")) return SCM(playerid, COLOR_RED, "Нельзя забанить создателя");     if(strlen(reason) > 30) return SCM(playerid, COLOR_RED, !"Не больше 30 символов!");     if(IsAIP(reason)) return 1;     if(CheckIsADomen(playerid, reason)) return 1;     if(!(1 <= days <= 30)) return SCM(playerid, COLOR_RED, !"Используй: /ban [id] [days 1-30] [Причина]");     if(id == playerid) return SCM(playerid, COLOR_GREY, !"Вы не можете выдать наказание самому себе!");     ASCMToAllf(COLOR_LIGHTRED, "Администратор %s[%i] забанил игрока %s[%i] на %i дней. Причина: %s", PN(playerid), playerid, PN(id), id, days, reason);     AntiReAction(playerid);     SPDf(id, 0, DIALOG_STYLE_MSGBOX, !"", !"Закрыть", !"", !"Вы получили бан аккаунта, если вы не согласны с решением Администратора, то напишите жалобу на форум, приложив данный скриншот.\n{2D8E35}%s", ServerCFG[server_forum]);     UpdatePlayerDataInt(id, "Warns", 0);     BanName(PN(id), PN(playerid), days, reason);     PI[playerid][pReputation] += 5;     UpdatePlayerDataInt(playerid, "Reputation", PI[playerid][pReputation]);     //  aml(8, playerid, PN(id), reason, days);     str_1[0] = EOS, f(str_1, sizeof(str_1), "%s[%i] забанил игрока %s[%i] на %i дней. Причина: %s", PN(playerid), playerid, PN(id), id, days, reason);     SavePunish(0, str_1, id);     return J_Kick(id); }