Limon4ikChanell
Нуль
- Регистрация
- 24 Май 2019
- Сообщения
- 4
- Лучшие ответы
- 0
- Репутация
- 0
Здравствуйте, я абсолютный новичок в павне. Нашел я скрипт на просторах интернета, хотел бы изменить в скрипте активацию накопителя машины времени с кнопки alt, на команду(например /gen), если не затруднит, объясните как сделали, я новичок мне будет очень полезно, собственно вот код:
Код:
#include <a_samp>
#define COLOR_YELLOW 0xFFFF00FF
#define KNOWNCOLOR_KHAKI 0xF0E68CFF
new Float:P[3];
new Fire[MAX_VEHICLES][4];
new Text:Textdraw0;
new Text:Textdraw1;
new Text:Textdraw2;
new G[MAX_VEHICLES];
new Time[MAX_VEHICLES];
new Weather = 2;//погодка в настоящем времени.
new delorian;
new bool:Block = false;
new Toplivo;
new Poloniy[MAX_PLAYERS];
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Док, ты хочешь сказать, что ты изобрел машину времени?");
print("--------------------------------------\n");
SetTimer("SpeedUpdate",100,1);
delorian = CreateVehicle(496,2096.4307,1283.8900,10.5248,178.8482,7,7,60);
SetVehicleNumberPlate(delorian, "ENB");
Textdraw0 = TextDrawCreate(542.000000,387.000000,"Generator: Off");
Textdraw1 = TextDrawCreate(542.000000,405.000000,"Speed:188");
TextDrawUseBox(Textdraw0,1);
TextDrawBoxColor(Textdraw0,0x00000066);
TextDrawTextSize(Textdraw0,617.000000,2.000000);
TextDrawUseBox(Textdraw1,1);
TextDrawBoxColor(Textdraw1,0x00000066);
TextDrawTextSize(Textdraw1,617.000000,0.000000);
TextDrawAlignment(Textdraw0,0);
TextDrawAlignment(Textdraw1,0);
TextDrawBackgroundColor(Textdraw0,0x000000ff);
TextDrawBackgroundColor(Textdraw1,0x000000ff);
TextDrawFont(Textdraw0,1);
TextDrawLetterSize(Textdraw0,0.199999,1.500000);
TextDrawFont(Textdraw1,1);
TextDrawLetterSize(Textdraw1,0.399999,1.000000);
TextDrawColor(Textdraw0,0xffff00ff);
TextDrawColor(Textdraw1,0xffff00ff);
TextDrawSetOutline(Textdraw0,1);
TextDrawSetOutline(Textdraw1,1);
TextDrawSetProportional(Textdraw0,1);
TextDrawSetProportional(Textdraw1,1);
TextDrawSetShadow(Textdraw0,1);
TextDrawSetShadow(Textdraw1,1);
Textdraw2 = TextDrawCreate(542.000000,418.000000,"Plutonium:Yes");
TextDrawUseBox(Textdraw2,1);
TextDrawBoxColor(Textdraw2,0x00000066);
TextDrawTextSize(Textdraw2,617.000000,-1.000000);
TextDrawAlignment(Textdraw2,0);
TextDrawBackgroundColor(Textdraw2,0x000000ff);
TextDrawFont(Textdraw2,1);
TextDrawLetterSize(Textdraw2,0.299999,1.000000);
TextDrawColor(Textdraw2,0xffff00ff);
TextDrawSetOutline(Textdraw2,1);
TextDrawSetProportional(Textdraw2,1);
TextDrawSetShadow(Textdraw2,1);
return 1;
}
public OnFilterScriptExit()
{
DestroyVehicle(delorian);
TextDrawHideForAll(Textdraw0);
TextDrawHideForAll(Textdraw1);
TextDrawHideForAll(Textdraw2);
TextDrawDestroy(Textdraw0);
TextDrawDestroy(Textdraw1);
TextDrawDestroy(Textdraw2);
for(new i; i < GetMaxPlayers(); i++)DeleteFire(i);
print("Машина времени выгружена");
return 1;
}
forward SpeedUpdate();
public SpeedUpdate()
{
new string[128]; // объявляем одномерный массив
for(new i; i<GetMaxPlayers(); i++) // объявляем цикл
{
if((GetPlayerState(i) == PLAYER_STATE_DRIVER) && GetPlayerVehicleID(i) == delorian) // Если игрок - водитель ТС
{
if(Toplivo > 0)TextDrawSetString(Textdraw2, "Plutonium:Yes");
else if(Toplivo == 0)TextDrawSetString(Textdraw2, "Plutonium:No");
if(G[delorian] == 1)TextDrawSetString(Textdraw0, "Generator: On");
else if(G[delorian] == 0)TextDrawSetString(Textdraw0, "Generator: Off");
format(string, sizeof string, "Speed:%d",GetVehicleSpeed(i));
TextDrawSetString(Textdraw1, string);
if((GetVehicleSpeed(i) >= 88 && G[delorian] == 1)&& Block == false)
{
Block = true;
EffectFire(i);
if(Time[delorian] == 0)SetTimerEx("Tele",1300,0,"d",i);
else if(Time[delorian] == 1)SetTimerEx("TeleNaz",1300,0,"d",i);
}
}
}
return 1;
}
public OnVehicleSpawn(vehicleid)
{
if(vehicleid == delorian)
{
SetVehicleVirtualWorld(delorian,0);
SetVehicleNumberPlate(delorian, "ENB");
Toplivo = 0;
G[delorian] = 0;
}
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
if(vehicleid == delorian)SendClientMessage(killerid,KNOWNCOLOR_KHAKI,"Вот она и уничтожена Док... Как ты и хотел.");
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/plutonium", cmdtext, true, 10) == 0)
{
if(Poloniy[playerid] > 0) return SendClientMessage(playerid,COLOR_YELLOW,"У вас уже есть плутоний");
if(GetPlayerMoney(playerid) > 0)
{
GivePlayerMoney(playerid, 0);
Poloniy[playerid] = 1;
SendClientMessage(playerid,COLOR_YELLOW,"Заряд плутония успешно куплен. Зарядка в делориан произойдет во время включения накопителя");
}
else return SendClientMessage(playerid,KNOWNCOLOR_KHAKI,"Плутоний для путешествия 2 раза стоит 0$");
return 1;
}
return 0;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == 4 && (GetPlayerVehicleID(playerid) == delorian && GetPlayerState(playerid) == PLAYER_STATE_DRIVER))
{
if(G[delorian] == 1)
{
G[delorian] = 0;
Block = false;
SendClientMessage(playerid,COLOR_YELLOW,"Потоковый накопитель отключен");
return 1;
}
else if(G[delorian] == 0)
{
if(Toplivo > 0)
{
G[delorian] = 1;
Block = false;
SendClientMessage(playerid,COLOR_YELLOW,"Потоковый накопитель включен");
return 1;
}
else if(Toplivo < 1)
{
if(Poloniy[playerid] > 0)
{
G[delorian] = 1;
Block = false;
Poloniy[playerid] = 0;
SendClientMessage(playerid,COLOR_YELLOW,"Потоковый накопитель включен.");
SendClientMessage(playerid,COLOR_YELLOW,"Заряд плутония заряжен в делориан.");
Toplivo += 2;
}
else return SendClientMessage(playerid,KNOWNCOLOR_KHAKI,"Нет заряда плутония. Купите его командой /plutonium.");
}
}
}
return 1;
}
forward EffectFire(playerid);
public EffectFire(playerid)
{
Fire[delorian][0] = CreateObject(18694,0,0,0,0,0,0);
Fire[delorian][1] = CreateObject(18694,0,0,0,0,0,0);
Fire[delorian][2] = CreateObject(18694,0,0,0,0,0,0);
Fire[delorian][3] = CreateObject(18694,0,0,0,0,0,0);
AttachObjectToVehicle(Fire[delorian][0], delorian, -0.8, 2.0, -2.0, 0.0, 0.0, 0.0);
AttachObjectToVehicle(Fire[delorian][1], delorian, 0.8, 2.0, -2.0, 0.0, 0.0, 0.0);
AttachObjectToVehicle(Fire[delorian][2], delorian, -0.8, -2.0, -2.0, 0.0, 0.0, 0.0);
AttachObjectToVehicle(Fire[delorian][3], delorian, 0.8, -2.0, -2.0, 0.0, 0.0, 0.0);
return 1;
}
forward DeleteFire(playerid);
public DeleteFire(playerid)
{
for(new i; i < 5; i++)DestroyObject(Fire[delorian][i]);
return 1;
}
new Passenger;
forward Tele(playerid);
public Tele(playerid)
{
if(GetVehicleSpeed(playerid) >= 88)
{
new seat;
for(new i; i < GetMaxPlayers(); i++)
{
if((GetPlayerState(i) != PLAYER_STATE_DRIVER) && GetPlayerVehicleID(i) == delorian)
{
Passenger = 1;
seat = GetPlayerVehicleSeat(i);
}
}
SetPlayerWeather(playerid,random(15));
G[delorian] = 0;
Time[delorian] = 1;
Block = false;
SetVehicleHealth(delorian,50000);
GetVehiclePos(delorian,P[0],P[1],P[2]);
CreateExplosion(P[0],P[1],P[2],10,0.0);
SetVehicleHealth(delorian,1000);
SetVehicleVirtualWorld(delorian,12);
if(Toplivo > 0)Toplivo --;
SetPlayerVirtualWorld(playerid,12);
PutPlayerInVehicle(playerid,delorian,0);
if(Passenger == 1)
{
for(new i; i < GetMaxPlayers(); i++)
{
if((GetPlayerState(i) != PLAYER_STATE_DRIVER) && GetPlayerVehicleID(i) == delorian)
{
SetPlayerVirtualWorld(i,12);
SetPlayerWeather(i,random(15));
PutPlayerInVehicle(i,delorian,seat);
}
}
SetVehicleSpeed(delorian,203);
}
Passenger = 0;
DeleteFire(playerid);
}
else
{
DeleteFire(playerid);
Block = false;
}
return 1;
}
forward TeleNaz(playerid);
public TeleNaz(playerid)
{
if(GetVehicleSpeed(playerid) >= 88)
{
new seat;
for(new i; i < GetMaxPlayers(); i++)
{
if((GetPlayerState(i) != PLAYER_STATE_DRIVER) && GetPlayerVehicleID(i) == delorian)
{
Passenger = 1;
seat = GetPlayerVehicleSeat(i);
}
}
SetPlayerWeather(playerid,Weather);
G[delorian] = 0;
Time[delorian] = 0;
Block = false;
SetVehicleHealth(delorian,50000);
GetVehiclePos(delorian,P[0],P[1],P[2]);
CreateExplosion(P[0],P[1],P[2],10,0.0);
SetVehicleHealth(delorian,1000);
SetVehicleVirtualWorld(delorian,0);
if(Toplivo > 0)Toplivo --;
SetPlayerVirtualWorld(playerid,0);
PutPlayerInVehicle(playerid,delorian,0);
if(Passenger == 1)
{
for(new i; i < GetMaxPlayers(); i++)
{
if((GetPlayerState(i) != PLAYER_STATE_DRIVER) && GetPlayerVehicleID(i) == delorian)
{
SetPlayerVirtualWorld(i,0);
SetPlayerWeather(i,random(15));
PutPlayerInVehicle(i,delorian,seat);
}
}
SetVehicleSpeed(delorian,203);
}
Passenger = 0;
DeleteFire(playerid);
}
else
{
DeleteFire(playerid);
Block = false;
}
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER && GetPlayerVehicleID(playerid) == delorian)
{
TextDrawShowForPlayer(playerid, Textdraw0);
TextDrawShowForPlayer(playerid, Textdraw1);
TextDrawShowForPlayer(playerid, Textdraw2);
SendClientMessage(playerid,COLOR_YELLOW,"Добро пожаловать в машину времени. Для путешествия во времени включите потоковый накопитель.");
SendClientMessage(playerid,COLOR_YELLOW,"Накопитель включается на ALT. Разгоняйтесь до 88 на спидометре и отправляйтесь в прошлое. ");
}
if(newstate == PLAYER_STATE_ONFOOT)
{
TextDrawHideForPlayer(playerid, Textdraw0);
TextDrawHideForPlayer(playerid, Textdraw1);
TextDrawHideForPlayer(playerid, Textdraw2);
}
return 1;
}
stock GetVehicleSpeed(playerid)
{
new Float:ST[4];
if(IsPlayerInAnyVehicle(playerid))
GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 150.3;
return floatround(ST[3]);
}
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;
}