Message со встроенным форматом
#1

Суть в том что если сделать вот так: Message(playerid, color, "Param1 = %d, Param2 = %d", param1, param2);

Форматируется только param1, а на месте param2 будет пусто.

Например: "Param1 = 1, Param2 = "

pawn Code:
stock Message(playerid, color, msg[], {Float,_}:...){
static const STATIC_ARGS = 3;
new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
if(n){
new message[256], arg_start, arg_end;
#emit CONST.alt msg
#emit LCTRL 5
#emit ADD
#emit STOR.S.pri arg_start
#emit LOAD.S.alt n
#emit ADD
#emit STOR.S.pri arg_end
do{
#emit LOAD.I
#emit PUSH.pri
arg_end -= BYTES_PER_CELL;
#emit LOAD.S.pri arg_end
}
while (arg_end > arg_start);
// Push the static format parameters.
#emit PUSH.S msg
#emit PUSH.C 128
#emit PUSH.ADR message
n += BYTES_PER_CELL * 3;
#emit PUSH.S n
#emit SYSREQ.C format
n += BYTES_PER_CELL;
#emit LCTRL 4
#emit LOAD.S.alt n
#emit ADD
#emit SCTRL 4
return SendClientMessage(playerid, color, message);
}else{
return SendClientMessage(playerid, color, msg);}}
Reply
#2

Зачем заниматься ерудной? Обычный формат используйте.
Reply
#3

Quote:
Originally Posted by OKStyle
View Post
Зачем заниматься ерудной? Обычный формат используйте.
Обычный формат для слабаков ^^
Reply
#4

Данный код медленнее. Доказано нами при написании подобного для вывода форматированного диалога.
Reply
#5

Плохо что в pawn нельзя делать вот так:
PHP Code:
SendClientMessage(playerid, -1"Деньги: " money ", Убийств: " kills "."); 
Было бы круто)
Reply
#6

Quote:
Originally Posted by OKStyle
View Post
Данный код медленнее. Доказано нами при написании подобного для вывода форматированного диалога.
Да как бы без разницы, я уже нашел другой вариант, рабочий в отличии от этого
Reply
#7

Quote:
Originally Posted by Kolstin
View Post
Плохо что в pawn нельзя делать вот так:
PHP Code:
SendClientMessage(playerid, -1"Деньги: " money ", Убийств: " kills "."); 
Было бы круто)
Так можно делать только в интерпретируемых языках. И нет, это не круто.
Reply
#8

Quote:
Originally Posted by Stepashka
View Post
Так можно делать только в интерпретируемых языках. И нет, это не круто.
Почему не круто? Мне кажется было бы очень удобно. В этом есть минусы?
Reply
#9

Quote:
Originally Posted by Kolstin
View Post
Почему не круто? Мне кажется было бы очень удобно. В этом есть минусы?
Да, давно известный и значительный:
Code:
"Деньги: " + 1 + (2 + 6) + 8 + ", Убийств: " + kills + "."
Что в данном случае будет в конечном варианте, конкатенация или сложение?
Да символ можно заменить, но увы практически все символы используются.

Или как вариант попробуйте при помощи конкатенация вывести дробное число у которого всегда 5 символов перед запятой, заполняем недостающее по средствам тире, и 3 после запятой, недостающее заполнить нулями.
Reply
#10

В скобках сложение, без них конкатенация. Вроде бы так.
Reply
#11

Quote:
Originally Posted by stabker
View Post
В скобках сложение, без них конкатенация. Вроде бы так.
В том-то и дело что не факт.
Reply
#12

Quote:
Originally Posted by Stepashka
View Post
Так можно делать только в интерпретируемых языках. И нет, это не круто.
В C++ std:: string же можно.
Reply
#13

Quote:
Originally Posted by ZiGGi
View Post
В C++ std:: string же можно.
Это не отменяет того что это интерпретация, хоть и не в интерпретируемом языке.
Reply
#14

лови перед этим создавай переменную для строки.
pawn Code:
#define SCMF(%0,%1,%2,%3,%4) format(%0, sizeof(%0),%3,%4) && SendClientMessage(%1, %2, %0)
вместо %0 вставляете имя переменной пример
pawn Code:
new tmp[256];
SCMF(tmp,playerid,0xFFFFFFFF,"Welcome to server, %s!",GetName(playerid));
Reply
#15

Quote:

Это не отменяет того что это интерпретация, хоть и не в интерпретируемом языке.

В каком месте работа с шаблонами это интерпретация? Просто компилятор подменяет "A"+"B" на "A".join("B")
Reply
#16

Quote:
Originally Posted by jhonyxakep
View Post
В каком месте работа с шаблонами это интерпретация? Просто компилятор подменяет "A"+"B" на "A".join("B")
Потому что это и есть интерпретация.
Reply
#17

Quote:
Originally Posted by Stepashka
View Post
Потому что это и есть интерпретация.
Давайте назовём процесс компиляции интерпретацией[SARCASM]
Reply
#18

Quote:
Originally Posted by Bombo
View Post
Давайте назовём процесс компиляции интерпретацией[SARCASM]
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)