Пример #1
0
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;
}
Пример #2
0
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);
  }
}
Пример #3
0
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;
}
Пример #4
0
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);
}
Пример #5
0
void LuaTable::addIndex_String(int index, LuaString str)
{
  LuaTableIndex_String fs;
  fs.index = index;
  fs.value = str.get();
  
  i_strings.push_back(fs);
}
Пример #6
0
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);
}
Пример #7
0
void LuaTable::addField_String(std::string name, LuaString str)
{
  LuaTableField_String fs;
  fs.name = name;
  fs.value = str.get();
  
  strings.push_back(fs);
}
Пример #8
0
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);
}
Пример #9
0
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;
}
Пример #10
0
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;
}
Пример #11
0
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;
}
Пример #12
0
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;
}
Пример #13
0
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;
}
Пример #14
0
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;	
}
Пример #15
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);
  }
}
Пример #16
0
bool KTarget_Dialog::IsOver(void)
{
	LuaString sn = this->GetCounterName();
	KQuestNew* pQuest = m_pGroup->GetOwner();
	return pQuest->GetSession(sn.c_str(), 0) > 0;
}
Пример #17
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();
}
Пример #19
0
bool KTarget_KillMonster::IsOver(void)
{
	LuaString sn = this->GetCounterName();
	KQuestNew* pQuest = m_pGroup->GetOwner();
	return pQuest->GetSession(sn.c_str(), 0) >= m_total;
}