Problema protectie harta

Totalitatea subiectelor care nu respectă regulamentul impus in sectiunea "Probleme şi Întrebări" vor fi stocate aici.
Închis
Avatar utilizator
SkyLine
Membru Club

Membru Club
Mesaje: 2655
Membru din: 12 Dec 2013, 23:37
Server: Miraj2-Online
Regat: Jinno
Aprecieri: 520  
Mulţumiri: 987  
Discord: Copiază ID
 Contact:
Medalii

*Problemă:
Tipologie server(PvM / PvP):
*Resursă folosită: *Link exclusiv J4M*
*ServerFiles utilizat:
*Syserr:
Poză:
*Detalii suplimentare: Salut. Am pus si eu urmatorul quest de restrictie nivel in anumite harti si se pare ca are un mic bug, cred. Daca ai level 1, merge sa intrii in mapa chiar daca are restrictie sub level 100, cel putin in mapa pe care am pus-o eu in acest quest.

Mentionez ca inainte era " <= 100 " ..si apoi am modificat eu in " < 100" si la fel este. Acest posibil bug a fost raportat de un player, nu de mine ca si GM, ca stiu ca eu pot trece de restrictie
quest prot_harta2 begin

state start begin

when login or levelup with pc.get_map_index() == 103 begin

if pc.get_level() < 100 and pc.get_level() >=125 and not pc.is_gm() then

syschat("Nu te incadrezi in limita de level pentru aceasta harta!")
syschat("Vei fi teleportat imediat")

local empire = pc.get_empire()

if empire == 1 then
pc.warp(474300,954800)
elseif empire == 2 then
pc.warp(63800,166400)
elseif empire == 3 then
pc.warp(959900,269200)

end

end

end
end
end
Avatar utilizator
Skeep3ro
Nivel 1

Nivel 1
Mesaje: 85
Membru din: 04 Noi 2018, 04:44
Server: https://faceit.ro
Aprecieri: 11  
Mulţumiri: 27  
 Contact:
Medalii

KrYpToNNN scrie:*Problemă:
Tipologie server(PvM / PvP):
*Resursă folosită: *Link exclusiv J4M*
*ServerFiles utilizat:
*Syserr:
Poză:
*Detalii suplimentare: Salut. Am pus si eu urmatorul quest de restrictie nivel in anumite harti si se pare ca are un mic bug, cred. Daca ai level 1, merge sa intrii in mapa chiar daca are restrictie sub level 100, cel putin in mapa pe care am pus-o eu in acest quest.

Mentionez ca inainte era " <= 100 " ..si apoi am modificat eu in " < 100" si la fel este. Acest posibil bug a fost raportat de un player, nu de mine ca si GM, ca stiu ca eu pot trece de restrictie
quest prot_harta2 begin

state start begin

when login or levelup with pc.get_map_index() == 103 begin

if pc.get_level() < 100 and pc.get_level() >=125 and not pc.is_gm() then

syschat("Nu te incadrezi in limita de level pentru aceasta harta!")
syschat("Vei fi teleportat imediat")

local empire = pc.get_empire()

if empire == 1 then
pc.warp(474300,954800)
elseif empire == 2 then
pc.warp(63800,166400)
elseif empire == 3 then
pc.warp(959900,269200)

end

end

end
end
end

Cod: Selectaţi tot

//@Src/Server/game/src/input_login.cpp
// Add to the beginning of the file:
inline bool AllowedToWarp(const DWORD dwMapIndex, const DWORD dwLevel)
{
	struct set_struct
	{
		const unsigned short map_index;
		const unsigned short minimum_level;
	}
	set_fields[] =
	{
		{ 91, 75 },  // Grotto of Exile 1st Floor
		{ 82, 75 },  // Grotto of Exile 2nd Floor
		{ 216, 75 }, // Devils Catacomb
		{ 218, 90 }, // Cape Dragon Head
		{ 219, 90 }, // Dawn Mist Wood
		{ 220, 90 }, // Mount Thunder
		{ 221, 90 }  // Bay Black Sand
	};
	
	for (unsigned short i = 0; i < _countof(set_fields); ++i)
	{
		if (dwMapIndex == set_fields[i].map_index && dwLevel < set_fields[i].minimum_level)
			return false;
    }
	
	return true;
}
//1.) Search for:
	ch->SendGreetMessage();
