Сообщение от
wolfnex
Всем привет. Сделал команду /members, но не могу доделать расширенный функционал. Нужно сделать так, что бы при выборе офлайн/онлайн игрока в диалоге, появлялся еще один диалог с подгрузкой других данных о нём. Не приходит в голову как реализовать. HELP!
На данный момент так реализовано.
CMD:members(playerid, params[]) {
if(player_info
[playerid
][pMember
] < 1) return SendClientMessage(playerid
, COLOR_GREY
, "Вы не уполномочены использовать эту команду."); new query[43 + 2 + 1];
format(query
, sizeof query
, "SELECT * FROM `players` WHERE `Member` = '%d'", player_info
[playerid
][pMember
]); mysql_tquery(dbHandle, query, "CheckMembers", "i", playerid);
return 1;
}
public CheckMembers(playerid) {
new string[256], msgitem[256];
strins(msgitem
, "№\tname\t\tstatus\n", strlen(msgitem
), 14); for(new i = 0, j; i < cache_num_rows(); i++) {
j++;
cache_get_value_name(i, "Name", player_info[i][pName], MAX_PLAYER_NAME);
format(string
, sizeof(string
), "%d.\t%s\t%s\n", j
, player_info
[i
][pName
], (IsPlayerConnected(i
)) ? ("Online") : ("Offline")); }
ShowPlayerDialog(playerid
, DIALOG_ID_NONE
, DIALOG_STYLE_TABLIST_HEADERS, "Члены организации:", msgitem
, "Хорошо", "Отмена"); return 1;
}
UPD: попил пивка и пришла мысль по решению. всем спасибо, сделал то что нужно.
strins не учитывает размер массива, поэтому может записать за пределы. В сети есть исправленная версия(если я не ошибаюсь именно на этом портале).
Ну или можешь сей код:
PHP код:
strins(msgitem, "№\tname\t\tstatus\n", strlen(msgitem), 14);
Расписать по-другому:
PHP код:
new msgitem[256] = "№\tname\t\tstatus\n";
А тут заменить на strcat:
PHP код:
strins(msgitem, string, strlen(msgitem), strlen(string));
WRONG:
Ты пытаешься получить ID найденных полей, но не игроков. В данном случае нужна будет функция, получающая ID игрока по нику.
Я тут чота такое набросал:
PHP код:
stock GetPlayerIDByName(const name[])
{
new playerid = INVALID_PLAYER_ID;
sscanf(name, "u", playerid);
return playerid;
}
Как использовать думаю разберёшься. Да и советую прочитать мануал Daniel'a Cortez'a о выделении памяти, а то вот такое вот не годиться: