Problema creare breasla

Înainte de a posta o problemă, caută în acest forum și poate găsești rezolvare.
Închis
Avatar utilizator
RedFear
Nivel 1

Nivel 1
Mesaje: 97
Membru din: 02 Apr 2016, 11:48
Regat: Jinno
Aprecieri: 33  
Mulţumiri: 1  
 Contact:
Medalii

*Problemă: Nu ma lasa sa creez breasla....
Tipologie server: PvM
*Resursă folosită: -
*ServerFiles utilizat: -
*Syserr: -
Poză: -
*Detalii suplimentare: Nu pot creea breasla, ma refer aici ca nu ma lasa sa o creez, quest am, iar cand dau sa creez o breasla, imi da sa pun nume, dau ok, si dupa dispare fereastra aia mica unde am pus numele, si nu se intampla nimic...
Precizez ca am golit breslele din navicat, iar questul pe care il folosesc este funtional, pentru ca l-am mai folosit si a mers perfect...
Iar erori, de asemenea, nu primesc...
Stie careva de la ce e problema? Va rog...

Multumesc anticipat!
Avatar utilizator
Athero
Ţepar / Untrusted User

Ţepar / Untrusted User
Mesaje: 3936
Membru din: 17 Aug 2017, 00:08
Aprecieri: 559  
Mulţumiri: 7142  
Discord: Copiază ID
Medalii

Intră în guild_manager.cpp din sursă şi caută.
DWORD CGuildManager::CreateGuild(TGuildCreateParameter& gcp)
Înlocuieşte toată funcţia cu :
DWORD CGuildManager::CreateGuild(TGuildCreateParameter& gcp)
{
if (!gcp.master)
return 0;


if (!check_name(gcp.name))
{
gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<e¢¬¢¬ea¢æ©«A¡°> e¢¬¢¬ea¢æ©«A¡° i¢¥e|a¢æži¢¥ i ia¢æ¡Ë¨Ïia¢æ¡ËE©«i¡×a?¡þ ia¢æ¡ËA iA ¥ìea¢æ©öE¢Óea¢æ©ö¢´."));
return 0;
}
static char __escape_name[GUILD_NAME_MAX_LEN * 2 + 1];
DBManager::instance().EscapeString(__escape_name, sizeof(__escape_name), static_cast<const char *>(gcp.name),
sizeof(gcp.name));
std::auto_ptr<SQLMsg> pmsg(DBManager::instance().DirectQuery("SELECT COUNT(*) FROM guild%s WHERE name = '%s'",
get_table_postfix(), __escape_name));


if (pmsg->Get()->uiNumRows > 0)
{
MYSQL_ROW row = mysql_fetch_row(pmsg->Get()->pSQLResult);


if (!(row[0] && row[0][0] == '0'))
{
gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<e¢¬¢¬ea¢æ©«A¡°> i¢¥e?¢¬ e¡Æa?¡Ëia?¡þ i¢¥e|a¢æžiE©« e¢¬¢¬ea¢æ©«A¡°e¡Æa?¡þ ižE¢ÓiA ¥ìea¢æ©öE¢Óea¢æ©ö¢´."));
return 0;
}
}
else
{
gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<e¢¬¢¬ea¢æ©«A¡°> e¢¬¢¬ea¢æ©«A¡°e¡Í¨ù i¨¡¡¯ia¢æž¡¾ia¢æ¡Ë iE¢ÓE©« ia¢æ¡±a¢æ iA ¥ìea¢æ©öE¢Óea¢æ©ö¢´."));
return 0;
}


// new CGuild(gcp) queries guild tables and tell dbcache to notice other game servers.
// other game server calls CGuildManager::LoadGuild to load guild.
CGuild * pg = M2_NEW CGuild(gcp);
m_mapGuild.insert(std::make_pair(pg->GetID(), pg));
return pg->GetID();
}
Şi acum rulează questul ăsta.

