PDA

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



BaBuIIIkaDrifteR
03.03.2015, 09:16
Привет ребята как сделать в SnowPlayerDialog, что бы можно было вписывать сначала id игрока - а после текст?

Пример:

SnowPlayerDialog(playerid,0,DIALOG_STYLE_INPUT,"Это диалог :D");
Нам откроется окно где вводить текст, там вводим: 25 Как ввести команду?
"25" - Это ид игрока
"Как ввести команду" - Это сообщение будет для 25id's

И хелперам придет смс игрок "Вася" вспросил: как ввести команду.

gangzone.ini
03.03.2015, 11:16
OnDialogResponse:


if(dialogid == 0)
{
if(response)
{
if(!strlen(inputtext))
{
//Тут мы вписываем в окошко текст
SnowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT,"Это диалог :D");
return true;
}
format(string, sizeof(string), "[id: %d] text: %s", playerid, inputtext);
SendHelperMessage(-1, string);
}
else
{
//Вышли с диалога
}
}

Mazzilla
03.03.2015, 13:54
if(dialogid == 0)
{
if(response)
{
if(!strlen(inputtext))
{
//Тут мы вписываем в окошко текст
SnowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT,"Это диалог :D");
return true;
}
new dialog_id, dialog_text[25], string[41];
sscanf(inputtext, "is[25]", dialog_id, dialog_text);
format(string, sizeof(string), "[id: %d] text: %s", dialog_id, dialog_text);
SendClientMessage(playerid, -1, string);
return true;
}
else
{
//Вышли с диалога
return true;
}
}

BaBuIIIkaDrifteR
03.03.2015, 20:55
if(dialogid == 0)
{
if(response)
{
if(!strlen(inputtext))
{
//Тут мы вписываем в окошко текст
SnowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT,"Это диалог :D");
return true;
}
new dialog_id, dialog_text[25], string[41];
sscanf(inputtext, "is[25]", dialog_id, dialog_text);
format(string, sizeof(string), "[id: %d] text: %s", dialog_id, dialog_text);
SendClientMessage(playerid, -1, string);
return true;
}
else
{
//Вышли с диалога
return true;
}
}
Не не то.
Смотри допустим репорт: игрок вводит команду /report, ему высвечивается диалог.
Игрок вводит в диалоге (id игрока) и (жалоба).

Админу приходит смс: Игрок "Вася" жалуется на игрока "Петя", жалоба: Читер [ПРИМЕР]

Mazzilla
03.03.2015, 21:03
playerid - айди игрока, подавшего жалобу; dialog_id - айди игрока, на кого жалоба; dialog_text - текст жалобы - в чём проблемы?

BaBuIIIkaDrifteR
03.03.2015, 21:13
playerid - айди игрока, подавшего жалобу; dialog_id - айди игрока, на кого жалоба; dialog_text - текст жалобы - в чём проблемы?

То есть я правильно щас сформулировал твой код?

if(!strlen(inputtext))
{
//Тут мы вписываем в окошко текст
SPD(playerid,12312,DIALOG_STYLE_INPUT,"Репорт","ID игрока Текст жалобы","Отправить","Выход");
return true;
}
new dialog_id, dialog_text[25], stringD[41];
sscanf(inputtext, "is[25]", dialog_id, dialog_text);
format(stringD, sizeof(stringD), "Игрок:(%s), Жалуется на игрока [%s/id: %d] | text: %s",pNick(playerid),pNick(dialog_id),dialog_id,dialog_text);
SendClientMessage(playerid,-1,stringD);

- - - Добавлено - - -

Если правельно, то как быть если игрок введет в диалоге: Я жалуюсь
|без ID игрока? Или введет ид того игрока которого нету.

Mazzilla
03.03.2015, 21:48
Говорят, что вопрос - половина ответа. Думаем.

BaBuIIIkaDrifteR
03.03.2015, 21:56
Говорят, что вопрос - половина ответа. Думаем.


