shape1
shape2
shape3
shape4
shape7
shape8

Создание ворот с таймером (подробное описание)

  • Автор темы Amfy
  • Дата начала

A

Amfy

Гость
Гость
Для того чтобы создать открывающие/закрывающие ворота для фракции, необходимо сначало поставить объект ворот. Сделать это можно при помощи старой и доброй МТА или Samp Map Construction for Criminal Russia, ну или же через скрипт soe. Ставить ворота нужно в открытом положение и в закрытом.. далее поймете зачем и почему.

Создаем переменную. Ко всем new добавляем:

new gatevorota;

Ко всем forward добавляем:

forward vorotagate();

В public OnGameModeInit вставляем объект закрытых ворот, пример:

gatevorota = CreateObject(980,1587.59997559,-1637.90002441,15.19999981,0,0,0);//980 - ID объекта, далее 3 координаты X, Y, Z, 3 нуля последних - поворот 

В public OnPlayerCommandText вставляем команду:

if(strcmp("/vorotaopen", cmdtext, true, 10) == 0)// /vorotaopen - название команды
{
MoveObject(gatevorota,1597.40002441,-1638.00000000,15.19999981, 3.0);
/*gatevorota - переменная которую мы создали выше и привязали к ней объект 1597.40002441,-1638.00000000,15.19999981 - КООРДИНАТЫ ОТКРЫТЫХ ВОРОТ !!!, 3.0 - скорость передвижения объекта*/
SetTimer("vorotagate", 10000, 0);//Это таймер, через которое время закроются ворота
SendClientMessage(playerid,0xFFFF00AA,"Ворота закроются через 10 секунд!");//Текст при открывании ворот
return 1;//Успешно
}

Теперь в самый конец мода вставляем это:

public vorotagate()
{
MoveObject(gatevorota,1587.59997559,-1637.90002441,15.19999981, 3.0);//КООРДИНАТЫ ЗАКРЫТЫХ ВОРОТ
return 1;
}

Буду вопросы - пиши в данную тему.

Автор: Amfy

 
Последнее редактирование:

Mkirya0

Новичок
Пользователь
28.10.2014
20
2
0
iPsTrange сказал(а):
Хм,ошибочка.Нужно заместо my1vorota заменить на gatevorota.А так спасибо
Вот я маперю чз Map Construction Сделал дом и ворота,и хочу сделать ворота по кмд

Где мне взять кардинаты открытыъ и закрытых ворот?

 
C

compan

Гость
Гость
Самое простое,поставьте закрытые ворота и открытые,вот вам и точные корды.

 

vadim4ok1

Новичок
Пользователь
01.08.2014
179
11
0
Полезная инфа, спасибо, сегодня искал большой респект вам! 

 
C

compan

Гость
Гость
Но есть сложные ворота,допустим как в чинилках или вообще со сложным перемещением.

 

Mkirya0

Новичок
Пользователь
28.10.2014
20
2
0
Я создал ворота.Указал кардинаты открытых и закрытых ворот кмд указал всё как тут написано по инструкции.Только когда пишу кмд для открытия ворота открываются но вместо закрытия улетают

 
C

compan

Гость
Гость
Я создал ворота.Указал кардинаты открытых и закрытых ворот кмд указал всё как тут написано по инструкции.Только когда пишу кмд для открытия ворота открываются но вместо закрытия улетают
Может проще код выложить надо было, вместо того чтобы гадать на кофейной гуще.?

 

Lume

Новичок
Пользователь
07.04.2015
40
1
0
Всё сделал как нужно.
НО ошибка.
 

Код:
C:\Users\Uzer\Desktop\САМЫЙ РАБОЧИЙ МОД НЕ ТРОГАТЬ!!\new.pwn(1818) : error 017: undefined symbol "cmdtext"
 

Mirex

Руководитель проекта
Команда портала
Гл.Администратор
Золотой
21.12.2013
2 512
3
550
0
29
definehost.ru
Скриптер
Lume, "шапку" команды, измените на:

Код:
if(strcmp("/команда",cmd,true) == 0)
 

Lume

Новичок
Пользователь
07.04.2015
40
1
0
Нет всё также осталось!!!
 

