Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Админ команда /aveh - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Тема закрыта

[ Pawn ]
Админ команда /aveh

#1
Пользователь офлайн   mihan38rus 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Всем привет, написал команду /aveh, которая спавнит админ авто, но как только он из неё выходит, через 3 секунды она автоматически удаляется. Но вот в чем проблема, эта система работает только на 0 id игрока, если зашел второй админ уже и вызвал это админ-авто, то команда уже работает неверно, она не спавнит авто второго админа, но пишет смс о спавне первому, подскажите, как исправить. Вот сам код:

Глобальные переменные:

new AVehID[MAX_PLAYERS]; // чтоб не спавнило авто которые созданы через /veh, для них переменная VehID[MAX_PLAYERS];
new carid[MAX_PLAYERS]; // для автомат.спавна админ-авто по таймеру


Сама команда:

CMD:aveh(playerid, params[])
{
	if(PlayerInfo[playerid][pAdm] < 1 || PAlogin[playerid] == 0) return SCM (playerid, -1, "Нет прав для использования данной команды.");
	new str[145], Float:x, Float:y, Float:z, Float:Angle;
	new veh, color1, color2;
	if(sscanf(params, "ddd", veh, color1, color2)) return SCM (playerid, -1, "Команда:  /aveh [id] [цвет 1] [цвет 2]");
	if(veh < 400 || veh > 611) return SCM (playerid, -1, "[ADMIN-HELP]: ID авто может быть от 400 до 611.");
	if(!(0<=color1<=255 || 0<=color2<=255)) return SCM (playerid, -1, "[ADMIN-HELP]: Цвет авто может быть от 0 до 255.");
	if(AVehID[playerid] > 0)
	{
  		DestroyVehicle(AVehID[playerid]);//удаляем авто
		AVehID[playerid] = 0;//обнуляем ид админ авто
	}
	GPP(playerid, x, y, z);
	GetPlayerFacingAngle(playerid, Angle);
	AVehID[playerid] = CreateVehicle(veh, x, y, z, Angle, color1, color2, -1, 0);
	PutPlayerInVehicle(playerid, AVehID[playerid], 0);
	carid[playerid] = 1; // разрешаем при выходе из админ авто его спавн через 3 секунды
	format(str,sizeof(str), "Админ-авто №%d создано.",AVehID[playerid]);
	SCM(playerid, -1, str);
	return 1;
}


public OnPlayerExitVehicle(playerid, vehicleid)

public OnPlayerExitVehicle(playerid, vehicleid)
{
	if(AVehID[playerid] == vehicleid && carid[playerid] == 1)
	{
		SetTimer("delete_car", 3000, false);
		carid[playerid] = 0;
	}
	return 1;
}




fpublic delete_car(playerid)

fpublic delete_car(playerid)
{
   	DestroyVehicle(AVehID[playerid]);
   	SCM(playerid, -1, "Админ авто удалено.");
	return 1;
}

0

#2
Пользователь офлайн   TheSuspect0x000 

  • 0xB7CE50
  • Вставить ник
  • Раскрыть информацию
/dell

Сообщение отредактировал TheSuspect0x000: 14 Март 2018 - 13:46

0

#3
Пользователь офлайн   mihan38rus 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияTheSuspect0x000 (14 Март 2018 - 13:45) писал:

/dell

Что /dell ? Не знаешь как помочь, зачем отвечать?
0

#4
Пользователь офлайн   Foxed 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию
По коду сообщение о создании должно писаться тому кто использует команду. А вот насчет удаления :


public OnPlayerExitVehicle(playerid, vehicleid)
{
        if(AVehID[playerid] == vehicleid && carid[playerid] == 1)
        {
                SetTimerEx("delete_car", 3000, false, "i", playerid); //в SetTimerEx можно аргументы передавать, а так у тебя никакого playerid не передается и поэтому работает только для 0 id
                carid[playerid] = 0;
        }
        return 1;
}

0

#5
Пользователь офлайн   mihan38rus 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияFoxed (14 Март 2018 - 14:53) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]


Спасибо, позабыл совсем про аргументы.

Тема закрыта.
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Тема закрыта

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей