Cerere Quest

Avatar utilizator
demonboy12
Nivel 2

Nivel 2
Mesaje: 271
Membru din: 17 Mai 2014, 13:25
Aprecieri: 109  
Mulţumiri: 2  
Medalii

Salut Comunitate.
Are careva un quest ce iti da +1 la level??
Ex: Daca am level 10 sa utilizez un obiect si sa primesc lvl 11.
Multumesc.
Avatar utilizator
[RaffaeL]
Software Developer

Software Developer
Mesaje: 3223
Membru din: 19 Mar 2016, 12:58
Server: ...
Aprecieri: 15  
Mulţumiri: 2502  
  Rezolvări prob.: 2
Discord: Copiază ID
 Contact:
Medalii

demonboy12 scrie:Salut Comunitate.
Are careva un quest ce iti da +1 la level??
Ex: Daca am level 10 sa utilizez un obiect si sa primesc lvl 11.
Multumesc.
Presupunand ca folosesti game r40k (majoritatea au adaugata functia set_level), creaza un quest simplu de forma:
quest uplevel begin
	state start begin
		when xyz.use begin --xyz = vnum item utilizat
		local lvl = pc.get_level()+1
			pc.set_level(lvl)
		end
	end
end
Pentru acest mesaj, [RaffaeL] for the post:
demonboy12
Imagine
Imagine
https://www.youtube.com/watch?v=GhYkCIETEto
Do everything, if you know what you're doing, else... Imagine
Ma gasesti si aici: Discord https://discord.gg/5J5GnyZVSR
Afișează semnătura
Avatar utilizator
demonboy12
Nivel 2

Nivel 2
Mesaje: 271
Membru din: 17 Mai 2014, 13:25
Aprecieri: 109  
Mulţumiri: 2  
Medalii

[RaffaeL] scrie:
demonboy12 scrie:Salut Comunitate.
Are careva un quest ce iti da +1 la level??
Ex: Daca am level 10 sa utilizez un obiect si sa primesc lvl 11.
Multumesc.
Presupunand ca folosesti game r40k (majoritatea au adaugata functia set_level), creaza un quest simplu de forma:
quest uplevel begin
	state start begin
		when xyz.use begin --xyz = vnum item utilizat
		local lvl = pc.get_level()+1
			pc.set_level(lvl)
		end
	end
end
Nu merge... dau pe obiect , nu se intampla nimic.
Avatar utilizator
[RaffaeL]
Software Developer

Software Developer
Mesaje: 3223
Membru din: 19 Mar 2016, 12:58
Server: ...
Aprecieri: 15  
Mulţumiri: 2502  
  Rezolvări prob.: 2
Discord: Copiază ID
 Contact:
Medalii

demonboy12 scrie:
[RaffaeL] scrie:
demonboy12 scrie:Salut Comunitate.
Are careva un quest ce iti da +1 la level??
Ex: Daca am level 10 sa utilizez un obiect si sa primesc lvl 11.
Multumesc.
Presupunand ca folosesti game r40k (majoritatea au adaugata functia set_level), creaza un quest simplu de forma:
quest uplevel begin
	state start begin
		when xyz.use begin --xyz = vnum item utilizat
		local lvl = pc.get_level()+1
			pc.set_level(lvl)
		end
	end
end
Nu merge... dau pe obiect , nu se intampla nimic.

Verifica urmatoarele:
1. Itemul sa fie pe TYPE_QUEST(txt), sau type 18(sql)
2. Verifica daca exista, sau adauga in cazul in care lipseste:
-sursa game/ questlua_pc.cpp-> cauta

Cod: Selectaţi tot

int pc_get_level(lua_State * L)
Adauga sub acea functie:

Cod: Selectaţi tot

	int pc_set_level(lua_State * L)  
	{
		if (!lua_isnumber(L, 1))
		{
			sys_err("invalid argument");
			return 0;
		}
		else
		{
			int newLevel = lua_tonumber(L, 1);
			LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();


			sys_log(0,"QUEST [LEVEL] %s jumpint to level %d", ch->GetName(), (int)rint(lua_tonumber(L,1)));

			PC* pPC = CQuestManager::instance().GetCurrentPC();
			LogManager::instance().QuestRewardLog(pPC->GetCurrentQuestName().c_str(), ch->GetPlayerID(), ch->GetLevel(), newLevel, 0);
			
			//포인트 : 스킬, 서브스킬, 스탯
			ch->PointChange(POINT_SKILL, newLevel - ch->GetLevel());
			ch->PointChange(POINT_SUB_SKILL, newLevel < 10 ? 0 : newLevel - MAX(ch->GetLevel(), 9));
			ch->PointChange(POINT_STAT, ((MINMAX(1, newLevel, 90) - ch->GetLevel()) * 3) + ch->GetPoint(POINT_LEVEL_STEP));
			//레벨
			ch->PointChange(POINT_LEVEL, newLevel - ch->GetLevel());
			//HP, SP
			ch->SetRandomHP((newLevel - 1) * number(JobInitialPoints[ch->GetJob()].hp_per_lv_begin, JobInitialPoints[ch->GetJob()].hp_per_lv_end));
			ch->SetRandomSP((newLevel - 1) * number(JobInitialPoints[ch->GetJob()].sp_per_lv_begin, JobInitialPoints[ch->GetJob()].sp_per_lv_end));


			// 회복
			ch->PointChange(POINT_HP, ch->GetMaxHP() - ch->GetHP());
			ch->PointChange(POINT_SP, ch->GetMaxSP() - ch->GetSP());
			
			ch->ComputePoints();
			ch->PointsPacket();
			ch->SkillLevelPacket();

			return 0;
		}
	}
