Меню
GTA 5
Red Dead Redemption 2 GTA San Andreas
GTA Online GTA 6 GTA 4 GTA Vice City GTA 3 GTA CTW GTA VC Stories GTA LC Stories Rockstar Classics Модмейкерам
Ads
Любая игра из Steam БЕСПЛАТНО!Антикризисная акция от LibertyCity
1Загружай годные файлы к нам в архив
2Подними денег и отправляйся в магазин
3Выбирай игру в Steam и получи ее бесплатно
Прочее
Топ коммент за вчера
Подписывайся!

Урок по созданию сообщений в чат или на экран в SA:MP


Урок по созданию сообщений в чат или на экран в SA:MP    
Сегодня мы изучим:

SendClientMessage, SendClientMessageToAll., SendPlayerMessageToPlayer, SendPlayerMessageToAll, GameTextForPlayer, GameTextForAll и SendDeathMessage

SendClientMessage отправляет сообщение одному из игроков в чат (например ввёл команду, и текст отправился только тебе)
SendClientMessageToAll отправляет сообщение в чат так, что все его могут видеть.

Сейчас объясню, что где используется:

SClM (SendClientMessage), обзову его так – у меня эта функция стоит в OnPlayerConnect – расставляется большое количество пропуска (очищает чат) и пишется текст (какой – не важно), так же использую при командах, или в ПМках (личных сообщениях).

Вид:

SendClientMessage(playerid, color,"Текст");


Смысл данной функции прост:

playerid – узнаёт ID игрока.
color – вписываем цвет (можно так же обратится к define’ам, в прошлом уроке я рассказывал про установку цвета, приводя пример COLOR_RED).
“Текст” – думаю понятно, что в кавычки можно вставить текст.

SClMTA (SendClientMessageToAll) – отправление текстового сообщения в чат всем игрокам. Я использую эту функцию только для показа действия (например: «%s перешел в аэропорт Лос-Сантоса», где %s обычно обозначается как playername, или что-то вроде того) и ещё для отправки в чат автоматических сообщений (при этом привязываю таймер, и как говорили мне – таймер нагружает сервер).

Вид:

SendClientMessageToAll(color,"Текст");


Где как вы уже могли догадаться – color – цвет, а «Текст» - текст, выводимый в чат всем игрокам. Как можно заметить, playerid здесь нет, т.к. это сообщение выходит не одному конкретному игроку, а всем.

Примеры использования каждой функции

SendClientMessage с движением объекта:

Создам объект с именем «Obj» и добавлю движение:

