Форум Pawn.Wiki - Воплоти мечту в реальность!: Временная машина - Форум Pawn.Wiki - Воплоти мечту в реальность!

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

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Scr ][ All ]
Временная машина
Оценка: -----

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

  • Пользователь
  • Вставить ник
  • Раскрыть информацию
Ко всем переменным (new):
new admcar[MAX_PLAYERS] = {-1, ...};


Ко всем командам:
CMD:plveh(playerid, params[])
{
	new to_player, modelid, color1, color2;
	
	if(sscanf(params, "dddd", to_player, modelid, color1, color2))
	{
		SendClientMessage(playerid, -1, "Используйте: /plveh [ID игрока] [ID модели] [цвет 1] [цвет 2]");
		return 1;
	}
	
	if(!IsPlayerConnected(to_player))
	{
		SendClientMessage(playerid, -1, "Игрок оффлайн!");
		return 1;
	}
	
	if(admcar[to_player] != -1)
	{
		SendClientMessage(playerid, -1, "У игрока уже есть временный транспорт!");
		return 1;
	}
	
	if(modelid < 400 || modelid > 611)
	{
		SendClientMessage(playerid, -1, "ID модели не может быть меньше 400 и больше чем 611!");
		return 1;
	}
	
	if((color1 < 0 || color1 > 255) || (color2 < 0 || color2 > 126))
	{
		SendClientMessage(playerid, -1, "Номер цвета не может быть меньше 0 и больше 255!");
		return 1;
	}
	
	new Float: x, Float: y, Float: z, Float: angle;
	GetPlayerPos(to_player, x, y, z);
	GetPlayerFacingAngle(playerid, angle);
	
	admcar[to_player] = CreateVehicle(modelid, x, y, z, angle, color1, color2, -1);
	PutPlayerInVehicle(to_player, admcar[to_player], 0);
	
	return 1;
}


В OnPlayerDisconnect:
if(admcar[playerid] != -1)
{
	DestroyVehicle(admcar[playerid]);
	admcar[playerid] = -1;
}


В OnPlayerStateChange:
if(oldstate == PLAYER_STATE_DRIVER)
{
	if(admcar[playerid] != -1)
	{
		DestroyVehicle(admcar[playerid]);
		admcar[playerid] = -1;
	}
}

Сообщение отредактировал Romzes: 20 августа 2023 - 10:16
Причина редактирования: fix

-1

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

  • Профессионал
  • Вставить ник
  • Раскрыть информацию
new temporary_admcar[ MAX_PLAYERS ];

CMD:plveh(playerid, params[])
{
    new
        targetid, modelid,
        color1, color2;

    if( sscanf(params,"dddd", targetid, modelid, color1, color2) ) 
        return SendClientMessage(playerid, -1, !"Используйте: /plveh [Ид игрока] [Ид машины] [цвет 1] [цвет 2]");

    if( modelid < 400 || modelid > 611 ) 
        return SendClientMessage(playerid, -1, !"Номер машины не может быть меньше 400 и больше чем 611!");
    
    if( (color1 < 0 || color1 > 255) || (color2 < 0 || color2 > 255) )
        return SendClientMessage(playerid, -1, !"Номер цвета не может быть меньше 0 и больше 255!");
    
    new 
        Float:x, Float:y, Float:z,
        Float: angle;
    
    GetPlayerPos(targetid, x, y, z);
    GetPlayerFacingAngle(playerid, angle);

    temporary_admcar[targetid] = CreateVehicle(modelid, x, y, z, angle, color1, color2, -1);
    PutPlayerInVehicle(targetid, temporary_admcar[targetid], 0);

    return true;
}


stock ClearInfoTemporaryAdmCar(playerid, vehicleid) {

    DestroyVehicle(temporary_admcar[playerid]);
    temporary_admcar[playerid] = INVALID_VEHICLE_ID;

    return;

}


if( temporary_admcar[playerid] != INVALID_VEHICLE_ID ) {
    ClearInfoTemporaryAdmCar(playerid, temporary_admcar[playerid]);
}


if( oldstate == PLAYER_STATE_DRIVER ) {

    if( temporary_admcar[playerid] != INVALID_VEHICLE_ID ) {
        ClearInfoTemporaryAdmCar(playerid, temporary_admcar[playerid]);
    }

}


В целом код среднестатистический, но есть некоторые моменты, которые все же стоит немного подправить(что я и сделал).

1) Названия переменной немного не соответствует действительности, ибо на первый взгляд кажется, что она хранит ид какой то тачки. Но никак не временной тачки администрации.
2) Использования params[0] влечет за собой потерю читаемости, гораздо проще воспользоваться доп.переменными, а не путаться с номерами ячеек.
3) Почему-то первый цвет у тебя может достигать 255, а вот второй лишь 126. Чем он хуже первого?
4) Почему именно AddStaticVehicle, а не CreateVehicle? К тому же, у тебя там лишний аргумент, если я не долблюсь в глаза.
5) Если ты присвоил массиву ид созданного транспорта, то будь добр и в дальнейшем сравнивать не с -1, а c INVALID_VEHICLE_ID, ибо никакая функция, что взаимодействует с транспортом, не возвращает -1. Да и ты изначально не заполняешь массив -1ами.

Плюс, я не понял зачем нужна проверка в OnPlayerStateChange. Собственно поэтому и сделал сток. Придираться не буду. Вдруг фича ;)

Сообщение отредактировал Pa4enka: 13 января 2020 - 17:27

0

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

  • Пользователь
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияPa4enka (13 января 2020 - 17:24) писал:

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


(( Плюс, я не понял зачем нужна проверка в OnPlayerStateChange. Собственно поэтому и сделал сток. Придираться не буду. Вдруг фича ;) ))
На аризоне если выходишь с авто пропдает ну как-то так) Спасибо приму твои коментария к сведению
0

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

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Что делать если при выдаче машины кикает? Помогите пожалуйста, я новичок.
0

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

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Можетe пожалуйста сделать на стандартном процессоре?

Сообщение отредактировал MrOleg28: 17 января 2020 - 14:23

0

#6
Пользователь офлайн   Pa4enka 

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

Просмотр сообщенияVilpando (15 января 2020 - 16:52) писал:

Что делать если при выдаче машины кикает? Помогите пожалуйста, я новичок.

Античит кикает. Заменить на функцию создания тачки, которая используется в моде.
0

#7
Пользователь офлайн   crazyvalik 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияMrOleg28 (15 января 2020 - 17:16) писал:

Может пожалуйста сделать на стандартном процессоре?

Я конечно все понимаю но зачем на стандартном он же медленный. Поставь dc_cmd или pawncmd и все скопируй и вставь и под себя поменяй :))
0

#8
Пользователь офлайн   MrOleg28 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Проблема в том, что у меня мод на стандартном, а чтобы другой процессор ставить, это надо все команды переводить, а это я делать не хочу.
Вот и прошу может сможете сделать на стандартном?
0

#9
Пользователь офлайн   crazyvalik 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияMrOleg28 (16 января 2020 - 15:07) писал:

Проблема в том, что у меня мод на стандартном, а чтобы другой процессор ставить, это надо все команды переводить, а это я делать не хочу.
Вот и прошу может сможете сделать на стандартном?

Я ниразу с ним не работал сорян
-1

#10
Пользователь офлайн   Vilpando 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияPa4enka (15 января 2020 - 17:25) писал:

Античит кикает. Заменить на функцию создания тачки, которая используется в моде.

Можете подсказать где это? Мод бонусник ( Адреналин. )
0

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


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

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


Яндекс.Метрика