In acelasi fisier cauta

Cod: Selectaţi tot

void RegisterPCFunctionTable()
vei gasi mai jos

Cod: Selectaţi tot

			{ "get_level",		pc_get_level		},
adauga sub

Cod: Selectaţi tot

{			"set_level",		pc_set_level		},
In quest_function adauga

Cod: Selectaţi tot

pc.set_level
Bafta.
Pentru acest mesaj, [RaffaeL] for the post:
demonboy12
Imagine
Imagine
https://www.youtube.com/watch?v=GhYkCIETEto
Do everything, if you know what you're doing, else... Imagine
Ma gasesti si aici: Discord https://discord.gg/5J5GnyZVSR
Afișează semnătura
Avatar utilizator
demonboy12
Nivel 2

Nivel 2
Mesaje: 271
Membru din: 17 Mai 2014, 13:25
Aprecieri: 109  
Mulţumiri: 2  
Medalii

[RaffaeL] scrie:
demonboy12 scrie:
[RaffaeL] scrie:
Presupunand ca folosesti game r40k (majoritatea au adaugata functia set_level), creaza un quest simplu de forma:
quest uplevel begin
	state start begin
		when xyz.use begin --xyz = vnum item utilizat
		local lvl = pc.get_level()+1
			pc.set_level(lvl)
		end
	end
end
Nu merge... dau pe obiect , nu se intampla nimic.

Verifica urmatoarele:
1. Itemul sa fie pe TYPE_QUEST(txt), sau type 18(sql)
2. Verifica daca exista, sau adauga in cazul in care lipseste:
-sursa game/ questlua_pc.cpp-> cauta

Cod: Selectaţi tot

int pc_get_level(lua_State * L)
Adauga sub acea functie:

Cod: Selectaţi tot

	int pc_set_level(lua_State * L)  
	{
		if (!lua_isnumber(L, 1))
		{
			sys_err("invalid argument");
			return 0;
		}
		else
		{
			int newLevel = lua_tonumber(L, 1);
			LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();


			sys_log(0,"QUEST [LEVEL] %s jumpint to level %d", ch->GetName(), (int)rint(lua_tonumber(L,1)));

			PC* pPC = CQuestManager::instance().GetCurrentPC();
			LogManager::instance().QuestRewardLog(pPC->GetCurrentQuestName().c_str(), ch->GetPlayerID(), ch->GetLevel(), newLevel, 0);
			
			//포인트 : 스킬, 서브스킬, 스탯
			ch->PointChange(POINT_SKILL, newLevel - ch->GetLevel());
			ch->PointChange(POINT_SUB_SKILL, newLevel < 10 ? 0 : newLevel - MAX(ch->GetLevel(), 9));
			ch->PointChange(POINT_STAT, ((MINMAX(1, newLevel, 90) - ch->GetLevel()) * 3) + ch->GetPoint(POINT_LEVEL_STEP));
			//레벨
			ch->PointChange(POINT_LEVEL, newLevel - ch->GetLevel());
			//HP, SP
			ch->SetRandomHP((newLevel - 1) * number(JobInitialPoints[ch->GetJob()].hp_per_lv_begin, JobInitialPoints[ch->GetJob()].hp_per_lv_end));
			ch->SetRandomSP((newLevel - 1) * number(JobInitialPoints[ch->GetJob()].sp_per_lv_begin, JobInitialPoints[ch->GetJob()].sp_per_lv_end));


			// 회복
			ch->PointChange(POINT_HP, ch->GetMaxHP() - ch->GetHP());
			ch->PointChange(POINT_SP, ch->GetMaxSP() - ch->GetSP());
			
			ch->ComputePoints();
			ch->PointsPacket();
			ch->SkillLevelPacket();

			return 0;
		}
	}
In acelasi fisier cauta

Cod: Selectaţi tot

void RegisterPCFunctionTable()
vei gasi mai jos