Код:
C:\Users\Uzer\Desktop\САМЫЙ РАБОЧИЙ МОД НЕ ТРОГАТЬ!!\new.pwn(1818) : error 017: undefined symbol "cmd"
 
Последнее редактирование модератором:
A

Amfy

Гость
Гость
Lume, посмотри как другие команды в моде начинаются и сделай так же!

 
Последнее редактирование:

Lume

Новичок
Пользователь
07.04.2015
40
1
0
Вот так делают.
 

Код:
if(strcmp(cmd, "/banip", true) == 0)
 

Lume

Новичок
Пользователь
07.04.2015
40
1
0
Но всё равно таже ошибка.Всё вроде бы правильно.

C:\Users\Uzer\Desktop\САМЫЙ РАБОЧИЙ МОД НЕ ТРОГАТЬ!!\new.pwn(1818) : error 017: undefined symbol "cmd"

Может я цикл отправлю,как я делал? Все коды.

 

Lume

Новичок
Пользователь
07.04.2015
40
1
0
Lume, посмотри как другие команды в моде начинаются и сделай так же!
Вот,как я делал всё.

Сделал переменную.

new gatevorota;

Потом добавил forward

forward vorotagate();

Потом добавил обьект закрытых ворот OnGameModeInit

gatevorota = CreateObject(980,2270.1733,-1850.9841,23.3900,0,0,0);

Потом вставил команду в OnPlayerCommandText

if(strcmp(cmd, "/vorotaopen", true) == 0)// /vorotaopen - название команды
{
MoveObject(gatevorota,2270.1733,-1850.9841,23.3900, 3.0);
/*gatevorota - переменная которую мы создали выше и привязали к ней объект 1597.40002441,-1638.00000000,15.19999981 - КООРДИНАТЫ ОТКРЫТЫХ ВОРОТ !!!, 3.0 - скорость передвижения объекта*/
SetTimer("vorotagate", 10000, 0);//Это таймер, через которое время закроются ворота
SendClientMessage(playerid,0xFFFF00AA,"Ворота закроются через 10 секунд!");//Текст при открывании ворот
return 1;//Успешно
}

И последнее public

Код:
public vorotagate()
{
    MoveObject(gatevorota,2269.9351,-1842.3464,23.3900, 3.0);//КООРДИНАТЫ ЗАКРЫТЫХ ВОРОТ
    return 1;
} 
 
C

compan

Гость
Гость
Это ничего что у тебя эти корды: gatevorota = CreateObject(980,2270.1733,-1850.9841,23.3900,0,0,0); не совпадают с этими:  MoveObject(gatevorota,2269.9351,-1842.3464,23.3900, 3.0);//КООРДИНАТЫ ЗАКРЫТЫХ ВОРОТ

 

Lume

Новичок
Пользователь
07.04.2015
40
1
0
Это ничего что у тебя эти корды: gatevorota = CreateObject(980,2270.1733,-1850.9841,23.3900,0,0,0); не совпадают с этими:  MoveObject(gatevorota,2269.9351,-1842.3464,23.3900, 3.0);//КООРДИНАТЫ ЗАКРЫТЫХ ВОРОТ
Исправил,но ошибка всё такая-же!

 
C

compan

Гость
Гость
Киньте сюда эту команду и ещё какую нибудь, любую.

Только нормально выкладывайте.

 

Lume

Новичок
Пользователь
07.04.2015
40
1
0
Киньте сюда эту команду и ещё какую нибудь, любую.