if (strcmp("/move", cmdtext, true, 10) == 0)
    {
        MoveObject(obj,0, 0, 9, 4);
        SendClientMessage(playerid,COLOR_RED,"Объект передвинут");
        return 1;

И закончу его движение:

if (strcmp("/moveback", cmdtext, true, 10) == 0)
    {
        MoveObject(obj,0, 0, 0, 4);
        SendClientMessage(playerid,COLOR_RED,"Объект передвинут обратно");
        return 1;
}


SPMTP (SendPlayerMessageToPlayer) – отправление текстового сообщения в чат определённому игроку от другого игрока.

Вид:

SendPlayerMessageToPlayer(playerid, senderid, «текст»);


Здесь:

Playerid – указан выше – ID (идентификатор) игрока.
Senderid – ID игрока-отправителя.
«Текст» – думаю вам уже понятно, что здесь можно что-то написать.

Пример использования:

Напишу длиннющую команду команду:

    cmd = strtok(cmdtext, idx);
    if(strcmp("/pm", cmd, true) == 0)
    {
        tmp = strtok(cmdtext,idx);

        if(!strlen(tmp) || strlen(tmp) > 5) {
        SendClientMessage(playerid,COLOR_RED, «/pm pID текст»);    
        return 1;
        }

        new id = strval(tmp);
        gMessage = strrest(cmdtext,idx);

        if(!strlen(gMessage)) {
            SendClientMessage(playerid,COLOR_RED, «/pm pID текст»);    
            return 1;
        }

        if(!IsPlayerConnected(id)) {
            SendClientMessage(playerid,COLOR_RED, «Такого игрока нет на сервере»);
            return 1;
        }

        if(playerid != id) {
            GetPlayerName(id,iName,sizeof(iName));
            GetPlayerName(playerid,pName,sizeof(pName));
            format(Message,sizeof(Message),">> %s(%d): %s",iName,id,gMessage);
            [b]SendPlayerMessageToPlayer(playerid, senderid,Message);[/b]
            format(Message,sizeof(Message),"** %s(%d): %s",pName,playerid,gMessage);
            [b]SendPlayerMessageToPlayer(playerid, senderid,Message);[/b]
            PlayerPlaySound(id,1085,0.0,0.0,0.0);
        }
        else {
            SendClientMessage(playerid,COLOR_RED,"Писать ПМ себе – это неприлично");
        }
        return 1;
    }


SPMTA (SendPlayerMessageToAll) – отправление текстового сообщения в общий чат, отправив имя игрока и сообщение (тоже самое, что и sendclientmessagetoall, только при этом в чате присутствует ник игрока).

Вид:

SendPlayerMessageToAll(senderid, «текст»);

Здесь всё тоже самое, что и в SPTMP, только нет функции playerid

Пример использования:

в public OnPlayerText(playerid, text[]) записываю:
{
    new output[128];

    format(output, sizeof(output), "(%d) %s", playerid, text);
    SendPlayerMessageToAll(playerid, output);
    return 0;
}


SendClientMessageToAll с отправлением действия игрока в чат всем игрокам:

Например, если игрок выбрал в меню телепортов «Аэропорт Лос-Сантоса», то в чат отправляется:

SendClientMessageToAll(COLOR_RED, "%s зашел в Аэропорт Лос-Сантоса.", PlayerName);


И переносит на специальную координату:

SetPlayerPos(playerid,pX,pY,pZ);


GameTextForPlayer

Простенькая функция – выводит на экран игроку определённый текст.

Как выглядит:

GameTextForPlayer(playerid, "test", 5000, 3);

Где playerid – ID игрока
«Test» - текст вставляется сюда, всегда вставляется латинскими символами.

Некоторые русские переводы плохие, и я перечислю вам их символы:

Текст вводится капсом (кроме символа-исключения (u - ц)):

A - a
6 – б
B - в
F - г
D - д
E - e, э
G - ж
3 - з
N - и
K - к
L - л
M - м
H - н
O - о
Z - п
P - р
C - с
T - т
Y - у
Q - ф
X - х
u - ц
4 - ч
W - ш, щ
J - ь, ъ
S - ы
U - ю
R - я


Эти символы я взял из собственного опыта и знания.

5000 – это время
3 – тип

Всего я знаю 7 типов:

0 – Тёмно оранжевым цветом в середине экрана, шрифт – Pricedown (то, чем написано Grand Theft Auto на обложке игр серии GTA).
1 – Тоже самое, что и «0», только справа снизу (не в самом низу, а на 1/4 экрана).
2 – Белым цветом в середине экрана, шрифт – OldEnglishText (шрифт, которым написано слово San Andreas на обложке игры).
3 – Тоже самое что и «0», только шрифт – Tahoma (стандартный шрифт написания в MicroSoft Word).
4 – Тоже самое что и «3», только чуть-чуть выше.
5 – Тоже самое что и «3», только белым цветом.
6 – Голубоватым цветом чуть выше середины экрана, шрифт Pricedown.


Следующее – это тот же самый текст, только для всех игроков – GameTextForAll

Пример:

GameTextForAll("test", 5000, 3 );


Тоже самое что и GameTextForPlayer – справедливы все его функции, кроме PlayerID – его не будет, так как этот текст будет показан для всех. Следите за набором текста, указано выше – какие буквы русские будут показаны на экране.

Как обычно пример использования:

Создам объект с именем «Obj»

Добавлю движение:

if (strcmp("/move", cmdtext, true, 10) == 0)
    {
        MoveObject(obj,0, 0, 9, 4);
        GameTextForPlayer(playerid, "O6JEKT ZEPEDBNHYT", 5000, 1); //Написано: Объект передвинут
        return 1;

ну и закончу его движение

if (strcmp("/moveback", cmdtext, true, 10) == 0)
    {
        MoveObject(obj,0, 0, 0, 4);
        GameTextForAll("O6JEKT BEPHYLCR HA CBOE MECTO", 5000, 3 ); //Написано: Объект вернулся на своё место
        return 1;
}


Ну и в конце урока SendDeathMessage – отправляет сообщение о смерти игрока, отображенное под худом (HUD). Я обычно использую эту функцию в public OnPlayerDeath(playerid, killerid, reason).

Вид:

SendDeathMessage(killerid,playerid,reason);


Где:

killerid – ID убийцы (в случае суицида, killerid и playerid могут сравняться, а иногда killerid просто не высвечивается)
playerid – ID убитого
reason – причина смерти (обычно тут используются иконки оружия, но в код они не вписываются, а используется только reason), иногда можно использовать ICON_CONNECT и ICON_DISCONNECT (Иконки присоединения и выхода)

Пример использования:

в public OnPlayerDeath(playerid, killerid, reason) записываю:
{
    SendDeathMessage(killerid, playerid, reason);
    return 1;
}


Егор - Октябрь 2012, специально для LibertyCity.Ru
Понравилась статья?
, · Написать статью


Проголосовать за статью "Урок по созданию сообщений в чат или на экран в SA:MP"
Голосов
 ПлохоПриемлемоСреднеХорошоОтлично 
Рейтинг
1243%

Патч 1.0.3.0 (EN)

21 марта 2009 GTA 4
Патч 1.0.3.0 для английской версии GTA 4 исправляет множество различных проблем, включая проблемы с графикой, мультиплеером и системой управления. Кроме того, увеличена производительность игры.Полный список изменений:GRAPHICS:Interior Lights for ATI ...

GTA San Andreas - Camera Hack v1.2 для windows 7

13 мая 2010 GTA San Andreas
GTA San Andreas - Camera Hack v1.2 для windows 7Наверное многие столкнулись с проблемой что, очень хорошая программа GTA San Andreas - Camera Hack, не работает под windows 7.Проблема в том что из 7-ки зачем то, по удаляли необходимые библиотеки.Но эт...

San Andreas HRT Pack (v1.3 SF)

29 ноября 2010 GTA San Andreas
San Andreas HRT Pack — глобальная модификация для GTA: San Andreas, которая существенно улучшает качество графики, заменяя большую часть старых текстур высококачественными аналогами в высоком разрешении. Тысячи текстур местности были переработаны и о...

Autumn Mod 2.0 HRT

2 декабря 2010 GTA San Andreas
Autumn Mod — осенняя модификация для GTA: San Andreas, которую можно устанавливать как поверх оригинальной игры, так и поверх глобального мода HRT Pack (в таком случае будет больше нововведений). Autumn Mod меняет спрайты травы, текстуры травы на нек...

Вторжение пришельцев

5 декабря 2010 GTA San Andreas
К Сан-Андреасу движутся огромные инопланетные корабли! ФОТО.Три гигантских неопознанных летающих объекта, длина которых составляет десятки километров, движутся по направлению к штату Сан-Андреас, сообщил журналистам некто Истина (The Truth), кашляя, ...

GreenEffects Mod (v1.0)

8 декабря 2010 GTA San Andreas
Green Effects Mod (v.1)-глобальная модификация которая включает:Полностью переработанный файл grass (трава в GTA).Встроенную библиотеку ENBSeries благодаря ей в игре появятся реалистичные отражения на автомобилях, станет более реальной вода и другие ...

Winter Vacation 1.0

25 декабря 2010 GTA San Andreas
Winter Vacation — глобальная модификация, которая приносит в Сан-Андреас атмосферу зимних морозов и надвигающегося Нового года.Несколько областей штата полностью присыпаны снегом: морозы коснулись города Бэйсайд, который расположен в горах, порядочно...

Бар Сальери из «Mafia»

25 декабря 2010 GTA San Andreas
Бар Сальери — заведение из отличнейшей компьютерной игры «Mafia», прекрасно знакомое всем игрокам. Здесь проходили совещания семьи Сальери и решались судьбы противников клана, сюда Томми обратился за помощью и не сделай он этого, все могло бы быть ин...


Информация
Чтобы оставлять комментарии, необходимо зарегистрироваться на сайте.

2
комментарий написан, 4 ноября 2012, 18:40
#
sultan98
Пользователь
Статус:
Комментариев:515
Друзей:4
Репутация: 0
Деньги: 0$
Награды:: 1


Активность на сайте
11%
#
0
неплохой урок

--------------------


--------------------

1
комментарий написан, 28 октября 2012, 19:24
#
EX_EX
Забанен
Статус:
Комментариев:32
Друзей:1
Репутация: 0
Деньги: 0$
Награды:: 1


Активность на сайте
1%
#
0
am ((((((((((

Сообщение отредактировал BENZIN 28.10.2012 в 21:57:40

--------------------


--------------------

Ad
Опрос
Играете ли вы в GTA Online?
Играю
Не играю совсем

Подсчет GTAшников

Рейтинг@Mail.ru





Change language


Помогите нам перевести LibertyCity на другой язык!