[Release] Haste **

Status
Not open for further replies.
Newbie Spellweaver
Joined
Mar 21, 2008
Messages
97
Reaction score
0
Well i managed to fix haste partial, or however you spell it
the speed works fine but the jump always will be 123% i don't know why but i will fix that.

this is only for the job id 412 A.K.A Assassin's will make for bandits later

Special Thanks to Devastation for pointing me in the correct way

Code:
// Haste by Kacangboi Special Thanks to Devastation
else if(skillid == 4101004){
	vals.push_back(skills[skillid][level].speed);
	vals.push_back(skills[skillid][level].x);
	timer->stop(player, "end4101004");
	SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, (char)0x80, 0x1, 0, 0, 0, 0, 0, 0, vals, 0);
	timer->setSkillTimer(player, "end4101004", skills[skillid][level].time*1000);
	}
put the 4101004.xml file in your MaplestoryServer > Skill Folder
 

Attachments

Re: [*Release*] Haste **

putt the skill at the Your code here
Code:
else if(skillid == xxxxxxx){ 
....
...
..
}
// Code here 

}
void Skills::useAttackSkill(Player* player, int skillid){
 
Re: [*Release*] Haste **

Fixed 4 errors?

c:\documents and settings\devin\desktop\new folder (11)\maplestoryserver\skills.cpp(200) : warning C4305: 'argument' : truncation from 'int' to 'bool'
c:\documents and settings\devin\desktop\new folder (11)\maplestoryserver\skills.cpp(290) : error C2059: syntax error : 'else'
c:\documents and settings\devin\desktop\new folder (11)\maplestoryserver\skills.cpp(290) : error C2143: syntax error : missing ';' before '{'
c:\documents and settings\devin\desktop\new folder (11)\maplestoryserver\skills.cpp(290) : error C2447: '{' : missing function header (old-style formal list?)
c:\documents and settings\devin\desktop\new folder (11)\maplestoryserver\skills.cpp(298) : error C2059: syntax error : 'else'
c:\documents and settings\devin\desktop\new folder (11)\maplestoryserver\skills.cpp(298) : error C2143: syntax error : missing ';' before '{'
c:\documents and settings\devin\desktop\new folder (11)\maplestoryserver\skills.cpp(298) : error C2447: '{' : missing function header (old-style formal list?)


I usually get these things fixed.
 
Re: [*Release*] Haste **

Kaca if i was you, just post your skills.cpp with SP and Haste, this way it saves time from people asking for help.
 
Re: [*Release*] Haste **

post up your skills.cpp i will take a look ;)

Code:
#include "Skills.h"
#include "Player.h"
#include "SkillsPacket.h"
#include "Inventory.h"
#include "Maps.h"

hash_map <int, SkillInfo> Skills::skills;
#include "Timer.h"

class SkillTimer: public Timer::TimerHandler {
public:
	void setSkillTimer(Player* player, char* name, int time){
		STimer timer;
		timer.id = Timer::timer->setTimer(time, this);
		timer.player = player;
		strcpy_s(timer.name, 50, name);
		timer.time = time;
		timers.push_back(timer);
	}
	void stop (Player* player, char* name){
		for(unsigned int i=0; i<timers.size(); i++){
			if(player == timers[i].player && strcmp(timers[i].name, name) == 0){
				Timer::timer->cancelTimer(timers[i].id);
				break;
			}
		}
	}
	void stop (Player* player){
		for(unsigned int i=0; i<timers.size(); i++){
			if(player == timers[i].player){
				Timer::timer->cancelTimer(timers[i].id);
				break;
			}
		}
	}
private:
	struct STimer {
		int id;
		Player* player;
		char name[50];
		int time;
	};
	static vector <STimer> timers;
	void handle (Timer* timer, int id) {
		char name[50];
		Player* player;
		for(unsigned int i=0; i<timers.size(); i++){
			if(timers[i].id == id){
				player = timers[i].player;
				strcpy_s(name, 50, timers[i].name);
			}
		}
		if(strcmp(name, "end1001") == 0) Skills::end1001(player);
		else if(strcmp(name, "heal1001") == 0) Skills::heal1001(player);
		else if(strcmp(name, "end1002") == 0) Skills::end1002(player);
		else if(strcmp(name, "end1001003") == 0) Skills::end1001003(player);
		else if(strcmp(name, "end2001002") == 0) Skills::end2001002(player);
		else if(strcmp(name, "end2001003") == 0) Skills::end2001003(player);
		else if(strcmp(name, "end3001003") == 0) Skills::end3001003(player);
		else if(strcmp(name, "end4001003") == 0) Skills::end4001003(player);

	}
	void remove (int id){
		for(unsigned int i=0; i<timers.size(); i++){
			if(timers[i].id == id){
				timers.erase(timers.begin()+i);
				break;
			}
		}

	}
};

