DelFast
Новичок
Всем привет.
В общем, замаппил небольшой парк напротив Мэрии в ЛС (около мини-бассейна).
Добавил на команды:
1) Включение\Выключение пиротехники. А конкретнее - 4 световых дыма, которые поднимаются вверх.
2) По команде - по периметру вверх взлетают несколько разноцветных петард, которые сопровождаются дымом и искрами и взрываются.
Так вот, хочу, чтобы опытные скриптеры оценили несколько пунктов:
1) Грамотность в написании (синтаксис, использование функций)
2) Общая точка зрения на код (конфликты, ньюансы и т.д.)
3) Возможные баги.
4) Синхронизация, оптимизация скрипта (где будет работать, где не будет, как оптимизирован)
И желательно прикрепить небольшие примеры, где можно было сделать по другому, что более эффективно и наиболее удобнее в данных случаях.
Только начинаю работать pawno в сфере sa-mp, работал с другими языками и тем же павно, только в направлении серверов c-s.
Желающие взять скрипт - забирайте )
В общем, замаппил небольшой парк напротив Мэрии в ЛС (около мини-бассейна).
Добавил на команды:
1) Включение\Выключение пиротехники. А конкретнее - 4 световых дыма, которые поднимаются вверх.
2) По команде - по периметру вверх взлетают несколько разноцветных петард, которые сопровождаются дымом и искрами и взрываются.
Так вот, хочу, чтобы опытные скриптеры оценили несколько пунктов:
1) Грамотность в написании (синтаксис, использование функций)
2) Общая точка зрения на код (конфликты, ньюансы и т.д.)
3) Возможные баги.
4) Синхронизация, оптимизация скрипта (где будет работать, где не будет, как оптимизирован)
И желательно прикрепить небольшие примеры, где можно было сделать по другому, что более эффективно и наиболее удобнее в данных случаях.
Только начинаю работать pawno в сфере sa-mp, работал с другими языками и тем же павно, только в направлении серверов c-s.
Желающие взять скрипт - забирайте )
Код:
#include <a_samp>
#include <streamer>
new object[5];
new obj[36];
new salut[8], spark[8], dim[8];
new Float:x[3];
new bool:loaded;
new bool:vzriv = false;
new Text3D:play;
forward destroyFlare(playerid);
forward start();
forward start1();
public OnFilterScriptInit()
{
play = Create3DTextLabel( "Чтобы послушать музыку введите:\n /play", 0x33AA33AA, 1485.1749, -1656.4032, 14.0469, 50.0, 0 );
obj[0] = CreateDynamicObject(19129,1479.8950195,-1639.6059570,13.2110004,0.0000000,0.0000000,0.0000000); //object(dancefloor2) (1)
obj[1] = CreateDynamicObject(14608,1479.5689697,-1624.1009521,15.3179998,0.0000000,0.0000000,136.0000000); //object(triad_buddha01) (1)
obj[2] = CreateDynamicObject(16151,1458.7459717,-1629.3129883,13.3999996,0.0000000,0.0000000,90.2500000); //object(ufo_bar) (1)
obj[3] = CreateDynamicObject(1551,1500.1989746,-1630.0329590,14.2100000,0.0000000,0.0000000,0.0000000); //object(dyn_wine_big) (1)
obj[4] = CreateDynamicObject(1545,1503.7729492,-1627.6610107,14.1520004,0.0000000,0.0000000,0.0000000); //object(cj_b_optic1) (1)
obj[5] = CreateDynamicObject(1667,1503.6560059,-1630.2440186,14.1079998,0.0000000,0.0000000,0.0000000); //object(propwineglass1) (1)
obj[6] = CreateDynamicObject(16151,1501.5539551,-1629.3060303,13.3219995,0.0000000,0.0000000,87.9949951); //object(ufo_bar) (2)
obj[7] = CreateDynamicObject(3092,1502.4410400,-1629.5560303,13.5290003,0.0000000,90.0000000,178.0000000); //object(dead_tied_cop) (1)
obj[8] = CreateDynamicObject(19158,1479.6610107,-1639.6639404,14.7810001,0.0000000,0.0000000,0.0000000); //object(metallightbars2) (1)
obj[9] = CreateDynamicObject(19335,1478.9580078,-1639.1510010,24.5310001,0.0000000,0.0000000,0.0000000); //object(hot_air_balloon04) (1)
obj[10] = CreateDynamicObject(18656,1490.1689453,-1629.0109863,11.1879997,66.0000000,180.0000000,140.0000000); //object(lightbeamwhite) (1)
obj[11] = CreateDynamicObject(18657,1469.4699707,-1629.8039551,11.7130003,67.7312317,244.4945068,217.2730103); //object(lightbeamred) (1)
obj[12] = CreateDynamicObject(18657,1491.4229736,-1649.1960449,11.9630003,50.5073242,327.4670410,47.4721680); //object(lightbeamred) (2)
obj[13] = CreateDynamicObject(18656,1469.4539795,-1650.1290283,11.6879997,65.9167480,184.9005737,313.5175171); //object(lightbeamwhite) (2)
obj[14] = CreateDynamicObject(18750,1477.5129395,-1608.1979980,98.1220016,88.0000000,269.9991455,94.0008545); //object(samplogobig) (1)
obj[15] = CreateDynamicObject(18761,1479.4119873,-1655.8830566,16.5470009,0.0000000,0.0000000,180.0000000); //object(racefinishline1) (1)
obj[16] = CreateDynamicObject(996,1489.6860352,-1655.9270020,13.7959995,0.0000000,0.0000000,0.0000000); //object(lhouse_barrier1) (1)
obj[17] = CreateDynamicObject(996,1497.7440186,-1655.9289551,13.7959995,0.0000000,0.0000000,0.0000000); //object(lhouse_barrier1) (2)
obj[18] = CreateDynamicObject(996,1505.2819824,-1655.3430176,13.7959995,0.0000000,0.0000000,89.2500000); //object(lhouse_barrier1) (5)
obj[19] = CreateDynamicObject(996,1505.3750000,-1646.8750000,13.7959995,0.0000000,0.0000000,89.2474365); //object(lhouse_barrier1) (6)
obj[20] = CreateDynamicObject(996,1505.4530029,-1638.4279785,13.7959995,0.0000000,0.0000000,89.2474365); //object(lhouse_barrier1) (7)
obj[21] = CreateDynamicObject(996,1462.5190430,-1656.0489502,13.7959995,0.0000000,0.0000000,0.0000000); //object(lhouse_barrier1) (8)
obj[22] = CreateDynamicObject(996,1454.9909668,-1656.0179443,13.7959995,0.0000000,0.0000000,0.0000000); //object(lhouse_barrier1) (9)
obj[23] = CreateDynamicObject(996,1454.3509521,-1655.4530029,13.7959995,0.0000000,0.0000000,91.5000000); //object(lhouse_barrier1) (10)
obj[24] = CreateDynamicObject(996,1454.1309814,-1647.3199463,13.7959995,0.0000000,0.0000000,90.2495117); //object(lhouse_barrier1) (11)
obj[25] = CreateDynamicObject(996,1454.0830078,-1638.8129883,13.7959995,0.0000000,0.0000000,90.2471924); //object(lhouse_barrier1) (12)
obj[26] = CreateDynamicObject(996,1454.0419922,-1615.0389404,14.5380001,0.0000000,0.0000000,0.2471924); //object(lhouse_barrier1) (13)
obj[27] = CreateDynamicObject(996,1464.4680176,-1615.0670166,13.7880001,0.0000000,0.0000000,0.2471924); //object(lhouse_barrier1) (14)
obj[28] = CreateDynamicObject(996,1472.7080078,-1615.0269775,13.7880001,0.0000000,0.0000000,0.2471924); //object(lhouse_barrier1) (15)
obj[29] = CreateDynamicObject(996,1480.9179688,-1615.0040283,13.7880001,0.0000000,0.0000000,0.2471924); //object(lhouse_barrier1) (16)
obj[30] = CreateDynamicObject(996,1488.7180176,-1615.0090332,13.7880001,0.0000000,0.0000000,0.2471924); //object(lhouse_barrier1) (17)
obj[31] = CreateDynamicObject(996,1497.8000488,-1614.9630127,14.4879999,0.0000000,0.0000000,359.7471924); //object(lhouse_barrier1) (18)
obj[32] = CreateDynamicObject(997,1476.4429932,-1655.5260010,13.0469999,0.0000000,0.0000000,0.0000000); //object(lhouse_barrier3) (1)
obj[33] = CreateDynamicObject(997,1471.8840332,-1655.5550537,13.0469999,0.0000000,0.0000000,0.0000000); //object(lhouse_barrier3) (2)
obj[34] = CreateDynamicObject(997,1480.8139648,-1655.5789795,13.0469999,0.0000000,0.0000000,0.0000000); //object(lhouse_barrier3) (3)
obj[35] = CreateDynamicObject(997,1484.8139648,-1655.5799561,13.0469999,0.0000000,0.0000000,0.0000000); //object(lhouse_barrier3) (4)
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
new name[MAX_PLAYER_NAME+1], string[143];
GetPlayerName(playerid, name, sizeof(name));
if(!loaded)
{
format(string, sizeof(string), "%s запустил пиротехнику.", name);
} else {
format(string, sizeof(string), "%s отключил пиротехнику.", name);
}
if (strcmp("/onnnn1", cmdtext, true, 10) == 0)
{
if(loaded) return SendClientMessage(playerid, 0xFF0000AA, "Пиротехника уже работает");
GetPlayerPos(playerid,x[0],x[1],x[2]);
for(new i=0; i<MAX_PLAYERS; i++)
if(IsPlayerConnected(i) && GetPlayerDistanceFromPoint(i,x[0],x[1],x[2]) < 100) SendClientMessage(i, 0x008000FF, string);
object[0] = CreateDynamicObject(18728, 1469.6737, -1649.1873, 14.0469, 0, 0, 0);
object[1] = CreateDynamicObject(18728, 1489.8134, -1650.0631, 14.0469, 0, 0, 0);
object[2] = CreateDynamicObject(18728, 1470.0549, -1629.6068, 14.0469, 0, 0, 0);
object[3] = CreateDynamicObject(18728, 1488.8868, -1629.3914, 14.0469, 0, 0, 0);
loaded = true;
}
if (strcmp("/vzrivv1", cmdtext, true, 10) == 0)
{
if (vzriv) return SendClientMessage(playerid, 0xFF0000FF, "Петарды уже летят. Попробуйте запустить после взрыва.");
salut[0] = CreateObject(19122, 1457.9821, -1639.9790, 14.0393, 0, 0, 0);
salut[1] = CreateObject(19123, 1501.3225, -1639.8308, 14.0469, 0, 0, 0);
salut[2] = CreateObject(19124, 1500.7310 ,-1632.1110, 14.0469, 0, 0, 0);
salut[3] = CreateObject(19125, 1461.4016, -1632.3837, 14.0469, 0, 0, 0);
salut[4] = CreateObject(19126, 1479.7111, -1626.9669, 15.0469, 0, 0, 0);
salut[5] = CreateObject(19127, 1479.5944, -1652.2520, 15.0469, 0, 0, 0);
salut[6] = CreateObject(19124, 1501.9111, -1649.1899, 14.0207, 0, 0, 0);
salut[7] = CreateObject(19121, 1459.1296, -1649.3573, 14.0469, 0, 0, 0);
vzriv = true;
SetTimer("start",0,0);
}
if (strcmp("/offff1", cmdtext, true, 10) == 0)
{
if (!loaded) return SendClientMessage(playerid, 0xFF0000AA, "Пиротехника уже отключена");
loaded = false;
GetPlayerPos(playerid,x[0],x[1],x[2]);
for(new i=0; i<MAX_PLAYERS; i++)
if(IsPlayerConnected(i) && GetPlayerDistanceFromPoint(i,x[0],x[1],x[2]) < 100) SendClientMessage(i, 0xFF9900AA, string);
for(new i=0; i<sizeof(object); i++)
DestroyDynamicObject(object[i]);
}
return 0;
}
public start()
{
new Float:objx, Float:objy, Float:objz;
for(new i=0; i <sizeof(salut); i++)
{
GetObjectPos(salut[i], objx, objy, objz);
MoveObject(salut[i], objx, objy, objz+13,10);
spark[i] = CreateObject(18718, objx, objy, objz, 0, 0, 0);
dim[i] = CreateObject(18715, objx, objy, objz, 0, 0, 0);
AttachObjectToObject(spark[i],salut[i],0,0,-1,0,0,0,0);
AttachObjectToObject(dim[i],salut[i],0,0,0,0,0,0,0);
}
SetTimer("start1", 1200, 0);
}
public start1()
{
new Float:oobjx, Float:oobjy, Float:oobjz;
for(new i=0; i <sizeof(salut); i++)
{
GetObjectPos(salut[i], oobjx, oobjy, oobjz);
CreateExplosion(oobjx, oobjy, oobjz, 0, 5);
DestroyObject(salut[i]);
DestroyObject(spark[i]);
DestroyObject(dim[i]);
}
vzriv = false;
}
public OnFilterScriptExit()
{
for(new i=0; i<sizeof(obj); i++)
DestroyDynamicObject(obj[i]);
Delete3DTextLabel(play);
return 1;
}
Последнее редактирование:
