Quest rész kérés.

Indította gyertya, 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.

Egy if meghaladja a képességed? :o ???

Alapvetően nincs "másikjátékos.getqf" funkció, szóval jogos a felvetés.
"Tisztelet a kivételnek! Mindig tisztelet a kivételnek!"
"KezdÅ' vagyok, ne nézz le... (:"

Pati ha csak egy if lenne, akkor megoldottam volna...

2018-06-09, 22:39:38 #4 Utolsó szerkesztés: 2018-06-09, 22:56:06 Szerző: 5310pati
npc = npc.get_vid()
pc.select(npc)
killed_player_flag = pc.getqf(...)

És hogy veszi el a megölt játékostól a pontot?

2018-06-09, 22:53:37 #6 Utolsó szerkesztés: 2018-06-10, 16:53:53 Szerző: [MOD]Ken
Rly? :o :o
[spoiler]setqf-gel adsz neki 1-gyel kisebb értéket... vagy amennyit el akarsz venni
pc.setqf("asd", fgh - 1)[/spoiler]

De hát azzal hogy tudnék másnak adni? Hát én ezt most már totálisan nem értem...

2018-06-09, 22:56:26 #8 Utolsó szerkesztés: 2018-06-09, 23:03:01 Szerző: 5310pati
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


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.

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.
"Tisztelet a kivételnek! Mindig tisztelet a kivételnek!"
"KezdÅ' vagyok, ne nézz le... (:"