PDA

Просмотр полной версии : [Вопрос] продажа фермы



Pawn.Dima
04.05.2020, 19:52
Здравствуйте у меня вопрос таков как сделать проверку чтобы нельзя было продать любые фермы.

Вот есть у меня на сервере 2 фермы (1 ферма владелец я | 2 ферма владелец друг) и вот я владелец 1 фермы могу продать ферму друга как сделать проверку чтобы я не смогу чужую ферму продать вот сама команда

if(strcmp(cmd, "/sellfarm", true) == 0)
{
if(PlayerInfo[playerid][pFarm] == 255)
return SendClientMessage(playerid, COLOR_WHITE, "У вас нет бизнеса!");
foreach(new i: iFermer)
{
if(IsPlayerInRangeOfPoint(playerid, 15.0, FermInfo[i][fmestoX], FermInfo[i][fmestoY], FermInfo[i][fmestoZ]))
{
if(FermInfo[i][fOwned] == 0)
return SendClientMessage(playerid, COLOR_WHITE, "У фермы нет владельца!");
if(!strcmp(FermInfo[PlayerInfo[playerid][pFarm]][fOwner], PlayerInfo[playerid][pName]))
{
FermInfo[i][fOwned] = 0;//продается - не продается
strmid(FermInfo[i][fOwner], "None", 0, strlen("None"), 32);
FermInfo[i][fProdukt] = 0;//Хлем,нарко,картошка
FermInfo[i][bBalanc] = 0;//Баланс банка фермы
FermInfo[i][bLandTax] = 0;//Оплата фермы PayDay
FermInfo[i][bCenaZerno] = 50;//Цена за куст
FermInfo[i][bZernoZakup] = 0;//Стоимость зерна
FermInfo[i][bSernoZaseeno] = 0;//Засеено зерна 0/5000
FermInfo[i][bSkladSerna] = 0;//Склад зерна 0/10000
FermInfo[i][bSernaProdaza] = 0;//Продажа зерна
FermInfo[i][fLocked] = 0;
PlayerInfo[playerid][pFarm] = 255;
PlayerInfo[playerid][pBank] += FermInfo[i][bBuyFarm]/2;
SendClientMessage(playerid, COLOR_YELLOW, "Вы продали ферму!");
SaveAccount(playerid);
SaveFerm(i);
return 1;
}
else
{
SendClientMessage(playerid, COLOR_WHITE, "Бизнес вам не принадлежит!");
return 1;
}
}
}
return 1;
}

tnc
04.05.2020, 22:08
Вставьте команду и скиньте сюда логи из server.log:


if (strcmp(cmd, "/sellfarm", true) == 0)
{
new farm_id = PlayerInfo[playerid][pFarm];
if (farm_id == 255)
{
SendClientMessage(playerid, COLOR_WHITE, "У вас нет бизнеса!");
return 0;
}
foreach (new i: iFermer)
{
if (IsPlayerInRangeOfPoint(playerid, 15.0, FermInfo[i][fmestoX], FermInfo[i][fmestoY], FermInfo[i][fmestoZ]) == 0)
{
SendClientMessage(playerid, COLOR_WHITE, "Бизнес вам не принадлежит!");
break;
}
if (FermInfo[i][fOwned] == 0)
{
SendClientMessage(playerid, COLOR_WHITE, "У фермы нет владельца!");
return 0;
}
if (strcmp(FermInfo[farm_id][fOwner], FermInfo[i][fOwner]) == 0)
{
FermInfo[i][fOwned] = 0;//продается - не продается
strmid(FermInfo[i][fOwner], "None", 0, strlen("None"), 32);
FermInfo[i][fProdukt] = 0;//Хлем,нарко,картошка
FermInfo[i][bBalanc] = 0;//Баланс банка фермы
FermInfo[i][bLandTax] = 0;//Оплата фермы PayDay
FermInfo[i][bCenaZerno] = 50;//Цена за куст
FermInfo[i][bZernoZakup] = 0;//Стоимость зерна
FermInfo[i][bSernoZaseeno] = 0;//Засеено зерна 0/5000
FermInfo[i][bSkladSerna] = 0;//Склад зерна 0/10000
FermInfo[i][bSernaProdaza] = 0;//Продажа зерна
FermInfo[i][fLocked] = 0;
PlayerInfo[playerid][pFarm] = 255;
PlayerInfo[playerid][pBank] += FermInfo[i][bBuyFarm]/2;
SendClientMessage(playerid, COLOR_YELLOW, "Вы продали ферму!");
SaveAccount(playerid);
SaveFerm(i);
break;
}
}
return 1;
}


P.S: хотя, стоп. Я кажется нашел ошибку, где strcmp, там должно быть i, а не farm_id. Мы же обходим все фермы в радиусе, как раз нужный индекс фермы будет по i.

Pawn.Dima
04.05.2020, 22:09
Хорошо сейчас скину

- - - Добавлено - - -

CMD:sellfarm | farm_id: 1 | FermInfo[farm_id][fOwner]: Maksim_Tushin | PlayerInfo[playerid][pName]: Maksim_Tushin

tnc
04.05.2020, 22:19
Хорошо сейчас скину

- - - Добавлено - - -

CMD:sellfarm | farm_id: 1 | FermInfo[farm_id][fOwner]: Maksim_Tushin | PlayerInfo[playerid][pName]: Maksim_Tushin

Я обновил пост, попробуйте так

Pawn.Dima
04.05.2020, 22:20
а у 2 игрока ник Samyele_Mangana

- - - Добавлено - - -

Помогло.. спасибо