shape1
shape2
shape3
shape4
shape7
shape8

Рация с выбором канала


Mirex

Руководитель проекта
Команда портала
Гл.Администратор
Золотой
21.12.2013
2 512
3
550
0
29
definehost.ru
Скриптер
Описание: Вы используйте команду /canal [1-10000] для выбора нужной вам частоты. После выбора частоты вы автоматический подключаетесь к выбранному вами каналу и можете активно вести общение с помощью команды /rс [текст]. Также другой или иной игрок может подключиться к вашей частоте.
 
Ко всем forward:
forward SendRcanalMessage(canal, color, string[]);

Ко всем new:

new Rcanal[MAX_PLAYERS];
В public OnPlayerConnect добавляем:

Rcanal[playerid] = 0;

В конец мода:

public SendRcanalMessage(canal, color, string[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(Rcanal == canal)
{
SendClientMessage(i, color, string);
}
}
}
}

В public OnPlayerCommandText добавляем команды:

Код:
if(strcmp(cmd, "/rс", true) == 0)
{
    if(!IsPlayerConnected(playerid)) return 1;
    if(PlayerInfo[playerid][pMuted] == 1) return SendClientMessage(playerid, -1, "Вы не можете писать, у вас молчанка");
    if(Rcanal[playerid] < 1) return SendClientMessage(playerid, -1, "Вы не на частоте. Подключитесь, используя /canal (номер канала от 0 по 10000)");
    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)) return SendClientMessage(playerid, -1, "Используйте: /rc [текст]");
    format(string, sizeof(string), "(%d) %s: %s", Rcanal[playerid], sendername, result);
    SendRcanalMessage(Rcanal[playerid], TEAM_CYAN_COLOR, string);
    return 1;
}
if(strcmp(cmd, "/canal", true) == 0)
{
    if(!IsPlayerConnected(playerid)) return 1;
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, -1, "Используйте: /canal [номер канала[(1-10000)]");
    new canal;
    canal = strval(tmp);
    if(canal > 10000|| canal < 1) return SendClientMessage(playerid, -1, "Номер канала от 1 по 10000!");
    Rcanal[playerid] = canal;
    format(string, sizeof(string), "Вы подключились к частоте номер %d", canal);
    SendClientMessage(playerid, COLOR_LIGHTBLUE,string);
    return 1;
}
Автор: NOD32
 
Последнее редактирование модератором:

Krutihine

Участник
Пользователь
10.07.2014
546
187
0
Скриптер
В команде "/canal" надо добавить в конец 

return true;

if(strcmp(cmd, "/canal", true) == 0)
{
if(!IsPlayerConnected(playerid)) return 1;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, -1, "Используйте: /canal [номер канала[(1-10000)]");
new canal;
canal = strval(tmp);
if(canal > 10000|| canal < 1) return SendClientMessage(playerid, -1, "Номер канала от 1 по 10000!");
Rcanal[playerid] = canal;
format(string, sizeof(string), "Вы подключились к частоте номер %d", canal);
SendClientMessage(playerid, COLOR_LIGHTBLUE,string);
}


if(strcmp(cmd, "/canal", true) == 0)
{
if(!IsPlayerConnected(playerid)) return 1;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, -1, "Используйте: /canal [номер канала[(1-10000)]");
new canal;
canal = strval(tmp);
if(canal > 10000|| canal < 1) return SendClientMessage(playerid, -1, "Номер канала от 1 по 10000!");
Rcanal[playerid] = canal;
format(string, sizeof(string), "Вы подключились к частоте номер %d", canal);
SendClientMessage(playerid, COLOR_LIGHTBLUE,string);
return true;




Так-как пишет что команда не известно, но всё работает.

((для новичков))

Всё. Исправлено.
 
Последнее редактирование модератором:

TimurVegas

Новичок
Пользователь
21.03.2014
2
0
0
Помогите не работает команда /rc не чего не пишет когда команду водишь 

 

RusKrut

Новичок
Пользователь
05.05.2015
173
1
0
"forward" в моде нету. Что делать?

 
C

compan

Гость
Гость
@RusKrut, Вот так поставьте.

