PDA

Просмотр полной версии : [Function] UpdateActor3DTextLabelText



Snoop_Dog
19.07.2015, 19:47
Здравствуйте! Решил попробовать написать функция.

Суть функции:
| Показывает текст над актёром
| Есть анимация разговора
Параметры:
| actorid - ID актёра.
| Text3D:id - ID 3D текста.
| const text[] - Текст.
| interval - Время через которое пропадёт текст(указывать в миллисекундах).
Важно:
| Нужно обязательно создать переменную для actorid.

new actorsay;
actorsay = CreateActor(...,...)

| Нужно обязательно создать переменную для Text3D:id

new Text3D:sayactor;
sayactor = CreateDynamic3DTextLabel(...,...)

| 3D текст на плагине streamer, кто не использует то заменить на стандарт!

Собственно сама функция:
В конец мода

stock UpdateActor3DTextLabelText(actorid, Text3D:id, const text[], interval)
{
ApplyActorAnimation(actorid, "PED", "IDLE_CHAT", 4.1, 0, 1, 1, 0, 0);
UpdateDynamic3DTextLabelText(id, COLOR_WHITE, text);
SetTimerEx("ClearActorText", interval, false, "ii", actorid, id);
//printf("Задействован актёр: %d!", actorid);
}
function ClearActorText(actorid, Text3D:id)
{
ClearActorAnimations(actorid);
UpdateDynamic3DTextLabelText(id, COLOR_WHITE, "");
}

UpdateActor3DTextLabelText(actorsay, sayactor, "Привет! Меня зовут Джон.", 2000);

Ну как то так.
Автор: я, Snoop_Dog
У меня все работает,ошибок не должно быть

$continue$
19.07.2015, 19:54
void? :read::shock::rofl:
Ну коль void, какого черта возвращает значение?
Это так, для общего развития:
http://i.imgur.com/2pwOIxl.png
P.S: Зачем Вы убрали возвращение значение? Наверняка будет варнинг, что не какого значения не возвращается.
Просто я ору, с такого название директивы. void - С++ объявление функций, для которого не нужно возвращать не какого конкретного значения.

$continue$
19.07.2015, 20:30
Если уж, Вам лень прописывать каждый раз


foward name(...);
public name(...)

Можно у Lua позаимствовать объявление функции, что то типо такого:


#define function%0(%1) \
forward%0(%1); \
public%0(%1)

Но, я не очень люблю такие директивы.

Daniel_Cortez
19.07.2015, 20:37
void? :read::shock::rofl:
Ну коль void, какого черта возвращает значение?
Так это ж ещё один макрос с govno-info, наравне с publics.
Кому вообще нужна логика? Это же g-i.

Snoop_Dog
19.07.2015, 20:39
Так это ж ещё один макрос с govno-info, наравне с publics.
Кому вообще нужна логика? Это же g-i.

Что он так сильно плох?
#define void%0(%1) forward%0(%1); public%0(%1)

$continue$
19.07.2015, 20:45
Что он так сильно плох?
#define void%0(%1) forward%0(%1); public%0(%1)
Название - не отображает суть макроса.

Daniel_Cortez
19.07.2015, 20:45
Что он так сильно плох?
#define void%0(%1) forward%0(%1); public%0(%1)
https://ru.m.wikipedia.org/wiki/Void

В качестве имени типа значения, возвращаемого функцией: указывает на то, что функция не возвращает значения, а вызов такой функции является void-выражением.
По сути вы просто берёте ключевое слово из C/C++ и объявляете его в Pawn с совершенно другим назначением, переиначивая его смысл. Это даже хуже, чем просто отсутствие смысла, как в макросе "publics". Но для govno-info и так сойдёт =)

$continue$
19.07.2015, 20:53
Но для govno-info и так сойдёт =)
:lol:
Автор: Я вам предложил как можно сделать. Это хотя бы будет отображать суть макроса.

Desulaid
19.07.2015, 23:20
Я обычно Callback 'ом именую. А что. Звучит :D


#define Callback:%1(%2) \
forward %1(%2); public %1(%2)

$continue$
19.07.2015, 23:24
Я обычно Callback 'ом именую. А что. Звучит :D


#define Callback:%1(%2) \
forward %1(%2); public %1(%2)

Fail. (https://ru.wikipedia.org/wiki/Callback_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29)
Вкратце: callback - авто вызываемая функция.