Metin2 Hungarian Forum

Metin2 => Szerver készítés => Privát szerverek => Segítség => A témát indította: gyertya Dátum 2018-06-09, 22:20:00

Cím: Quest rész kérés.
Írta: gyertya Dátum 2018-06-09, 22:20:00
Sziasztok.

Valaki erre tudna írni egy questet, sajnos az én képességeimet meghaladja... x)

Ha valakit megölsz, és annak a valakinek van egy pontja (Ezt a pontot pc.setqf-el adom neki) akkor a megölt játékostól elvegye a pontot és annak adja aki megölte.
Cím: Re:Quest rész kérés.
Írta: 5310pati Dátum 2018-06-09, 22:35:22
Egy if meghaladja a képességed? :o ???
Cím: Re:Quest rész kérés.
Írta: [VIP]Rin the Exorcist Dátum 2018-06-09, 22:37:22
Alapvetően nincs "másikjátékos.getqf" funkció, szóval jogos a felvetés.
Cím: Re:Quest rész kérés.
Írta: gyertya Dátum 2018-06-09, 22:38:38
Pati ha csak egy if lenne, akkor megoldottam volna...
Cím: Re:Quest rész kérés.
Írta: 5310pati Dátum 2018-06-09, 22:39:38
npc = npc.get_vid()
pc.select(npc)
killed_player_flag = pc.getqf(...)
Cím: Re:Quest rész kérés.
Írta: gyertya Dátum 2018-06-09, 22:52:30
És hogy veszi el a megölt játékostól a pontot?
Cím: Re:Quest rész kérés.
Írta: 5310pati Dátum 2018-06-09, 22:53:37
Rly? :o :o
[spoiler]setqf-gel adsz neki 1-gyel kisebb értéket... vagy amennyit el akarsz venni
pc.setqf("asd", fgh - 1)[/spoiler]
Cím: Re:Quest rész kérés.
Írta: gyertya Dátum 2018-06-09, 22:55:20
De hát azzal hogy tudnék másnak adni? Hát én ezt most már totálisan nem értem...
Cím: Re:Quest rész kérés.
Írta: 5310pati Dátum 2018-06-09, 22:56:26
Idézetet írta: 5310pati Dátum 2018-06-09, 22:39:38
npc = npc.get_vid()
pc.select(npc)
killed_player_flag = pc.getqf(...)


Üzenet összefésülés: 2018-06-09, 23:03:01

De tessék...
quest asd begin
state start beign
when kill with npc.is_pc() begin
local player = pc.get_vid()
local victim = npc.get_vid()
pc.select(victim) -- switch to killed enemy
local victim_points = pc.getqf("asd")
if victim_points >= 1 then
pc.setqf("asd", victim_points - 1)
pc.select(player) -- switch back to the player
pc.setqf("asd", pc.getqf("asd") + 1)
end
end
end
end
Cím: Re:Quest rész kérés.
Írta: gyertya Dátum 2018-06-09, 23:06:06
Köszönöm.
Cím: Re:Quest rész kérés.
Írta: 5310pati Dátum 2018-06-09, 23:12:06
Sőt... ha nagyon akarod írtam 1 ilyet (nem teszteltem szóval nem biztos hogy jó)
int npc_get_quest_flag(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPCHARACTER npc = q.GetCurrentNPCCharacterPtr();
if (npc && npc->IsPC())
{
if (!lua_isstring(L, -1))
{
sys_err("QUEST wrong get flag");
return 0;
}
else
{
const char* sz = lua_tostring(L, -1);
lua_pushnumber(L, npc->GetQuestFlag(q.GetCurrentQuestName() + "." + sz));
if (test_server)
sys_log(0, "NPC_GetQF ( %s . %s )", q.GetCurrentQuestName().c_str(), sz);
}
}
return 1;
}

int npc_set_quest_flag(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPCHARACTER npc = q.GetCurrentNPCCharacterPtr();
if (npc && npc->IsPC())
{
if (!lua_isstring(L, 1) || !lua_isnumber(L, 2))
{
sys_err("QUEST wrong set flag");
}
else
{
const char* sz = lua_tostring(L, 1);
npc->SetQuestFlag(sz, int(rint(lua_tonumber(L, 2))));
}
}
return 1;
}

majd
{ "getqf", npc_get_quest_flag },
{ "setqf", npc_set_quest_flag },

Ha jóra sikerült akk nem kell szórakozni, hanem simán npc.getqf és npc.setqf-gel tudod állítgatni.
Cím: Re:Quest rész kérés.
Írta: [VIP]Rin the Exorcist Dátum 2018-06-09, 23:19:52
Idézetet írta: 5310pati Dátum 2018-06-09, 22:39:38
npc = npc.get_vid()
pc.select(npc)
killed_player_flag = pc.getqf(...)


Fúh, még forrás előtt ezzel sokat szórakoztam, viszont komplexebb rendszereknél már megadta magát, amikor többször is kellett váltanom a játékosok között. Kisebb dolgokra lehet megfelelő, de én nem ajánlom a használatát.. :-X




Tesztelt működő forrásos változatot meg ha jól emlékszek devre rakott ki Béla még annó, szóval ha ez nem lenne jó akkor használd azt.
EhPortal 1.39 © 2025, WebDev