Last active
December 19, 2015 00:09
-
-
Save SDraw/5866973 to your computer and use it in GitHub Desktop.
Chat in dialog
Idea: Folleah
Code: SDraw
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define FILTERSCRIPT | |
#include <a_samp> | |
#undef MAX_PLAYERS | |
#define MAX_PLAYERS (10) | |
#define FOREACH_NO_BOTS | |
#include <foreach> | |
#define LIST (10) | |
#define INBOX (11) | |
new Iterator:InChat<MAX_PLAYERS>; | |
new Lines[10][128] = {"\n","\n","\n","\n","\n","\n","\n","\n","\n","\n"}; | |
public OnPlayerDisconnect(playerid,reason) | |
{ | |
if(Iter_Contains(InChat,playerid)) Iter_Remove(InChat,playerid); | |
return 1; | |
} | |
public OnPlayerCommandText(playerid,cmdtext[]) | |
{ | |
if(!strcmp(cmdtext,"/chat")) | |
{ | |
if(Iter_Contains(InChat,playerid)) return SendClientMessage(playerid,-1,"Вы уже в чате."); | |
if(Iter_Count(InChat) == 0) ShowPlayerDialog(playerid,LIST,DIALOG_STYLE_MSGBOX,"Состав конференции","Пусто","Войти","Отмена"); | |
else | |
{ | |
new str[256],plname[32]; | |
foreach(new i : InChat) | |
{ | |
GetPlayerName(i,plname,32); | |
format(str,256,"%s%s\n",str,plname); | |
} | |
ShowPlayerDialog(playerid,LIST,DIALOG_STYLE_MSGBOX,"Состав конференции",str,"Войти","Отмена"); | |
} | |
return 1; | |
} | |
return 1; | |
} | |
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) | |
{ | |
if(dialogid == LIST) | |
{ | |
if(response) | |
{ | |
Iter_Add(InChat,playerid); | |
new str[1024]; | |
format(str,64,"_______________________________________________________\n"); | |
for(new i = 0; i < 10; i++) format(str,960,"%s%s",str,Lines[i]); | |
ShowPlayerDialog(playerid,INBOX,DIALOG_STYLE_INPUT,"Чат",str,"Отправить","Выйти"); | |
} | |
return 1; | |
} | |
if(dialogid == INBOX) | |
{ | |
if(response) | |
{ | |
if(strlen(inputtext) == 0) | |
{ | |
new str[1024]; | |
format(str,64,"_______________________________________________________\n"); | |
for(new i = 0; i < 10; i++) format(str,1024,"%s%s",str,Lines[i]); | |
ShowPlayerDialog(playerid,INBOX,DIALOG_STYLE_INPUT,"Чат",str,"Отправить","Выйти"); | |
} | |
else | |
{ | |
new skf[2],lp = 0; | |
while(lp != strlen(inputtext)) | |
{ | |
skf[0] = strfind(inputtext,"{",false,lp); | |
if(skf[0] != -1) | |
{ | |
skf[1] = strfind(inputtext,"}",false,skf[0]); | |
if(skf[1] != -1) | |
{ | |
strdel(inputtext,skf[0],skf[1]+1); | |
lp = skf[0]; | |
} | |
else lp = strlen(inputtext); | |
} | |
else lp = strlen(inputtext); | |
} | |
new bool:pr = true,text[96],li = 0; | |
for(new i = 0; i < 95, i < strlen(inputtext); i++) | |
{ | |
if(inputtext[i] == ' ') | |
{ | |
if(pr) continue; | |
else | |
{ | |
text[li] = inputtext[i]; | |
pr = true; | |
li++; | |
} | |
} | |
else | |
{ | |
text[li] = inputtext[i]; | |
li++; | |
pr = false; | |
} | |
} | |
text[li] = '\0'; | |
if(strlen(text) == 0) | |
{ | |
new str[1024]; | |
format(str,64,"_______________________________________________________\n"); | |
for(new i = 0; i < 10; i++) format(str,1024,"%s%s",str,Lines[i]); | |
ShowPlayerDialog(playerid,INBOX,DIALOG_STYLE_INPUT,"Чат",str,"Отправить","Выйти"); | |
return 1; | |
} | |
new plname[32]; | |
for(new i = 1; i < 10; i++) format(Lines[i-1],96,Lines[i]); | |
GetPlayerName(playerid,plname,32); | |
format(Lines[9],128,"{A9C4E4}%s: {FFFFFF}%s\n",plname,text); | |
new str[1024]; | |
format(str,64,"_______________________________________________________\n"); | |
for(new i = 0; i < 10; i++) format(str,1024,"%s%s",str,Lines[i]); | |
ShowPlayerDialog(playerid,INBOX,DIALOG_STYLE_INPUT,"Чат",str,"Отправить","Выйти"); | |
} | |
} | |
else Iter_Remove(InChat,playerid); | |
return 1; | |
} | |
return 1; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment