int KTarget_QuestOver::_GetIntAttr(const char* name, int defVal) { if (stricmp(name, "quest") == 0) { return m_qid; } else if (stricmp(name, "questType") == 0) { return m_qType; } else if(stricmp(name, "reason") == 0) { return m_reason; } else if (stricmp(name, "count") == 0) { LuaString sn = this->GetCounterName(); int n = GetQuest()->GetSession(sn.c_str(), defVal); n = (n > 0)?n:0; return min(n,m_total); } else if (stricmp(name, "total") == 0) { return m_total; } return defVal; }
LuaResult luaG_runerror (const char* fmt, ...) { char buffer1[256]; char buffer2[256]; va_list argp; va_start(argp, fmt); vsnprintf(buffer1, 256, fmt, argp); va_end(argp); LuaThread* L = thread_L; LuaStackFrame *ci = L->stack_.callinfo_; if (ci->isLua()) { /* is Lua code? */ int line = ci->getCurrentLine(); LuaString *src = ci->getFunc()->getLClosure()->proto_->source; if (src) { std::string buff = luaO_chunkid2(src->c_str()); _snprintf(buffer2, 256, "%s:%d: %s", buff.c_str(), line, buffer1); return luaG_errormsg2(buffer2); } else { // no source available; use "?" instead _snprintf(buffer2, 256, "?:%d: %s", line, buffer1); return luaG_errormsg2(buffer2); } } else { return luaG_errormsg2(buffer1); } }
bool KTarget_GetItem::IsOver(void) { LuaString sn = this->GetCounterName(); KQuestNew* pQuest = m_pGroup->GetOwner(); int n = pQuest->GetSession(sn.c_str(), 0); return n >= m_total; }
void KPlayerQuestManager::OnTargetAttr(int qid, int group, int target, const LuaString& name, const LuaString& val) { KQuestNew* pQuest = this->GetQuest(qid); if(!pQuest) return; KTargetGroup* pGrp = pQuest->GetGroup(group); if(!pGrp) return; KQuestTarget* pTarget = pGrp->GetTarget(target); if(!pTarget) return; pTarget->SetAttr(name.c_str(), val.c_str()); m_tmpQuests.insert_unique(pQuest); }
void LuaTable::addIndex_String(int index, LuaString str) { LuaTableIndex_String fs; fs.index = index; fs.value = str.get(); i_strings.push_back(fs); }
void KPlayerQuestManager::OnQuestAttr(int qid, int attrId, const LuaString& val) { KQuestNew* pQuest = this->GetQuest(qid); if(!pQuest) return; pQuest->SetAttr(attrId, (char*)val.c_str()); m_tmpQuests.insert_unique(pQuest); }
void LuaTable::addField_String(std::string name, LuaString str) { LuaTableField_String fs; fs.name = name; fs.value = str.get(); strings.push_back(fs); }
int luaL_argerror (LuaThread *L, int narg, const char *extramsg) { THREAD_CHECK(L); LuaDebug ar; if (!lua_getstack(L, 0, &ar)) /* no stack frame? */ return luaL_error(L, "bad argument #%d (%s)", narg, extramsg); lua_getinfo(L, "n", &ar); if (strcmp(ar.namewhat2.c_str(), "method") == 0) { narg--; /* do not count `self' */ if (narg == 0) /* error is in the self argument itself? */ return luaL_error(L, "calling " LUA_QS " on bad self", ar.name2.c_str()); } if (ar.name2.empty()) { LuaString* name = getglobalfuncname(L, &ar); ar.name2 = name ? name->c_str() : "?"; } return luaL_error(L, "bad argument #%d to " LUA_QS " (%s)", narg, ar.name2.c_str(), extramsg); }
int KTarget_UseItem::_GetIntAttr( const char* name, int defVal ) { if (stricmp(name, "obj") == 0) { return m_objId; } else if (stricmp(name, "type") == 0) { return m_objType; } else if (stricmp(name, "npc") == 0) { return m_npcId; } else if (stricmp(name, "adr") == 0) { return m_adr; } else if (stricmp(name, "x") == 0) { return m_x; } else if (stricmp(name, "y") == 0) { return m_y; } else if (stricmp(name, "item") == 0) { return m_itemId; } else if (stricmp(name, "count") == 0) { LuaString sn = this->GetCounterName(); KQuestNew* pQuest = m_pGroup->GetOwner(); int n = pQuest->GetSession(sn.c_str(), defVal); return min(n, m_total); } else if (stricmp(name, "total") == 0) { return m_total; } return defVal; }
bool KTarget_KillMonster::_OnGameEvent(int evtId, void* evtData, int len) { if (evtId == KEventAbout::enumWorldEvent_KillMonster) { KEventAbout::KEDKillMonster& evt = *(KEventAbout::KEDKillMonster*)evtData; if(!this->IsCared(evt.m_nMonsterID)) return false; }else{ return false; } KQuestNew* pQuest = m_pGroup->GetOwner(); LuaString sn = this->GetCounterName(); int n = pQuest->GetSession(sn.c_str(), 0); n++; pQuest->SetSession(sn.c_str(), n); if(n > m_total) return false; return true; }
int KTarget_GetItem::_GetIntAttr(const char* name, int defVal) { if (stricmp(name, "item") == 0) { ASSERT(m_itemCount > 0); return m_itemIds[0]; } else if (stricmp(name, "count") == 0) { LuaString sn = this->GetCounterName(); KQuestNew* pQuest = m_pGroup->GetOwner(); int count = pQuest->GetSession(sn.c_str(), defVal); return min(count, m_total); } else if (stricmp(name, "total") == 0) { return m_total; } return defVal; }
int KTarget_Dialog::_GetIntAttr(const char* name, int defVal) { if (stricmp(name, "npc") == 0) { ASSERT(m_npcCount > 0); return m_npcIds[0]; } else if (stricmp(name, "dialog") == 0) { return m_dialogIdx; } else if (stricmp(name, "count") == 0) { LuaString sn = this->GetCounterName(); KQuestNew* pQuest = m_pGroup->GetOwner(); return pQuest->GetSession(sn.c_str(), defVal) > 0 ? 1 : 0; } else if (stricmp(name, "total") == 0) { return 1; } return defVal; }
int KTarget_PlayerOperate::_GetIntAttr( const char* name, int defVal ) { if (stricmp(name, "type") == 0) { return m_opType; } else if (stricmp(name, "param") == 0) { return m_opParam; } else if (stricmp(name, "count") == 0) { LuaString sn = this->GetCounterName(); KQuestNew* pQuest = this->GetQuest(); int count = pQuest->GetSession(sn.c_str(), defVal); return min(count, 1); } else if (stricmp(name, "total") == 0) { return 1; } return defVal; }
int luaU_onError(lua_State* L) { int n = 0; LuaString str; char buf[1024]; buf[0] = 0; str = lua_tostring(L, -1); str.append("\n"); int level = 0; lua_Debug luaDebug; while(lua_getstack(L, level++, &luaDebug)) { if(!lua_getinfo(L, "nSl", &luaDebug)) break; n += _getDebugInfo(luaDebug, &buf[n], 1024-n); } str.append(buf); g_luaLogger.WriteLog(LOG_WARN, "%s", str.c_str()); printf_k("LuaError: %s\n", str.c_str()); return 0; }
static void pushfuncname (LuaThread *L, LuaDebug *ar) { THREAD_CHECK(L); //if (*ar->namewhat != '\0') { if(!ar->namewhat2.empty()) { /* is there a name? */ lua_pushfstring(L, "function " LUA_QS, ar->name2.c_str()); } else if (ar->what2 == "main") { /* main? */ lua_pushfstring(L, "main chunk"); } else if (ar->what2 == "C") { LuaString* name = getglobalfuncname(L,ar); if (name) { lua_pushfstring(L, "function " LUA_QS, name->c_str()); } else { lua_pushliteral(L, "?"); } } else { lua_pushfstring(L, "function <%s:%d>", ar->short_src2.c_str(), ar->linedefined); } }
bool KTarget_Dialog::IsOver(void) { LuaString sn = this->GetCounterName(); KQuestNew* pQuest = m_pGroup->GetOwner(); return pQuest->GetSession(sn.c_str(), 0) > 0; }
bool KTarget_QuestOver::IsOver(void) { LuaString sn = this->GetCounterName(); return this->GetQuest()->GetSession(sn.c_str(), 0) >= m_total; }
/** Sets the value of the element as a string value */ void LuaTableElement::set(LuaString str) { type = STRING; string_value = str.get(); }
bool KTarget_KillMonster::IsOver(void) { LuaString sn = this->GetCounterName(); KQuestNew* pQuest = m_pGroup->GetOwner(); return pQuest->GetSession(sn.c_str(), 0) >= m_total; }