מערכת Occupation
קצת ידע בהוספת דברים לסורס ,למסד הנתונים,עריכת NPC
תאימות המערכת
המערכת נבנתה ונבדקה בגרסא ה62GMS אך מתאימה גם לשלל גרסאות המאוחרות של GMS )75,83)
מבוא
מערכת Occupations או עבודות משניות היא בעצם מערכת שמוסיפה עלילה למשחק.
אתם קובעים מה סיפור של כל עבודה ומה האפשרויות שלה.
אני יראה איך לעשות מערכת הכי בסיסית שאפשר רק הRates שונים.
מערכת זאת נותנת לשחקן להחליט מה היה עתידו במשחק לדוגמא יש עבודה משנית דוגמן שהRates שלו בינוניים לא הכי גבוהים אבל תוסיפו לו NX על כל רמה או כל סיפור אחר שתרצו.
תוכן עניינים
הוספת המערכת לסורס
הוספת המערכת למסד הנתונים
הוספת עבודה משנית
עריכת הNPC
הוספת המערכת לסורס
בקובץ MapleCharacter.java הוסיפו את המשתנה:
הוסיפו בפונקציה loadCharFromDB את זהpublic int occupation;
הוסיפו את הפונקציות הבאותret.occupation=rs.getInt("occupation");
הראשונה מגדירה את הOccupation
השנייה מחזירה את המספר של ה Occupation 0 זה כלום וכל שאר המספרים אתם קובעיםpublic void setOccupation(int occupation){
try {
Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("update characters set `occupation` = ? where `id` =? ");
ps.setInt(1,occupation);
ps.setInt(2,getId());
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
System.out.println("Error Getting Default: " + e);
}
}
בפונקציות הבאות אתם קובעים את הRates של הOccupations:public int getOccupation(){
return occupation;
}
פה קובעים כמה היה הrate של ה EXP כל occupation זה מספר 0 זה בלי עכשיו יש לכם פה את השורה הזאת זה ל occupation מספר 1 (זה לא אומר שזה היה השם שלו זה הID שלו פשוט)public int getExpRate(){
int exp = 0;
switch(getOccupation()){
case 1:exp = 50; ;break;
}
return exp;
}
פה אתם קובעים ל occupation שאידי שלו 1 את הRate של הEXP כדי להוסיף הוסיפו את אותה שורה מתחת רק שנו את ה 50 ואת ה 1 ל אידי של הoccupation השני שלכם וכך אלהcase 1:exp = 50; ;break;
פה פונקציה שקובעת את הכסף בנוי אותו דבר כמו הEXP שימו לב להוסיף אותה ולערוך כמו הExp:
פה פונקציה שקובעת את הDROP בנוי אותו דבר כמו הEXP והמסוס שימו לב להוסיף אותה ולערוך כמו הExp והמסוס:public int getMesoRate(){
int meso = 0;
switch(getOccupation()){
case 1:meso = 30 ;break;
}
return meso;
}
עד לפה סימנו עם הקובץ MapleCharacter.javapublic int getDropRate(){
int drop = 0;
switch(getOccupation()){
case 1:drop = 10 ;break;
}
return drop;
}
עכשיו בקובץ MapleMonster.java חפשו את זה:
ושנו ל:ChannelServer.getInstance(killer.getClient().getChannel()).getExpRate()
עכשיו בקובץ MapleMap.java זה יופיע כמה פעמים אז תשנו את הכל חפשו את זה:killer.getExpRate()
ושנו לזה:ChannelServer.getInstance(dropOwner.getClient().getChannel()).getMesoRate()
שנו את כל הפעמים שזה מופיע ובאותו קובץ חפשו את זה :dropOwner.getMesoRate()
ושנו לזהcserv.getDropRate()
אם אין לכם Occupation ולא הגדרת בפונקציות שהוספתם כלום לאידי 0 אז אתם לא תקבלו EXP DROP ו MESOdropOwner.getDropRate()
שמרו את הכל סגרו וקמפלו
הוספת המערכת למסד הנתונים
הריצו את זה בMysql:
עריכת הNPCALTER TABLE `characters` ADD COLUMN `occupation` INTEGER DEFAULT 0 ;
בחלק זה אנחנו עורכים את הNPC שתבחרו ובוא נבחר את השמות לOCCUPATION
אז כנסו לJS של הNPC שלכם הדביקו את הקוד הבא:
עכשיו כדי להוסיף את העבודות שלנו תעשו ככהvar status = 0;
var text ="Hello I am the Occupation mangmant please choose youre occupation:\r\n";
function start() {
status = -1;
action(1, 0, 0);
}
function action(mode, type, selection) {
if (mode == -1) {
cm.dispose();
} else {
if (status == 1 && mode == 0 ) {
cm.dispose();
return;
}
if (mode == 1)
status++;
else
status--;
if (status == 0) {
if(cm.getPlayer().getOccupation() != 0){
cm.sendOk("you have choosen youre Occupation already");
cm.dispose();
return;
}
cm.sendSimple(text);
}else if(status == 1){
cm.getPlayer().setOccupation(selection);
cm.dispose();
}
}
}
חפשו את השורה
הוסיפו לפני זה את השורה :cm.sendSimple(text);
עכשיו פה אתם קובעים את האידי של כל OCCUPATION ואת השם אז כדי שתרשמו לכם את זה איפה שה1 זה האידי ואיפה ש " Youre occupation name" שם שמים את השם כל פעם שאתם רוצים להוסיף אתם מוסיפים אסור שתהיה התנגשות באידיםtext += "#L1#Youre occupation name#l\r\n"
תוספת(לא חובה)
תוספת נחמדה היא לקבל NX כל רמה שאתה עולה בOCCUPATION מסוים אז שימו לב כנסו ל MapleCharacter.java וחפשו את הפונקציה levelUp והוסיפו שם את בדיקה הבאה ב 1 שימו את האידי של ה Occupation שאתם רוצים ואם אתם רוצים לשנות את הכמות פשוט תשנו את ה 15 לכמות שלכם
קרדיטif(getOccupation() == 1)
modifyCSPoints(1,15);
לשרת הקודם שליRoyalMs
(למי ששואל טום לקח את זה מהסורס שלנו)



ספוילר:
ציטוט ההודעה


