Author Topic: Developer's BLOG (Spanish) [v4 - 4.6] OLD  (Read 1519 times)

Mod Heinz

  • Owner
  • Administrator
  • Elite
  • *****
  • Posts: I am a geek!!
  • Rep 202
  • Elite of Ragnarok!
  • Location: Monterrey
    • View Profile
Re: Developer's BLOG
« on: June 15, 2011, 10:26:48 am »
CONTINUE

Woodcutting Improved UPDATE
Segundo GRAN UPDATE fue hecho el dia de ayer (6/14/11).

Mejorar Woodcutting con las siguientes especificaciones:

1. Animaciones correctas al cortar los arboles.
2. El arbol en algun tiempo se desaparecera y quedar el tronco (tree stump) y luego volvera a aparecer.
3. Dependiendo el acha que tengas se tardara menos o mas en cortar el arbol y sacar un log.


Por que este update?, Sera mas dificil sacar 99 woodcutting?

RESPUESTA: Nosotros queremos que si sea mas dificil sacar 99 woodcutting, si tomara tiempo y dedicacion, ya que tardaras en sacar 99 woodcutting, hemos decidido subir los precios de los logs y agregar las diferentes hatchets para que no haya problema (Dragon Hatchet sera agregada al server lo mas rapido posible).
Ademas queremos que el server este mas dificil, para que atraiga a la gente, porque la mayoria de los servidores privados de runescape (RSPS) haces comandos de ::master y dan todas las skills 99, eso no es divertido.


IMAGEN DE WOODCUTTING UPDATE



Que hicimos para este "GRAN UPDATE"?

Simplemente dedicacion y unas 2 horas de arduo trabajo :) (Gracias Mod AMC por ayudarme)

Primero tuve que programar todo el asunto de las achas que jalen, la animacion correcta, los arboles, la XP por cada arbol, etc... He aqui el codigo:

Code: [Select]
package server.model.players.skills;

import server.model.players.*;
import server.Config;
import server.util.Misc;
import server.Server;
import server.model.players.Client;
import server.model.players.PacketType;
import server.model.objects.Object;
import server.model.players.PlayerHandler;

        /**
        * @author Sanity
        * @note Heavily modified by Sponge Bob || AMC
        */

public class Woodcutting {
       
        Client c;
       
        private final int VALID_AXE[] = {1351,1349,1353,1361,1355,1357,1359,6739};
        private final int[] AXE_REQS = {1,1,6,6,21,31,41,61};
        private int logType;
        private int exp;
        private int levelReq;
        private int axeType;
        private int treeX;
        private int treeY;
        private int density;
        private int treeType;
       
        public static int TREE_TIMER = 2000;
       
        public Woodcutting(Client c) {
                this.c = c;
        }
       
        public void startWoodcutting(int logType, int levelReq, int exp, int treeX, int treeY, int density, int treeType) {
                if (goodAxe() > 0) {
                        c.turnPlayerTo(treeX, treeY);
                        if (c.playerLevel[c.playerWoodcutting] >= levelReq) {
                                this.logType = logType;
                                this.exp = exp;
                                this.levelReq = levelReq;
                                this.treeX = treeX;
                                this.treeY = treeY;
                                this.density = density;
                                this.treeType = treeType;
                                this.axeType = goodAxe();
                                c.wcTimer = getWcTimer(density);
                                c.startAnimation(getWcEmote());
                        } else {
                                c.getPA().resetVariables();
                                c.startAnimation(65535);
                                c.sendMessage("You need a woodcutting level of " + levelReq + " to cut this tree.");
                        }               
                } else {
                        c.startAnimation(65535);
                        c.sendMessage("You don't have an axe for which you have the level to use.");
                        c.getPA().resetVariables();
                }
        }
       
        public void resetWoodcut() {
                this.logType = -1;
                this.exp = -1;
                this.levelReq = -1;
                this.axeType = -1;
                this.density = -1;
                this.treeX = -1;
                this.treeY = -1;
                this.treeType = -1;
                c.wcTimer = -1;       
        }
       
        public int getWcEmote() {
                if (c.playerEquipment[c.playerWeapon] == 1351) // bronze
                        return 879;
                if (c.playerEquipment[c.playerWeapon] == 1349) // iron
                        return 877;
                if (c.playerEquipment[c.playerWeapon] == 1353) // steel
                        return 875;
                if (c.playerEquipment[c.playerWeapon] == 1355) // mith
                        return 871;
                if (c.playerEquipment[c.playerWeapon] == 1357) // addy
                        return 869;
                if (c.playerEquipment[c.playerWeapon] == 1359) // rune
                        return 867;
                if (c.playerEquipment[c.playerWeapon] == 6739) // d axe
                        return 2846;
                if (c.playerEquipment[c.playerWeapon] == 1361) // black
                        return 873;
                else
                        return 0;
        }
       
