Ajutor cu Shop search c++

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

Nivel 2
Mesaje: 239
Membru din: 23 Apr 2015, 17:10
Aprecieri: 451  
Mulţumiri: 21  
Medalii

*Problemă/Întrebare: Ajutor cu Shop search c++
Tipologie server: pvm easy
*Resursă folosită: Nu stiu exact care este sistemul, era deja instalat pe serverfiles, seamana cu acesta ( dar nu este identic ):
cereri-rezolvate/cerere-search-shop-t81957.html
*ServerFiles utilizat: cartof v4 sau v5 ( cel clean fara muzica )
*Syserr: fara
Poză:
*Detalii suplimentare:
Am nevoie de ajutor pentru 2 probleme. Multumesc!
1. Cum pot face sa nu apara itemele cu diacritice la search? ( Nu le pot cauta daca nu scriu cu diacritice ). Imagine
2. Am mai incercat acum ceva vreme sa rezolv problema cu feedback-ul de "iteme gasite" si "nu a fost gasit nici un item".
Am tot incercat, dar nu reusesc sub nici o forma..
Vreau sa imi dea un mesaj in chat daca au fost gasite iteme sa nu.

Acestea sunt fisierele:
cmd_general.cpp


offlineshop_manager.cpp
Pentru acest mesaj, alinjuve23 for the post:
malin493
Avatar utilizator
##SomeBody
Nivel 3

Nivel 3
Mesaje: 330
Membru din: 14 Apr 2021, 17:12
Server: In lucru...
Regat: Jinno
Aprecieri: 443  
Mulţumiri: 71  
Discord: Copiază ID
Medalii

ce sf ai?
Avatar utilizator
btn v1
Nivel 1

Nivel 1
Mesaje: 76
Membru din: 05 Oct 2021, 17:36
Aprecieri: 249  
Mulţumiri: 132  
Discord: Copiază ID
Medalii

In loc sa-l ajuti cu problema, il intrebi de svf, doamne, ca sa nu-ti mai apara cu diacritici schimbi numele din item_names la iteme, teoria mea
Imagine
Afișează semnătura
Avatar utilizator
alinjuve23
Nivel 2

Nivel 2
Mesaje: 239
Membru din: 23 Apr 2015, 17:10
Aprecieri: 451  
Mulţumiri: 21  
Medalii

Am scris la inceput, server files cartof v4 sau v5 ( cel clean fara muzica ) = chiar nu stiu care este, avea la inceput de tot denumirea srv clean+src, ceva de genul.

la items_names din server, am totul fara diacritici...
Singurele diacritice le am in item_proto client din locale. As vrea sa il fac sa citeasca din item_names server si ar fi ok..

exemplu item_names server:

Cod: Selectaţi tot

140	Sabie de batalie+0
141	Sabie de batalie+1
142	Sabie de batalie+2
143	Sabie de batalie+3
144	Sabie de batalie+4
145	Sabie de batalie+5
146	Sabie de batalie+6
147	Sabie de batalie+7
148	Sabie de batalie+8
149	Sabie de batalie+9
Multumesc!
Avatar utilizator
iMerv3
Nivel 1

Nivel 1
Mesaje: 86
Membru din: 20 Mai 2020, 23:25
Aprecieri: 85  
Mulţumiri: 159  
Discord: Copiază ID
 Contact:
Medalii

Salut, ce legătura au fișierele pe care le-ai pus...

Oricum:

Cod: Selectaţi tot

