From: Andrew C. <ac...@us...> - 2002-12-04 23:21:45
|
Update of /cvsroot/planeshift/planeshift/src/server In directory sc8-pr-cvs1:/tmp/cvs-serv24813/src/server Modified Files: adminmanager.cpp adminmanager.h psdatabase.cpp psdatabase.h Log Message: Added basic dialog editor ( see history 12/04/2002 ) Index: adminmanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/adminmanager.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** adminmanager.cpp 4 Nov 2002 04:37:11 -0000 1.12 --- adminmanager.cpp 4 Dec 2002 23:21:04 -0000 1.13 *************** *** 31,34 **** --- 31,35 ---- #include "admin/adminmessage.h" #include "util/psxmlparser.h" + #include "util/log.h" #include "psserver.h" *************** *** 173,180 **** case ADMIN_CREATE_NEW_NPC: { ! printf("Creating new NPC!\n"); AdminCreateNewNPC(me->clientnum, msg.data); break; } } } --- 174,202 ---- case ADMIN_CREATE_NEW_NPC: { ! Debug1("Creating new NPC!\n"); AdminCreateNewNPC(me->clientnum, msg.data); break; } + + /// A request for the triggers in a dialog area + case ADMIN_REQUEST_TRIGGERS: + { + Debug1("Admin_request_triggers"); + AdminRequestTriggers( me->clientnum, msg.data); + break; + } + + case ADMIN_REQUEST_RESPONSES: + { + Debug1("Admin request responses"); + AdminRequestResponses(me->clientnum, msg.data); + break; + } + case ADMIN_DIALOG_CHANGE: + { + Debug1("Admin dialog change"); + AdminDialogChange(me->clientnum, msg.data); + } + } } *************** *** 244,249 **** void AdminManager::CreateItem(MsgEntry* me, psAdminCmdMessage& msg) { - printf("Creating Item!\n"); - int itemID = database->GetItemID( msg.item ); --- 266,269 ---- *************** *** 257,266 **** } - - printf("Finding Client!\n"); Client *client = clients->Find(me->clientnum); if (!client) { ! printf("AdminMgr got unknown client!"); return; } --- 277,284 ---- } Client *client = clients->Find(me->clientnum); if (!client) { ! Error1("AdminMgr got unknown client!"); return; } *************** *** 273,277 **** if (!linmove) { ! printf ("AdminMgr couldn't find iPcLinearMovement!\n"); return; } --- 291,295 ---- if (!linmove) { ! Error1("AdminMgr couldn't find iPcLinearMovement!\n"); return; } *************** *** 301,305 **** if (!client) { ! printf("AdminMgr got unknown client!"); return; } --- 319,323 ---- if (!client) { ! Error2("AdminMgr got unknown client! number: %d", me->clientnum); return; } *************** *** 341,345 **** void AdminManager::AdminRaceRequest(int clientnum, const char* sex) { - printf("Got a request for Male Races from client %d\n", clientnum); Client* client = clients->Find(clientnum); --- 359,362 ---- *************** *** 420,421 **** --- 437,517 ---- } + + void AdminManager::AdminRequestTriggers( uint32_t clientnum, csString &data ) + { + iResultSet* triggers = database->GetAllTriggersInArea(data); + + int i; + psAdminTriggerList triggerList; + for ( i = 0; i < triggers->Count(); i++ ) + { + triggerList.AddTrigger( (*triggers)[i][0] ); + } + + psAdminMessage outmessage(clientnum, + ADMIN_REQUEST_TRIGGERS, + triggerList.XML()); + + msghandler->SendMessage( outmessage.msg ); + triggers->Release(); + } + + + void AdminManager::AdminRequestResponses(uint32_t clientnum, csString& trig) + { + iResultSet* responses = database->GetAllResponses(trig); + + if ( !responses ) + return; + + psAdminResponseList responseList; + + responseList.AddResponse( (*responses)[0]["response1"]); + responseList.AddResponse( (*responses)[0]["response2"]); + responseList.AddResponse( (*responses)[0]["response3"]); + responseList.AddResponse( (*responses)[0]["response4"]); + responseList.AddResponse( (*responses)[0]["response5"]); + responseList.AddPronounSet( (*responses)[0]["pronoun_him"], + (*responses)[0]["pronoun_her"], + (*responses)[0]["pronoun_it"], + (*responses)[0]["pronoun_them"]); + + responses->Release(); + + psAdminMessage outmesg(clientnum, + ADMIN_REQUEST_RESPONSES, + responseList.XML() ); + + msghandler->SendMessage( outmesg.msg ); + } + + void AdminManager::AdminDialogChange(uint32_t clientnum, csString& data) + { + psAdminResponseList dialog(data); + + for ( int z = 0; z < dialog.responses.Length(); z++ ) + { + database->UpdateDialog( dialog.GetArea(), + dialog.GetTrigger(), + dialog.responses[z]->GetData(), + z+1); // database goes from 1-5 + } + + // Update pronoun set + database->UpdateDialog( dialog.GetArea(), + dialog.GetTrigger(), + dialog.GetPronounHim(), + dialog.GetPronounHer(), + dialog.GetPronounIt(), + dialog.GetPronounThem()); + + + char buffer[256]; + sprintf(buffer, "Dialog changes made"); + psSystemMessage newmsg(clientnum,MSG_INFO, buffer); + msghandler->SendMessage(newmsg.msg); + + } + + + Index: adminmanager.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/adminmanager.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** adminmanager.h 4 Nov 2002 01:59:19 -0000 1.7 --- adminmanager.h 4 Dec 2002 23:21:06 -0000 1.8 *************** *** 62,66 **** void AdminRequestKnowledgeAreas( int clientnum ); void AdminCreateNewNPC(int clientnum, csString &data); ! psCelServer* celserver; --- 62,68 ---- void AdminRequestKnowledgeAreas( int clientnum ); void AdminCreateNewNPC(int clientnum, csString &data); ! void AdminRequestTriggers( uint32_t clientnum, csString &data ); ! void AdminRequestResponses(uint32_t clientnum, csString& trig); ! void AdminDialogChange( uint32_t clientnum, csString& trig ); psCelServer* celserver; Index: psdatabase.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/psdatabase.cpp,v retrieving revision 1.73 retrieving revision 1.74 diff -C2 -d -r1.73 -r1.74 *** psdatabase.cpp 27 Nov 2002 07:16:02 -0000 1.73 --- psdatabase.cpp 4 Dec 2002 23:21:06 -0000 1.74 *************** *** 104,108 **** } ! /*-----------------Account/Player Management Functions-------------------------*/ bool psDatabase::CreateAccount(const char *username, const char *password) --- 104,109 ---- } ! /*-----------------Account/Player Management ! Functions-------------------------*/ bool psDatabase::CreateAccount(const char *username, const char *password) *************** *** 121,125 **** usernameEsc,passwordEsc) != 1) { ! lasterror.Format ("Couldn't insert new account.\nCommand was <%s>.\nError returned was <%s>\n",sql,mysql->GetLastError()); return false; } --- 122,127 ---- usernameEsc,passwordEsc) != 1) { ! lasterror.Format ("Couldn't insert new account.\nCommand was ! <%s>.\nError returned was <%s>\n",sql,mysql->GetLastError()); return false; } *************** *** 135,139 **** int acct_id = mysql-> ! SelectSingleNumber("SELECT id FROM accounts WHERE username='%s'",nameEsc); int player_id = mysql-> --- 137,142 ---- int acct_id = mysql-> ! SelectSingleNumber("SELECT id FROM accounts WHERE ! username='%s'",nameEsc); int player_id = mysql-> *************** *** 171,175 **** } ! int psDatabase::CreatePlayer(int acctid, const char *name, const char *race, const char gender) { char nameEsc[513]; --- 174,179 ---- } ! int psDatabase::CreatePlayer(int acctid, const char *name, const char *race, ! const char gender) { char nameEsc[513]; *************** *** 187,194 **** nameEsc,acctid,raceID) != 1) { ! lasterror.Format("Couldn't insert new player.\nCommand was <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return -1; } ! int player = mysql->SelectSingleNumber("SELECT id FROM players WHERE name='%s'",nameEsc); int ret = CreatePlayerObject(nameEsc,player,0,0,0,0,"room"); --- 191,200 ---- nameEsc,acctid,raceID) != 1) { ! lasterror.Format("Couldn't insert new player.\nCommand was ! <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return -1; } ! int player = mysql->SelectSingleNumber("SELECT id FROM players WHERE ! name='%s'",nameEsc); int ret = CreatePlayerObject(nameEsc,player,0,0,0,0,"room"); *************** *** 196,208 **** } ! bool psDatabase::CreatePlayerObject(char *nameEsc,int playerID,float x,float y,float z,float angle,const char *sector) { if (mysql->Command("INSERT INTO objects (objtype," ! "name,locx,locy,locz,rotation,sector," "visible_ind,player_owner) " "VALUES('PLAYR','%s',%f,%f,%f,%f,'%s','Y',%d)", nameEsc,x,y,z,angle,sector,playerID) != 1) { ! lasterror.Format("Couldn't insert new object for player.\nCommand was <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } --- 202,217 ---- } ! bool psDatabase::CreatePlayerObject(char *nameEsc,int playerID,float x,float ! y,float z,float angle,const char *sector) { if (mysql->Command("INSERT INTO objects (objtype," ! ! "name,locx,locy,locz,rotation,sector," "visible_ind,player_owner) " "VALUES('PLAYR','%s',%f,%f,%f,%f,'%s','Y',%d)", nameEsc,x,y,z,angle,sector,playerID) != 1) { ! lasterror.Format("Couldn't insert new object for player.\nCommand was ! <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } *************** *** 213,217 **** int psDatabase::GetPlayerFromAccount(int accountID) { ! return mysql->SelectSingleNumber("SELECT id FROM players WHERE acct_id=%d",accountID); } --- 222,227 ---- int psDatabase::GetPlayerFromAccount(int accountID) { ! return mysql->SelectSingleNumber("SELECT id FROM players WHERE ! acct_id=%d",accountID); } *************** *** 234,238 **** if(!result.IsValid()) { ! lasterror.Format("Couldn't execute CheckLogin query.\nCommand was <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return -1; } --- 244,249 ---- if(!result.IsValid()) { ! lasterror.Format("Couldn't execute CheckLogin query.\nCommand was ! <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return -1; } *************** *** 241,245 **** { if (!strcmp(password,result[0]["password"])) ! iRet = atoi(result[0][0]); // this is id column of first row returned else iRet = -3; --- 252,256 ---- { if (!strcmp(password,result[0]["password"])) ! iRet = atoi(result[0][0]); // this is id column of first row else iRet = -3; *************** *** 275,279 **** mysql->Escape(nameEsc,leadername); ! return mysql->SelectSingleNumber("select id from players where name='%s'",nameEsc); } --- 286,291 ---- mysql->Escape(nameEsc,leadername); ! return mysql->SelectSingleNumber("select id from players where ! name='%s'",nameEsc); } *************** *** 298,302 **** if (!CreatePlayerObject("",playerID,0,0,0,0,"room")) return -1; ! return GetPlayerObjectID(playerID); // recursive call self should work 100% of the time } --- 310,315 ---- if (!CreatePlayerObject("",playerID,0,0,0,0,"room")) return -1; ! return GetPlayerObjectID(playerID); // recursive call self should ! // work 100% of the time } *************** *** 304,313 **** } ! bool psDatabase::UpdateAliveInd(int playerID,const char *aliveyn,int& spawnruleid) { int rows; ! // This tells the spawn manager which record in the spawn rule table should be ! // used to respawn the npc now, if any. spawnruleid = mysql->SelectSingleNumber("select npc_spawn_rule_id" " from players" --- 317,327 ---- } ! bool psDatabase::UpdateAliveInd(int playerID,const char *aliveyn,int& ! spawnruleid) { int rows; ! // This tells the spawn manager which record in the spawn rule table ! //should be used to respawn the npc now, if any. spawnruleid = mysql->SelectSingleNumber("select npc_spawn_rule_id" " from players" *************** *** 336,345 **** mysql->Escape(nameEsc,guildname); ! return mysql->SelectSingleNumber("select id from guilds where name='%s'",nameEsc); } int psDatabase::GetPlayerGuild(int playerid) { ! return mysql->SelectSingleNumber("select guild_member_of from players where id=%d",playerid); } --- 350,361 ---- mysql->Escape(nameEsc,guildname); ! return mysql->SelectSingleNumber("select id from guilds where ! name='%s'",nameEsc); } int psDatabase::GetPlayerGuild(int playerid) { ! return mysql->SelectSingleNumber("select guild_member_of from players ! where id=%d",playerid); } *************** *** 375,383 **** guildEsc,leaderID) != 1) { ! lasterror.Format ("Couldn't create new guild.\nCommand was <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } ! int guildid = GetGuildID(guildname); // Need the id created to make the levels char *levelname[] = { "Apprentice", --- 391,401 ---- guildEsc,leaderID) != 1) { ! lasterror.Format ("Couldn't create new guild.\nCommand was ! <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } ! int guildid = GetGuildID(guildname); // Need the id created to make the ! // levels char *levelname[] = { "Apprentice", *************** *** 393,401 **** for (int i=0; i<9; i++) { ! if (mysql->Command("insert into guildlevels (guild_id,level,level_name) " "values (%d, %d, '%s' )", guildid, i+1, levelname[i] ) != 1) { ! lasterror.Format ("Couldn't create guild level %d.\nCommand was <%s>.\nError returned was <%s>\n",i+1,mysql->GetLastQuery(),mysql->GetLastError()); return false; } --- 411,422 ---- for (int i=0; i<9; i++) { ! if (mysql->Command("insert into guildlevels ! (guild_id,level,level_name) " "values (%d, %d, '%s' )", guildid, i+1, levelname[i] ) != 1) { ! lasterror.Format ("Couldn't create guild level %d.\nCommand was ! <%s>.\nError returned was ! <%s>\n",i+1,mysql->GetLastQuery(),mysql->GetLastError()); return false; } *************** *** 421,428 **** } ! if (mysql->Command("delete from guilds where name='%s' and player_founder=%d", guildEsc,leaderID) != 1) { ! lasterror.Format ("Couldn't remove guild.\nCommand was <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } --- 442,451 ---- } ! if (mysql->Command("delete from guilds where name='%s' and ! player_founder=%d", guildEsc,leaderID) != 1) { ! lasterror.Format ("Couldn't remove guild.\nCommand was <%s>.\nError ! returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } *************** *** 431,435 **** guildID) <= 0) { ! lasterror.Format ("Couldn't remove guild levels.\nCommand was <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } --- 454,459 ---- guildID) <= 0) { ! lasterror.Format ("Couldn't remove guild levels.\nCommand was ! <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } *************** *** 439,443 **** " where guild_member_of=%d",guildID) <= 0) { ! lasterror.Format ("Couldn't update players to not be guild members.\nCommand was <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } --- 463,469 ---- " where guild_member_of=%d",guildID) <= 0) { ! lasterror.Format ("Couldn't update players to not be guild ! members.\nCommand was <%s>.\nError returned was ! <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } *************** *** 458,462 **** nameEsc, guild, level) != 1) { ! lasterror.Format ("Couldn't update guild level name for player.\nCommand was <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } --- 484,490 ---- nameEsc, guild, level) != 1) { ! lasterror.Format ("Couldn't update guild level name for ! player.\nCommand was <%s>.\nError returned was ! <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } *************** *** 470,474 **** int guild; ! guild = mysql->SelectSingleNumber("select guild_member_of from players where id=%d", memberID); --- 498,503 ---- int guild; ! guild = mysql->SelectSingleNumber("select guild_member_of from players ! where id=%d", memberID); *************** *** 493,497 **** " where id=%d",guildID, memberID) != 1) { ! lasterror.Format ("Couldn't update guild for player.\nCommand was <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } --- 522,527 ---- " where id=%d",guildID, memberID) != 1) { ! lasterror.Format ("Couldn't update guild for player.\nCommand was ! <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } *************** *** 512,516 **** "where id=%d",level, player) != 1) { ! lasterror.Format ("Couldn't update guild level for player.\nCommand was <%s>.\nError returned was <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } --- 542,548 ---- "where id=%d",level, player) != 1) { ! lasterror.Format ("Couldn't update guild level for player.\nCommand ! was <%s>.\nError returned was ! <%s>\n",mysql->GetLastQuery(),mysql->GetLastError()); return false; } *************** *** 559,563 **** { lasterror = GetLastSQLError(); ! printf("GetGuildLevelName didn't work for guild %d and level %d. Error: %s\n", guild,level,(const char *)lasterror); return false; --- 591,596 ---- { lasterror = GetLastSQLError(); ! printf("GetGuildLevelName didn't work for guild %d and level %d. ! Error: %s\n", guild,level,(const char *)lasterror); return false; *************** *** 630,634 **** if (rows != 1) { ! lasterror.Format ("Got sql error in AddBuddy on query <%s>.\n",mysql->GetLastQuery() ); return false; } --- 663,668 ---- if (rows != 1) { ! lasterror.Format ("Got sql error in AddBuddy on query ! <%s>.\n",mysql->GetLastQuery() ); return false; } *************** *** 647,651 **** if (rows != 1) { ! lasterror.Format ("Got sql error in AddBuddy on query <%s>.\n",mysql->GetLastQuery() ); return false; } --- 681,686 ---- if (rows != 1) { ! lasterror.Format ("Got sql error in AddBuddy on query ! <%s>.\n",mysql->GetLastQuery() ); return false; } *************** *** 659,663 **** ! /*-----------------Player Stat/Skill/Property Functions-------------------------*/ --- 694,699 ---- ! /*-----------------Player Stat/Skill/Property ! Functions-------------------------*/ *************** *** 801,805 **** iResultSet *rs = mysql->Select("SELECT p.skill_id,p.skill_value, s.name" "FROM player_skills p, skills s " ! "WHERE player_id=%d AND p.skill_id=s.skill_id", player_id); --- 837,842 ---- iResultSet *rs = mysql->Select("SELECT p.skill_id,p.skill_value, s.name" "FROM player_skills p, skills s " ! "WHERE player_id=%d AND ! p.skill_id=s.skill_id", player_id); *************** *** 821,825 **** /*-----------------Object Management Functions-------------------------*/ ! bool psDatabase::GetObjectPosition(int objID, float& x, float& y, float& z,float& angle) { // printf("Getting Object %d Position: ", objID); --- 858,863 ---- /*-----------------Object Management Functions-------------------------*/ ! bool psDatabase::GetObjectPosition(int objID, float& x, float& y, float& ! z,float& angle) { // printf("Getting Object %d Position: ", objID); *************** *** 877,881 **** } ! bool psDatabase::SetObjectPosition(int objID, float x, float y, float z,float angle) { printf("Updating Object %d Position: %1.2f %1.2f %1.2f\n", objID,x,y,z); --- 915,920 ---- } ! bool psDatabase::SetObjectPosition(int objID, float x, float y, float z,float ! angle) { printf("Updating Object %d Position: %1.2f %1.2f %1.2f\n", objID,x,y,z); *************** *** 1194,1198 **** " and pi.equipped_ind='Y'" " and pi.item_id=i.id" ! " and i.texture_name is not NULL",playerID); if (!rs) --- 1233,1238 ---- " and pi.equipped_ind='Y'" " and pi.item_id=i.id" ! " and i.texture_name is not ! NULL",playerID); if (!rs) *************** *** 1259,1263 **** printf("QUERY: %s\n", mysql->GetLastQuery() ); } ! mysql->Command("UPDATE players SET object_player=0 WHERE object_player=-1"); --- 1299,1304 ---- printf("QUERY: %s\n", mysql->GetLastQuery() ); } ! mysql->Command("UPDATE players SET object_player=0 WHERE ! object_player=-1"); *************** *** 1269,1273 **** "player_owner,sector) " "VALUES ('PLAYR', %f, %f, %f, 'Y', %d, '%s') ", ! pos.x, pos.y, pos.z, playerID, npcinfo.GetSector()); if ( result != 1 ) --- 1310,1315 ---- "player_owner,sector) " "VALUES ('PLAYR', %f, %f, %f, 'Y', %d, '%s') ", ! pos.x, pos.y, pos.z, playerID, ! npcinfo.GetSector()); if ( result != 1 ) *************** *** 1311,1315 **** } ! int psDatabase::CopyPlayer(int masterNPC,float x,float y,float z,float angle,const char *sector) { int rows; --- 1353,1358 ---- } ! int psDatabase::CopyPlayer(int masterNPC,float x,float y,float z,float ! angle,const char *sector) { int rows; *************** *** 1424,1428 **** } ! void psDatabase::AddBadNPCText(const char *text,const char *playername,const char *npcname) { mysql->Command("insert into npc_bad_text " --- 1467,1472 ---- } ! void psDatabase::AddBadNPCText(const char *text,const char *playername,const ! char *npcname) { mysql->Command("insert into npc_bad_text " *************** *** 1527,1531 **** " where item_owner=%d", -1 ); mysql->Command("UPDATE objects " ! "SET item_owner=%d where id=%d", masterItemID, id); return id; --- 1571,1576 ---- " where item_owner=%d", -1 ); mysql->Command("UPDATE objects " ! "SET item_owner=%d where id=%d", masterItemID, id); ! return id; *************** *** 1584,1590 **** } ! bool psDatabase::GetHiddenCrystalSpawnLoc(csVector3& pos,csString& sector,csRandomGen *randomgen) { ! int count = mysql->SelectSingleNumber("select count(*) from hunt_locations"); if (count) --- 1629,1637 ---- } ! bool psDatabase::GetHiddenCrystalSpawnLoc(csVector3& pos,csString& ! sector,csRandomGen *randomgen) { ! int count = mysql->SelectSingleNumber("select count(*) from ! hunt_locations"); if (count) *************** *** 1645,1646 **** --- 1692,1780 ---- return rs; } + + void psDatabase::UpdateDialog( const char* area, const char* trigger, + const char* response, int num ) + { + // Find the response id: + int id = mysql->SelectSingleNumber("SELECT response_id FROM npc_triggers " + "WHERE trigger=\"%s\" AND area=\"%s\"", + trigger, area); + + + char command[1024]; + sprintf(command, "UPDATE npc_responses SET response%d=\"%s\" WHERE id=%d", + num, response, id ); + + mysql->Command( command ); + } + + + + void psDatabase::UpdateDialog( const char* area, const char* trigger, + const char* prohim, const char* proher, + const char* proit, const char* prothem ) + { + // Find the response id: + int id = mysql->SelectSingleNumber("SELECT response_id FROM npc_triggers " + "WHERE trigger=\"%s\" AND area=\"%s\"", + trigger, area); + + + char command[1024]; + sprintf(command, "UPDATE npc_responses SET " + "pronoun_him=\"%s\", " + "pronoun_her=\"%s\", " + "pronoun_it=\"%s\", " + "pronoun_them=\"%s\" " + "WHERE id=%d", + prohim, proher, proit, prothem, id); + + mysql->Command( command ); + } + + iResultSet* psDatabase::GetAllTriggersInArea(csString data) + { + iResultSet* rs; + + rs = mysql->Select("SELECT trigger FROM npc_triggers " + "WHERE area='%s'", data.GetData()); + if( !rs ) + { + Error2("MYSQL ERROR: %s", mysql->GetLastError()); + Error2("LAST QUERY: %s", mysql->GetLastQuery()); + return NULL; + } + + return rs; + } + + iResultSet* psDatabase::GetAllResponses( csString& trigger ) + { + iResultSet* rs; + + // Get the response ID: + int id = mysql->SelectSingleNumber("SELECT response_id FROM npc_triggers " + "WHERE trigger=\"%s\"", + trigger.GetData()); + + if ( !id ) + { + Error2("MYSQL ERROR: %s", mysql->GetLastError()); + Error2("LAST QUERY: %s", mysql->GetLastQuery()); + return NULL; + } + + + rs = mysql->Select("SELECT * FROM npc_responses " + "WHERE id=%d",id); + if( !rs ) + { + Error2("MYSQL ERROR: %s", mysql->GetLastError()); + Error2("LAST QUERY: %s", mysql->GetLastQuery()); + return NULL; + } + + return rs; + } + + Index: psdatabase.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/psdatabase.h,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** psdatabase.h 27 Nov 2002 07:16:02 -0000 1.44 --- psdatabase.h 4 Dec 2002 23:21:08 -0000 1.45 *************** *** 217,220 **** --- 217,230 ---- iResultSet *GetAllNPCResponses(); + iResultSet *GetAllResponses( csString& trigger ); + + /// Change the dialog responses for that trigger in the area + void UpdateDialog( const char* area, const char* trigger, + const char* response, int num ); + + /// Changes the pronoun set for that trigger in that area. + void UpdateDialog( const char* area, const char* trigger, + const char* prohim, const char* proher, + const char* it, const char* them ); /// Adds a line spoken by a player, but not understood by an npc to the database virtual void AddBadNPCText(const char *text,const char *playername,const char *npcname); *************** *** 229,232 **** --- 239,246 ---- iResultSet *GetAllKnowledgeAreas(); + /// Gets all the triggers from a particular knowledge area. + iResultSet* GetAllTriggersInArea(csString data); + + /// Returns the set of all spawn rules iResultSet *GetAllSpawnRules(); |