מערכת Fishing
מצרכים
מחשב
סובלנות
קצת ידע בהוספת דברים לסורס
תאימות המערכת
המערכת נבנתה ונבדקה בגרסא ה62GMS אך מתאימה גם לשלל גרסאות המאוחרות של GMS )75,83)
מבוא
מערכת Fishing היא מערכת בה השחקן מרוויח דברים(Exp,Mesos,Items).
מערכת זאת נותנת אפשרות לשחקן בזמן שהוא AFK(לא נמצא) או שהוא סתם רוצה לנוח להרוויח דברים שווים בלי לעשות שום מאמץ רק לשבת בכסא להיות במפה המתאימה ולהרוויח דברים שווים
המערכת מאוד פשוטה לתפעול לשחקן
תוכן עניינים
הוספת המערכת לסורס
תפעול המערכת
הוספת המערכת לסורס
בקובץ MapleCharacter.java להוסיף שני משתנים:
קוד PHP:
public boolean Fishing =false;
ואת שני הפונקציות האלה:
קוד PHP:
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); }
אם יש לכם כבר כזאת פונקציה אז אל תוסיפו
ואתה הפונקציה הזאת
קוד PHP:
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 בשורה הזאת:
מוסיפים בין הסוגריים המסולסלות כמויות ובין כל כמות לשים רווח,
פה קובעים מה הכמות Mesos האקראית שהשחקן יקבל:
מוסיפים בין הסוגריים המסולסלות כמויות ובין כל כמות לשים רווח,
פה קובעים מה האידים(ID) של הItems האקראית שהשחקן יקבל:
קוד PHP:
int [] items={};
מוסיפים בין הסוגריים המסולסלות כמויות ובין כל כמות לשים רווח.
סימנו עם עריכת קובץ זה .
עכשיו נערוך את הקובץ UseChairHandler.java שנמצא בין כל קבצי ההנדלר
ונוסיף את התנאי הזה בפונקציה handlePacket():
קוד PHP:
if(itemId == 3011000)
c.getPlayer().Fishing=true;
נשמור ונסגור,עכשיו נפתח את הקובץ CancelChairHandler.java שגם הוא נמצא בהנדלרים
ונוסיף אחרי ה תנאי הזה
את :
קוד PHP:
c.getPlayer().Fishing =false;
עכשיו נערוך את הקובץ ChannelServer.java ונחפש את זה
ואחרי זה נוסיף את זה:
קוד PHP:
TimerManager.getInstance().register (new Runnable() {
@Override
public void run() {
for(MapleCharacter chr : getPlayerStorage().getAllCharacters()){
chr.Fish();
}
}
}, 60* 3 * 1000);
תפעול המערכת
לשחקן: על השחקן לשבת על כיסא (3011000) במפה (251000100)וכל שלוש דקות יקבל את אחד מהפרסים.
תוספת(לא חובה)
תוספת נחמדה שחשבתי היא גם זמן אקראי שלא כל זמן קבוע הוא יקבל פרס אז בעצם כנסו לקובץ ChannelServer.java אז ערכו את מה שהוספתם אחרי השורה :
לזה:
קוד PHP:
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);
קרדיט
קרדיט לי על בניית כל המערכת
קרדיט ל OzGazoz על הבקשה והרעיון