Sign in to follow this  
Followers 0
Homer4ik

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

Рекомендованные сообщения



Не найдено.

39 posts in this topic

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

 

Спойлер

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;
}

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Только что, DEST сказал:

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

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

Share this post


Link to post
Share on other sites

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

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

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

 

Share this post


Link to post
Share on other sites
Только что, DEST сказал:

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

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


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

 

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

Share this post


Link to post
Share on other sites

@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 миль / ч к скорости. 

Share this post


Link to post
Share on other sites
Только что, 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 миль / ч к скорости. 

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

Share this post


Link to post
Share on other sites

@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 ускорение для второй машины в миль/час. 

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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

@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); 

Share this post


Link to post
Share on other sites
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); }

Share this post


Link to post
Share on other sites

@Homer4ik да

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Только что, DEST сказал:

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

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

Share this post


Link to post
Share on other sites

@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);
}

 

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Только что, 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);
 }

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Только что, 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)
{

 

Share this post


Link to post
Share on other sites

@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);
}

 

Share this post


Link to post
Share on other sites
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);
}

 

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

Share this post


Link to post
Share on other sites

@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);
}

 

Share this post


Link to post
Share on other sites
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

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

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

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0