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

Runa zmieniająca profesje

Status
Not open for further replies.

grusc

New Member
Joined
Jan 31, 2011
Messages
16
Reaction score
0
Witam posiadam taki scrypt na rune która zmienia profesje,
jednak nie umiem jej przerobic w ten sposob aby zmieniala profesje w zaleznosci od tego jaka profesja jej uzywa.
Chodzi o to ze jezeli ją uzyje Sorcerer, lub M. Sorc. o ID 1,5 to profesja zmieni sie na ID 9
A jezeli knight lub elite knight z ID 4,8 zmieni na ID 12
Chce zapobiec zmiany sorca w paladyna, druida w knighta itd.
Code:
function onUse(cid, item, frompos, item2, topos)
if item.itemid == 2272 then
local playerpos = getCreaturePosition(cid)
doRemoveItem(item.uid,2272)
doPlayerSetVocation(cid, getPlayerVocation(cid)+4)
doSendMagicEffect(playerpos, 12)
doPlayerSendTextMessage(cid,22,"Profesja została zmieniona!")
end
end
odpowiedniki ID
z ID 1,5 na ID 9
z ID 2,6 na ID 10
z ID 3,7 na ID 11
z ID 4,8 na ID 12

nadmienie ze ma ona nie dawac promocji tylko zmieniac profesje.
 
PHP:
if getPlayerVocation(cid) == 2 then

Tym sprawdzasz profesje gracza, mysle ze dalej sobie poradzisz.
 
Po co ma sprawdzać voc? musiał by sprawdzać czy jest druidem a potem ed. Mógł by również sprawdzić za pomocą isDruid(cid) ale znowu po co?

I tak jemu chodzi tylko o zmianę profesji więc może bez problemu użyć funkcji doPlayerSetPromotionLevel(cid, 2) na co ma się zmienić pobierze z fromvoc z vocations.xml a jeśli chce sprawdzić czy postać jest ed niech użyje funkcji getPlayerPromotionLevel(cid).

"nadmienie ze ma ona nie dawac promocji tylko zmieniac profesje. "

Nadmienię że nie wiesz chyba nawet o czym piszesz. (Jak mi wyjaśnisz sensownie czemu ma nie dawać promocji to Cie przeproszę).
 
A jaką linijke trzeba dopisac w lua aby z runy mogł korzystac tylko EK,ED,MS,RP czyli voc id 5,6,7,8
Poniewaz gdy uzyje zwykly knight robi sie na elite, jeszcze raz robi sie epic, a jeszcze raz i jest you are. czyli voc id 0
Chciałbym uniknąc takich bledów
Próbowałem kombinowac cos z
Code:
getPlayerVocation(cid)
ale dopiero sie ucze i nie wiem jak to przekształcic, i czy wgl to sie nadaje,
Prosze o pomoc jak by mi ktos napisał gotową linijke, a wiem ze wielu z was nie sprawi to klopotu, a przy okazji ja sie czegos naucze.

EDIT:
(Jak mi wyjaśnisz sensownie czemu ma nie dawać promocji to Cie przeproszę).
Poniewaz nie działała mi dodatkowa promocja epic, a potrafilem z niej zrobic nowy vocation, ale to juz nie aktualne poniewaz poradzilem sobie i jest to juz jako promocja.
 
Po co ma sprawdzać voc? musiał by sprawdzać czy jest druidem a potem ed. Mógł by również sprawdzić za pomocą isDruid(cid) ale znowu po co?

I tak jemu chodzi tylko o zmianę profesji więc może bez problemu użyć funkcji doPlayerSetPromotionLevel(cid, 2) na co ma się zmienić pobierze z fromvoc z vocations.xml a jeśli chce sprawdzić czy postać jest ed niech użyje funkcji getPlayerPromotionLevel(cid).

"nadmienie ze ma ona nie dawac promocji tylko zmieniac profesje. "

Nadmienię że nie wiesz chyba nawet o czym piszesz. (Jak mi wyjaśnisz sensownie czemu ma nie dawać promocji to Cie przeproszę).


Lolz, to mu ustali profesje taka jaką ustawi, nie zależnie jaką jest. Chciał proste rozwiązanie, to mu dałem. W czym problem dopisac dokładnie 4 liniki kodu?
 
Chwileczke bo robi sie zamieszanie, jak napisalem wyzej, naprawilem juz to i dziala mi epic jako promotion,
teraz potrzebuje tylko linijke kodu ktora odpowie za to ze profesja z id 1,2,3,4 oraz 9,10,11,12 nie bedzie mogla uzyc runy.
Tak by mogli ja uzywac tylko i wyłącznie Elite, Elder, Master, Royal.
 
