מערכת 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.getShowItemGain(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.getShowItemGain(id, quantity, true)); } } else MapleInventoryManipulator.removeById(client, MapleItemInformationProvider.getInstance().getInventoryType(id), id, -quantity, true, false); }
ואתה הפונקציה הזאת
בפונקציה הזאת אתם גם קובעים את הפרסים(לכל אחד מהפרסים (EXP,MESOS,Items) יש סיכוי של שליש) כלומר את הכמויות האקראיות של EXP בשורה הזאת: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;
}
מוסיפים בין הסוגריים המסולסלות כמויות ובין כל כמות לשים רווח,int [] exp={};
פה קובעים מה הכמות Mesos האקראית שהשחקן יקבל:
מוסיפים בין הסוגריים המסולסלות כמויות ובין כל כמות לשים רווח,int [] meso={};
פה קובעים מה האידים(ID) של הItems האקראית שהשחקן יקבל:
קוד PHP:
מוסיפים בין הסוגריים המסולסלות כמויות ובין כל כמות לשים רווח.int [] items={};
סימנו עם עריכת קובץ זה .
עכשיו נערוך את הקובץ UseChairHandler.java שנמצא בין כל קבצי ההנדלר
ונוסיף את התנאי הזה בפונקציה handlePacket():
נשמור ונסגור,עכשיו נפתח את הקובץ CancelChairHandler.java שגם הוא נמצא בהנדלריםif(itemId == 3011000)
c.getPlayer().Fishing=true;
ונוסיף אחרי ה תנאי הזה
את :if (id == -1) {
עכשיו נערוך את הקובץ ChannelServer.java ונחפש את זהc.getPlayer().Fishing =false;
ואחרי זה נוסיף את זה: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);
לטום על כתיבת המדריך
ולשרת שלי על המערכת



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

