Sziasztok :)
40k-n hogyan tudom javítani a 2x kill szorzót?
Diffet próbáltam, de tudtam, hogy nem fog menni, és questmanagerben is próbáltam valamit amit epvp-n találtam, de semmi hatása :s
Köszi előre is!
Idéz
questmanager.cpp
Keress rá erre:
m_mapNPC[npc].OnKill(*pPC);
Csere erre:
if(npc > 0)
{
m_mapNPC[npc].OnKill(*pPC);
}
by Jancsi7
igen, rátaláltam epvpn, köszönöm szépen!
Viszont az accountra nem tölti fel az adatokat :s
Üzenet összefésülés: 2017-03-05, 21:22:13
http://metin2hungary.net/index.php/topic,179564.msg945029.html#msg945029
Ez alapján csináltam meg a sajátomat.:
function pc.change_pvppont(x)
mysql_query("UPDATE player.player SET pvppont=pvppont+'"..x.."' WHERE id='"..pc.get_player_id().."' LIMIT 1")
end
questfuncion: pc.change_pvppont
Nem accounthoz akarom kötni, hanem playerhez.
Mifenéért nem működik?:s
db syserr:
SYSERR: Mar 5 21:52:53.41004 :: ChildLoop: AsyncSQL: query failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) (query: SELECT id,login,vnum,count,socket0,socket1,socket2,mall,why FROM item_award WHERE taken_time IS NULL and id > 0 errno: 2002)
auth:
SYSERR: Mar 5 21:57:40.308922 :: socket_connect: HOST localhost:60500, could not connect.
ch1:
SYSERR: Mar 5 22:04:34.174415 :: RunState: LUA_ERROR: [string "teszter"]:1: attempt to call field `change_pvppont' (a nil value)
SYSERR: Mar 5 22:04:34.174445 :: WriteRunningStateToSyserr: LUA_ERROR: quest teszter.start click
Értem, hogy 0 az érték, de change_pvppont oszlopot keres a player adatbázisban?
tegyél a game fájl forrásba mysql_query() parancsot!
[spoiler]
questlua_game.cpp-t megnyitod
elejére írod ezt:
////mysql////
#include "db.h"
Rákeresel erre:
int game_web_mall(lua_State* L)
Alá írod ezt:
////////mysql///////
int game_mysql_query(lua_State* L)
{
//MYSQL_FIELD *field;
SQLMsg* run = DBManager::instance().DirectQuery(lua_tostring(L,1));
MYSQL_RES* res=run->Get()->pSQLResult;
if (!res){
lua_pushnumber(L, 0);
return 0;
}
MYSQL_ROW row;
lua_newtable(L);
int rowcount = 1;
while((row = mysql_fetch_row(res))){
lua_newtable(L);
lua_pushnumber(L, rowcount);
lua_pushvalue(L, -2);
lua_settable(L, -4);
unsigned int fields = mysql_num_fields(res);
for(unsigned int i = 0; i < fields; i++){
lua_pushnumber(L, i + 1);
lua_pushstring(L, row[i]);
lua_settable(L, -3);
}
lua_pop(L, 1);
rowcount++;
}
return 1;
}
//////////////////////////////////////////////
A 'void RegisterGameFunctionTable()' táblába pedig beírod a listába:
/////mysql/////
{"mysql_query", game_mysql_query },
/////////////////////////////////
[/spoiler]
pvp pont pedig forrásban rá új parancs:
questlua_pc.cpp
[spoiler]
Hozzáad:
int pc_add_pvp(lua_State * L)
{
if (!lua_isnumber(L, 1))
{
sys_err("invalid argument");
return 0;
}
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
long val = (long)lua_tonumber(L, 1);
SQLMsg *msg;
msg = DBManager::instance().DirectQuery("UPDATE player.player SET pvp = pvp + '%ld' WHERE id = '%d'", val, ch->GetAID());
if (msg->uiSQLErrno != 0)
{
sys_err("pc_update_add_pvp query failed");
return 0;
}
delete msg;
}
Lekérdezi mennyi van:
int pc_get_pvp(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
if (ch == NULL)
return 0;
SQLMsg *msg = DBManager::instance().DirectQuery("SELECT pvp FROM player.player WHERE id = '%d'", ch->GetAID());
if (msg->uiSQLErrno != 0)
return 0;
MYSQL_RES *res = msg->Get()->pSQLResult;
MYSQL_ROW row = mysql_fetch_row(res);
if (!row[0])
return 0;
lua_pushnumber(L, atoi(row[0]));
return 1;
}
A fájl végére a listába beszúrod:
{ "add_pvp", pc_add_pvp },
{ "get_pvp", pc_get_pvp },
navicat --> player-->player táblában hozz létre egy pvp nevű oszlopot![/spoiler]
(Én így oldottam meg a SÉ lekérdezést, mert ugyan úgy hibát írt nekem is mint neked.) 8)
Köszönöm a gyors választ^^
Táblát már hoztam létre, csak át kell neveznem akkor :)
Azt a bizonyos void registergamefunctiontable táblát hol találom meg?
a fájl végén van.
Igazából most jöttem rá, értelmetlen kérdés volt a részemről, mivel működött.. :D
Mégsem zárom, rosszat néztem :D
Még nem sikerült megcsinálnom :s
A 2x killt sikerült csak kiszednem :)