示例#1
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.");
}
示例#2
0
int hashing(const char* buffer, int* CountOfHashing, func hashFunc)
{

	int i = 0, k = 0, j = 0;
	unsigned int hash = 0;
	char tmpStr[SIZEOFWORD] = "";
	int Firstly = 0;
	Table* table = new Table;
	List* Listy = new List[SIZEOFTABLE];
	table->f = hashFunc;
	table->list = Listy;
	//printf("----------------------\n");
	while (buffer[j] != '\0' && buffer[j] > 0)
	{
		if (!(takeWord(buffer, &j, tmpStr))) { Nerror = PTRERR; PrintError(__LINE__); }
		
		addToTable(table, tmpStr, CountOfHashing);

		//hash = f(tmpStr) % SIZEOFTABLE;
		//hash = hash % SIZEOFTABLE;
		//printf("hash = %d \n", hash);//debug
		//if (!(table->list[hash].addTail(tmpStr))) return BAD;// goto breakpoint;
		//table[hash].show();//debug
		
		memset(tmpStr, '\0', SIZEOFTABLE);

		while (buffer[j] == ' ' || buffer[j] == '\r' || buffer[j] == '\n')
			j++;
		tmpStr[0] = '\0';
	}
	
	char* ShowFind = "wei";
	if (!ShowElem(FindElem(table, ShowFind)))
		return BAD;// goto breakpoint;
	
	return OK;
//breakpoint:
}
示例#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);
    }
}