• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

Fix/Dodawanie i usuwanie vipa - Problem

Status
Not open for further replies.

Murach

Banned User
Joined
Aug 22, 2010
Messages
136
Reaction score
3
Mam jeden problem, chciałbym dostać od was parę rad.

Przy podmianie kodu
Code:
bool Game::playerRequestAddVip(uint32_t playerId, const std::string& vipName)
{
	Player* player = getPlayerByID(playerId);
	if(!player || player->isRemoved())
		return false;

	uint32_t guid;
	bool specialVip;
	
	std::string name = vipName;
	
	if(!IOLoginData::getInstance()->getGuidByNameEx(guid, specialVip, name))
	{
		player->sendTextMessage(MSG_STATUS_SMALL, "A player with that name does not exist.");
		return false;
	}

	if(specialVip && !player->hasFlag(PlayerFlag_SpecialVIP))
	{
		player->sendTextMessage(MSG_STATUS_SMALL, "You cannot add this player.");
		return false;
	}
	
	if(player->hasCondition(CONDITION_EXHAUST, 1))
	{
		player->sendTextMessage(MSG_STATUS_SMALL, "Please wait few seconds before adding new player to your vip list.");
		return false;
	}

	bool online = false;
	if(Player* target = getPlayerByName(name))
		online = player->canSeeCreature(target);
	if(Condition* condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_EXHAUST, 3000, 0, false, 1))
	player->addCondition(condition);
	return player->addVIP(guid, name, online);
}

bool Game::playerRequestRemoveVip(uint32_t playerId, uint32_t guid)
{
	Player* player = getPlayerByID(playerId);
	
	if(!player || player->isRemoved())
		return false;
		
	if(player->hasCondition(CONDITION_EXHAUST, 1))
	{
		player->sendTextMessage(MSG_STATUS_SMALL, "Please wait few seconds before deleting next player from your vip list.");
		return false;
	}
	
	if(Condition* condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_EXHAUST, 3000, 0, false, 1))
	player->addCondition(condition);
	player->removeVIP(guid);
	return true;
}

w game.cpp nic się nie dzieje, można dalej vipa dodawać i usuwać bez exh.

Czytałem że trzeba kompilować silnik, ale to muszę od nowa cały kompilować, czy jest jakaś opcja aby skompilować tylko game.cpp

I chciałbym się dowiedzieć, czy przy próbie ponownego kompilowania silnika nie będą występować żadne błędy?

Jeżeli źle myślę proszę o poprawkę.
 
Podmieniłem kod źródłowy w silniku.
Zrobiłem drugi raz kompilacje
Code:
./autogen.sh
./configure --enable-mysql --enable-sqlite --enable-remote-control --enable-server-diag
make

Wszystko ładnie żadnych błędów, tylko vipa dalej można usuwać i dodawać w czasie exh 3s
 
3 Sec spokojnie wystarcza , serva lagowali dodajac w czasie 1 sec z 100 razy do vip - zapewne
 
Chodzi mi o to że zmiana i kompilacja nic nie dała, dalej można lagować.
 
to zmien np na 30 sekund ale co ty masz za atari, ze nawet przy 3 s laguje
 
@up localhost

Najprawdopodobniej coś źle robię.

Napiszę krok po kroku

1. Wyłączam silnik (działa bez problemu)
2. Edytuję Game.cpp pod dany scrypt (obecnie tak wygląda Wklejka #592162 | Wklej.org )
3. Kompiluje silnik
Code:
./autogen.sh
./configure --enable-mysql --enable-sqlite --enable-remote-control --enable-server-diag
make
Wszystko przebiega pomyślnie, próbowałem nawet już kasować plik game.o żeby od nowa mi go stworzyło,i tak przebiega pomyślnie.
4. Włączam silnik, żadnych błędów, a vip-y mogę dodawać i usuwać cały czas bez żadnego exh.

I w tym pytanie, czy silnik można kompilować parę razy pod rząd, czy z każdym nowym kompilowaniem rev musi być czysty ?

@edit

Obecnie jak można zauważyć w scrypcie exh jest ustawiony na 15 sec.

@edit2

Skrypt blokuje tylko nicki z apostrofem czy każdy nick w vip?
 
@up localhost

Najprawdopodobniej coś źle robię.

Napiszę krok po kroku

1. Wyłączam silnik (działa bez problemu)
2. Edytuję Game.cpp pod dany scrypt (obecnie tak wygląda Wklejka #592162 | Wklej.org )
3. Kompiluje silnik
Code:
./autogen.sh
./configure --enable-mysql --enable-sqlite --enable-remote-control --enable-server-diag
make
Wszystko przebiega pomyślnie, próbowałem nawet już kasować plik game.o żeby od nowa mi go stworzyło,i tak przebiega pomyślnie.
4. Włączam silnik, żadnych błędów, a vip-y mogę dodawać i usuwać cały czas bez żadnego exh.

I w tym pytanie, czy silnik można kompilować parę razy pod rząd, czy z każdym nowym kompilowaniem rev musi być czysty ?

@edit

Obecnie jak można zauważyć w scrypcie exh jest ustawiony na 15 sec.

@edit2

Skrypt blokuje tylko nicki z apostrofem czy każdy nick w vip?

Kazdy
 
Code:
./autogen.sh
./configure --enable-mysql --enable-sqlite --enable-remote-control --enable-server-diag
make

Zrób make clean , przed make.

4. Włączam silnik, żadnych błędów, a vip-y mogę dodawać i usuwać cały czas bez żadnego exh.

I w tym pytanie, czy silnik można kompilować parę razy pod rząd, czy z każdym nowym kompilowaniem rev musi być czysty ?

Silnik można kompilować tylko co godzinę, jak np. będziesz kompilował co 5 minut, to nawet żadnych zmian nie będzie widać w silniku ;/
 
Status
Not open for further replies.
Back
Top