• 0
Homer4ik

Кто-нибудь знает как именно на определенную машину установить скорость с этим скриптом?

Вопросы

Кто-нибудь знает как именно на определенную машину установить скорость с этим скриптом?

 

Спойлер

stock SetVehicleSpeed(vehicleid,mph)
{
new Float:Vx, Float:Vy, Float:Vz ,Float:speeds, Float:multiple;
GetVehicleVelocity(vehicleid,Vx,Vy,Vz);
speeds = floatsqroot(Vx*Vx + Vy*Vy + Vz*Vz);
if(speeds > 0)
{
multiple = (mph / (speeds * 250));
return SetVehicleVelocity(vehicleid, Vx*multiple, Vy*multiple, Vz*multiple);
}
return 0;
}

 

Поделиться сообщением


Ссылка на сообщение

38 ответов на этот вопрос

  • 0

@Homer4ik Этот скрипт не устанавливает новую скорость, он лишь дает машине разгона. 

Поделиться сообщением


Ссылка на сообщение
  • 0
Только что, DEST сказал:

@Homer4ik Этот скрипт не устанавливает новую скорость, он лишь дает машине разгона. 

Ну как поставить на определенную машину разгон такой-то

Поделиться сообщением


Ссылка на сообщение
  • 0

@Homer4ik Точнее придаст резкое ускорение определенной машине на указанное кол-во "миль в час". 

А сделать очень просто, нужно добавить туда, где хотите добавить ускорение следующий код: 
 

SetVehicleSpeed(GetPlayerVehicleID(playerid),20); // добавит ускорение машине, в которой сидит игрок, на 20 миль в час

 

Поделиться сообщением


Ссылка на сообщение
  • 0
Только что, DEST сказал:

@Homer4ik Точнее придаст резкое ускорение определенной машине на указанное кол-во "миль в час". 

А сделать очень просто, нужно добавить туда, где хотите добавить ускорение следующий код: 
 


SetVehicleSpeed(GetPlayerVehicleID(playerid),20); // добавит ускорение машине, в которой сидит игрок, на 20 миль в час

 

это куда вставлять?

Поделиться сообщением


Ссылка на сообщение
  • 0

@Homer4ik например, можете сделать так :

Ко всем new: 

new timer[MAX_PLAYERS]; 