Только нормально выкладывайте.
if(strcmp(cmd, "/kick", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "Подсказка: /kick [ид игрока] [причина]");
return true;
}
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdministrator] >= 1)
{
if(AdminLog[playerid] != 1)
{
SendClientMessage(playerid,COLOR_FADE1,ADMINLOG);
return true;
}
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD1, "Подсказка: /kick [ид игрока] [причина]");
return true;
}
format(string, sizeof(string), "{4f7942}[Crimenal zone RP]{FFFFFF}: %s {FFFFFF}был кикнут администратором{F50518} %s. Причина: %s", giveplayer, sendername, (result));
if(PlayerInfo[giveplayerid][pSex] == 1)
{
format(string, sizeof(string), "{4f7942}[Crimenal zone RP]{FFFFFF}: %s {FFFFFF}был кикнут администратором{F50518} %s. Причина: %s", giveplayer, sendername, (result));
}
else if(PlayerInfo[giveplayerid][pSex] == 2)
{
format(string, sizeof(string), "{4f7942}[Crimenal zone RP]{FFFFFF}: %s {FFFFFF}былa кикнутa администратором{F50518} %s.Причина: %s", giveplayer, sendername, (result));
}
SendClientMessageToAll(COLOR_LIGHTRED, string);
new year, month,day;
getdate(year, month, day);
new coordsstring3[512];
new msg3[] = "{F50518}__________________________________\n\n\t{F50518}Имя: {FFFFFF}%s\n\t{F50518}Кикнул(а): {FFFFFF}%s\n\t{F50518}Дата кика: {FFFFFF}(%d.%d.%d)\n\t{F50518}Причина: {33AA33}%s\n\t{F50518}Чтобы выйти введите: {FFFFFF}/q\n\t{F50518}Форум: {FFFFFF}crimenal.listbb.ru\n\n{F50518}__________________________________";
format(coordsstring3, sizeof coordsstring3, msg3, giveplayer,sendername,day,month,year,result);
ShowPlayerDialog(giveplayerid,822,DIALOG_STYLE_MSGBOX,"- Вы кикнуты -",coordsstring3,"Выход","");
Kick(giveplayerid);
return true;
}
}
}
else
{
format(string, sizeof(string), "Недостаточно прав для использования команды.", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
return true;
}

Ну вот!

 
C

compan

Гость
Гость
Вот так прям под неё поставьте свою команду.

Код:
if(strcmp(cmd, "/kick", true) == 0)
{
    if(IsPlayerConnected(playerid))
    {
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            SendClientMessage(playerid, COLOR_GRAD1, "Подсказка: /kick [ид игрока] [причина]");
            return true;
        }
        giveplayerid = ReturnUser(tmp);
        if (PlayerInfo[playerid][pAdministrator] >= 1)
        {
            if(AdminLog[playerid] != 1)
            {
                SendClientMessage(playerid,COLOR_FADE1,ADMINLOG);
                return true;
            }
            if(IsPlayerConnected(giveplayerid))
            {
                if(giveplayerid != INVALID_PLAYER_ID)
                {
                    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                    GetPlayerName(playerid, sendername, sizeof(sendername));
                    new length = strlen(cmdtext);
                    while ((idx < length) && (cmdtext[idx] <= ' '))
                    {
                        idx++;
                    }
                    new offset = idx;
                    new result[64];
                    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
                    {
                        result[idx - offset] = cmdtext[idx];
                        idx++;
                    }
                    result[idx - offset] = EOS;
                    if(!strlen(result))
                    {
                        SendClientMessage(playerid, COLOR_GRAD1, "Подсказка: /kick [ид игрока] [причина]");
                        return true;
                    }
                    format(string, sizeof(string), "{4f7942}[Crimenal zone RP]{FFFFFF}: %s {FFFFFF}был кикнут администратором{F50518} %s. Причина: %s", giveplayer, sendername, (result));
                    if(PlayerInfo[giveplayerid][pSex] == 1)
                    {
                        format(string, sizeof(string), "{4f7942}[Crimenal zone RP]{FFFFFF}: %s {FFFFFF}был кикнут администратором{F50518} %s. Причина: %s", giveplayer, sendername, (result));
                    }
                    else if(PlayerInfo[giveplayerid][pSex] == 2)
                    {
                        format(string, sizeof(string), "{4f7942}[Crimenal zone RP]{FFFFFF}: %s {FFFFFF}былa кикнутa администратором{F50518} %s.Причина: %s", giveplayer, sendername, (result));
                    }
                    SendClientMessageToAll(COLOR_LIGHTRED, string);
                    new year, month,day;
                    getdate(year, month, day);
                    new coordsstring3[512];
                    new msg3[] = "{F50518}__________________________________\n\n\t{F50518}Имя: {FFFFFF}%s\n\t{F50518}Кикнул(а): {FFFFFF}%s\n\t{F50518}Дата кика: {FFFFFF}(%d.%d.%d)\n\t{F50518}Причина: {33AA33}%s\n\t{F50518}Чтобы выйти введите: {FFFFFF}/q\n\t{F50518}Форум: {FFFFFF}crimenal.listbb.ru\n\n{F50518}__________________________________";
                    format(coordsstring3, sizeof coordsstring3, msg3, giveplayer,sendername,day,month,year,result);
                    ShowPlayerDialog(giveplayerid,822,DIALOG_STYLE_MSGBOX,"- Вы кикнуты -",coordsstring3,"Выход","");
                    Kick(giveplayerid);
                    return true;
                }
            }
        }
        else
        {
            format(string, sizeof(string), "Недостаточно прав для использования команды.", giveplayerid);
            SendClientMessage(playerid, COLOR_GRAD1, string);
        }
    }
    return true;
}
if(strcmp(cmd, "/vorotaopen", true) == 0) 
{ 
    MoveObject(gatevorota,2270.1733,-1850.9841,23.3900, 3.0); 
    SetTimer("vorotagate", 10000, 0); 
    SendClientMessage(playerid,0xFFFF00AA,"Ворота закроются через 10 секунд!"); 
    return 1; 
}
 
