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

exp za zabicie gracza na serwerze pvp

zduna

Banned User
Joined
May 3, 2010
Messages
201
Reaction score
0
Szukalem na forum i w googlach, ale nic dzialajacego nie znalazlem
chodzi o skrypt ktory daje exp za zabicie gracza jak na pvp enfo
 
LUA:
function onKill(cid, target)
	if (isPlayer(target)) then
		doPlayerAddExperience(cid, XYZ)
	end
	return true
end
XYZ = ilość doświadczenia za zabicie
 
Nie dziala, moze zrobilem cos zle ale watpie



w login.lua dodalem

registerCreatureEvent(cid, "xpgold")


w reaturescript.xml

event type="advance" name="xpgold" event="script" value="xpgold.lua"/>

no i Twoj skrypt wrzucilem do scripts
 
Dzieki, teraz dziala :)

Jeszcze mam pytanie jak zrobic zeby bylo widac wskakujacy exp i przede wszystkim dostac procent expa osoby ktora sie zabilo i jakis ogranicznik np. exp dostaje sie tylko za gracza 50 lvli mniejszego albo 50 wiekszego
 
doSendAnimatedText~~ użyj tej funkcji


hmmm procent expa?

pobrać jakoś exp gracza zabitego i potem wyciągnąć procent


if getPlayerLevel(cid) - getPlayerLevel(target) > 0 then
exp = 0
else
exp = X
 
function onKill(cid, target)
if (isPlayer(target)) then
local pPos = getPlayerPosition(cid)
doPlayerAddExperience(cid, 1555)
doSendAnimatedText("EXP", 210)
end
return true
end

Takie cos zrobilem i po zabiciu przeciwnika dalej on stoi bez paska hp
 
w funkcji doSendAnimatedText nie podałeś parametru z pozycją, funkcja wywaliła błąd, skrypt zwrócił false.
 
Jest postep. Ladnie wyswietla i dodaje exp, ale jeszcze chclabym zrobic jakies ograniczniki np. exp tylko za graczy ktory ma 50 poziomow mniej i 100 wiecej i jakas zaleznosc expa od tego

function onKill(cid, target)
local pPos = getPlayerPosition(cid)
if (isPlayer(target)) then
doPlayerAddExperience(cid, 1555)
doSendAnimatedText(pPos, Kill !", 210)
end
return true
end
 
LUA:
function onKill(cid, target)
	if (isPlayer(cid) and isPlayer(target)) then
		local different = getPlayerLevel(cid) - getPlayerLevel(target)
		if (different <= 50 and different >= 100) then 
			doPlayerAddExperience(cid, math.abs(different) * 10)
			doSendAnimatedText(getThingPosition(cid), "Kill!", 210)
		end
	end
	return true
end
Nie testowane. Na każdy poziom różnicy gracz dostaje 10 punktów doświadczenia.
 
LUA:
function onKill(cid, target)
	if (isPlayer(cid) and isPlayer(target)) then
		local different = getPlayerLevel(cid) - getPlayerLevel(target)
		if (different <= 50 and different >= 100) then 
			doPlayerAddExperience(cid, math.abs(different) * 10)
			doSendAnimatedText(getThingPosition(cid), "Kill!", 210)
		end
	end
	return true
end
Nie testowane. Na każdy poziom różnicy gracz dostaje 10 punktów doświadczenia.


hehe jestem ciekaw jak jakaś wartość może być jednocześnie mniejsza równa 50 oraz większa równa 100, takie coś nie istnieje, zamiast "and" jak już to powinno być "or"



Edit:

okey to jedziemy

pobierzmy se lvl gracza cid'a i target'a

LUA:
lvl_cid = getPlayerLevel(cid)
lvl_target = getPlayerLevel(target)

if (lvl_cid > lvl_target and lvl_cid - lvl_target <= 50) or lvl_cid < lvl_target then
    dodaj expa ile tam chcesz
    wyslij efekt
end
 
Back
Top