Cod: Selectaţi tot

			{ "get_level",		pc_get_level		},
adauga sub

Cod: Selectaţi tot

{			"set_level",		pc_set_level		},
In quest_function adauga

Cod: Selectaţi tot

pc.set_level
Bafta.
Am functia adaugata deja.
Multumesc ca incerci sa ma ajuti.
Avatar utilizator
demonboy12
Nivel 2

Nivel 2
Mesaje: 271
Membru din: 17 Mai 2014, 13:25
Aprecieri: 109  
Mulţumiri: 2  
Medalii

demonboy12 scrie:
[RaffaeL] scrie:
demonboy12 scrie: Nu merge... dau pe obiect , nu se intampla nimic.

Verifica urmatoarele:
1. Itemul sa fie pe TYPE_QUEST(txt), sau type 18(sql)
2. Verifica daca exista, sau adauga in cazul in care lipseste:
-sursa game/ questlua_pc.cpp-> cauta

Cod: Selectaţi tot

int pc_get_level(lua_State * L)
Adauga sub acea functie:

Cod: Selectaţi tot

	int pc_set_level(lua_State * L)  
	{
		if (!lua_isnumber(L, 1))
		{
			sys_err("invalid argument");
			return 0;
		}
		else
		{
			int newLevel = lua_tonumber(L, 1);
			LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();


			sys_log(0,"QUEST [LEVEL] %s jumpint to level %d", ch->GetName(), (int)rint(lua_tonumber(L,1)));

			PC* pPC = CQuestManager::instance().GetCurrentPC();
			LogManager::instance().QuestRewardLog(pPC->GetCurrentQuestName().c_str(), ch->GetPlayerID(), ch->GetLevel(), newLevel, 0);
			
			//포인트 : 스킬, 서브스킬, 스탯
			ch->PointChange(POINT_SKILL, newLevel - ch->GetLevel());
			ch->PointChange(POINT_SUB_SKILL, newLevel < 10 ? 0 : newLevel - MAX(ch->GetLevel(), 9));
			ch->PointChange(POINT_STAT, ((MINMAX(1, newLevel, 90) - ch->GetLevel()) * 3) + ch->GetPoint(POINT_LEVEL_STEP));
			//레벨
			ch->PointChange(POINT_LEVEL, newLevel - ch->GetLevel());
			//HP, SP
			ch->SetRandomHP((newLevel - 1) * number(JobInitialPoints[ch->GetJob()].hp_per_lv_begin, JobInitialPoints[ch->GetJob()].hp_per_lv_end));
			ch->SetRandomSP((newLevel - 1) * number(JobInitialPoints[ch->GetJob()].sp_per_lv_begin, JobInitialPoints[ch->GetJob()].sp_per_lv_end));


			// 회복
			ch->PointChange(POINT_HP, ch->GetMaxHP() - ch->GetHP());
			ch->PointChange(POINT_SP, ch->GetMaxSP() - ch->GetSP());
			
			ch->ComputePoints();
			ch->PointsPacket();
			ch->SkillLevelPacket();

			return 0;
		}
	}
In acelasi fisier cauta

Cod: Selectaţi tot

void RegisterPCFunctionTable()
vei gasi mai jos

Cod: Selectaţi tot

			{ "get_level",		pc_get_level		},
adauga sub

Cod: Selectaţi tot

{			"set_level",		pc_set_level		},
In quest_function adauga

Cod: Selectaţi tot

pc.set_level
Bafta.
Am functia adaugata deja.
Multumesc ca incerci sa ma ajuti.
quest uplevel begin
state start begin
when 30141.use begin
local lvl = pc.get_level(1)+1
pc.set_level(lvl)
end
end
end
Sub forma asta imi da +1 la lvl.
Doar ca pana la lvl 30 imi da exp pe minus..
Iar de la lvl 92 incepe sa imi ia din punctele status cele ce nu sunt bagate pe int /vit etc
Avatar utilizator
[RaffaeL]
Software Developer

Software Developer
Mesaje: 3223
Membru din: 19 Mar 2016, 12:58
Server: ...
Aprecieri: 15  
Mulţumiri: 2502  
  Rezolvări prob.: 2
Discord: Copiază ID
 Contact:
Medalii

demonboy12 scrie:
quest uplevel begin
state start begin
when 30141.use begin
local lvl = pc.get_level(1)+1
pc.set_level(lvl)
end
end
end
Sub forma asta imi da +1 la lvl.
Doar ca pana la lvl 30 imi da exp pe minus..
Exista vre-o functie ceva sa imi dea exp pe 0.?
Nu inteleg de ce ar trebui sa adaugi info level (acel (1)), atat timp cat functia pc.get_level() verifica nivelul actual al jucatorului indiferent care ar fi acela...

