PDA

Просмотр полной версии : [Вопрос] Передача ключей от авто



man876
25.10.2015, 00:02
Ключи не передаются. Помогите исправить.


if(strcmp(cmd, "/123", true) == 0)
{
new vid = GetPlayerVehicleID(playerid), playa;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD1, "Test: /123 [playerid/PartOfName]");
playa = ReturnUser(tmp);
if(PlayerInfo[playerid][pCarKey] == vid-1 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
Idavto[playa] = vid;
SendClientMessage(playerid, COLOR_BISQUE, "Вы передали ключ от своего первого транспорта.");
SendClientMessage(playa, COLOR_LIGHTBLUE, "Вам передали ключ от автомобиля.");
}
else if(PlayerInfo[playerid][pCarKey2] == vid-1 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
Idavto[playa] = vid;
SendClientMessage(playerid, COLOR_BISQUE, "Вы передали ключ от своего второго транспорта.");
SendClientMessage(playa, COLOR_LIGHTBLUE, "Вам передали ключ от автомобиля.");
}
else if(PlayerInfo[playerid][pCarKey3] == vid-1 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
Idavto[playa] = vid;
SendClientMessage(playerid, COLOR_BISQUE, "Вы передали ключ от своего третьего транспорта.");
SendClientMessage(playa, COLOR_LIGHTBLUE, "Вам передали ключ от автомобиля.");
}
else SendClientMessage(playerid, COLOR_LIGHTRED, "Test: Вы должны находится в своём транспорте на месте водителя!");
return true;
}

NewGreen
25.10.2015, 00:17
Видимо, стоит добавить саму передачу ключей:


Idavto[playa] = vid;
PlayerInfo[playa][pCarKey] = PlayerInfo[playerid][pCarKey]; // Передача ключей
SendClientMessage(playerid, COLOR_BISQUE, "Вы передали ключ от своего первого транспорта.");
SendClientMessage(playa, COLOR_LIGHTBLUE, "Вам передали ключ от автомобиля.");

man876
25.10.2015, 00:27
Видимо, стоит добавить саму передачу ключей:


Idavto[playa] = vid;
PlayerInfo[playa][pCarKey] = PlayerInfo[playerid][pCarKey]; // Передача ключей
SendClientMessage(playerid, COLOR_BISQUE, "Вы передали ключ от своего первого транспорта.");
SendClientMessage(playa, COLOR_LIGHTBLUE, "Вам передали ключ от автомобиля.");


Так авто передаётся другому владельцу.( будет 2 владельца ) Нужно чтобы временно ( до перезахода ).

Blood
25.10.2015, 20:30
Делай вот так

Idavto[playa] = PlayerInfo[playerid][pCarKey];
и все

NewGreen
25.10.2015, 23:53
Так авто передаётся другому владельцу.( будет 2 владельца ) Нужно чтобы временно ( до перезахода ).
Тогда нужно сделать временную переменную:

Idavto[playa] = vid;
SetPVarInt(playa,"CarKeyOne",PlayerInfo[playerid][pCarKey]); // Передача ключей
PlayerInfo[playerid][pCarKey] = -1; // отнимим ключ владельца
SendClientMessage(playerid, COLOR_BISQUE, "Вы передали ключ от своего первого транспорта.");
SendClientMessage(playa, COLOR_LIGHTBLUE, "Вам передали ключ от автомобиля.");
теперь когда игрок с ключем начнет заводить машину нужно сделать проверку, примерно так:

if(PlayerInfo[playerid][pCarKey] == 1 || GetPVarInt(playa,"CarKeyOne"))
Я также добавил строку PlayerInfo[playerid][pCarKey] = -1; которая отбирает ключи у владельца (для чистоты), важно не забыть отдать ключи (например автоматически при отключении, ну или по всем правилам, чтобы игрок отдал их обратно владельцу), уберите если вам это не нужно.

man876
26.10.2015, 15:38
Не работает. Нужно просто сделать разрешение на заводку авто.

Danny_Marcelo
18.11.2015, 12:44
Попробуй вот эту команду.Вырезал из своего мода.У меня она работает.



if(strcmp(cmd, "/allow", true) == 0)
{
if(PlayerInfo[playerid][pHouse] == 999) return SendClientMessage(playerid, COLOR_GRAD1, "У Вас нет дома.");
if(HouseInfo[PlayerInfo[playerid][pHouse]][hCar] == 0) return SendClientMessage(playerid, COLOR_GRAD1, "У Вас нет домашнего транспорта.");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /allow [id игрока]");
new givid;
givid = ReturnUser(tmp);
if(PlayerInfo[playerid][pHouse] < 999)
{
if(IsPlayerConnected(givid))
{
if(givid != INVALID_PLAYER_ID)
{
if(givid == playerid) return SendClientMessage(playerid, COLOR_GRAD1, "Такого игрока нет.");
if(GetDistanceBetweenPlayers(playerid, givid) > 8 || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(givid)) return SendClientMessage(playerid, COLOR_GRAD1, "Игрок слишком далеко от Вас.");
if(PlayerInfo[givid][pAllowCar] == caridhouse[playerid])
{
format(query, sizeof(query), "%s забрал у Вас ключи от своего домашнего транспорта",PlayerInfo[playerid][pName]);
SendClientMessage(givid, 0xFF6600AA, query);
format(query, sizeof(query), "Вы забрали ключи от своего домашнего транспорта у %s",PlayerInfo[givid][pName]);
SendClientMessage(playerid, 0xFF6600AA, query);
PlayerInfo[givid][pAllowCar] = 0;
}
else
{
format(query, sizeof(query), "%s дал Вам ключи от своего домашнего транспорта",PlayerInfo[playerid][pName]);
SendClientMessage(givid, 0x0099FFAA, query);
format(query, sizeof(query), "Вы дали ключи от своего домашнего транспорта игроку %s",PlayerInfo[givid][pName]);
SendClientMessage(playerid, 0x0099FFAA, query);
PlayerInfo[givid][pAllowCar] = caridhouse[playerid];
}
return true;
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "Такого игрока нет.");
}
}
return true;
}