[RELEASE] Questfunctions (40k-Source - C++)

03/29/2014 23:09 Mr. 'Avenue™#1
Joa, hab lange nichts mehr released.. wird mal wieder Zeit c:

pc
Code:
	// New Functions by Avenue
	int pc_get_ip(lua_State* L)
	{
		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
		lua_pushstring(L, ch->GetDesc()->GetHostName());
		return 1;
	}

	int pc_kill(lua_State* L)
	{
		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
		ch->Dead();
		return 0;
	}

	int pc_set_coins(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 account.account SET coins = coins + '%ld' WHERE id = '%d'", val, ch->GetAID());
		
		if (msg->uiSQLErrno != 0)
		{
			sys_err("pc_update_coins query failed");
			return 0;
		}
		delete msg;
	}

	int pc_get_empire_name(lua_State* L)
	{
		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
		const char* tabelle[3] = {"Shinsoo","Chunjo","Jinno"};
		int empireave = ch->GetEmpire()-1;
		lua_pushstring(L, tabelle[empireave]);
		return 1;
	}
	// New Functions by Avenue end
Code:
			// New Functions by Avenue
			{ "get_ip",				pc_get_ip			},
			{ "kill",				pc_kill				},
			{ "set_coins",			pc_set_coins		},
			{ "get_empire_name",	pc_get_empire_name	},
			// New Functions by Avenue end

npc
Code:
	// New Functions by Avenue
	int npc_get_ip(lua_State* L)
	{
		LPCHARACTER npc = CQuestManager::instance().GetCurrentNPCCharacterPtr();
		lua_pushstring(L, npc->GetDesc()->GetHostName());
		return 1;
	}

	int npc_get_level(lua_State* L)
	{
		LPCHARACTER npc = CQuestManager::instance().GetCurrentNPCCharacterPtr();
		lua_pushnumber(L, npc->GetLevel());
		return 1;
	}

	int npc_get_name(lua_State* L)
	{
		LPCHARACTER npc = CQuestManager::instance().GetCurrentNPCCharacterPtr();
		lua_pushstring(L, npc->GetName());
		return 1;
	}

	int npc_get_job(lua_State* L)  
	{
		LPCHARACTER npc = CQuestManager::instance().GetCurrentNPCCharacterPtr();
		lua_pushnumber(L, npc->GetJob());
		return 1;
	}
	// New Functions by Avenue end
Code:
			// New Functions by Avenue
			{ "get_ip",			npc_get_ip	},
			{ "get_level",		npc_get_level	},
			{ "get_name",		npc_get_name	},
			{ "get_job",		npc_get_job	},
			// New Functions by Avenue end

Ihr könnt mir gerne weitere Questbefehle nennen. Ich würde dann versuchen, sie zu schreiben, da ich mich im Bereich C++ noch steigern will :3

Großes Dankeschön an Sanchez,InyaProduction,Metin2 Team, Xunil , etc. @ *********


###################
Oben in die questlua_npc.cpp folgendes eintragen, falls nicht vorhanden:
Code:
#include "desc.h"
[Only registered and activated users can see links. Click Here To Register...]
03/29/2014 23:11 CryPrime#2
Achtung Backdoor:
Quote:
// New Functions by Avenue end
:P

#Topic:
Sieht sehr gut aus, wird uns weiter helfen danke dir.
03/29/2014 23:15 nybu#3
Coole sache klener.
Tankesön
03/29/2014 23:16 Poccix#4
Sieht gut aus.
Weiter so ! :)
Lernst immer fleißig mehr dazu, gefällt mir.
03/29/2014 23:25 Lord Lix'#5
Schön! Dankesehr :P
Weiter so!
03/29/2014 23:48 .Risan.#6
Entferne dies bitte. Code oder veränderter code aus src ist verboten zu veröffentlichen.

Mfg
03/29/2014 23:50 Mr. 'Avenue™#7
Quote:
Originally Posted by .Risan. View Post
Entferne dies bitte. Code oder veränderter code aus src ist verboten zu veröffentlichen.

Mfg
Aus dem Source ist es nicht. Alles selbst geschrieben :D
03/30/2014 11:32 .Risan.#8
LP Charakter Definiation ist ausm src..
03/30/2014 11:50 Mr. 'Avenue™#9
Quote:
Originally Posted by .Risan. View Post
LP Charakter Definiation ist ausm src..
Aber die Funktion an sich ist nicht dabei. :)
03/30/2014 12:04 ~Ok#10
%100 useful functions. Thank you !
03/30/2014 12:26 callmax#11
Quote:
Entferne dies bitte. Code oder veränderter code aus src ist verboten zu veröffentlichen.

Mfg
Sorry, aber das find ich jetzt echt gehässig und unnötig

but b2t: nette Sachen dabei
03/30/2014 12:32 He3o Crysis#12
die pc.set_coins ist unnötig. Gibts bereits eingebaut (pc.charge_cash(arg1, arg2))

Sonst ganz nett :)
03/30/2014 13:15 iYoshix3#13
Ich würde bei solchen Dingen wie Coins immer dran denken, eine Meldung zurückzugeben, ob es auch erfolgreich war, z.b. :
Code:
int pc_set_coins(lua_State * L)
	{
		if (!lua_isnumber(L, 1))
		{
			sys_err("invalid argument");
			lua_pushnumber(L, 0);
			return 0;
		}

		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
		long val = (long)lua_tonumber(L, 1);
		SQLMsg *msg;

		msg = DBManager::instance().DirectQuery("UPDATE account.account SET coins = coins + '%ld' WHERE id = '%d'", val, ch->GetAID());
		
		if (msg->uiSQLErrno != 0)
		{
			sys_err("pc_update_coins query failed");
			lua_pushnumber(L, 0);
			return 0;
		}
		lua_pushnumber(L, 1);
		return 0;
	}
03/30/2014 18:36 rollback#14
nice :)
könntest du eine funktion schreiben um skillpunkte per quest zu vergeben ? Also so, dass der Spieler die dann selbst setzen kann ?
03/30/2014 19:18 HighWave#15
Der Typ ist 14, ohne Scheiß :D

Coole Sache :)