Система личных вербальных сообщений через диалоговые окна.
Автор: OKStyle
PHP:
#include <a_samp>
// Target Message System by O.K.Style™
#define DIALOG_ID_TMS 1000
#define USE_CHAT 1
#define COLOR_SENDER 0xFDE39DFF
#define COLOR_RECEIVER 0xFCFF1DFF
public OnPlayerConnect(playerid)
{
SetPVarInt(playerid, "TargetID", INVALID_PLAYER_ID);
return 1;
}
public OnPlayerUpdate(playerid)
{
new targetplayer = GetPlayerTargetPlayer(playerid);
if(IsPlayerConnected(targetplayer) && targetplayer != INVALID_PLAYER_ID) SetPVarInt(playerid, "TargetID", targetplayer);
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_SECONDARY_ATTACK)
{
if(IsPlayerConnected(GetPVarInt(playerid, "TargetID")) && GetPVarInt(playerid, "TargetID") != INVALID_PLAYER_ID)
{
ClearAnimations(playerid);
new dlg_str[128], PlayerName[MAX_PLAYER_NAME];
GetPlayerName(GetPVarInt(playerid, "TargetID"), PlayerName, sizeof(PlayerName));
SetPVarInt(GetPVarInt(playerid, "TargetID"), "TargetID", playerid);
format(dlg_str, sizeof(dlg_str), "Обращение к %s\n\nВведите текст сообщения:", PlayerName);
ShowPlayerDialog(playerid, DIALOG_ID_TMS, DIALOG_STYLE_INPUT, "TM System", dlg_str, "Отправить", "Отмена");
return 1;
}
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_ID_TMS)
{
if(!response)
{
SetPVarInt(GetPVarInt(playerid, "TargetID"), "TargetID", INVALID_PLAYER_ID);
SetPVarInt(playerid, "TargetID", INVALID_PLAYER_ID);
return 1;
}
new dlg_str[128], PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
format(dlg_str, sizeof(dlg_str), "Сообщение от %s:\n\n%s", PlayerName, inputtext);
SetPVarInt(GetPVarInt(playerid, "TargetID"), "TargetID", playerid);
ShowPlayerDialog(GetPVarInt(playerid, "TargetID"), DIALOG_ID_TMS + 1, DIALOG_STYLE_INPUT, "TM System", dlg_str, "Ответить", "Закрыть");
#if USE_CHAT == 1
format(dlg_str, sizeof(dlg_str), ">> %s", inputtext);
SendClientMessage(playerid, COLOR_SENDER, dlg_str);
format(dlg_str, sizeof(dlg_str), "<< %s", inputtext);
SendClientMessage(GetPVarInt(playerid, "TargetID"), COLOR_RECEIVER, dlg_str);
#endif
}
else if(dialogid == DIALOG_ID_TMS + 1)
{
if(!response)
{
SetPVarInt(GetPVarInt(playerid, "TargetID"), "TargetID", INVALID_PLAYER_ID);
SetPVarInt(playerid, "TargetID", INVALID_PLAYER_ID);
return 1;
}
new dlg_str[128], PlayerName[MAX_PLAYER_NAME];
GetPlayerName(GetPVarInt(playerid, "TargetID"), PlayerName, sizeof(PlayerName));
SetPVarInt(GetPVarInt(playerid, "TargetID"), "TargetID", playerid);
format(dlg_str, sizeof(dlg_str), "Обращение к %s\n\nВведите текст сообщения:", PlayerName);
ShowPlayerDialog(playerid, DIALOG_ID_TMS, DIALOG_STYLE_INPUT, "TM System", dlg_str, "Отправить", "Отмена");
#if USE_CHAT == 1
format(dlg_str, sizeof(dlg_str), ">> %s", inputtext);
SendClientMessage(playerid, COLOR_SENDER, dlg_str);
format(dlg_str, sizeof(dlg_str), "<< %s", inputtext);
SendClientMessage(GetPVarInt(playerid, "TargetID"), COLOR_RECEIVER, dlg_str);
#endif
}
return 0;
}
Последнее редактирование: