commit
0baa643f40
@ -221,7 +221,8 @@ class AOClient : public QObject {
|
||||
{"MUTE", 1ULL << 10},
|
||||
{"UNCM", 1ULL << 11},
|
||||
{"SAVETEST", 1ULL << 12},
|
||||
{"SUPER", ~0ULL },
|
||||
{"FORCE_CHARSELECT",1ULL << 13},
|
||||
{"SUPER", ~0ULL }
|
||||
};
|
||||
|
||||
|
||||
@ -1485,6 +1486,8 @@ class AOClient : public QObject {
|
||||
*/
|
||||
void cmdAfk(int argc, QStringList argv);
|
||||
|
||||
void cmdCharSelect(int argc, QStringList argv);
|
||||
|
||||
///@}
|
||||
|
||||
/**
|
||||
@ -1933,6 +1936,7 @@ class AOClient : public QObject {
|
||||
{"block_dj", {ACLFlags.value("MUTE"), 1, &AOClient::cmdBlockDj}},
|
||||
{"unblockdj", {ACLFlags.value("MUTE"), 1, &AOClient::cmdUnBlockDj}},
|
||||
{"unblock_dj", {ACLFlags.value("MUTE"), 1, &AOClient::cmdUnBlockDj}},
|
||||
{"charselect", {ACLFlags.value("NONE"), 0, &AOClient::cmdCharSelect}}
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -148,16 +148,16 @@ bool AOClient::changeCharacter(int char_id)
|
||||
if(char_id >= server->characters.length())
|
||||
return false;
|
||||
|
||||
if (current_char != "") {
|
||||
area->characters_taken.removeAll(server->getCharID(current_char));
|
||||
}
|
||||
|
||||
if (char_id >= 0) {
|
||||
QString char_selected = server->characters[char_id];
|
||||
bool taken = area->characters_taken.contains(char_id);
|
||||
if (taken || char_selected == "")
|
||||
return false;
|
||||
|
||||
if (current_char != "") {
|
||||
area->characters_taken.removeAll(server->getCharID(current_char));
|
||||
}
|
||||
|
||||
area->characters_taken.append(char_id);
|
||||
current_char = char_selected;
|
||||
}
|
||||
|
@ -317,3 +317,26 @@ void AOClient::cmdAfk(int argc, QStringList argv)
|
||||
is_afk = true;
|
||||
sendServerMessage("You are now AFK.");
|
||||
}
|
||||
|
||||
void AOClient::cmdCharSelect(int argc, QStringList argv)
|
||||
{
|
||||
if (argc == 0) {
|
||||
changeCharacter(-1);
|
||||
sendPacket("DONE");
|
||||
}
|
||||
else {
|
||||
if (!checkAuth(ACLFlags.value("FORCE_CHARSELECT"))) {
|
||||
sendServerMessage("You do not have permission to force another player to character select!");
|
||||
return;
|
||||
}
|
||||
|
||||
bool ok = false;
|
||||
int target_id = argv[0].toInt(&ok);
|
||||
if (!ok)
|
||||
return;
|
||||
|
||||
AOClient* target = server->getClientByID(target_id);
|
||||
target->changeCharacter(-1);
|
||||
target->sendPacket("DONE");
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user