Esempio n. 1
0
void CopyTriggersCommand::execute(Character *player, const QString &command) {

    super::prepareExecute(player, command);

    if (!assertWordsLeft("Usage: copy-triggers <source-item> [#] <destination-item> [#]")) {
        return;
    }

    GameObjectPtr sourceItem = takeObject(currentRoom()->items() + currentRoom()->characters());
    if (!requireSome(sourceItem, "Source item not found.")) {
        return;
    }

    GameObjectPtr destinationItem = takeObject(currentRoom()->items() +
                                               currentRoom()->characters());
    if (!requireSome(destinationItem, "Destination item not found.")) {
        return;
    }

    destinationItem->setTriggers(sourceItem->triggers());
    send("Triggers copied.");

    if (destinationItem->hasTrigger("onspawn")) {
        destinationItem->killAllTimers();
        destinationItem->invokeTrigger("onspawn");
        send(QString("Respawn emulated for %1.")
             .arg(Util::highlight(QString("object #%1").arg(destinationItem->id()))));
    }
}
Esempio n. 2
0
void SetRaceCommand::execute(Character *player, const QString &command) {

    super::prepareExecute(player, command);

    GameObjectPtrList characters = takeObjects(currentRoom()->characters());
    if (!requireUnique(characters, "Character not found.", "Character is not unique.")) {
        return;
    }

    QString raceName = takeWord();
    if (raceName.isEmpty()) {
        send("Usage: set-race <character-name> [#] <race-name>");
        return;
    }

    Character *character = characters[0].cast<Character *>();
    for (const GameObjectPtr &racePtr : Realm::instance()->races()) {
        if (racePtr->name() == raceName) {
            character->setRace(racePtr);

            send("Race modified.");
            return;
        }
    }

    send("Unknown race given.");
}
Esempio n. 3
0
void GetTriggerCommand::execute(Character *player, const QString &command) {

    super::prepareExecute(player, command);

    GameObjectPtr object = takeObject(currentRoom()->portals() + currentRoom()->characters() +
                                      currentRoom()->items());
    if (!requireSome(object, "Object not found.")) {
        return;
    }

    QString triggerName = takeWord().toLower();

    if (!triggerName.startsWith("on")) {
        send("Not a valid trigger name.");
        return;
    }

    ScriptFunction trigger = object->trigger(triggerName);
    if (trigger.source.isEmpty()) {
        send(QString("No trigger set for %1.").arg(triggerName));
    } else {
        send(trigger.source);
    }
}
void WidgetChatMiddle::removeBuffer(Irc::Buffer* buffer)
{
	QList<WidgetChatRoom*> allRooms = ui->stackedWidgetChatRooms->findChildren<WidgetChatRoom*>();

	for(int i = 0; i < allRooms.size(); ++i)
	{
		if(allRooms.at(i)->sRoomName == buffer->receiver())
		{
			ui->stackedWidgetChatRooms->removeWidget(allRooms.at(i));
			allRooms.at(i)->~WidgetChatRoom();
		}
	}
	channelList.removeOne(buffer->receiver());
	channelListModel->setStringList(channelList);
	buffer->deleteLater();
	emit roomChanged(currentRoom());
}
void WidgetChatMiddle::userCountUpdated(ChatUserListModel* chatUserListModel, int operators, int users)
{
	if (currentRoom()->chatUserListModel == chatUserListModel)
		emit updateUserCount(operators, users);
}
void WidgetChatMiddle::changeRoom(int index)
{
	ui->stackedWidgetChatRooms->setCurrentIndex(index);
	emit roomChanged(currentRoom());
}
void WidgetChatMiddle::onSendMessage(QTextDocument *message)
{
	QString sMessage = message->toPlainText();

	if( sMessage.isEmpty() )
		return;

	if( sMessage.left(2) != "//" )
	{
		if( sMessage.left(1) == "/" ) // is it a command?
		{
			QString sCmd, sParam;
			int nSpace = sMessage.indexOf(" ");
			if( nSpace == -1 )
				nSpace = sMessage.length();

			sCmd = sMessage.left(nSpace).toLower();
			sParam = sMessage.mid(nSpace + 1);

			if( sCmd == "/me" )
			{
				if( !sParam.isEmpty() )
					currentRoom()->onSendAction(sParam);
				return;
			}
			if( sCmd == "/msg")
			{
				QString sTarget;
				int nSpace = sParam.indexOf(" ");
				if( nSpace == -1 )
					nSpace = sParam.length();

				sTarget = sParam.left(nSpace).toLower();
				sParam = sParam.mid(nSpace + 1);

				if( !sParam.isEmpty() )
					quazaaIrc->sendIrcMessage(sTarget, sParam );
				return;
			}
			if( sCmd == "/cs")
			{
				if( !sParam.isEmpty() )
					quazaaIrc->sendIrcMessage("chanserv", sParam );
				return;
			}
			if( sCmd == "/hs")
			{
				if( !sParam.isEmpty() )
					quazaaIrc->sendIrcMessage("hostserv", sParam );
				return;
			}
			if( sCmd == "/join")
			{
				if( !sParam.isEmpty() )
					quazaaIrc->addRoom(sParam);
				return;
			}
			if( sCmd == "/part")
			{
				if( !sParam.isEmpty() )
				{
					quazaaIrc->removeRoom(sParam);
					return;
				} else {
					quazaaIrc->removeRoom(currentRoom()->sRoomName);
				}
			}
			else
			{
				currentRoom()->onSendMessage("Unknown command");
			}

			return;
		}
	}
	CChatConverter oConv(message);
	currentRoom()->onSendMessage(oConv.toIRC());
}
void WidgetChatMiddle::on_stackedWidgetChatRooms_currentChanged(int)
{
	//qDebug() << "Emitting channel changed.";
	if(ui->stackedWidgetChatRooms->children().size() > -1)
		emit roomChanged(currentRoom());
}