23.07.2018, 00:53
hello all
Disclaimer : this method I explored alone in a test server in ultra-h and it won't be existing in another gamemode and if it is ,we're thinking same way and i don't might annoy anyone who does like me .
here we start
first add this in top of script .
this store channel of DiscordUser That pmed Bot that is connected to server in a DM channel so we could pm back ,and store name too
now let's add this function to pm any channel easly but we'll pm DM channel
you don't need to focus in this code alot
main part is the callback
i think i explained there everything .
now we finished
wops forget responding command ,my fault
please rep my work and feedback if you got any problem ,remember its pain in ass to upload test to server and doing this took time ,so reps me
Disclaimer : this method I explored alone in a test server in ultra-h and it won't be existing in another gamemode and if it is ,we're thinking same way and i don't might annoy anyone who does like me .
here we start
first add this in top of script .
Code:
new DCC_Channel:PmedChannel[MAX_PLAYERS]; new PmedUser[32][MAX_PLAYERS];
now let's add this function to pm any channel easly but we'll pm DM channel
Code:
stock SendMessageToChannel(ChannelId[],const string[]) { #if defined dcconnector_included new DCC_Channel:TargetChannel; if (_:TargetChannel == 0) TargetChannel = DCC_FindChannelById(ChannelId); // Discord channel ID DCC_SendChannelMessage(TargetChannel, string); #else format(ChannelId,36,"rgtsd %s",string); // to not get stupid warnnings (non effectable) #endif return 1; }
main part is the callback
Code:
public DCC_OnChannelMessage(DCC_Channel:channel, DCC_User:author, const message[]) { new channel_name[100],DCC_ChannelType:type,user_name[32],idaw[3],dest[128],bool:is_bot; if(!DCC_GetChannelName(channel, channel_name)) return 0; // invalid channel if (!DCC_GetUserName(author, user_name)) return 0; // invalid user DCC_GetChannelId(DCC_Channel:channel, dest); new chann = strval(dest); // getting channel id to pm back channel easly DCC_GetUserId(DCC_User:author, idaw); new userid = strval(idaw); // for security stuffs DCC_IsUserBot(DCC_User:author, is_bot); // to avoid bot spam and rate limit . DCC_GetChannelType(DCC_Channel:channel, DCC_ChannelType:type); // getting channel type and if type is 1 the channel type is DM is when you pm the bot especially if(!is_bot) { switch(type) { case 1: { new pmstring[256]; new xTempCMD[16], xTempCMD2[256],xTempCMD3[256]; sscanf(message[1], "s[16]s[3]s[256]", xTempCMD, xTempCMD2, xTempCMD3);// ah you need sscanf between if(message[0] = "/") { if(!strcmp(xTempCMD, "pm", true))// checking if you insert '/pm' { new id = strval(xTempCMD2); // getting second params 'id' if(IsPlayerConnected(id))//checking if player connected { if(pInfo[id][pLogged] == 1) //something like this if player logged in his acc ,you can delete it if you want { if(pAcc[id][Blockpm] == 0) // check if the tarjet players blocking his pm ,you may delete or change it like your script { format(pmstring,sizeof(pmstring),"{007AFF}[Discord]{faf000} PM From {fcf111}%s(%i): {faf000}%s",user_name,userid,xTempCMD3);// sending message to player SendClientMessage(id,-1,pmstring); PmedChannel[id] = channel ; //stoting channel . format(PmedUser[id],128,"%s",user_name); //storing name } SendMessageToChannel(dest,"[BrainBot] : Requested Player Is Blocking Pms"); // back a message } SendMessageToChannel(dest,"[BrainBot] : Requested Player didn't Log In Yet"); // obvious } SendMessageToChannel(dest,"[BrainBot] : Requested Player Is not connected"); // obvious } } } } } return 1; }
now we finished
wops forget responding command ,my fault
Code:
CMD:r(playerid,params[]) { if(pInfo[playerid][pLogged] == 1) { new message[256],pmstring[256]; if(sscanf(params,"s[256]", message)) return SendClientMessage(playerid,-1,"{0F0F0F}[SYNTAX]:{FF1111}/pm [playerid] [message]");//sscanf of course :D if(pInfo[playerid][pLogged] == 1) { #if defined dcconnector_included new stringme[256],dest[128]; format(stringme,sizeof(stringme),"[PM] Reply From %s(%i): %s",PlayerName(playerid),playerid,message); DCC_GetChannelId(PmedChannel[playerid], dest); SendMessageToChannel(dest, stringme);// backing message to channel format(pmstring,sizeof(pmstring),"{007AFF}[Discord]{faf000} PM To {fcf111}%s : {faf000}%s",PmedUser[playerid],message); SendClientMessage(playerid,-1,pmstring); // showing what player wronte in the message #endif } } return 1; }