Код:
forward SendRcanalMessage(canal, color, string[]);
public SendRcanalMessage(canal, color, string[])
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(Rcanal[i] == canal)
            {
                SendClientMessage(i, color, string);
            }
        }
    }
}
 
Последнее редактирование:

RusKrut

Новичок
Пользователь
05.05.2015
173
1
0
, Ошибку выдало. Строчка не та.

Код:
public SendRcanalMessage(canal, color, string[])
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(Rcanal[i] == canal)
            {
                SendClientMessage(i, color, string);
            }
        }
    }
}
Код:
D:\GTA CR IN SA\RRRP\RRRP\gamemodes\gamemod.pwn(41932) : error 021: symbol already defined: "SendRcanalMessage"
 
Последнее редактирование модератором:

Mirex

Руководитель проекта
Команда портала
Гл.Администратор
Золотой
21.12.2013
2 512
3
550
0
29
definehost.ru
Скриптер
@RusKrut, у вас уже существует функция SendRcanalMessage.

Или переименуйте или подпилите уже существующую функцию.

 

Dmitry_Shaddix

Новичок
Пользователь
13.10.2015
150
7
0
Помогите, вышла такая ошибка:

C:\Users\Home\Desktop\Games\Olimp RP\gamemodes\orp.pwn(98) : error 017: undefined symbol "cmd"
C:\Users\Home\Desktop\Games\Olimp RP\gamemodes\orp.pwn(101) : error 017: undefined symbol "PlayerInfo"
C:\Users\Home\Desktop\Games\Olimp RP\gamemodes\orp.pwn(101) : warning 215: expression has no effect
C:\Users\Home\Desktop\Games\Olimp RP\gamemodes\orp.pwn(101) : error 001: expected token: ";", but found "]"
C:\Users\Home\Desktop\Games\Olimp RP\gamemodes\orp.pwn(101) : error 029: invalid expression, assumed zero
C:\Users\Home\Desktop\Games\Olimp RP\gamemodes\orp.pwn(101) : fatal error 107: too many error messages on one line
Всё то, что находится на 101 строке:

Код:
if(PlayerInfo[playerid][pMuted] == 1) return SendClientMessage(playerid, -1, "Вы не можете писать, у вас молчанка");
 
Последнее редактирование модератором:

Mirex

Руководитель проекта
Команда портала
Гл.Администратор
Золотой
21.12.2013
2 512
3
550
0
29
definehost.ru
Скриптер
@Dmitry_Shaddix, PlayerInfo замените на свою переменную игрока. Посмотрите в других командах, если не знаете какая у вас.

 

Dmitry_Shaddix

Новичок
Пользователь
13.10.2015
150
7
0
Ошибки:

C:\Users\Home\Desktop\Games\Olimp RP\gamemodes\orp(2).pwn(1142) : error 029: invalid expression, assumed zero
C:\Users\Home\Desktop\Games\Olimp RP\gamemodes\orp(2).pwn(1142) : error 029: invalid expression, assumed zero
C:\Users\Home\Desktop\Games\Olimp RP\gamemodes\orp(2).pwn(1142) : error 029: invalid expression, assumed zero
C:\Users\Home\Desktop\Games\Olimp RP\gamemodes\orp(2).pwn(1142) : fatal error 107: too many error messages on one line

Строка 1142:

for(new i = 0; i < MAX_PLAYERS; i++)

Что делать? Помогите.

 

Dmitry_Shaddix

Новичок
Пользователь
13.10.2015
150
7
0
@Снеговик, Вот public

Код:
publics SendRcanalMessage(canal, color, string[])
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(Rcanal[i] == canal)
            {
                SendClientMessage(i, color, string);
            }
        }
    }
}
 

Снеговик

Сказочник
Пользователь
25.12.2015
19
9
0
Почему publics, а не public

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

Batka1337

Хацкер-программист
Пользователь
08.12.2014
363
154
0
26
Всё неплохо, но пару моментов.....
Зачем использовать public, если можно сделать stock?
Так же по самому этому public'у
 

Код:
public SendRcanalMessage(canal, color, string[])
{
	foreach(new i : Player)
    {
        if(!IsPlayerConnected(i)) continue;
        if(Rcanal[i] == canal) SendClientMessage(i, color, string);
    }
}