//2.) Add after:
	if (!AllowedToWarp(ch->GetMapIndex(), ch->GetLevel()))
		ch->GoHome();
Pentru acest mesaj, Skeep3ro for the post:
SkyLine
Ofer support tehnic pentru servere de Metin2 && CS:GO
Fondator : SOURCEMOD.RO
Afișează semnătura
Avatar utilizator
SkyLine
Membru Club

Membru Club
Mesaje: 2655
Membru din: 12 Dec 2013, 23:37
Server: Miraj2-Online
Regat: Jinno
Aprecieri: 520  
Mulţumiri: 987  
Discord: Copiază ID
 Contact:
Medalii

Skeep3ro scrie:
KrYpToNNN scrie:*Problemă:
Tipologie server(PvM / PvP):
*Resursă folosită: *Link exclusiv J4M*
*ServerFiles utilizat:
*Syserr:
Poză:
*Detalii suplimentare: Salut. Am pus si eu urmatorul quest de restrictie nivel in anumite harti si se pare ca are un mic bug, cred. Daca ai level 1, merge sa intrii in mapa chiar daca are restrictie sub level 100, cel putin in mapa pe care am pus-o eu in acest quest.

Mentionez ca inainte era " <= 100 " ..si apoi am modificat eu in " < 100" si la fel este. Acest posibil bug a fost raportat de un player, nu de mine ca si GM, ca stiu ca eu pot trece de restrictie
quest prot_harta2 begin

state start begin

when login or levelup with pc.get_map_index() == 103 begin

if pc.get_level() < 100 and pc.get_level() >=125 and not pc.is_gm() then

syschat("Nu te incadrezi in limita de level pentru aceasta harta!")
syschat("Vei fi teleportat imediat")

local empire = pc.get_empire()

if empire == 1 then
pc.warp(474300,954800)
elseif empire == 2 then
pc.warp(63800,166400)
elseif empire == 3 then
pc.warp(959900,269200)

end

end

end
end
end

Cod: Selectaţi tot

{ 91, 75 },  // Grotto of Exile 1st Floor
		{ 82, 75 },  // Grotto of Exile 2nd Floor
		{ 216, 75 }, // Devils Catacomb
		{ 218, 90 }, // Cape Dragon Head
		{ 219, 90 }, // Dawn Mist Wood
		{ 220, 90 }, // Mount Thunder
		{ 221, 90 }  // Bay Black Sand
Multumesc. Totusi am 2 intrebari :
1. Astea sunt coordonate sau index-uri de la mape?
2. Daca sunt index-uri, trebuie adaugate si index-urile de la mapele unde se poate intra chiar daca e restrictie?
Avatar utilizator
Skeep3ro
Nivel 1

Nivel 1
Mesaje: 85
Membru din: 04 Noi 2018, 04:44
Server: https://faceit.ro
Aprecieri: 11  
Mulţumiri: 27  
 Contact:
Medalii

Cod: Selectaţi tot

{ 82, 75 },  // Grotto of Exile 2nd Floor
- 82 este indeuxul
- 75 este nivelul minim
Ofer support tehnic pentru servere de Metin2 && CS:GO
Fondator : SOURCEMOD.RO
Afișează semnătura
Avatar utilizator
SkyLine
Membru Club

Membru Club
Mesaje: 2655
Membru din: 12 Dec 2013, 23:37
Server: Miraj2-Online
Regat: Jinno
Aprecieri: 520  
Mulţumiri: 987  
Discord: Copiază ID
 Contact:
Medalii

Skeep3ro scrie:

Cod: Selectaţi tot

{ 82, 75 },  // Grotto of Exile 2nd Floor
- 82 este indeuxul
- 75 este nivelul minim
O mica problema ...
Imagine

Scria acolo ca sa pun astea la inceput ... am pus ca primul cod dupa toate #include-urile. Ma gandesc ca astea nu trebuiau puse chiar fix din prima linie, inainte de include-uri.
Imagine gen asa
Avatar utilizator
Skeep3ro
Nivel 1