int iFloodResult = ch->GetQuestFlag("item_search.flood_check");
if (iFloodResult)
{
if (get_global_time() < iFloodResult + 30)
{
ch->ChatPacket(CHAT_TYPE_INFO, "[Spam] Nu au trecut cele 30 de secunde de la ultima cautare !");
return;
}
e cea mai proastă idee sa adaugi un cooldown. Ce ai tu aici e flood check :joy: . Schimbă pe core pulse și salvează într-o variabilă în char class.


Pentru ce ai nevoie tu, uploadează fișierul py cu sistemul respectiv.
Pentru acest mesaj, iMerv3 for the post:
alinjuve23
Avatar utilizator
alinjuve23
Nivel 2

Nivel 2
Mesaje: 239
Membru din: 23 Apr 2015, 17:10
Aprecieri: 451  
Mulţumiri: 21  
Medalii

Salut, asta era sistemul adaugat pe server, singurul lucru ce am facut la el, am crescut timpul la 30 de secunde, il aveam pus 3 secunde.
Nu am inteles foarte bine ce ai scris prin "Schimbă pe core pulse și salvează într-o variabilă în char class."
Te referi sa sterg acel couldown de tot?

Fisiele ce le-am adaugat sunt functia din sursa ce cauta itemele, iar cand le gaseste deschide minimapa, le marcheaza pe harta si in joc cu sageata:
Imagine
Credeam ca aici trebuie modificat cv.. Multumesc!

uishopsearch.py din root:
Avatar utilizator
iMerv3
Nivel 1

Nivel 1
Mesaje: 86
Membru din: 20 Mai 2020, 23:25
Aprecieri: 85  
Mulţumiri: 159  
Discord: Copiază ID
 Contact:
Medalii

Ai funcția: item.GetItemsByName(...) , dacă e cum, cred eu, trebuie să creezi un field nou în structura item_proto, gen locale_name_utf8 să adaugi numele fară diactrice și să schimbi în acea funcție să compare cu noul field în loc de locale_name dacă ții așa mult.

Exemplu de cooldown (nu le testez de obicei, dar dacă ai probleme scrie-mi pe discord):

Cod: Selectaţi tot

void COfflineShopManager::SearchInShops(LPCHARACTER ch, int vnum) {
	if (!ch) {
		return;
	}

	LPSECTREE_MAP pSecMap = SECTREE_MANAGER::instance().GetMap(ch->GetMapIndex());
	if (!pSecMap) {
		return;
	}

	FSearch f(ch, vnum);
	pSecMap->for_each(f);

	ch->SetNextAllowedSearch(thecore_pulse() + (passes_per_sec * 30));
}

ACMD(do_search_in_shops) {
	if (ch->IsDead() || ch->GetExchange() || ch->GetMyShop() || ch->GetOfflineShop() || ch->IsCubeOpen() || ch->IsOpenSafebox() || ch->GetShop()) {
		ch->ChatPacket(CHAT_TYPE_INFO, "Inchide toate ferestrele pentru a putea cauta!");
		return;
	}

	char arg1[256];
	one_argument(argument, arg1, sizeof(arg1));

	int32_t vnum = 0;
	str_to_number(vnum, arg1);

	if (vnum <= 0) {
		return;
	}

	if (thecore_pulse() <= ch->GetNextAllowedSearch()) {
		ch->ChatPacket(CHAT_TYPE_INFO, "[Spam] Nu au trecut cele 30 de secunde de la ultima cautare !");
		return;
	}

	COfflineShopManager::Instance().SearchInShops(ch, vnum);
}
char.h:

Cod: Selectaţi tot

	private:
		int32_t nextallowedsearch;

	public:
		void SetNextAllowedSearch(int32_t arg) { nextallowedsearch = arg; }
		int32_t GetNextAllowedSearch() { return nextallowedsearch; }
Ultima oară modificat 12 Dec 2021, 16:12 de către iMerv3, modificat de 4 ori în total.
Pentru acest mesaj, iMerv3 for the post:
alinjuve23
Avatar utilizator
[HF]White
Metin Master

Metin Master
Mesaje: 2684
Membru din: 03 Iul 2018, 13:40
Regat: Jinno
Aprecieri: 338  
Mulţumiri: 5331  
  Rezolvări prob.: 13
Discord: Copiază ID
 Contact:
Medalii

scoate diacriticile si ai rezolvat. eu nu am diacritice la item names si imi merge perfect search shopu
Avatar utilizator
alinjuve23
Nivel 2

Nivel 2
Mesaje: 239
Membru din: 23 Apr 2015, 17:10
Aprecieri: 451  
Mulţumiri: 21  
Medalii

Am inteles acum cum le citeste..
Totusi in item_proto client, am doua coloane cu Name: "Name" si "LocalizedName", el cu siguranta citeste LocalizedName ca doar aici am diacriticele.

Cod: Selectaţi tot

	<ItemDef Vnum="10" Name="µµ+0" LocalizedName="Sabie+0" Type="1" SubType="0" Weight="0" Size="2" AntiFlags="32" Flags="1" WearFlags="16" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="1" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="7" ApplyValue0="15" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="15" Value2="19" Value3="13" Value4="15" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="11" RefineSet="1" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="1" AddonType="0"  />
Nu pot sa il fac sa citeasca Name simplu?
Daca nu se poate, voi scoate diacriticele.

In legatura cu un mesaj "am gasit" si "nu am gasit" in urma cautarii, aveti o varianta?.. Multumesc!

Edit: testez imediat functia de couldown. Ms.
Avatar utilizator
iMerv3
Nivel 1

Nivel 1
Mesaje: 86
Membru din: 20 Mai 2020, 23:25
Aprecieri: 85  
Mulţumiri: 159  
Discord: Copiază ID
 Contact:
Medalii

Ai putea dar name e folosit in server & drop config și ar trebuii să le refaci, un duplicat ar fi cel mai simplu. Explică eroarea... cine știe sistemele astea :)

Adaugă și în char.cpp sub: CEntity::Initialize(ENTITY_CHARACTER);

Cod: Selectaţi tot

nextallowedsearch = 0;
Închis

Înapoi la “Probleme rezolvate”

  • Informaţie
  • Cine este conectat

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