Metin2 Hungarian Forum

Metin2 => Szerver készítés => Privát szerverek => Segítség => A témát indította: Fantasy™ Dátum 2017-07-30, 14:22:10

Cím: quest kérés
Írta: Fantasy™ Dátum 2017-07-30, 14:22:10
Sziasztok nem találok olyan questet ami 250-ről leszintel 1 re egyáltalán létezik? Ha igen valaki eltudná küldeni?
Cím: Re:quest kérés
Írta: Nexus™ Dátum 2017-07-30, 14:39:40
Ez vissza tesz 1-es szintre is.

quest test begin
state start begin
when NPCID.chat."ADOKÉNSZINTETTEPARASZT" begin
local szint, yang
say("MENNYISZINTKÖLLNEKEDTELEGÉNY")
say("MEGADOKNEKEDMINDENTTEBUTA")
local s = select("Szint 1", "Szint 250","Mégse")
if s == 1 then
szint = 1
elseif s == 2 then
szint = 250
elseif s == 3 then
return
end
if pc.level >= szint then
syschat("MITAKARSZMÁELÉRTEDASZINTEDET")
return
end
while pc.get_level() < szint do
pc.give_exp2(pc.get_next_exp()-pc.get_exp())
end
end
end
end
Cím: Re:quest kérés
Írta: Fantasy™ Dátum 2017-07-31, 14:15:15
Nem jó sajnos nem szintel le
Cím: Re:quest kérés
Írta: Distraught Dátum 2017-08-01, 11:53:44
hozz létre quest funkciót a szintadáshoz
tessék, gyorsan írtam egyet, szerintem működik
questlua_pc.cpp:

int szintallitas(lua_State * L)
{
if (!lua_isnumber(L, 1))
{
return 0;
}
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
ch->ResetPoint(MINMAX(1, lua_tonumber(L,1), PLAYER_MAX_LEVEL_CONST));
ch->ClearSkill();
ch->ClearSubSkill();
return 0;
}


majd a RegisterPCFunctionTable-be:

{"szintallitas", szintallitas},

questben pedig ezután:
pc.szintallitas(1)

nem teszteltem, épp munkában vagyok, de szerintem működik
Cím: Re:quest kérés
Írta: 5310pati Dátum 2017-08-01, 15:11:19
Alapból van a forrásban ilyen funkció, ezt tegnap el is küldtem neki privátban:
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;
}
}

és még ez is meg van hozzá
{ "set_level", pc_set_level },
szóval simán használható questbe.
EhPortal 1.39 © 2025, WebDev