quest guild_manage begin
state start begin
when
11000.chat."Paraseste breasla" or
11002.chat."Paraseste breasla" or
11004.chat."Paraseste breasla" with pc.hasguild() and not pc.isguildmaster() and npc.get_empire() == pc.get_empire() begin

say_title("Gardian:")
say("")
say("Chiar vrei sa parasesti aceasta breasla?")
say("Sunt sigur ca membrii vor fi foarte")
say("dezamagiti de tine ...")
say("")

local s = select("Sunt sigur de asta", "Ma mai gândesc")

if s==1 then
say_title("Gardian:")
say("")
say("Ai parasit breasla!")
say("")
pc.remove_from_guild()
end
end

when
11000.chat."Desfiinteaza breasla" or
11002.chat."Desfiinteaza breasla" or
11004.chat."Desfiinteaza breasla" with pc.hasguild() and pc.isguildmaster() and npc.get_empire() == pc.get_empire() begin

say_title("Gardian:")
say("")
say("Am depus mult efort în crearea acestei bresle")
say("iar acum tu vrei sa o distrugi? Toata experienta")
say("si amintirile vor fi pierdute pentru totdeauna.")
say("")
say("Chiar vrei sa distrugi aceasta breasla?")
say("")

local s = select("Da", "Nu")

if s==1 then
say_title("Gardian:")
say("")
say("Ai distrus breasla!")
say("")
pc.destroy_guild()
end
end

when
11000.chat."Înfiinteaza o breasla " or
11002.chat."Înfiinteaza o breasla " or
11004.chat."Înfiinteaza o breasla " with not pc.hasguild() and not pc.isguildmaster() and npc.get_empire() == pc.get_empire() begin

say_title("Gardian:")
say("")
say("Pentru a înfiinta o breasla trebuie sa ai minim")
say("nivelul 40 si 500.000 Yang.")
say("")
say("Crezi ca îndeplinesti toate conditiile?")
say("")

local s = select("Da", "Nu")

if s == 2 then
return

elseif pc.get_level()<40 then
say_title("Gardian:")
say("")
say("Nivelul tau este "..pc.get_level())
say("")
say_reward("Nivel necesar: 40")
say("")
return

elseif pc.get_gold()<500000 then
say_title("Gardian:")
say("")
say("Revin-o când ai destui bani.")
say("")
return
end

game.request_make_guild()
end

end
end
//retras
Afișează semnătura
Avatar utilizator
RedFear
Nivel 1

Nivel 1
Mesaje: 97
Membru din: 02 Apr 2016, 11:48
Regat: Jinno
Aprecieri: 33  
Mulţumiri: 1  
 Contact:
Medalii

Tot nu functioneaza....
Avatar utilizator
sTrix.
Nivel 5

Nivel 5
Mesaje: 807
Membru din: 15 Feb 2018, 17:52
Regat: Jinno
Aprecieri: 238  
Mulţumiri: 273  
Medalii

game/src/guild_manager.cpp
Cauta si inlocuieste toata functia
DWORD CGuildManager::CreateGuild(TGuildCreateParameter& gcp)
cu
DWORD CGuildManager::CreateGuild(TGuildCreateParameter& gcp)
{
	if (!gcp.master)
		return 0;

	if (!check_name(gcp.name))
	{
		gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> 길드 이름이 적합하지 않습니다."));
		return 0;
	}

	std::auto_ptr<SQLMsg> pmsg(DBManager::instance().DirectQuery("SELECT COUNT(*) FROM guild%s WHERE name = '%s'",
				get_table_postfix(), gcp.name));

	if (pmsg->Get()->uiNumRows > 0)
	{
		MYSQL_ROW row = mysql_fetch_row(pmsg->Get()->pSQLResult);

		if (!(row[0] && row[0][0] == '0'))
		{
			gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> 이미 같은 이름의 길드가 있습니다."));
			return 0;
		}
	}
	else
	{
		gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> 길드를 생성할 수 없습니다."));
		return 0;
	}

	// new CGuild(gcp) queries guild tables and tell dbcache to notice other game servers.
	// other game server calls CGuildManager::LoadGuild to load guild.
	CGuild * pg = M2_NEW CGuild(gcp);
	m_mapGuild.insert(std::make_pair(pg->GetID(), pg));
	return pg->GetID();
}
Salveaza, compileaza si inlocuieste game-ul vechi cu cel nou (nu uita permisiuni 7777).