Uczysz się uczysz ale jeszcze trochę Ci brakuje, podałem niżej funkcje dzięki której sprawdzi poziom promocji getPlayerPromotionLevel(cid). W twoim przypadku to nie będą 3 linijki no chyba że użyje pętli a raczej tego nie potrafi.

Kiedyś przy zmianie voc były problemy nie wiem jak jest teraz, weż pod uwagę że jeśli ma 1 promocje i zmienisz mu voc np na 12 to będzie miał voc12 + 1poziom profesji co zmieni mu znowu voc (tylko przypuszczenie bo nie wiem jak będzie dokładnie).
 
Chwileczke bo robi sie zamieszanie, jak napisalem wyzej, naprawilem juz to i dziala mi epic jako promotion,
teraz potrzebuje tylko linijke kodu ktora odpowie za to ze profesja z id 1,2,3,4 oraz 9,10,11,12 nie bedzie mogla uzyc runy.
Tak by mogli ja uzywac tylko i wyłącznie Elite, Elder, Master, Royal.

No to lares Ci napisał biało na czarnym jak to zrobić.
 
PHP:
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getPlayerVocation(cid) == 5 then
		doPlayerSetVocation(cid, 20)
		doCreatureSay(cid, "You are now a Super Sorcerer!", TALKTYPE_ORANGE_1)
		doRemoveItem(item.uid, 1)
	elseif getPlayerVocation(cid) == 6 then
		doPlayerSetVocation(cid, 21)
		doCreatureSay(cid, "You are now a Super Druid!", TALKTYPE_ORANGE_1)
		doRemoveItem(item.uid, 1)
	elseif getPlayerVocation(cid) == 7 then
		doPlayerSetVocation(cid, 22)
		doCreatureSay(cid, "You are now a Super Paladin!", TALKTYPE_ORANGE_1)
		doRemoveItem(item.uid, 1)
	elseif getPlayerVocation(cid) == 8 then
		doPlayerSetVocation(cid, 23)
		doCreatureSay(cid, "You are now a Super Knight!", TALKTYPE_ORANGE_1)
		doRemoveItem(item.uid, 1)
	else
		doPlayerSendCancel(cid,"You need to be promoted in order to use this item.")
	end
end
 
Lua:
function onUse(cid, item, fromPosition, itemEx, toPosition)
    if getPlayerPromotionLevel(cid) == 1 then
	doPlayerSetPromotionLevel(cid, 2)
	doRemoveItem(item.uid, 1)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Congratulations! You are now promoted.")
    else
	doPlayerSendCancel(cid,"You need to be promoted in order to use this item.")
    end
	return true
end

Masakryczne są te taby w lua.


Co się stało z Kamilem? Czemu ma bana i to perma jak się domyślam??? (Chodzi o Chojraka oczywiście)
 
Last edited:
PHP:
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getPlayerVocation(cid) == 5 then
		doPlayerSetVocation(cid, 20)
		doCreatureSay(cid, "You are now a Super Sorcerer!", TALKTYPE_ORANGE_1)
		doRemoveItem(item.uid, 1)
	elseif getPlayerVocation(cid) == 6 then
		doPlayerSetVocation(cid, 21)
		doCreatureSay(cid, "You are now a Super Druid!", TALKTYPE_ORANGE_1)
		doRemoveItem(item.uid, 1)
	elseif getPlayerVocation(cid) == 7 then
		doPlayerSetVocation(cid, 22)
		doCreatureSay(cid, "You are now a Super Paladin!", TALKTYPE_ORANGE_1)
		doRemoveItem(item.uid, 1)
	elseif getPlayerVocation(cid) == 8 then
		doPlayerSetVocation(cid, 23)
		doCreatureSay(cid, "You are now a Super Knight!", TALKTYPE_ORANGE_1)
		doRemoveItem(item.uid, 1)
	else
		doPlayerSendCancel(cid,"You need to be promoted in order to use this item.")
	end
end

Tutaj bardzo ladnie dziala tylko dla tych profesji ktorych prosilem, tylko ktore linijki odpowiadaja za dodawanie promotion?
Bo dodalo chyba za duzo, po uzyciu na postaci pisze You Are .

A kod laresa sprawdze po szkole.
 
Więc stało się tak jak mówiłem, nałożyło promocje na voc np. 12.
 