vector <SkillTimer::STimer> SkillTimer::timers;
SkillTimer* Skills::timer;

void Skills::stopTimerPlayer(Player* player){
	timer->stop(player);
}

void Skills::startTimer(){
	timer = new SkillTimer();
}

void Skills::addSkill(Player* player, unsigned char* packet){
	int skillid = getInt(packet+4);
	if(skillid >= 10000)
		player->setSp(player->getSp()-1);
	else
		player->setSp(player->getSp());
	player->skills->addSkillLevel(skillid, 1);
	SkillsPacket::addSkill(player, skillid, player->skills->getSkillLevel(skillid));
}
void Skills::cancelSkill(Player* player, unsigned char* packet){
	int skillid = getInt(packet);
	if(skillid == 1001){
		timer->stop(player, "end1001");
		end1001(player);
	}
	else if(skillid == 1002){
		timer->stop(player, "end1002");
		end1002(player);
	}
	else if(skillid == 1001003){
		timer->stop(player, "end1001003");
		end1001003(player);
	}
	else if(skillid == 2001002){
		timer->stop(player, "end2001002");
		end2001002(player);
	}
	else if(skillid == 2001003){
		timer->stop(player, "end2001003");
		end2001003(player);
	}
	else if(skillid == 3001003){
		timer->stop(player, "end3001003");
		end3001003(player);
	}
	else if(skillid == 4001003){
		timer->stop(player, "end4001003");
		end4001003(player);
	}
}
void Skills::useSkill(Player* player, unsigned char* packet){
	int skillid = getInt(packet+4);
	short level = player->skills->getSkillLevel(skillid);
	if(skills[skillid][player->skills->getSkillLevel(skillid)].mp > 0){
		player->setMP(player->getMP()-skills[skillid][player->skills->getSkillLevel(skillid)].mp, 1);
	}
	else
		player->setMP(player->getMP(), 1);
	if(skills[skillid][player->skills->getSkillLevel(skillid)].hp > 0){
		player->setHP(player->getHP()-skills[skillid][player->skills->getSkillLevel(skillid)].hp);
	}
	if(skills[skillid][player->skills->getSkillLevel(skillid)].item > 0){	
		Inventory::takeItem(player, skills[skillid][player->skills->getSkillLevel(skillid)].item, skills[skillid][player->skills->getSkillLevel(skillid)].itemcount);
	}
//	if(skill
//	if(Skills::
	vector <int> vals;
	if(skillid == 1001){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end1001");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 0, 0, 0, 4, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "heal1001", 4900);
		timer->setSkillTimer(player, "end1001", skills[skillid][level].time*1000);
	}
	else if(skillid == 1002){
		vals.push_back(skills[skillid][level].speed);
		timer->stop(player, "end1002");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, (char)0x80, 0, 0, 0, 0, 0, 0, 0, vals, 1);
		timer->setSkillTimer(player, "end1002", skills[skillid][level].time*1000);
	}
	else if(skillid == 1001003){
		vals.push_back(skills[skillid][level].wdef);
		timer->stop(player, "end1001003");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 2, 0, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end1001003", skills[skillid][level].time*1000);
	}
	else if(skillid == 2001002){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end2001002");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 2, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end2001002", skills[skillid][level].time*1000);
	}
	else if(skillid == 2001003){
		vals.push_back(skills[skillid][level].wdef);
		timer->stop(player, "end2001003");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 2, 0, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end2001003", skills[skillid][level].time*1000);
	}
	else if(skillid == 3001003){
		vals.push_back(skills[skillid][level].acc);
		vals.push_back(skills[skillid][level].avo);
		timer->stop(player, "end3001003");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0x30, 0, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end3001003", skills[skillid][level].time*1000);
	}
	else if(skillid == 4001003){
		if(skills[skillid][level].speed != 0)
			vals.push_back(skills[skillid][level].speed);
		vals.push_back(1);
		timer->stop(player, "end4001003");
		if(skills[skillid][level].speed != 0)
			SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, (char)0x80, 4, 0, 0, 0, 0, 0, 0, vals, 0);  // 0x1 - attack 0x2 - w.def 0x4 - m.atk 0x8 - m.def etc..
		else
			SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 4, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end4001003", skills[skillid][level].time*1000);
	}
	else if(skillid == 4111002){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end3001003");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 0, 0, 0x4, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end3001003", skills[skillid][level].time*1000);
	}
	else if(skillid == 5101001){
		vals.push_back(skills[skillid][level].speed);
		timer->stop(player, "end5101001");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, (char)0, 0x1, 0, 0, 0x1, 0, 0, 0, vals, 2);
		timer->setSkillTimer(player, "end5101001", skills[skillid][level].time*1000);
	}
	else if(skillid == 4201002){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end4201002");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 0x8, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end4201002", skills[skillid][level].time*1000);
	}
	else if(skillid == 4101003){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end4101003");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 0x8, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end4101003", skills[skillid][level].time*1000);
	}
	else if(skillid == 4001003){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end4001003");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 0x4, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end4001003", skills[skillid][level].time*1000);
	}
	else if(skillid == 1101005){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end1101005");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 0x8, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end1101005", skills[skillid][level].time*1000);
	}
	else if(skillid == 1101004){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end1101004");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 0x8, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end1101004", skills[skillid][level].time*1000);
	}
	else if(skillid == 1201005){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end1201005");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 0x8, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end1201005", skills[skillid][level].time*1000);
	}
	else if(skillid == 1201004){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end1201004");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 0x8, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end1201004", skills[skillid][level].time*1000);
	}
	else if(skillid == 1301005){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end1301005");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 0x8, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end1301005", skills[skillid][level].time*1000);
	}
	else if(skillid == 1301004){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end1301004");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 0x8, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end1301004", skills[skillid][level].time*1000);
	}
	else if(skillid == 3101002){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end3101002");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 0x8, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end3101002", skills[skillid][level].time*1000);
	}
	else if(skillid == 3201002){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end3201002");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 0x8, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end3201002", skills[skillid][level].time*1000);
	}
	else if(skillid == 1101007){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end1101007");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 0x10, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end1101007", skills[skillid][level].time*1000);
	}
	else if(skillid == 1201007){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end1201007");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0, 0x10, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end1201007", skills[skillid][level].time*1000);
	}
	else if(skillid == 1101006){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end1101006");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0x1, 0, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end1101006", skills[skillid][level].time*1000);
		// Edited by Cyberninjitsu
	}
}
// Haste by Kacangboi Special Thanks to Devastation
else if(skillid == 4101004);{
		vals.push_back(skills[skillid][level].speed);
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, (char)0x80, 0x1, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end4101004", skills[skillid][level].time*1000);
	}
