Quest Wut?

Indította Rodriguez, 2018-08-15, 15:27:45

Hi

Van egy ilyen questem:
quest statpont begin
state start begin
when 70030.use begin
int pc_give_statuspoint(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

int stat;
if (lua_isnumber(L, 1))
{
stat = (int)lua_tonumber(L, 1);
}
else
{
sys_err("Quest give status point error: %s", lua_tostring(L, 1));
return 0;
}

ch->PointChange(POINT_STAT, stat);

lua_pushnumber(L, 0);

return 1;
}
end
end
end
end


Ami azt szeretné csinálni ha valaki rá kattint akkor ad egy statpontot az illetőnek (max statpont megemelve)
Lefuttattam miután beraktam, semmi hibát nem adott ki kiirja hogy az összes quest lefutott, de ha rákattintok a tárgyra egyáltalán nem csinál semmit, nem adja meg a statpontot.

Mi lehet a bibi benne?

Ez valami kombinációs system, nem?  ;D ;D

Hát nem tudom, hogyan sikerült ezt összehozni  :-X

Ez quest rész (lua):

quest statpont begin
state start begin
when 70030.use begin
end
end
end
end


Ez pedig forrás (c++):

int pc_give_statuspoint(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

int stat;
if (lua_isnumber(L, 1))
{
stat = (int)lua_tonumber(L, 1);
}
else
{
sys_err("Quest give status point error: %s", lua_tostring(L, 1));
return 0;
}

ch->PointChange(POINT_STAT, stat);

lua_pushnumber(L, 0);

return 1;
}


Nyilván nem fog működni, ha összevannak keverve a dolgok.

http://metin2hungary.net/index.php/topic,201123.msg1063460.html#msg1063460

Szoval hulye vagyok :D

De igazabol akkor nem tudom.hogyan kene megirni azt hogy questbe adja meg a statpontot.

Bevágod questlua_pc-be aztán questbe meg:
pc.give_status
v amilyen nevet adsz neki a funkciók listában.

Szia.


Forrásban nyisd meg a questlua_pc.cpp fájlodat és keress rá erre:
int pc_set_dx( lua_State* L )


A funkció után illeszd be a te kódodat:

int pc_give_statuspoint(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();


int stat;
if (lua_isnumber(L, 1))
{
stat = (int)lua_tonumber(L, 1);
}
else
{
sys_err("Quest give status point error: %s", lua_tostring(L, 1));
return 0;
}


ch->PointChange(POINT_STAT, stat);


lua_pushnumber(L, 0);


return 1;
}



Így nézzen ki: (Nagyobb képért jobb klikk, megnyitás új lapon)



Aztán ha ez meg van ugyan ebben a fájlban keress rá erre:
{ "set_dx", pc_set_dx },


Közvetlen alá másold be ezt:
{ "give_statuspoint", pc_give_statuspoint },


Tehát így nézzen ki:



A forrás oldali része ha jól emlékszem ennyi. Fordíthatod a game fájlodat.


Questben pedig ahogy fentebb lett említve így tudod használni parancsként:
pc_give_statuspoint

Chookez:
Mindent az alapján csináltam ahogy leirtad illetve képekkel mellékelted is (hálás köszönet)

Leforditottam miután beraktam a funkciót viszont amikor a questet beraktam és le qc-ztam a putty ezt irja:
QUEST : statpont
STATE : start
WHEN : 70030.use
Calls undeclared function! :
pc_give_statuspoint
Abort (core dumped)


Tehát ugye nem működik nem észleli a funkciót, ha pc.give_statuspointot irok akkor is ugyan ezt irja ki.

Minden lépést ugyan úgy csináltam ahogy le volt irva, ötlet esetleg?

2018-08-20, 14:11:29 #7 Utolsó szerkesztés: 2018-08-20, 14:14:15 Szerző: K3zX
pc_give_statuspoint <-- írd be a qust_functions fájlba.

De amúgy nem így kellene ezt használni? pc.give_statuspoint
Mert szerintem igen, így írd be a questbe, és a quest_functionsba is.

[spoiler]A quest_functions egy sima fájl, olyan mint a quest_list.[/spoiler]

Megvan igy lefut a quest de nem történik semmi ha rákattintok.
Itt a quest talán én rontottam el valamit.:

quest statpont begin
state start begin
when 70030.use begin
pc.give_statuspoint("1")
end
end
end

Szerver oldalon az item_proto.txt-ben módosítsd az adott tárgy jelen esetben 'Vörös monokli' típusát.

Tehát ebből:



Ez lesz:

Ezer hála köszi és szöszi srácok <3
Témát zárom, remélem nem törlik valakinek még jól jöhet.