SA-MP Forums Archive
Message со встроенным форматом - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Message со встроенным форматом (/showthread.php?tid=546757)



Message со встроенным форматом - lost13 - 17.11.2014

Суть в том что если сделать вот так: 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);}}



Re: Message со встроенным форматом - OKStyle - 18.11.2014

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


Re: Message со встроенным форматом - lost13 - 18.11.2014

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


Re: Message со встроенным форматом - OKStyle - 18.11.2014

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


Re: Message со встроенным форматом - Romz - 18.11.2014

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


Re: Message со встроенным форматом - lost13 - 18.11.2014

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


Re: Message со встроенным форматом - Stepashka - 19.11.2014

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


Re: Message со встроенным форматом - Romz - 19.11.2014

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


Re: Message со встроенным форматом - Stepashka - 19.11.2014

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

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


Re: Message со встроенным форматом - stabker - 19.11.2014

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


Re: Message со встроенным форматом - Stepashka - 19.11.2014

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


Re: Message со встроенным форматом - ZiGGi - 21.11.2014

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


Re: Message со встроенным форматом - Stepashka - 21.11.2014

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


Re: Message со встроенным форматом - long76 - 22.11.2014

лови перед этим создавай переменную для строки.
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));



Re: Message со встроенным форматом - jhonyxakep - 28.11.2014

Quote:

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

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


Re: Message со встроенным форматом - Stepashka - 28.11.2014

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


Re: Message со встроенным форматом - Bombo - 28.11.2014

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


Re: Message со встроенным форматом - Stepashka - 28.11.2014

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