void Skills::useAttackSkill(Player* player, int skillid){
	if(skills.find(skillid) == skills.end())
		return;
	if(skills[skillid][player->skills->getSkillLevel(skillid)].mp > 0){
		player->setMP(player->getMP()-skills[skillid][player->skills->getSkillLevel(skillid)].mp);
	}
	if(skills[skillid][player->skills->getSkillLevel(skillid)].hp > 0){
		player->setHP(player->getHP()-skills[skillid][player->skills->getSkillLevel(skillid)].hp);
	}
	if(skills[skillid][player->skills->getSkillLevel(skillid)].item > 0){	
		Inventory::takeItem(player, skills[skillid][player->skills->getSkillLevel(skillid)].item, skills[skillid][player->skills->getSkillLevel(skillid)].itemcount);
	}

}

void Skills::end1001(Player* player){
	timer->stop(player, "heal1001");
	SkillsPacket::endSkill(player, Maps::info[player->getMap()].Players, 0, 0, 0, 0, 4, 0, 0, 0, 0);
}

void Skills::end1002(Player* player){
	SkillsPacket::endSkill(player, Maps::info[player->getMap()].Players, (char)0x80, 0, 0, 0, 0, 0, 0, 0, 1);
}
void Skills::end1001003(Player* player){
	SkillsPacket::endSkill(player, Maps::info[player->getMap()].Players, 2, 0, 0, 0, 0, 0, 0, 0, 0);
}

