מערכת Fishing
• מצרכים
1. מחשב
2. סובלנות
3. קצת ידע בהוספת דברים לסורס
• תאימות המערכת
המערכת נבנתה ונבדקה בגרסא ה62GMS אך מתאימה גם לשלל גרסאות המאוחרות של GMS )75,83)
• מבוא
מערכת Fishing היא מערכת בה השחקן מרוויח דברים(Exp,Mesos,Items).
מערכת זאת נותנת אפשרות לשחקן בזמן שהוא AFK(לא נמצא) או שהוא סתם רוצה לנוח להרוויח דברים שווים בלי לעשות שום מאמץ רק לשבת בכסא להיות במפה המתאימה ולהרוויח דברים שווים
המערכת מאוד פשוטה לתפעול לשחקן
• תוכן עניינים
1. הוספת המערכת לסורס
2. תפעול המערכת
• הוספת המערכת לסורס
בקובץ MapleCharacter.java להוסיף שני משתנים:
קוד:
public boolean Fishing =false;
ואת שני הפונקציות האלה:
קוד:
public void gainItem(int id, short quantity, boolean randomStats, boolean show) { if (quantity >= 0) { MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); IItem item = ii.getEquipById(id); MapleInventoryType type = ii.getInventoryType(id); if (type.equals(MapleInventoryType.EQUIP) && !ii.isThrowingStar(item.getItemId()) && !ii.isBullet(item.getItemId())) { if (!getInventory(type).isFull()) { if (randomStats) { MapleInventoryManipulator.addFromDrop(client, ii.randomizeStats(getClient(), (Equip) item), false); } else { MapleInventoryManipulator.addFromDrop(client, (Equip) item, false); } } else { dropMessage(1, "Your inventory is full. Please remove an item from your " + type.name().toLowerCase() + " inventory."); } } else if (MapleInventoryManipulator.checkSpace(client, id, quantity, "")) { if (id >= 5000000 && id <= 5000100) { if (quantity > 1) { quantity = 1; } int petId = MaplePet.createPet(id); MapleInventoryManipulator.addById(client, id, (short) 1, null, petId); if (show) { client.getSession().write(MaplePacketCreator.getSh owItemGain(id, quantity)); } } else { MapleInventoryManipulator.addById(client, id, quantity); } } else { dropMessage(1, "Your inventory is full. Please remove an item from your " + type.name().toLowerCase() + " inventory."); } if (show) { client.getSession().write(MaplePacketCreator.getSh owItemGain(id, quantity, true)); } } else MapleInventoryManipulator.removeById(client, MapleItemInformationProvider.getInstance().getInve ntoryType(id), id, -quantity, true, false); }
אם יש לכם כבר כזאת פונקציה אז אל תוסיפו
ואתה הפונקציה הזאתקוד:
public void Fish(){ if(Fishing && getMapId() == 251000100 && getChair() ==3011000 ){ int [] exp={}; int [] meso={}; int [] items={}; int amount; int prize =(int)(Math.random()*3)+1; switch(prize){ case 1: amount = (int)(Math.random()*exp.length); gainExp(exp[amount],true,true) ;break; case 2: amount = (int)(Math.random()*meso.length); gainMeso(meso[amount],true,false,true) ;break; case 3: amount = (int)(Math.random()*items.length); gainItem(items[amount],(short)1,false,true) ;break; } }else return;}
בפונקציה הזאת אתם גם קובעים את הפרסים(לכל אחד מהפרסים (EXP,MESOS,Items) יש סיכוי של שליש) כלומר את הכמויות האקראיות של EXP בשורה הזאת:
קוד:
int [] exp={};
מוסיפים בין הסוגריים המסולסלות כמויות ובין כל כמות לשים רווח,
פה קובעים מה הכמות Mesos האקראית שהשחקן יקבל:
קוד:
int [] meso={};
מוסיפים בין הסוגריים המסולסלות כמויות ובין כל כמות לשים רווח,
פה קובעים מה האידים(ID) של הItems האקראית שהשחקן יקבל:
קוד:
int [] items={};
מוסיפים בין הסוגריים המסולסלות כמויות ובין כל כמות לשים רווח.
סימנו עם עריכת קובץ זה .
עכשיו נערוך את הקובץ UseChairHandler.java שנמצא בין כל קבצי ההנדלר
ונוסיף את התנאי הזה בפונקציה handlePacket():
קוד:
if(itemId == 3011000) c.getPlayer().Fishing=true;
נשמור ונסגור,עכשיו נפתח את הקובץ CancelChairHandler.java שגם הוא נמצא בהנדלרים
ונוסיף אחרי ה תנאי הזה
קוד:
if (id == -1) {
את :
קוד:
c.getPlayer().Fishing =false;
עכשיו נערוך את הקובץ ChannelServer.java ונחפש את זה
קוד:
tMan.registe
ואחרי זה נוסיף את זה:
קוד:
TimerManager.getInstance().register (new Runnable() { @Override public void run() { for(MapleCharacter chr : getPlayerStorage().getAllCharacters()){chr.Fish(); } } }, 60* 3 * 1000);
• תפעול המערכת
לשחקן: על השחקן לשבת על כיסא (3011000) במפה (251000100)וכל שלוש דקות יקבל את אחד מהפרסים.
• תוספת(לא חובה)
תוספת נחמדה שחשבתי היא גם זמן אקראי שלא כל זמן קבוע הוא יקבל פרס אז בעצם כנסו לקובץ ChannelServer.java אז ערכו את מה שהוספתם אחרי השורה :
קוד:
tMan.registe
לזה:
קוד:
int min = (int)(Math.random()*4+1); TimerManager.getInstance().register(new Runnable() { @Override public void run() { for(MapleCharacter chr : getPlayerStorage().getAllCharacters())chr.Fish(); } }, min * 60 * 1000);
• קרדיט לאתר אחר.








ציטוט ההודעה
