2x kill

Indította farmmedal, 2017-03-05, 19:35:13

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!
Ki mint vet..

Idéz
questmanager.cpp

Keress rá erre:

m_mapNPC[npc].OnKill(*pPC);


Csere erre:

if(npc > 0)
{
m_mapNPC[npc].OnKill(*pPC);
}



by Jancsi7

2017-03-05, 20:33:31 #2 Utolsó szerkesztés: 2017-03-05, 21:22:13 Szerző: farmmedal
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?
Ki mint vet..

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?
Ki mint vet..

a fájl végén van.

2017-03-06, 07:42:21 #6 Utolsó szerkesztés: 2017-03-06, 09:31:19 Szerző: farmmedal
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 :)
Ki mint vet..