        public void cutWood() {
                int cutorchop = Misc.random(cutForChop(treeType));
                if (cutorchop > 0) {
                        if (c.getItems().addItem(logType,1)) {
                                c.startAnimation(getWcEmote());
                                c.sendMessage("You get some logs.");
                                c.getPA().addSkillXP(exp * Config.WOODCUTTING_EXPERIENCE, c.playerWoodcutting);
                                c.getPA().refreshSkill(c.playerWoodcutting);
                                c.wcTimer = getWcTimer(density);
                        } else {
                                c.getPA().resetVariables();
                                return;
                        }
                } else {
                        for (int j = 0; j < Server.playerHandler.players.length; j++) {
                                if (Server.playerHandler.players[j] != null) {
                                        Client c2 = (Client)Server.playerHandler.players[j];
                                        //c2.getPA().object(-1, treeX, treeY, 0, 10); // first it deletes the tree
                                        //c2.getPA().object(1343, treeX, treeY, 0, 10); // then it adds the stump
                                        new Object(1343, treeX, treeY, 0, 1, 10, treeType, getTicksForTree());       
                                        c.getPA().resetVariables();
                                        resetWoodcut();
                                }
                        }
                        return;
                }
        }
       
        public int getTicksForTree() {
                return (2000-PlayerHandler.getPlayerCount())/100;
        }
       
        /*public void respawnTree() {
                for (int j = 0; j < Server.playerHandler.players.length; j++) {
                        if (Server.playerHandler.players[j] != null) {
                                Client c2 = (Client)Server.playerHandler.players[j];
                                c2.getPA().object(-1, treeX, treeY, 0, 10); // delete the stump
                                c2.getPA().object(treeType, treeX, treeY, 0, 10); // re-add the tree
                                c.getPA().resetVariables();
                                resetWoodcut();
                        }
                }
        }*/
       
        public int cutForChop(int tree) {
                if (tree == 1276 || tree == 1278)
                        return 3;
                if (tree == 1281)
                        return 5;
                if (tree == 1308)
                        return 6;
                if (tree == 1307)
                        return 7;
                if (tree == 1309)
                        return 8;
                if (tree == 1306)
                        return 10;
                else
                        return 0;
        }
       
        public int axePower(int axe) {
                if (axe == 1351) // bronze
                        return 1;
                if (axe == 1349) // iron
                        return 1;
                if (axe == 1353) // steel
                        return 2;
                if (axe == 1361) // black
                        return 2;
                if (axe == 1355) // mith
                        return 3;
                if (axe == 1357) // addy
                        return 4;
                if (axe == 1359) // rune
                        return 5;
                if (axe == 6739) //daxe
                        return 7;
                else
                        return 0;
        }
       
        public int goodAxe() {
                for (int j = VALID_AXE.length - 1; j >= 0; j--) {
                        if (c.playerEquipment[c.playerWeapon] == VALID_AXE[j]) {
                                if (c.playerLevel[c.playerWoodcutting] >= AXE_REQS[j])
                                        return VALID_AXE[j];
                        }               
                }
                for (int i = 0; i < c.playerItems.length; i++) {
                        for (int j = VALID_AXE.length - 1; j >= 0; j--) {
                                if (c.playerItems[i] == VALID_AXE[j] + 1) {
                                        if (c.playerLevel[c.playerWoodcutting] >= AXE_REQS[j])
                                                return VALID_AXE[j];
                                }
                        }               
                }
                return - 1;
        }
       
        public int getWcTimer(int density) {
                int time = Misc.random(2);
                return density + time - axePower(goodAxe());
        }

}

Despues de aber agregado toda la informacion acerca de la skill era hora de activar los botones, osea: Picarle al arbol, hara que el avatar comienze a cortar el arbol, y recivir tal log. Para hacer esto tuve que modificar el archivo:

ActionHandler.java

Luego despues de averlo modificado tuvimos que hacer que las variables concuerden con las acciones que pusimos que isiera, para eso modificamos el archivo:

Player.java

Eso es todo por ahora amigos! :)

« Last Edit: July 08, 2011, 09:06:37 pm by Mod AMC »
Mod Heinz