Acum ruleaza quest-ul asta:
https://ufile.io/zy3d7

~ Strix.
Apasa Imagine daca te-am ajutat.
Imagine
Afișează semnătura
Avatar utilizator
RedFear
Nivel 1

Nivel 1
Mesaje: 97
Membru din: 02 Apr 2016, 11:48
Regat: Jinno
Aprecieri: 33  
Mulţumiri: 1  
 Contact:
Medalii

Am facut asa cum mi-ai spus, dar tot nu vrea sa mearga... :( si nu inteleg de ce...? :((
Avatar utilizator
RedFear
Nivel 1

Nivel 1
Mesaje: 97
Membru din: 02 Apr 2016, 11:48
Regat: Jinno
Aprecieri: 33  
Mulţumiri: 1  
 Contact:
Medalii

Am rezolvat, se poate inchide topicul, multumesc oricum :)
Avatar utilizator
[A]14K
Nivel 2

Nivel 2
Mesaje: 236
Membru din: 22 Feb 2018, 21:37
Server: In curand
Aprecieri: 344  
Mulţumiri: 95  
Medalii

RedFear scrie:*Problemă: Nu ma lasa sa creez breasla....
Tipologie server: PvM
*Resursă folosită: -
*ServerFiles utilizat: -
*Syserr: -
Poză: -
*Detalii suplimentare: Nu pot creea breasla, ma refer aici ca nu ma lasa sa o creez, quest am, iar cand dau sa creez o breasla, imi da sa pun nume, dau ok, si dupa dispare fereastra aia mica unde am pus numele, si nu se intampla nimic...
Precizez ca am golit breslele din navicat, iar questul pe care il folosesc este funtional, pentru ca l-am mai folosit si a mers perfect...
Iar erori, de asemenea, nu primesc...
Stie careva de la ce e problema? Va rog...

Multumesc anticipat!

Input main cpp

Cod: Selectaţi tot

 void CInputMain::AnswerMakeGuild(LPCHARACTER ch, const char* c_pData)
{
   TPacketCGAnswerMakeGuild* p = (TPacketCGAnswerMakeGuild*) c_pData;

   if (ch->GetGold() < 200000)
      return;

   if (ch->GetGuild())
      return;

   CGuildManager& gm = CGuildManager::instance();

   TGuildCreateParameter cp;
   memset(&cp, 0, sizeof(cp));

   cp.master = ch;
   strlcpy(cp.name, p->guild_name, sizeof(cp.name));

   if (cp.name[0] == 0 || !check_name(cp.name))
   {
      ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("적합하지 않은 길드 이름 입니다."));
      return;
   }

   DWORD dwGuildID = gm.CreateGuild(cp);

   if (dwGuildID)
   {
      ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> [%s] 길드가 생성되었습니다."), cp.name);

      int GuildCreateFee = 20000;

      ch->PointChange(POINT_GOLD, -GuildCreateFee);
      DBManager::instance().SendMoneyLog(MONEY_LOG_GUILD, ch->GetPlayerID(), -GuildCreateFee);

      char Log[128];
      snprintf(Log, sizeof(Log), "GUILD_NAME %s MASTER %s", cp.name, ch->GetName());
      LogManager::instance().CharLog(ch, 0, "MAKE_GUILD", Log);

      if (g_iUseLocale)
         ch->RemoveSpecifyItem(GUILD_CREATE_ITEM_VNUM, 1);
      //ch->SendGuildName(dwGuildID);
   }
   else
      ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> 길드 생성에 실패하였습니다."));
} 
Pentru acest mesaj, [A]14K for the post:
RedFear
Avatar utilizator
RedFear
Nivel 1

Nivel 1
Mesaje: 97
Membru din: 02 Apr 2016, 11:48
Regat: Jinno
Aprecieri: 33  
Mulţumiri: 1  
 Contact:
Medalii

[A]14K scrie:
RedFear scrie:*Problemă: Nu ma lasa sa creez breasla....
Tipologie server: PvM
*Resursă folosită: -
*ServerFiles utilizat: -
*Syserr: -
Poză: -
*Detalii suplimentare: Nu pot creea breasla, ma refer aici ca nu ma lasa sa o creez, quest am, iar cand dau sa creez o breasla, imi da sa pun nume, dau ok, si dupa dispare fereastra aia mica unde am pus numele, si nu se intampla nimic...
Precizez ca am golit breslele din navicat, iar questul pe care il folosesc este funtional, pentru ca l-am mai folosit si a mers perfect...
Iar erori, de asemenea, nu primesc...
Stie careva de la ce e problema? Va rog...

Multumesc anticipat!

Input main cpp

Cod: Selectaţi tot

 void CInputMain::AnswerMakeGuild(LPCHARACTER ch, const char* c_pData)
{
   TPacketCGAnswerMakeGuild* p = (TPacketCGAnswerMakeGuild*) c_pData;

   if (ch->GetGold() < 200000)
      return;

   if (ch->GetGuild())
      return;

   CGuildManager& gm = CGuildManager::instance();

   TGuildCreateParameter cp;
   memset(&cp, 0, sizeof(cp));

   cp.master = ch;
   strlcpy(cp.name, p->guild_name, sizeof(cp.name));

   if (cp.name[0] == 0 || !check_name(cp.name))
   {
      ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("적합하지 않은 길드 이름 입니다."));
      return;
   }

   DWORD dwGuildID = gm.CreateGuild(cp);

   if (dwGuildID)
   {
      ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> [%s] 길드가 생성되었습니다."), cp.name);

      int GuildCreateFee = 20000;

      ch->PointChange(POINT_GOLD, -GuildCreateFee);
      DBManager::instance().SendMoneyLog(MONEY_LOG_GUILD, ch->GetPlayerID(), -GuildCreateFee);

      char Log[128];
      snprintf(Log, sizeof(Log), "GUILD_NAME %s MASTER %s", cp.name, ch->GetName());
      LogManager::instance().CharLog(ch, 0, "MAKE_GUILD", Log);

      if (g_iUseLocale)
         ch->RemoveSpecifyItem(GUILD_CREATE_ITEM_VNUM, 1);
      //ch->SendGuildName(dwGuildID);
   }
   else
      ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> 길드 생성에 실패하였습니다."));
} 
Mersi mult, exact asta era problema, am rezolvat-o.
Avatar utilizator
[A]14K
Nivel 2

Nivel 2
Mesaje: 236
Membru din: 22 Feb 2018, 21:37
Server: In curand
Aprecieri: 344  
Mulţumiri: 95  
Medalii

Rezolvat !
Avatar utilizator
Athero
Ţepar / Untrusted User

Ţepar / Untrusted User
Mesaje: 3936
Membru din: 17 Aug 2017, 00:08
Aprecieri: 559  
Mulţumiri: 7142  
Discord: Copiază ID
Medalii

Problema rezolvata .


Topic Inchis.

[ Postat de pe Android ] Imagine
//retras
Afișează semnătura
Închis
Răspunsuri
5
Vizualizări
754
Răspunsuri
0
Vizualizări
254
Răspunsuri
4
Vizualizări
489
Răspunsuri
3
Vizualizări
167

Înapoi la “Probleme rezolvate”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 26 vizitatori