2007년도 쯤에 C# 공부하면서 만든
울티마 온라인 npc 대화
1. npc에 휴대폰에 저장된 지인들 이름을 xml로 적용(남여만 구분)
2. 지인들의 전화번호및 개인 정보를 mdb에 만듬...
3. c#코드로 mdb의 정보를 검색해서 간단한 대화를 할수 있게 만듬;;.
public virtual void OnSpeech( SpeechEventArgs e )
{
if ( e.Mobile.Alive && e.Mobile.InRange( m_Mobile.Location, 3 ) && m_Mobile.IsHumanInTown() )
{
//흑엽
String Spe = e.Speech;
if (Spe.Equals(m_Mobile.Name)) // **
{
m_Mobile.Say( "어쩌라고~어쩌라고~말을해~"+e.Mobile.Name+"...벙어리야?기죽었어?그런거야??");
}
if (Spe.Equals(m_Mobile.Name +" ?")) // *?*
{
string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=gugalnpc.mdb";
string strAccessSelect = "select 소개 from whoami WHERE 이름 like '%" + m_Mobile.Name + "%'";
// 데이터 집합을 만들어 Categories 테이블을 추가합니다.
DataSet myDataSet = new DataSet();
OleDbConnection myAccessConn = null;
try
{
myAccessConn = new OleDbConnection(strAccessConn);
}
catch(Exception ex)
{
Console.WriteLine("Error: Failed to create a database connection. \n{0}", ex.Message);
return;
}
try
{
OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect,myAccessConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
myAccessConn.Open();
myDataAdapter.Fill(myDataSet,"whoami");
}
catch (Exception ex)
{
Console.WriteLine("Error: Failed to retrieve the required data from the DataBase.\n{0}", ex.Message);
return;
}
finally
{
myAccessConn.Close();
}
int Count = myDataSet.Tables["whoami"].Rows.Count;
if (Count == 0)
{
m_Mobile.Say( false,"헐..." + m_Mobile.Name + "씨는 성우네 자기소개db에 없군요 어쩌라고~" + e.Mobile.Name +"씨");
}
else
{ //행에있는 데이타출력함
DataRowCollection dra = myDataSet.Tables["whoami"].Rows;
m_Mobile.Say(false,dra[0][0].ToString());
}
}
if (Spe.Equals(m_Mobile.Name +" .")) // *?*
{
string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=gugalnpc.mdb";
string strAccessSelect = "select 답글 from whoami WHERE 이름 like '%" + m_Mobile.Name + "%'";
// 데이터 집합을 만들어 Categories 테이블을 추가합니다.
DataSet myDataSet = new DataSet();
OleDbConnection myAccessConn = null;
try
{
myAccessConn = new OleDbConnection(strAccessConn);
}
catch(Exception ex)
{
Console.WriteLine("Error: Failed to create a database connection. \n{0}", ex.Message);
return;
}
try
{
OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect,myAccessConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
myAccessConn.Open();
myDataAdapter.Fill(myDataSet,"whoami");
}
catch (Exception ex)
{
Console.WriteLine("Error: Failed to retrieve the required data from the DataBase.\n{0}", ex.Message);
return;
}
finally
{
myAccessConn.Close();
}
int Count = myDataSet.Tables["whoami"].Rows.Count;
if (Count == 0)
{
m_Mobile.Say( false,m_Mobile.Name + "씨는 성우네 자기소개의 답글이 없군요");
}
else
{ //행에있는 데이타출력함
DataRowCollection dra = myDataSet.Tables["whoami"].Rows;
m_Mobile.Say(false,dra[0][0].ToString());
}
}
if (Spe.Equals(m_Mobile.Name +" ,")) // *?*
{
string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=gugalnpc.mdb";
string strAccessSelect = "select 이름,구분,폰,집,메모 from phone WHERE 이름 like '%" + m_Mobile.Name + "%'";
// 데이터 집합을 만들어 Categories 테이블을 추가합니다.
DataSet myDataSet = new DataSet();
OleDbConnection myAccessConn = null;
try
{
myAccessConn = new OleDbConnection(strAccessConn);
}
catch(Exception ex)
{
Console.WriteLine("Error: Failed to create a database connection. \n{0}", ex.Message);
return;
}
try
{
OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect,myAccessConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
myAccessConn.Open();
myDataAdapter.Fill(myDataSet,"whoami");
}
catch (Exception ex)
{
Console.WriteLine("Error: Failed to retrieve the required data from the DataBase.\n{0}", ex.Message);
return;
}
finally
{
myAccessConn.Close();
}
int Count = myDataSet.Tables["whoami"].Rows.Count;
if (Count == 0)
{
m_Mobile.Say( false,m_Mobile.Name + "씨는 검색못해요~");
}
else
{//칼럼네임출력함
DataColumnCollection drc = myDataSet.Tables["whoami"].Columns;
//행에있는 데이타출력함
DataRowCollection dra = myDataSet.Tables["whoami"].Rows;
string Info=null;
foreach (DataRow dr in dra)
{
int i = 0;
foreach (DataColumn dc in drc)
{
// 열 첨자를 출력한 다음 해당 열의 이름 및 데이터 형식도
// 출력합니다.
Info += dc.ColumnName.ToString()+": "+ dr[i].ToString()+"\n";
i++;
}
}
m_Mobile.Say(false,Info);
}