3 új függvény questekhez

Indította Distraught, 2018-02-26, 22:31:40

2018-02-26, 22:31:40 Utolsó szerkesztés: 2018-03-11, 20:20:25 Szerző: Distraught
Sziasztok,
Itt van 3 új függvény, ha nem akartok a pc.select-el szórakozni, de másik karakter questflagjét akarjátok módosítani.
questlua_pc.cpp-be:

int pc_get_pid_by_name(lua_State* L)
{
if(!lua_isstring(L, 1))
return 0;
char * name = lua_tostring(L, 1);
int output = 0;
std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT id FROM player WHERE name = '%s'", name));
if ( pMsg->Get()->uiNumRows > 0 )
{
MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult);
str_to_number(output, row[0]);
}
lua_pushnumber(L, output);
return 0;
}
int pc_set_quest_flag2(lua_State* L)
{
if(!(lua_isnumber(L, 1) && lua_isstring(L, 2) && lua_isstring(L, 3)))
return 0;
int pid = lua_tonumber(L, 1);
char * qname = lua_tostring(L, 2);
char * flagname = lua_tostring(L, 3);
int value = lua_isnumber(L, 4) ? lua_tostring(L, 4) : 0;
DBManager::instance().Query("UPDATE quest SET lValue = %d WHERE szName = '%s' AND szState = '%s' AND dwPID=%d", value, qname, flagname, pid);
return 0;
}

int pc_get_quest_flag2(lua_State* L)
{
if(!(lua_isnumber(L, 1) && lua_isstring(L, 2) && lua_isstring(L, 3)))
return 0;
int pid = lua_tonumber(L, 1);
char * qname = lua_tostring(L, 2);
char * flagname = lua_tostring(L, 3));
int output = 0;
std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT lValue FROM quest WHERE szName = '%s' AND szState = '%s' AND dwPID=%d", qname, flagname, pid));
if ( pMsg->Get()->uiNumRows > 0 )
{
MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult);
str_to_number(output, row[0]);
}
lua_pushnumber(L, output);
return 0;
}

Végére:

{"get_pid_by_name", pc_get_pid_by_name},
{"getqf2", pc_get_quest_flag2},
{"setqf2", pc_set_quest_flag2},

Használatuk:
pc.get_pid_by_name("karakternév") -- ezzel megkapod egy karakter PID-jét a neve alapján
pc.getqf2(pid, questnév, flagnév)
pc.setqf2(pid, questnév, flagnév, érték)

C++ programmer at Gameloft