Nivel 1
Mesaje: 85
Membru din: 04 Noi 2018, 04:44
Server: https://faceit.ro
Aprecieri: 11  
Mulţumiri: 27  
 Contact:
Medalii

in loc de struct set_struct pune set_fields
Ofer support tehnic pentru servere de Metin2 && CS:GO
Fondator : SOURCEMOD.RO
Afișează semnătura
Avatar utilizator
[RaffaeL]
Software Developer

Software Developer
Mesaje: 3223
Membru din: 19 Mar 2016, 12:58
Server: ...
Aprecieri: 15  
Mulţumiri: 2502  
  Rezolvări prob.: 2
Discord: Copiază ID
 Contact:
Medalii

Pentru problema din quest:

Cod: Selectaţi tot

if pc.get_level() < 100 and pc.get_level() >=125 and not pc.is_gm() then
Daca citesti cu atentie(si literal) acea linie,ar fi

Cod: Selectaţi tot

daca jucatorul are level < 100 si in acelasi timp are level >=125 and not pc.is_gm() then
si nu va returna true niciodata, dat fiind faptul ca jucatorul avand nivelul mai mic decat 100, nu va avea niciodata nivelul mai mare decat 125 in acelasi timp.Deci corect este

Cod: Selectaţi tot

if pc.get_level() < 100 or pc.get_level() >=125 and not pc.is_gm() then
Pentru problema functiei c++, eroarea vine de la faptul ca

Cod: Selectaţi tot

for (unsigned short i = 0; i < _countof(set_fields); ++i)
nu se inchide, prin urmare, inchide acel for loop cu acolada dupa return true;

Cod: Selectaţi tot

for (unsigned short i = 0; i < _countof(set_fields); ++i)
	{
		if (dwMapIndex == set_fields[i].map_index && dwLevel < set_fields[i].minimum_level)
		{
			return false;
		}

		return true;
	}
Pentru acest mesaj, [RaffaeL] for the post:
SkyLine
Imagine
Imagine
https://www.youtube.com/watch?v=GhYkCIETEto
Do everything, if you know what you're doing, else... Imagine
Ma gasesti si aici: Discord https://discord.gg/5J5GnyZVSR
Afișează semnătura
Avatar utilizator
SkyLine
Membru Club

Membru Club
Mesaje: 2655
Membru din: 12 Dec 2013, 23:37
Server: Miraj2-Online
Regat: Jinno
Aprecieri: 520  
Mulţumiri: 987  
Discord: Copiază ID
 Contact:
Medalii

[RaffaeL] scrie:Pentru problema din quest:

Cod: Selectaţi tot

if pc.get_level() < 100 and pc.get_level() >=125 and not pc.is_gm() then
Daca citesti cu atentie(si literal) acea linie,ar fi

Cod: Selectaţi tot

daca jucatorul are level < 100 si in acelasi timp are level >=125 and not pc.is_gm() then
si nu va returna true niciodata, dat fiind faptul ca jucatorul avand nivelul mai mic decat 100, nu va avea niciodata nivelul mai mare decat 125 in acelasi timp.Deci corect este

Cod: Selectaţi tot

if pc.get_level() < 100 or pc.get_level() >=125 and not pc.is_gm() then
Pentru problema functiei c++, eroarea vine de la faptul ca

Cod: Selectaţi tot

for (unsigned short i = 0; i < _countof(set_fields); ++i)
nu se inchide, prin urmare, inchide acel for loop cu acolada dupa return true;

Cod: Selectaţi tot

for (unsigned short i = 0; i < _countof(set_fields); ++i)
	{
		if (dwMapIndex == set_fields[i].map_index && dwLevel < set_fields[i].minimum_level)
		{
			return false;
		}

		return true;
	}
Pff...era de la acel "or", multumesc mult, a mers. M-a scos instant din mapa cu caracterul de level 1 :))
Închis
Răspunsuri
3
Vizualizări
495
Răspunsuri
0
Vizualizări
540
Răspunsuri
2
Vizualizări
125
Răspunsuri
1
Vizualizări
112

Înapoi la “Arhivă Probleme şi Întrebări”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Google [Bot] și 122 vizitatori