В OnPlayerStateChange после { вставьте: 

if(newstate == PLAYER_STATE_DRIVER)
  timer[playerid] = SetTimerEx("SpeedVehicle", 10000, true, "d", playerid); 
else if(oldstate == PLAYER_STATE_DRIVER)
  KillTimer(timer[playerid]); 

В конец мода (можно после стока SetVehicleSpeed)
 

forward SpeedVehicle(playerid); 
public SpeedVehicle(playerid) return SetVehicleSpeed(GetPlayerVehicleID(playerid), 5); 

В результате каждые 10 секунд машине будет прибавляться по 5 миль / ч к скорости. 

Поделиться сообщением


Ссылка на сообщение
  • 0
Только что, DEST сказал:

@Homer4ik например, можете сделать так :

Ко всем new: 


new timer[MAX_PLAYERS]; 

В OnPlayerStateChange после { вставьте: 


if(newstate == PLAYER_STATE_DRIVER)
  timer[playerid] = SetTimerEx("SpeedVehicle", 10000, true, "d", playerid); 
else if(oldstate == PLAYER_STATE_DRIVER)
  KillTimer(timer[playerid]); 

В конец мода (можно после стока SetVehicleSpeed)
 


forward SpeedVehicle(playerid); 
public SpeedVehicle(playerid) return SetVehicleSpeed(GetPlayerVehicleID(playerid), 5); 

В результате каждые 10 секунд машине будет прибавляться по 5 миль / ч к скорости. 

Это той машине в которой сидит игрок? А для каждой машины разное ускорение нельзя, как на ра*мире

Поделиться сообщением


Ссылка на сообщение
  • 0

@Homer4ik Тогда сделайте так (замените предыдущий код): 

if(newstate == PLAYER_STATE_DRIVER)
{
  new modelid = GetVehicleModel(GetPlayerVehicleID(playerid)); 
  timer[playerid] = SetTimerEx("SpeedVehicle", 10000, true, "dd", playerid, modelid); 
}
else if(oldstate == PLAYER_STATE_DRIVER)
  KillTimer(timer[playerid]); 

И соответственно паблик этим: 

forward SpeedVehicle(playerid, modelid); 
public SpeedVehicle(playerid, modelid) 
{
  new newmph; 
  switch(modelid)
  {
    case X: newmph = XXmph; 
    case Y: newmph = YYmph;
  }
  return SetVehicleSpeed(GetPlayerVehicleID(playerid), newmph);
}

Вместо X ид первой машины, вместо XXmph ускорение для первой машины в миль/час.. 

Вместо Y ид второй машины, вместо YYmph ускорение для второй машины в миль/час. 

Дальше добавлять по аналогии. 
 

Поделиться сообщением


Ссылка на сообщение
  • 0
8 минут назад, DEST сказал:

@Homer4ik Тогда сделайте так (замените предыдущий код): 


if(newstate == PLAYER_STATE_DRIVER)
{
  new modelid = GetVehicleModel(GetPlayerVehicleID(playerid)); 
  timer[playerid] = SetTimerEx("SpeedVehicle", 10000, true, "dd", playerid, modelid); 
}
else if(oldstate == PLAYER_STATE_DRIVER)
  KillTimer(timer[playerid]); 

И соответственно паблик этим: 


forward SpeedVehicle(playerid, modelid); 
public SpeedVehicle(playerid, modelid) 
{
  new newmph; 
  switch(modelid)
  {
    case X: newmph = XXmph; 
    case Y: newmph = YYmph;
  }
  return SetVehicleSpeed(GetPlayerVehicleID(playerid), newmph);
}

Вместо X ид первой машины, вместо XXmph ускорение для первой машины в миль/час.. 

Вместо Y ид второй машины, вместо YYmph ускорение для второй машины в миль/час. 

Дальше добавлять по аналогии. 
 

Ошибку выдало на new timer[MAX_PLAYERS];

C:\Users\Ivan\Desktop\ArzamasRP\gamemodes\ArzamasRP.pwn(516) : error 021: symbol already defined: "timer"
Pawn compiler 3.2.3664     Copyright (c) 1997-2006, ITB CompuPhase

1 Error.

Поделиться сообщением


Ссылка на сообщение
  • 0

@Homer4ik значит эту строку: 

new timer[MAX_PLAYERS]; 

Замените на эту: 

new speedvehicle[MAX_PLAYERS]; 

Эту строку: 
 

else if(oldstate == PLAYER_STATE_DRIVER)
  KillTimer(timer[playerid]); 

На эту: 
 

else if(oldstate == PLAYER_STATE_DRIVER)
  KillTimer(speedvehicle[playerid]); 

Ну и эту строку: 

timer[playerid] = SetTimerEx("SpeedVehicle", 10000, true, "dd", playerid, modelid); 

На эту: 

speedvehicle[playerid] = SetTimerEx("SpeedVehicle", 10000, true, "dd", playerid, modelid); 

Поделиться сообщением


Ссылка на сообщение
  • 0
7 минут назад, DEST сказал:

@Homer4ik значит эту строку: 


new timer[MAX_PLAYERS]; 

Замените на эту: 


new speedvehicle[MAX_PLAYERS]; 

Эту строку: 
 


else if(oldstate == PLAYER_STATE_DRIVER)
  KillTimer(timer[playerid]); 

На эту: 
 


else if(oldstate == PLAYER_STATE_DRIVER)
  KillTimer(speedvehicle[playerid]); 

Ну и эту строку: 


timer[playerid] = SetTimerEx("SpeedVehicle", 10000, true, "dd", playerid, modelid); 

На эту: 


speedvehicle[playerid] = SetTimerEx("SpeedVehicle", 10000, true, "dd", playerid, modelid); 

Это в конец мода?

forward SpeedVehicle(playerid, modelid); public SpeedVehicle(playerid, modelid) { new newmph; switch(modelid) { case X: newmph = XXmph; case Y: newmph = YYmph; } return SetVehicleSpeed(GetPlayerVehicleID(playerid), newmph); }

Поделиться сообщением


Ссылка на сообщение
  • 0

@Homer4ik да

Поделиться сообщением


Ссылка на сообщение
  • 0
2 минуты назад, DEST сказал:

@Homer4ik да

C:\Users\Ivan\Desktop\ArzamasRP\gamemodes\ArzamasRP.pwn(80106) : error 025: function heading differs from prototype
C:\Users\Ivan\Desktop\ArzamasRP\gamemodes\ArzamasRP.pwn(80107) : error 025: function heading differs from prototype
C:\Users\Ivan\Desktop\ArzamasRP\gamemodes\ArzamasRP.pwn(80108) : error 021: symbol already defined: "SpeedVehicle"
Pawn compiler 3.2.3664     Copyright (c) 1997-2006, ITB CompuPhase

3 Errors.

Поделиться сообщением


Ссылка на сообщение
  • 0

@Homer4ik не надо вставлять два раза то, что я скинул. 

Поделиться сообщением


Ссылка на сообщение
  • 0
Только что, DEST сказал:

@Homer4ik не надо вставлять два раза то, что я скинул. 

крч, если тебе не трудно, можешь сразу кинуть что вставлять?

Поделиться сообщением


Ссылка на сообщение
  • 0

@Homer4ik То, что вставляли до этого удалить, начните вставлять все с чистого листа, чтобы без ошибок. 

Ко всем new: 

new speedtimer[MAX_PLAYERS];

В OnPlayerStateChange: 
 

if(newstate == PLAYER_STATE_DRIVER)
  speedtimer[playerid] = SetTimerEx("SpeedVehicle", 10000, true, "d", playerid); 
else if(oldstate == PLAYER_STATE_DRIVER)
  KillTimer(speedtimer[playerid]); 

В конец мода: 
 

forward SpeedVehicle(playerid, modelid); 
public SpeedVehicle(playerid, modelid) 
{
  new newmph; 
  switch(modelid)
  {
    case X: newmph = XXmph; 
    case Y: newmph = YYmph;
  }
  return SetVehicleSpeed(GetPlayerVehicleID(playerid), newmph);
}

 

Поделиться сообщением


Ссылка на сообщение
  • 0
6 минут назад, DEST сказал:

@Homer4ik То, что вставляли до этого удалить, начните вставлять все с чистого листа, чтобы без ошибок. 

Ко всем new: 


new speedtimer[MAX_PLAYERS];

В OnPlayerStateChange: 
 


if(newstate == PLAYER_STATE_DRIVER)
  speedtimer[playerid] = SetTimerEx("SpeedVehicle", 10000, true, "d", playerid); 
else if(oldstate == PLAYER_STATE_DRIVER)
  KillTimer(speedtimer[playerid]); 

В конец мода: 
 


forward SpeedVehicle(playerid, modelid); 
public SpeedVehicle(playerid, modelid) 
{
  new newmph; 
  switch(modelid)
  {
    case X: newmph = XXmph; 
    case Y: newmph = YYmph;
  }
  return SetVehicleSpeed(GetPlayerVehicleID(playerid), newmph);
}

 

C:\Users\Ivan\Desktop\ArzamasRP\gamemodes\ArzamasRP.pwn(80105) : error 025: function heading differs from prototype
C:\Users\Ivan\Desktop\ArzamasRP\gamemodes\ArzamasRP.pwn(80106) : error 025: function heading differs from prototype
C:\Users\Ivan\Desktop\ArzamasRP\gamemodes\ArzamasRP.pwn(80107) : error 021: symbol already defined: "SpeedVehicle"
Pawn compiler 3.2.3664     Copyright (c) 1997-2006, ITB CompuPhase

3 Errors.

Поделиться сообщением


Ссылка на сообщение
  • 0

@Homer4ik строки сразу скидывайте

Поделиться сообщением


Ссылка на сообщение
  • 0
Только что, DEST сказал:

@Homer4ik строки сразу скидывайте

вот это в конце мода       }
    }
}
 forward SpeedVehicle(playerid, modelid);
 public SpeedVehicle(playerid, modelid)
 {
   new newmph;
   switch(modelid)
   {
     case 541: newmph = 100;
     case 503: newmph = 120;
   }
   return SetVehicleSpeed(GetPlayerVehicleID(playerid), newmph);
 }

