• 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!

Jak zablokować używanie run, spelli na danym obszarze.

Potar

SocialWorld
Senator
Joined
Mar 1, 2009
Messages
1,664
Reaction score
125
Location
Warsaw, Poland
Blokowanie run, czarów na danym obszarze.


Witam, dziś zaprezentuję łatwy sposób na zablokowanie możliwości korzystania z run oraz czarów na danym obszarze.

F.A.Q:

Do czego nam się to przyda?
- Na przykład żeby zablokować czary na Event Arenie.

Dlaczego nie w LUA?
- Dlatego że jest to dużo szybszy sposób, nie musimy edytować każdego kodu.

Jak zablokować tylko np. używanie 1 czaru lub runy?
- Do 1 czaru lub runy polecam zablokować poprzez LUA, tutaj przedstawiam przykład, wystarczy edytować pozycje isInRange.
Lua:
function onCastSpell(cid, var)
if isInRange(getCreaturePosition(cid), {x = odx, y = ody, z = odz}, {x = dox, y = doy, z = doz}) then
doCreatureSay(cid, "Nie mozesz uzyc tutaj czaru / runy, bo uzywasz skrypta potara.", TALKTYPE_ORANGE_1) return false
end
	return doCombat(cid, combat, var)
end

Wróćmy do sedna, oto kod na zablokowanie czarów:

Szukamy w naszym spells.cpp :

Code:
bool Spell::checkSpell(Player* player) const

Następnie dodajemy pod nim :

Code:
const Position& pos = player->getPosition();
	if (pos.x >= POZYCJAODX && pos.x <= POZYCJADOX && pos.y >= POZYCJAODY && pos.y <= POZYCJADOY && pos.z == POZYCJAZ)
	{
		player->sendCancelMessage(RET_NOTPOSSIBLE);
		g_game.addMagicEffect(pos, MAGIC_EFFECT_POFF);
		return false;
	}

Kompilujemy i gotowe :)
 
Last edited:
no pojebało cie i za każdym razem to kompilować?

jak już to zrób to jako nowa funkcja lub coś takiego by odczytywało tablice z pozycjami z pliku xml lub lua i potem prosto i przyjemnie byśmy to sobie edytowali bez ponownych kompilacji

;p
 
hardcodowane isInArea by było dobre ( w lua działa za wolno, a wywołanie hardcodowanej wersji by szło już w miarę szybko)
 
no pojebało cie i za każdym razem to kompilować?

jak już to zrób to jako nowa funkcja lub coś takiego by odczytywało tablice z pozycjami z pliku xml lub lua i potem prosto i przyjemnie byśmy to sobie edytowali bez ponownych kompilacji

;p

Jak ktoś ma drewnianego kompa i kompiluje na windowsie to narzeka (posiadacze linuxa wiedzą że to nie problem), skrypt odpowiada pod event areny które często trzymamy w kupie więc jedna edycja source nikomu dupy nie urwie.
 
Last edited:
Back
Top