Автор XenoN
Это система создания баннера из игры
К всем new:
Code: Select all
new Redact, Banner, Id, Float:X, Float:Y, Float:Z, Float:AX, Float:AY, Float:AZ;
К всем командам:
Code: Select all
if (strcmp("/newbanner", cmd, true, 10) == 0)
{
if(IsPlayerAdmin(playerid) == 1)
{
new Text[20];
Text = strtok(cmdtext, idx);
if(!strlen(Text))
{
SendClientMessage(playerid, 0x00AAF6AA, ".::[BANNER_EDITOR]: Пишите /banner [Текст]");
SendClientMessage(playerid, 0x00AAF6AA, ".::[BANNER_EDITOR]: Текст не более 20 символов, через NUM пробелы");
return 1;
}
GetPlayerPos(playerid, X, Y, Z);
Banner = CreateObject(9314, X+5, Y, Z+0.5, 0, 0, 0);
SetObjectMaterialText(Banner, Text, 0, 120, "Colleg", 45, 1, -1, -65536, 1);
X = X+5;
Z = Z+0.5;
SetPlayerFacingAngle(playerid,-90);
SetCameraBehindPlayer(playerid);
TogglePlayerControllable (playerid, 0);
Id = playerid;
Redact = 1;
SendClientMessage(playerid, 0x00AAF6AA, ".::[BANNER_EDITOR]: Используйте клавиши перемещения для движения и клавишу бега для вращения объекта!");
SendClientMessage(playerid, 0x00AAF6AA, ".::[BANNER_EDITOR]: Чтобы сохранить объект нажмите клавишу прыжка!");
return 1;
}
}
В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys):
Code: Select all
if(playerid == Id)
{
if(Redact == 1)
{
if(newkeys == 32)
{
TogglePlayerControllable (playerid, 1);
SendClientMessage(playerid, 0x00AAF6AA, ".::[BANNER_EDITOR]: Баннер успешно добавлен!");
Redact = 0;
}
if(newkeys == 8)
{
GetObjectRot(Banner, AX, AY, AZ);
SetObjectRot(Banner, AX, AY, AZ+2.5);
}
}
В public OnPlayerUpdate(playerid):
Code: Select all
if(playerid == Id)
{
if(Redact == 1)
{
new Keys,ud,lr;
GetPlayerKeys(playerid,Keys,ud,lr);
if(ud > 0)
{
SetObjectPos(Banner, X-0.25, Y, Z);
X = X-0.25;
}
else if(ud < 0)
{
SetObjectPos(Banner, X+0.25, Y, Z);
X = X+0.25;
}
if(lr > 0)
{
SetObjectPos(Banner, X, Y-0.25, Z);
Y = Y-0.25;
}
else if(lr < 0)
{
SetObjectPos(Banner, X, Y+0.25, Z);
Y = Y+0.25;
}
}
В конец мода:
Code: Select all
stock strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}