//=====================================//
if(!strlen(inputtext)) return SPD(playerid,12312,DIALOG_STYLE_INPUT,"Репорт","ID игрока Текст жалобы","Отправить","Выход");
sscanf(inputtext,"is[25]",dialog_id,dialog_text);
format(string,sizeof(string),"Игрок:(%s), Жалуется на игрока [%s/id: %d] | text: %s",pNick(playerid),pNick(dialog_id),dialog_id,dialog_text);
SendClientMessage(playerid,0xFF0000AA,string);
if(!strlen(inputtext)) return SCM(playerid, -1, "Вы не ввели ID");
//=====================================//
Как то так?

BaBuIIIkaDrifteR
03.03.2015, 23:14
Вот я сделал что бы писало если Нету данного игрока, помогите сделать что бы еще писало: когда вводишь не верный ID игрока.

if(!strlen(inputtext)) return SPD(playerid,12312,DIALOG_STYLE_INPUT,"Репорт","ID игрока Текст жалобы","Отправить","Выход");
sscanf(inputtext,"is[25]",dialog_id,dialog_text);

if(!IsPlayerConnected(dialog_id)) return SPD(playerid,12312,DIALOG_STYLE_INPUT,"Репорт","{FF0000}ТЕСТ: Игрок с данным ID отсутствует на сервере.","Отправить","Выход");

format(string,sizeof(string),"Игрок:(%s), Жалуется на игрока [%s/id: %d] | text: %s",pNick(playerid),pNick(dialog_id),dialog_id,dialog_text);
SendClientMessage(playerid,0xFF0000AA,string);

Mazzilla
04.03.2015, 14:06
Оно и так будет писать с вашей-то проверкой.

BaBuIIIkaDrifteR
04.03.2015, 20:25
Оно и так будет писать с вашей-то проверкой.

Нет не пишет.
Я ввожу в диалоге допустим: 'Текст Текст' | Отправляет сообщение.
А должно быть: если я ввожу в диалоге: 'Текст Текст' / Мне писало бы "Вы не ввели ID игрока"

