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."); }
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: }
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); } }