Последнее редактирование:

Lume

Новичок
Пользователь
07.04.2015
40
1
0
Вот так прям под неё поставьте свою команду.

if(strcmp(cmd, "/kick", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, "Подсказка: /kick [ид игрока] [причина]");
return true;
}
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdministrator] >= 1)
{
if(AdminLog[playerid] != 1)
{
SendClientMessage(playerid,COLOR_FADE1,ADMINLOG);
return true;
}
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD1, "Подсказка: /kick [ид игрока] [причина]");
return true;
}
format(string, sizeof(string), "{4f7942}[Crimenal zone RP]{FFFFFF}: %s {FFFFFF}был кикнут администратором{F50518} %s. Причина: %s", giveplayer, sendername, (result));
if(PlayerInfo[giveplayerid][pSex] == 1)
{
format(string, sizeof(string), "{4f7942}[Crimenal zone RP]{FFFFFF}: %s {FFFFFF}был кикнут администратором{F50518} %s. Причина: %s", giveplayer, sendername, (result));
}
else if(PlayerInfo[giveplayerid][pSex] == 2)
{
format(string, sizeof(string), "{4f7942}[Crimenal zone RP]{FFFFFF}: %s {FFFFFF}былa кикнутa администратором{F50518} %s.Причина: %s", giveplayer, sendername, (result));
}
SendClientMessageToAll(COLOR_LIGHTRED, string);
new year, month,day;
getdate(year, month, day);
new coordsstring3[512];
new msg3[] = "{F50518}__________________________________\n\n\t{F50518}Имя: {FFFFFF}%s\n\t{F50518}Кикнул(а): {FFFFFF}%s\n\t{F50518}Дата кика: {FFFFFF}(%d.%d.%d)\n\t{F50518}Причина: {33AA33}%s\n\t{F50518}Чтобы выйти введите: {FFFFFF}/q\n\t{F50518}Форум: {FFFFFF}crimenal.listbb.ru\n\n{F50518}__________________________________";
format(coordsstring3, sizeof coordsstring3, msg3, giveplayer,sendername,day,month,year,result);
ShowPlayerDialog(giveplayerid,822,DIALOG_STYLE_MSGBOX,"- Вы кикнуты -",coordsstring3,"Выход","");
Kick(giveplayerid);
return true;
}
}
}
else
{
format(string, sizeof(string), "Недостаточно прав для использования команды.", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
return true;
}
if(strcmp(cmd, "/vorotaopen", true) == 0)
{
MoveObject(gatevorota,2270.1733,-1850.9841,23.3900, 3.0);
SetTimer("vorotagate", 10000, 0);
SendClientMessage(playerid,0xFFFF00AA,"Ворота закроются через 10 секунд!");
return 1;
}
Большое спасибо!!! Вы помогли!!