Поделиться сообщением


Ссылка на сообщение
  • 0

@Homer4ik а еще у вас где-нибудь forward SpeedVehicle в моде есть? 

Поделиться сообщением


Ссылка на сообщение
  • 0
Только что, DEST сказал:

@Homer4ik а еще у вас где-нибудь forward SpeedVehicle в моде есть? 

нету, но есть

 if(newstate == PLAYER_STATE_DRIVER)
   speedtimer[playerid] = SetTimerEx("SpeedVehicle", 10000, true, "d", playerid);
 else if(oldstate == PLAYER_STATE_DRIVER)
   KillTimer(speedtimer[playerid]);

 и

}
stock SpeedVehicle(playerid)
{

 

Поделиться сообщением


Ссылка на сообщение
  • 0

@Homer4ik заменяйте так: 
 

if(newstate == PLAYER_STATE_DRIVER)
{
  new modelid = GetVehicleModel(GetPlayerVehicleID(playerid)); 
  timer[playerid] = SetTimerEx("SpeedVehicle222", 10000, true, "dd", playerid, modelid); 
}

и форвард с пабликом на этот замените: 
 

forward SpeedVehicle222(playerid, modelid); 
public SpeedVehicle222(playerid, modelid) 
{
  new newmph; 
  switch(modelid)
  {
    case X: newmph = XXmph; 
    case Y: newmph = YYmph;
  }
  return SetVehicleSpeed(GetPlayerVehicleID(playerid), newmph);
}

 

Поделиться сообщением


Ссылка на сообщение
  • 0
2 минуты назад, DEST сказал:

@Homer4ik заменяйте так: 
 


if(newstate == PLAYER_STATE_DRIVER)
{
  new modelid = GetVehicleModel(GetPlayerVehicleID(playerid)); 
  timer[playerid] = SetTimerEx("SpeedVehicle222", 10000, true, "dd", playerid, modelid); 
}

и форвард с пабликом на этот замените: 
 

 

это


 if(newstate == PLAYER_STATE_DRIVER)
   speedtimer[playerid] = SetTimerEx("SpeedVehicle", 10000, true, "d", playerid);
 else if(oldstate == PLAYER_STATE_DRIVER)
   KillTimer(speedtimer[playerid]);

на это?

if(newstate == PLAYER_STATE_DRIVER) { new modelid = GetVehicleModel(GetPlayerVehicleID(playerid)); timer[playerid] = SetTimerEx("SpeedVehicle222", 10000, true, "dd", playerid, modelid); }

 

 

9 минут назад, DEST сказал:

@Homer4ik заменяйте так: 
 


if(newstate == PLAYER_STATE_DRIVER)
{
  new modelid = GetVehicleModel(GetPlayerVehicleID(playerid)); 
  timer[playerid] = SetTimerEx("SpeedVehicle222", 10000, true, "dd", playerid, modelid); 
}

и форвард с пабликом на этот замените: 
 


forward SpeedVehicle222(playerid, modelid); 
public SpeedVehicle222(playerid, modelid) 
{
  new newmph; 
  switch(modelid)
  {
    case X: newmph = XXmph; 
    case Y: newmph = YYmph;
  }
  return SetVehicleSpeed(GetPlayerVehicleID(playerid), newmph);
}

 

Скинь еще раз, как сможешь короче, что куда вставлять

Поделиться сообщением


Ссылка на сообщение
  • 0

@Homer4ik Скидываю последний раз, если не поймете, ваши проблемы. 

Ко всем new: 

new speedtimer[MAX_PLAYERS];

В OnPlayerStateChange: 

if(newstate == PLAYER_STATE_DRIVER)
{
  new modelid = GetVehicleModel(GetPlayerVehicleID(playerid)); 
  speedtimer[playerid] = SetTimerEx("SpeedVehicle222", 10000, true, "dd", playerid, modelid); 
}
if(oldstate == PLAYER_STATE_DRIVER)
	KillTimer(speedtimer[playerid]); 

В конец мода: 

forward SpeedVehicle222(playerid, modelid); 
public SpeedVehicle222(playerid, modelid) 
{
  new newmph; 
  switch(modelid)
  {
    case X: newmph = XXmph; 
    case Y: newmph = YYmph;
  }
  return SetVehicleSpeed(GetPlayerVehicleID(playerid), newmph);
}

 

Поделиться сообщением


Ссылка на сообщение
  • 0
17 минут назад, DEST сказал:

@Homer4ik Скидываю последний раз, если не поймете, ваши проблемы. 

Ко всем new: 


new speedtimer[MAX_PLAYERS];

В OnPlayerStateChange: 


if(newstate == PLAYER_STATE_DRIVER)
{
  new modelid = GetVehicleModel(GetPlayerVehicleID(playerid)); 
  speedtimer[playerid] = SetTimerEx("SpeedVehicle222", 10000, true, "dd", playerid, modelid); 
}
if(oldstate == PLAYER_STATE_DRIVER)
	KillTimer(speedtimer[playerid]); 

В конец мода: 


forward SpeedVehicle222(playerid, modelid); 
public SpeedVehicle222(playerid, modelid) 
{
  new newmph; 
  switch(modelid)
  {
    case X: newmph = XXmph; 
    case Y: newmph = YYmph;
  }
  return SetVehicleSpeed(GetPlayerVehicleID(playerid), newmph);
}

 

последний вопрос, вот эта строчка case X: newmph = XXmph; case Y: newmph = YYmph;

XXmph полностью менять или только XX

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

Код берите под "Код" или спойлер

Поделиться сообщением


Ссылка на сообщение
  • 0

@Homer4ik конечно же все заменяйте на свои данные. Это приведено в качестве примера. Вместо X и Y ид машин, а вмечто XXmph и YYmph ускорение в миль / час. 

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Talex
      От Talex
      Всем привет, сливаю первый мод!
      Информация о моде:

      — Основа Gamenix.
      — Мод переведен на Mysql R39, теперь ни каких слётов нет, мод работает стабильно с онлайном 160+.
      — Новый автосалон на TextDraw.
      — Система 3-х автомобилей (1 можно купить по дефолту, 2 и 3 за донат).
      — Автомобили у игроков теперь не пропадают (Id'ы авто сбивались, с номерами теперь тоже всё в порядке).
      — Оформление сервера полностью переработано, теперь оно более красивое.
      — Защита от копирования карты.
      — в меню сервера добавлен пункт визуальных настроек.
      — Номера на транспорт теперь можно приобрести в /donate.
      — Сделан новый красивый спидометр.
      — При получении номера, добавлен выбор региона.
      — Сделана система радаров и промокодов, создание прямо из игры.
      — Новый интерьер казино.
      — Магазин скинов теперь на TextDraw.
      — Автошкола полностью функционирует.
      — Добавлена информация после коннекта о последнем входе в собственный аккаунт.
      — Приватная защита от всех видов DDoS атак и DoS атак.                                                                                                                                    
      — пароль от АП (/alog) теперь у каждого администратора индивидуальный.
      — Изменено оформление самого мода
      Это не все изменения мода, их ещё очень много. все не упомнишь. 
      Автор мода: Неизвестен
      CUNBERS RP 8.4.3.rar