BaBuIIIkaDrifteR
05.03.2015, 07:44
Уже эту проверку под каждой строкой проверил не работает =(
А точнее как сделать проверку сначала написали игрок dialog_id, а потом написал ли игрок dialog_text

$continue$
05.03.2015, 14:38
Уже эту проверку под каждой строкой проверил не работает =(
А точнее как сделать проверку сначала написали игрок dialog_id, а потом написал ли игрок dialog_text

if(!dialog_id || dialog_text == "\null") return 1;

BaBuIIIkaDrifteR
05.03.2015, 14:54
if(!dialog_id || dialog_text == "\null") return 1;

Что означает
\null"?
И код if(!dialog_id || dialog_text == "\null") return 1; Не подходит (

$continue$
05.03.2015, 16:01
По каким это он параметрам не подходит?

L0ndl3m
05.03.2015, 17:46
if(!dialog_id || dialog_text == "\null") return 1;
Что за бред?

$continue$
05.03.2015, 17:59
Что за бред?
В чем бред?

L0ndl3m
05.03.2015, 18:10
dialog_text == "\null"
Именно в pawn это бред, так как нужно использовать strcmp. И да, если длина строка равна нулю, она возвращает "null", а не "\null".

$continue$
05.03.2015, 18:23
dialog_text == "\null"
Именно в pawn это бред, так как нужно использовать strcmp. И да, если длина строка равна нулю, она возвращает "null", а не "\null".

strelen можно тогда заюзать...
if(!dialog_id || strlen(dialog_text) == 0) return 1;

Mazzilla
05.03.2015, 18:49
Нет не пишет.
Я ввожу в диалоге допустим: 'Текст Текст' | Отправляет сообщение.
А должно быть: если я ввожу в диалоге: 'Текст Текст' / Мне писало бы "Вы не ввели ID игрока"
Попробуйте в sscanf i заменить на u.


strelen можно тогда заюзать...
if(!dialog_id || strlen(dialog_text) == 0) return 1;
!dialog_id = 0 - отсеиваем нулевой айди?

BaBuIIIkaDrifteR
06.03.2015, 15:54
Попробуйте в sscanf i заменить на u.

Заменил все равно не получается. Может я не туда ставлю ?


sscanf(inputtext,"us[60]",dialog_id,dialog_text);
if(!strlen(inputtext)) return SPD(playerid,0,DIALOG_STYLE_INPUT,"Репорт","ID игрока Текст жалобы","Отправить","Выход");
if(!IsPlayerConnected(dialog_id)) return SPD(playerid,0,DIALOG_STYLE_INPUT,"Тест","Игрок с данным ID нет.","Отпр","Выход");
format(string,sizeof(string),"Игрок:(%s), Жалуется на игрока [%s/id: %d] | text:
%s",pNick(playerid),pNick(dialog_id),dialog_id,dialog_text);
SendClientMessage(playerid,0xFF0000AA,string);

BaBuIIIkaDrifteR
07.03.2015, 03:03
Актуально!

BaBuIIIkaDrifteR
09.03.2015, 01:37
Актуально!

[ForD]
09.03.2015, 08:11
В общем лень вникать в суть,но как я понял система заключается в том что есть игрок,он хочет подать жалобу или что то там на другого игрока и почему бы не сделать так
игрок вводит команду
выдаем диалог куда нужно висать ид нарушителя
далее записываем введенный ид в переменную
далее выводим диалог куда нужно вписать текст
далее форматируем по своему усмотрению текст и отсылаем хелперам или кому то там отформатированный текст,или я не совсем так понял сути?

BaBuIIIkaDrifteR
09.03.2015, 09:31
;59407']В общем лень вникать в суть,но как я понял система заключается в том что есть игрок,он хочет подать жалобу или что то там на другого игрока и почему бы не сделать так
игрок вводит команду
выдаем диалог куда нужно висать ид нарушителя
далее записываем введенный ид в переменную
далее выводим диалог куда нужно вписать текст
далее форматируем по своему усмотрению текст и отсылаем хелперам или кому то там отформатированный текст,или я не совсем так понял сути?

Вводим команду открывается диалог, куда игрок должен ввести [ (id игрока) (текст) ], это все работает.

Но надо если ты не ввел (ID игрока) писало "вы забыли ввести ID", если не ввел (текст) писало "Вы забыли ввести текст" и не чего не отправлялось бы, если ты не ввел id или текст. Когда ввел ID и текст, только тогда жалоба отправлялась бы.

BaBuIIIkaDrifteR
13.03.2015, 00:51
Актутально

BaBuIIIkaDrifteR
13.03.2015, 23:44
Вот сделал скрины как получается.

1. Пример ввожу только ID игрока, текст жалобы не ввожу!
http://s1.hostingkartinok.com/uploads/images/2015/03/7386c6ed7bc00385e179fe69b1cd1cd0.png
Что выдает в чат ?
http://s1.hostingkartinok.com/uploads/images/2015/03/de0176c07d535f6d14284f14f11f711e.png (http://hostingkartinok.com/show-image.php?id=de0176c07d535f6d14284f14f11f711e)

2. Ввожу только жалобу без ID игрока
http://s1.hostingkartinok.com/uploads/images/2015/03/87256a56e219e34503cb13c26a46ef43.png (http://hostingkartinok.com/show-image.php?id=87256a56e219e34503cb13c26a46ef43)
Что выдает в чат?
http://s1.hostingkartinok.com/uploads/images/2015/03/de0176c07d535f6d14284f14f11f711e.png (http://hostingkartinok.com/show-image.php?id=de0176c07d535f6d14284f14f11f711e)

3.Ввожу заместо id игрока, текст жалобы и текст жалобы
http://s1.hostingkartinok.com/uploads/images/2015/03/31c26c57a16a07e67efe113b101ebc55.png (http://hostingkartinok.com/show-image.php?id=31c26c57a16a07e67efe113b101ebc55)
Что выдает в чат?
http://s1.hostingkartinok.com/uploads/images/2015/03/de0176c07d535f6d14284f14f11f711e.png (http://hostingkartinok.com/show-image.php?id=de0176c07d535f6d14284f14f11f711e)

Как сделать что бы при нажатие кнопки "Отправить" не отправлялась в таких случаях?
Пока не напишешь ID игрока и Текст жалобы, только после этого отправилось!
Еще раз мой код

sscanf(inputtext,"is[60]",dialog_id,dialog_text);
if(!strlen(inputtext)) return SPD(playerid,12312,DIALOG_STYLE_INPUT,"{0099CC}» {FFFFFF}Игровое Меню {0099CC}» {FFFFFF}Правила {0099CC}» {FFFFFF}Пожаловаться на игрока","{FFFFFF}ID игрока \tТекст жалобы\n\n{0099CC}Пример жалобы: {FFFFFF}55 таранит меня на мероприятии","Отправить","Назад");
if(!IsPlayerConnected(dialog_id)) return SPD(playerid,12312,DIALOG_STYLE_INPUT,"{0099CC}» {FFFFFF}Игровое Меню {0099CC}» {FFFFFF}Правила {0099CC}» {FFFFFF}Пожаловаться на игрока","{FFFFFF}ID игрока \tТекст жалобы\n\n{FF0000}Ошибка: {FFFFFF}Игрок с данным ID отсутствует на сервере.\n{0099CC}Пример жалобы: {FFFFFF}55 таранит меня на мероприятии\n","Отправить","Назад");
format(string,sizeof(string),"{0099CC}Energy Drift: {FFFFFF}Жалоба от игрока '{%06x}%s[%d]{FFFFFF}' на игрока '{%06x}%s[%d]{FFFFFF}'",GetPlayerColor(playerid) >>> 8,pNick(playerid),playerid,GetPlayerColor(dialog_id) >>> 8,pNick(dialog_id),dialog_id);
AdminMessege(-1,string,1);
format(string,sizeof(string),"{0099CC}Energy Drift: {FFFFFF}Причина: {0099CC}%s{FFFFFF}.",dialog_text);
AdminMessege(-1,string,1);

$continue$
14.03.2015, 00:40
Попробуй так:


#define is_null(%0) (strcmp(%0,"NULL",false) == 0) // Ко всем define или в начало мода
sscanf(inputtext,"is[60]",dialog_id,dialog_text);
if(!strlen(inputtext)) return SPD(playerid,12312,DIALOG_STYLE_INPUT,"{0099CC}» {FFFFFF}Игровое Меню {0099CC}» {FFFFFF}Правила {0099CC}» {FFFFFF}Пожаловаться на игрока","{FFFFFF}ID игрока \tТекст жалобы\n\n{0099CC}Пример жалобы: {FFFFFF}55 таранит меня на мероприятии","Отправить","Назад");
if(dialog_text == is_null(dialog_text)) return AdminMessege(-1,"Вы не ввели текст",1);
if(!IsPlayerConnected(dialog_id)) return SPD(playerid,12312,DIALOG_STYLE_INPUT,"{0099CC}» {FFFFFF}Игровое Меню {0099CC}» {FFFFFF}Правила {0099CC}» {FFFFFF}Пожаловаться на игрока","{FFFFFF}ID игрока \tТекст жалобы\n\n{FF0000}Ошибка: {FFFFFF}Игрок с данным ID отсутствует на сервере.\n{0099CC}Пример жалобы: {FFFFFF}55 таранит меня на мероприятии\n","Отправить","Назад");
format(string,sizeof(string),"{0099CC}Energy Drift: {FFFFFF}Жалоба от игрока '{%06x}%s[%d]{FFFFFF}' на игрока '{%06x}%s[%d]{FFFFFF}'",GetPlayerColor(playerid) >>> 8,pNick(playerid),playerid,GetPlayerColor(dialog_id) >>> 8,pNick(dialog_id),dialog_id);
AdminMessege(-1,string,1);
format(string,sizeof(string),"{0099CC}Energy Drift: {FFFFFF}Причина: {0099CC}%s{FFFFFF}.",dialog_text);
AdminMessege(-1,string,1);

BaBuIIIkaDrifteR
14.03.2015, 01:06
Попробуй так:


#define is_null(%0) (strcmp(%0,"NULL",false) == 0) // Ко всем define или в начало мода
sscanf(inputtext,"is[60]",dialog_id,dialog_text);
if(!strlen(inputtext)) return SPD(playerid,12312,DIALOG_STYLE_INPUT,"{0099CC}» {FFFFFF}Игровое Меню {0099CC}» {FFFFFF}Правила {0099CC}» {FFFFFF}Пожаловаться на игрока","{FFFFFF}ID игрока \tТекст жалобы\n\n{0099CC}Пример жалобы: {FFFFFF}55 таранит меня на мероприятии","Отправить","Назад");
if(dialog_text == is_null(dialog_text)) return AdminMessege(-1,"Вы не ввели текст",1);
if(!IsPlayerConnected(dialog_id)) return SPD(playerid,12312,DIALOG_STYLE_INPUT,"{0099CC}» {FFFFFF}Игровое Меню {0099CC}» {FFFFFF}Правила {0099CC}» {FFFFFF}Пожаловаться на игрока","{FFFFFF}ID игрока \tТекст жалобы\n\n{FF0000}Ошибка: {FFFFFF}Игрок с данным ID отсутствует на сервере.\n{0099CC}Пример жалобы: {FFFFFF}55 таранит меня на мероприятии\n","Отправить","Назад");
format(string,sizeof(string),"{0099CC}Energy Drift: {FFFFFF}Жалоба от игрока '{%06x}%s[%d]{FFFFFF}' на игрока '{%06x}%s[%d]{FFFFFF}'",GetPlayerColor(playerid) >>> 8,pNick(playerid),playerid,GetPlayerColor(dialog_id) >>> 8,pNick(dialog_id),dialog_id);
AdminMessege(-1,string,1);
format(string,sizeof(string),"{0099CC}Energy Drift: {FFFFFF}Причина: {0099CC}%s{FFFFFF}.",dialog_text);
AdminMessege(-1,string,1);


Не помогло

BaBuIIIkaDrifteR
18.03.2015, 05:25
Актуально.

Mazzilla
18.03.2015, 08:46
А такое если попробовать?

if(strfind(inputtext, " ", true) == -1) return SPD(playerid,12312,DIALOG_STYLE_INPUT,"{0099CC}» {FFFFFF}Игровое Меню {0099CC}» {FFFFFF}Правила {0099CC}» {FFFFFF}Пожаловаться на игрока","{FFFFFF}ID игрока \tТекст жалобы\n\n{0099CC}Пример жалобы: {FFFFFF}55 таранит меня на мероприятии","Отправить","Назад");

BaBuIIIkaDrifteR
18.03.2015, 09:21
А такое если попробовать?

if(strfind(inputtext, " ", true) == -1) return SPD(playerid,12312,DIALOG_STYLE_INPUT,"{0099CC}» {FFFFFF}Игровое Меню {0099CC}» {FFFFFF}Правила {0099CC}» {FFFFFF}Пожаловаться на игрока","{FFFFFF}ID игрока \tТекст жалобы\n\n{0099CC}Пример жалобы: {FFFFFF}55 таранит меня на мероприятии","Отправить","Назад");

Джекпот ))) Работает спасибки. От души душевно в душу предушевно =D