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

Nowy Condition

No dobra dzięki za skrypt nie wywala błędów jednak także nie stunuje. Chodzi mi o monstry bo graczy nawet nie testowałem. Próbowałem w tej linijce:
Lua:
if isPlayer(topItem.uid) then
zmieniać na isCreature albo isMonster ale i tak i tak nie stunuje. No więc?
 
No dobra dzięki za skrypt nie wywala błędów jednak także nie stunuje. Chodzi mi o monstry bo graczy nawet nie testowałem. Próbowałem w tej linijce:
Lua:
if isPlayer(topItem.uid) then
zmieniać na isCreature albo isMonster ale i tak i tak nie stunuje. No więc?

Ja po drobnych przeróbkach skryptu nie miałem problemu, masz na pewno szare komórki przeanalizuj kod krok po kroku.
 
No ta dobra szkoda ,że nie ważne w jakim skrypcie próbuje doCreatureSetNoMove działa tylko na ludzi na monstry już nie :S
 
No ta dobra szkoda ,że nie ważne w jakim skrypcie próbuje doCreatureSetNoMove działa tylko na ludzi na monstry już nie :S

W takim przypadku może spróbuj użyć paraliżu lub zmiany szybkości dla potworów (doChangeSpeed(cid, -getCreatureSpeed(cid)))
 
Teraz wygląda to tak, all śmiga itp ale mam parę błędów i pytań:
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 100)
 
function onGetFormulaValues(cid, level, maglevel)
	local min = ((level/5)+(maglevel*6))
	local max = ((level/5)+(maglevel*12))
	return -min, -max
end
 
setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
 
area = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}

local area1 = createCombatArea(area)
setCombatArea(combat, area1)
 
function onTargetTitle(cid, pos)
	local topItem = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = STACKPOS_TOP_CREATURE})
	if isCreature(topItem.uid) then
		doChangeSpeed(topItem.uid, -getCreatureSpeed(topItem.uid))
		setPlayerStorageValue(topItem.uid, 777, 1)
		addEvent(setPlayerStorageValue, 5000, topItem.uid, 777, 0) 
		addEvent(doChangeSpeed, 5000, topItem.uid, getCreatureBaseSpeed(topItem.uid)) 
	end
end
setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTitle")
 
function onCastSpell(cid, var)
	return doCombat(cid, combat, var)
end

Mianowicie jeśli więcej razy się użyje tego spella na monstrze w tym samym czasie to speed ciągle się dodaje. I jak zrobić ,żeby silnik nie wywalał błedu z addevent jeśli monster padnie?
 
zamiast tego:
Lua:
		addEvent(setPlayerStorageValue, 5000, topItem.uid, 777, 0) 
		addEvent(doChangeSpeed, 5000, topItem.uid, getCreatureBaseSpeed(topItem.uid))

Dodajesz eventy do funkcji które sam napisałeś, np:
Lua:
function playerStorage(cid, st_1, st_2)
	if isPlayer(cid) then
		setPlayerStorageValue(cid, st_1, st_2)
	end
end

function changeSpeed(cid)
	if isCreature(cid) then
		doChangeSpeed(cid, -getCreatureBaseSpeed(cid))
	end
end

Lua:
		addEvent(playerStorage, 5000, topItem.uid, 777, 0) 
		addEvent(changeSpeed, 5000, topItem.uid)

PS: Możesz to zrobić nie definiując tych funkcji poza funkcją onTargetTitle z której wywołujesz addEvent, ale nie pamiętam jak xS

#EDIT#
Speed się dodawał, bo nie wpisałeś minusa przed funkcją pobierająca szybkość ^^
 
PHP:
local topItem = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = STACKPOS_TOP_CREATURE})
Podmień na:​
PHP:
getTopCreature(pos)
 
Back
Top