void Skills::end2001002(Player* player){
	SkillsPacket::endSkill(player, Maps::info[player->getMap()].Players, 0, 2, 0, 0, 0, 0, 0, 0, 0);
}
void Skills::end2001003(Player* player){
	SkillsPacket::endSkill(player, Maps::info[player->getMap()].Players, 2, 0, 0, 0, 0, 0, 0, 0, 0);
}
void Skills::end3001003(Player* player){
	SkillsPacket::endSkill(player, Maps::info[player->getMap()].Players, 0x30, 0, 0, 0, 0, 0, 0, 0, 0);
}
void Skills::end4001003(Player* player){
	if(skills[4001003][player->skills->getSkillLevel(4001003)].speed != 0)
		SkillsPacket::endSkill(player, Maps::info[player->getMap()].Players, (char)0x80, 4, 0, 0, 0, 0, 0, 0, 1);	
	else
		SkillsPacket::endSkill(player, Maps::info[player->getMap()].Players, 0, 4, 0, 0, 0, 0, 0, 0, 1);	
}

void Skills::heal1001(Player* player){
	if(player->getHP() < player->getMHP()){
		player->setHP(player->getHP()+skills[1001][player->skills->getSkillLevel(1001)].x);
		SkillsPacket::healHP(player, skills[1001][player->skills->getSkillLevel(1001)].x);
	}
	timer->setSkillTimer(player, "heal1001", 5000);
}


This is it
 
Re: [*Release*] Haste **

you messed up with the }

Code:
else if(skillid == 1101006){
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end1101006");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, 0x1, 0, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end1101006", skills[skillid][level].time*1000);
		// Edited by Cyberninjitsu
	}
[COLOR=red][B]}  <- Remove This one[/B][/COLOR]
// Haste by Kacangboi Special Thanks to Devastation
else if(skillid == 4101004);{
		vals.push_back(skills[skillid][level].speed);
		vals.push_back(skills[skillid][level].x);
		timer->stop(player, "end");
		SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, (char)0x80, 0x1, 0, 0, 0, 0, 0, 0, vals, 0);
		timer->setSkillTimer(player, "end4101004", skills[skillid][level].time*1000);
	}
[COLOR=red][B]} <--- Add here[/B][/COLOR] 
void Skills::useAttackSkill(Player* player, int skillid){
	if(skills.find(skillid) == skills.end())
		return;
	if(skills[skillid][player->skills->getSkillLevel
 
Re: [*Release*] Haste **

thx , btw if u want Bandit haste aswell then just copy this file and rename it to 4201003
and put it onto your skills folder :)

and then add this :

Code:
// Haste by Kacangboi Special Thanks to Devastation
else if(skillid == 4101003){
	vals.push_back(skills[skillid][level].speed);
	vals.push_back(skills[skillid][level].x);
	timer->stop(player, "end4101003");
	SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, (char)0x80, 0x1, 0, 0, 0, 0, 0, 0, vals, 0);
	timer->setSkillTimer(player, "end4101003", skills[skillid][level].time*1000);
	}
 
Re: [*Release*] Haste **

Code:
else if(skillid == 4101003){
 vals.push_back(skills[skillid][level].speed);
 vals.push_back(skills[skillid][level].x);
 timer->stop(player, "end4101003");
 SkillsPacket::useSkill(player, Maps::info[player->getMap()].Players , skillid, skills[skillid][level].time*1000, (char)0x80, 0x1, 0, 0, 0, 0, 0, 0, vals, 0);
 timer->setSkillTimer(player, "end4101003", skills[skillid][level].time*1000);
 }
Bandit haste.
You shold know how to make the end4101003 stuffs.

EDIT: haha, you posted when i were just typing it :D
 
Re: [*Release*] Haste **

dont you need to add the edskill function to and in the Scripts.h like you do in Shadow Partner?
 
Status
Not open for further replies.
Back