To tak kod laresa nie dziala niestety w ogóle ; ( Zadna z profesji nie moze uzyc runy,.
Kod od Tuchola wydaje sie byc fajny, tylko zastanawia mnie to:
Code:
    elseif getPlayerVocation(cid) == [COLOR="lime"]6[/COLOR] then
        doPlayerSetVocation[COLOR="magenta"](cid, 21)[/COLOR]
Czy to odpowiada vocation ktory moze uzywac runy?
A to na vocation ktory ma zamienic?
jezeli mam racje oznacza to ze nalezy zmienic tylko 21 na przykładowo 10
mam racje? poniewaz nie chce restartowac servera bez uprzednio upewnienia sie.
 
Radze przyjrzeć się funkcji "promotion", która automatycznie zmienia profesję +4. Np. jeśli mamy profesję o ID 1 (sorcerer) to +4 i mamy ID 5 (master sorcerer) , możesz to uzyskać używając tej funkcji: (nie wiem czy dokładnie taka nazwa, dlatego sprawdz) setPlayerPromotionLevel(cid, 1) - wtedy z sorcerer robi mu się ms, jak chcesz dalej to np. robisz mega sorcerer o id o 4 wyższym od 5 tj. ID 9 i używasz setPlayerPromotionLevel(cid, 2).

Nie wiem czy zrozumiałeś, starałem się.
 
Radze przyjrzeć się funkcji "promotion", która automatycznie zmienia profesję +4. Np. jeśli mamy profesję o ID 1 (sorcerer) to +4 i mamy ID 5 (master sorcerer) , możesz to uzyskać używając tej funkcji: (nie wiem czy dokładnie taka nazwa, dlatego sprawdz) setPlayerPromotionLevel(cid, 1) - wtedy z sorcerer robi mu się ms, jak chcesz dalej to np. robisz mega sorcerer o id o 4 wyższym od 5 tj. ID 9 i używasz setPlayerPromotionLevel(cid, 2).

Nie wiem czy zrozumiałeś, starałem się.

Samme nie powtarzaj po mnie i nie nabijaj postów (joke oczywiście) ale na stronie 1 poradziłem mu to samo.

@Ziomek co nie umie zrobić profesji jakie błędy wywala przy moim skrypcie?

jeśli żadnych to wklej to i powiedz jakie liczby wywala w silniku


PHP:
function onUse(cid, item, fromPosition, itemEx, toPosition)
print(1)
    if getPlayerPromotionLevel(cid) == 1 then
print(2)
	doPlayerSetPromotionLevel(cid, 2)
	doRemoveItem(item.uid, 1)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Congratulations! You are now promoted.")
    else
print(3)
	doPlayerSendCancel(cid,"You need to be promoted in order to use this item.")
    end
print(4)
end
 
Samme nie powtarzaj po mnie i nie nabijaj postów (joke oczywiście) ale na stronie 1 poradziłem mu to samo.

@Ziomek co nie umie zrobić profesji jakie błędy wywala przy moim skrypcie?

jeśli żadnych to wklej to i powiedz jakie liczby wywala w silniku


PHP:
function onUse(cid, item, fromPosition, itemEx, toPosition)
print(1)
    if getPlayerPromotionLevel(cid) == 1 then
print(2)
	doPlayerSetPromotionLevel(cid, 2)
	doRemoveItem(item.uid, 1)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Congratulations! You are now promoted.")
    else
print(3)
	doPlayerSendCancel(cid,"You need to be promoted in order to use this item.")
    end
print(4)
end
Skrypt mu pewnie działa! Ale znając życie i ludzi w Open Tibia to nawet nie dodał profesji do vocations.xml więc nic dziwnego, że nie działa :D.
 
Skrypt mu pewnie działa! Ale znając życie i ludzi w Open Tibia to nawet nie dodał profesji do vocations.xml więc nic dziwnego, że nie działa :D.

Widocznie nie znasz na tyle ludzi ani OT. mimo ze jestem slabo zaawansowany w tych sprawach nie oznacza ze nie posiadam zadnej wiedzy, bo voc mi dziala a temat tyczy sie runy, wiec odpusc sobie ten spam i nabijanie postow poniewaz twoje komentarze sa tutaj zbędne.

Lares bardzo ci dziekuje za pomoc i zaangazowanie w moj temat, wszystko dziala i mimo szkoda ze nie ma zadnego efektu z napisem, ale najwazniejsze ze runa działa ; )
 
Widocznie nie znasz na tyle ludzi ani OT. mimo ze jestem slabo zaawansowany w tych sprawach nie oznacza ze nie posiadam zadnej wiedzy, bo voc mi dziala a temat tyczy sie runy, wiec odpusc sobie ten spam i nabijanie postow poniewaz twoje komentarze sa tutaj zbędne.

Lares bardzo ci dziekuje za pomoc i zaangazowanie w moj temat, wszystko dziala i mimo szkoda ze nie ma zadnego efektu z napisem, ale najwazniejsze ze runa działa ; )

Problemy ze zrozumieniem które nosi Twoja osoba nie muszą mnie dotykać w żaden sposób .
 
Status
Not open for further replies.
Back
Top