Exact in forma in care l-am scris mai sus functioneaza perfect, poti vedea asta aici:
Imagine
Pentru acest mesaj, [RaffaeL] for the post:
demonboy12
Imagine
Imagine
https://www.youtube.com/watch?v=GhYkCIETEto
Do everything, if you know what you're doing, else... Imagine
Ma gasesti si aici: Discord https://discord.gg/5J5GnyZVSR
Afișează semnătura
Avatar utilizator
demonboy12
Nivel 2

Nivel 2
Mesaje: 271
Membru din: 17 Mai 2014, 13:25
Aprecieri: 109  
Mulţumiri: 2  
Medalii

[RaffaeL] scrie:
demonboy12 scrie:
quest uplevel begin
state start begin
when 30141.use begin
local lvl = pc.get_level(1)+1
pc.set_level(lvl)
end
end
end
Sub forma asta imi da +1 la lvl.
Doar ca pana la lvl 30 imi da exp pe minus..
Exista vre-o functie ceva sa imi dea exp pe 0.?
Nu inteleg de ce ar trebui sa adaugi info level (acel (1)), atat timp cat functia pc.get_level() verifica nivelul actual al jucatorului indiferent care ar fi acela...

Exact in forma in care l-am scris mai sus functioneaza perfect, poti vedea asta aici:
Imagine
Acum merge , multumesc.
Sunt insa 2 probleme.
1. pana la lvl aproximativ 50 imi da exp pe minus.
Apoi de la lvl 92 ( eu am maxim 120) incepe sa imi scada din punctele status ce inca nu sunt bagate pe int / vit etc.
Ai idee cum as putea sa rezolv?
Avatar utilizator
demonboy12
Nivel 2

Nivel 2
Mesaje: 271
Membru din: 17 Mai 2014, 13:25
Aprecieri: 109  
Mulţumiri: 2  
Medalii

demonboy12 scrie:
[RaffaeL] scrie:
demonboy12 scrie:
quest uplevel begin
state start begin
when 30141.use begin
local lvl = pc.get_level(1)+1
pc.set_level(lvl)
end
end
end
Sub forma asta imi da +1 la lvl.
Doar ca pana la lvl 30 imi da exp pe minus..
Exista vre-o functie ceva sa imi dea exp pe 0.?
Nu inteleg de ce ar trebui sa adaugi info level (acel (1)), atat timp cat functia pc.get_level() verifica nivelul actual al jucatorului indiferent care ar fi acela...

Exact in forma in care l-am scris mai sus functioneaza perfect, poti vedea asta aici:
Imagine
Acum merge , multumesc.
Sunt insa 2 probleme.
1. pana la lvl aproximativ 50 imi da exp pe minus.
Apoi de la lvl 92 ( eu am maxim 120) incepe sa imi scada din punctele status ce inca nu sunt bagate pe int / vit etc.
Ai idee cum as putea sa rezolv?
Inca o problema ... da dublu puncte status pe fiecare lvl facut !
Avatar utilizator
[RaffaeL]
Software Developer

Software Developer
Mesaje: 3223
Membru din: 19 Mar 2016, 12:58
Server: ...
Aprecieri: 15  
Mulţumiri: 2502  
  Rezolvări prob.: 2
Discord: Copiază ID
 Contact:
Medalii

demonboy12 scrie:
demonboy12 scrie:
[RaffaeL] scrie:
Nu inteleg de ce ar trebui sa adaugi info level (acel (1)), atat timp cat functia pc.get_level() verifica nivelul actual al jucatorului indiferent care ar fi acela...

Exact in forma in care l-am scris mai sus functioneaza perfect, poti vedea asta aici:
Imagine
Acum merge , multumesc.
Sunt insa 2 probleme.
1. pana la lvl aproximativ 50 imi da exp pe minus.
Apoi de la lvl 92 ( eu am maxim 120) incepe sa imi scada din punctele status ce inca nu sunt bagate pe int / vit etc.
Ai idee cum as putea sa rezolv?
Inca o problema ... da dublu puncte status pe fiecare lvl facut !
Verifica functia de puncte status dupa nivelul 90, sa fie corect scrisa(daca este modificata, cea initiala),
si rescrie questul de forma:
quest uplevel begin
	state start begin
		when xyz.use begin
		local exp=pc.get_exp()
		local lvl = pc.get_level() + 1
			pc.set_level(lvl)
			pc.give_exp2(-exp)
		end
	end
end
pentru 0 exp la lvlup.
Pentru acest mesaj, [RaffaeL] for the post:
demonboy12
Imagine
Imagine
https://www.youtube.com/watch?v=GhYkCIETEto
Do everything, if you know what you're doing, else... Imagine
Ma gasesti si aici: Discord https://discord.gg/5J5GnyZVSR
Afișează semnătura
Închis

Înapoi la “Arhivă”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 5 vizitatori