What's new

Actions Skrypty na zam?wienie.

Status
Not open for further replies.

Magic

3+3=3!
Joined
Aug 4, 2008
Messages
1,338
Reaction score
180
Witam, postanowi?em zrobi? sobie temat i podszkoli? si? w lua. Nie owijaj?c w bawe?n?, zapraszam do sk?adania zam?wie?.
Wz?r sk?adania zam?wienia:
Code:
Rodzaj skryptu: (jak nie wiesz o co chodzi - to zostaw puste)
Opis skryptu:
Regulamin:
1. Przyjmuj? na raz maksymalnie 3 zlecenia, reszta b?dzie traktowania jako nieprzestrzeganie regulaminu tematu.
2. U?ytkownik musi posiada? minimum 50 post?w na swoim koncie.
3. Autor tematu ma prawo odm?wi? do stworzenia skryptu bez podania przyczyny.
4. Na jednego posta przypada jeden skrypt.
5. Wszystkie pytania/podzi?kowania/b??dy z skryptem nale?y zg?asza? na pw, lub w notkach - nie za?mieca? tematu!
6. Dla ?cis?o?ci - skrypty robi? tylko na tibie 8.54 i na jej oryginaln? wersje, bez ?adnych pokemod?w itp.

Ostatnia edycja regulaminu

7 stycznia 2011r.
16:08

Wszystkie skrypty s? testowane na serwerze:
The Forgotten Server
Version: 0.3.6 Patch level 1 (Crying Damson)

Wszelkie niejasno?ci prosz? zg?asza? na PW. W razie z?amania regulaminu dzia?u, prosz? o interwencje moderatora.
 

Oskar

Forum friend
Joined
Jan 24, 2009
Messages
2,256
Reaction score
331
Odp: Skrypty na zam?wienie.

Hmm... Z?y dzia?, ale mniejsza.
Rodzaj skryptu: creaturescripts
Opis skryptu: Zr?b by skrypt odznacza? potworowi cel, gdy ten jest graczem.
 

xKrysteKx

Advanced User
Joined
Oct 5, 2010
Messages
250
Reaction score
29
Odp: Skrypty na zam?wienie.

No wi?c ?ycz? sobie:
Rodzaj skryptu: spells
Opis skryptu: Wi?c rzucam czar 1 kratke przed siebie i je?li uderze w gracza lub potwora to cofa go o x kratek. Lecz jesli np. jest morze lub co? co blokuje nie mo?e przez to przej??. ;)

Pozdrawiam xKrysteKx!

100 POST
 

orzeleagle122

Advanced User
Joined
May 18, 2010
Messages
449
Reaction score
16
Odp: Skrypty na zam?wienie.

Rodzaj skryptu: Actions
Opis: po lewej stronie spisuje 10 pozycji i po prawej, beda ona zamieszczone w skrypcie,
po przesuniaciu wajchy skrypt sprawdza czy na
newno wszyscy stoja na odpowiednich pozycjach i
czy wszyscy maja wiekszy lvl niz 250.
Jezeli tak, to tych po lewej tp w pozycje np. x333, y444, z7,
a tych po prawej na x555, y666, z7, nie musza utrzymywac szyku,
mog? l?dowac na 1sqm.
pozdrawiam.
 
Last edited:

Magic

3+3=3!
Joined
Aug 4, 2008
Messages
1,338
Reaction score
180
Odp: Skrypty na zam?wienie.

@Oskar
W lua tego si? nie da zrobi?, a przynajmniej potw?r tak na prawd? b?dzie mia? zaznaczonego gracza.
Co do poprawno?ci dzia?u, z moderatorem j? ustala?em :)
@Krystek
Spells.xml:
PHP:
<instant name="Odrzut" words="exevo attack" lvl="18" mana="25" direction="1" exhaustion="2000" needlearn="0" event="script" value="attack/odrzut.lua">
		<vocation id="1"/>
		<vocation id="2"/>
		<vocation id="3"/>
		<vocation id="4"/>
		<vocation id="5"/>
		<vocation id="6"/>
		<vocation id="7"/>
		<vocation id="8"/>
	</instant>
/attack/odrzut.lua
PHP:
-- Copyright by Magic
-- magichereos@gmail.com
-- http://tibia.net.pl/members/magic.html
local combat = createCombatObject()
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)

function onCastSpell(cid, var)
	local sqm = 3
	local pos = getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid), 1)
	pos.stackpos = 253
	local creature = getThingFromPos(pos)
	if(isPlayer(creature.uid) or isMonster(creature.uid)) then
		doPlayerSendTextMessage(cid, 22, "jest!")
		local pos_tp = getClosestFreeTile(creature.uid, (getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid), sqm)))
		doTeleportThing(creature.uid, pos_tp)
	end
	return doCombat(cid, combat, var)
end
@orzeleagle123
actions.xml:
PHP:
<action uniqueid="5563" event="script" value="teleport.lua"/>
UniqueID d?wigni - 5563
teleport.lua
PHP:
function onUse(cid, item, fromPosition, itemEx, toPosition)
local positions_teleport =
{
{x=120, y=280, z=7}, -- pozycja dla 1 teamu
{x=110, y=280, z=7} -- pozycja dla 2 teamu
}
local positions_player = {
{
{x=118, y=290, z=7}, -- dodajesz pozycje w spos?b 
-- nowa pozycja - {x=118, y=290, z=7},
{x=119, y=290, z=7} -- ostatnia pozycja
},
{
{x=118, y=292, z=7}, -- dodajesz pozycje w spos?b 
-- nowa pozycja - {x=118, y=290, z=7},
{x=119, y=292, z=7}-- ostatnia pozycja
}
}

if(item.itemid == 1945) then
for i=1, #positions_player do
	for p=1, #positions_player[i] do
	positions_player[i][p].stackpos = 253
	local player = getThingfromPos(positions_player[i][p])
	if(not isPlayer(player.uid) and not isMonster(player.uid)) then
		doPlayerSendCancel(cid, "Nie ma wszystkich graczy!")
		return false
	end
	if(getPlayerLevel(player.uid) < 250) then
		doPlayerSendCancel(cid, "Nie wszyscy gracze maja level wiekszy niz 250!")
		return false
	end
	end
end
for i=1, #positions_player do
	for p=1, #positions_player[i] do
		doTeleportThing((getThingfromPos(positions_player[i][p])).uid, positions_teleport[i])
	end
end
elseif (item.itemid == 1946) then
	doTransformItem(item.uid, 1945)
	doPlayerSendCancel(cid,"Sorry, not possible.")
	return true
end
end
PS. Skrypt ten mo?e obs?ugiwa? wi?ksz? ilo?? team?w i pozycji.
 
Last edited:

Oskar

Forum friend
Joined
Jan 24, 2009
Messages
2,256
Reaction score
331
Odp: Skrypty na zam?wienie.

Zapytam. Po co tyle p?tli? Na co to komu? Tylko niepotrzebnie pami?? bierze.

Typ: Brak kategorii
Opis: Chcia?bym by? znalaz?/napisa? mi funkcj? sprawdzaj?c? czy gracz ma w??czone security mode (zaci?ni?ta pi??? - pk w??czone).

Notka moderatorska:
Oskar rozumiem Twoj? frustracj? z powodu ?e robi si? konkurencja w dziedzinie skrypt?w na zam?wienie. Wi?c wrzu? na luz, i zajmuj si? swoim tematem gdzie je wykonujesz. Chyba ?e nie dajesz rady i potrzebujesz pomocy Magica, skoro prosisz go o robienie skrypt?w.
/Reverse.
 
Last edited by a moderator:

Stasiorex

Advanced User
Joined
Dec 6, 2010
Messages
221
Reaction score
12
Odp: Skrypty na zam?wienie.

Witam
My?l? ?e uda ci si? wykona? ten skrypt, postaram dobrze wyt?umaczy? o co mi chodzi.
Rodzaj: chyba actions
Opis: Ma to by? Quest, a bardziej par? quest?w.
Powiedzmy ?e mamy sal? z 6 nagrodami do wyboru ( mo?na wzi?? tylko jedn? jak na Ani). Aby wej?? do tej sali trzeba przej?? korytarz w kt?rym jest 10 drzwi.
Ka?dy Quest odpowiada za mo?liwo?? przej?cia przez jedne drzwi.
Drzwi od 1 do 5 mo?na pokona? przez otworzenie 5 skrzyni rozmieszczonych w r??nych miejscach na mapie.
Drzwi 6, 7, 8 mo?na otworzy? po przeprowadzeniu Kr?tkiego dialogu z 3 NPC ( witamy si? z NPC, piszemy "drzwi", on nam odpowiada ?e ju? wysy?a tam syna ?eby otworzy? drzwi.).
Drzwi 9 i 10 otwieramy gdy p?jdziemy do Npc i we?miemy u niego (oraz wykonamy) dwa taski:
-zabicie 10 demon?w
-zabicie 20 Yeti

My?l? ?e dosy? jasno opisa?em o co mi chodzi i ?e moja pro?ba nie sprawi bardzo du?ego problemu ;)
Pozdrawiam i z g?ry dzi?kuj?
Stasiorex
 
Last edited:

Arts18

Signed...
Joined
May 7, 2009
Messages
2,888
Reaction score
231
Age
33
Odp: Skrypty na zam?wienie.

Na razie poprosz? Ci? o dwa skrypty.

Rodzaj skryptu: Rodzaj skryptu: (jak nie wiesz o co chodzi - to zostaw puste)
Opis skryptu:

Opis skryptu: Skrypt jest na kasyno, kt?ry dzia?a podobnie jak na Wypasie.
Gdy gracz podejdzie do kratki x i wylosuje los, wtedy GM lub osoba z wy?szym accesem poci?ga za wajch? i wtedy gracz nie ma mo?liwo?ci wzi?cia udzia?y. Za nim los zostanie wylosowany musi po?o?y? na blacie jaka? ilo?? crystal coin.
Rodzaj skryptu:
Opis skryptu: Skrypt jest na sprzeda? punkt?w premium, prawdopodobnie jest to talkactions.
Za pomoc? /points nick, ilo?? punkt?w gracz mo?e sprzeda? za pomoc? trade swoje punkty. Gracz musi mie? co najmniej 7 pkt premium, aby mog?o doj?? do transakcji.
Gdy dochodzi do transakcji, to za pomoc? trade, czyli wymiany dochodzi, jak m?wi?em do transakcji. System ten ju? gdzie? tutaj by?, ale prawdopodobnie ju? go nie ma.

Pozdrawiam.
 

YoS

Advanced User
Joined
Aug 29, 2008
Messages
410
Reaction score
32
Odp: Skrypty na zam?wienie.

Wiem, ?e masz ju? sporo na g?owie ale nie chce od Ciebie skryptu tylko pewien szablon ot?? chodzi mi o szablon npc.

O co chodzi?
Chodzi mi o to, ?e zrobi?by? szablon npc na zasadzie npc zadaje pytanie odpowiadasz X dostajesz inny talk state ni? jak odpowiesz Y.
Je?li wiesz o co chodzi to 5 min roboty dla Ciebie:)
 

Akyga16

Advanced User
Joined
Apr 16, 2010
Messages
214
Reaction score
12
Age
29
Odp: Skrypty na zam?wienie.

Rodzaj skryptu:
Opis skryptu: Chodzi mi o taki skrypt, gdy naci?niemy na przedmiot (kt?ry b?dzie sta? w temple) b?dzie ?adowa? pe?ne ?ycie, i drugi taki sam tylko, ?e b?dzie dodawa? pe?n? mane :)
Dzi?ki :)
 

Magic

3+3=3!
Joined
Aug 4, 2008
Messages
1,338
Reaction score
180
Odp: Skrypty na zam?wienie.

Zapytam. Po co tyle p?tli? Na co to komu? Tylko niepotrzebnie pami?? bierze.
Typ: Brak kategorii
Opis: Chcia?bym by? znalaz?/napisa? mi funkcj? sprawdzaj?c? czy gracz ma w??czone security mode (zaci?ni?ta pi??? - pk w??czone).
Oskar, jeste? dobrym skrypterem, wi?c chyba nie musz? Ci pisa? funkcji do istniej?cej
PHP:
int32_t LuaInterface::luaGetPlayerModes(lua_State* L)
{
	//getPlayerModes(cid)
	ScriptEnviroment* env = getEnv();

	Player* player = env->getPlayerByUID(popNumber(L));
	if(!player)
	{
		errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));
		lua_pushboolean(L, false);
		return 1;
	}

	lua_newtable(L);
	setField(L, "chase", player->getChaseMode());
	setField(L, "fight", player->getFightMode());
	setField(L, "secure", player->getSecureMode());
	return 1;
}
Na razie poprosz? Ci? o dwa skrypty.
Rodzaj skryptu: Rodzaj skryptu: (jak nie wiesz o co chodzi - to zostaw puste)
Opis skryptu:
Opis skryptu: Skrypt jest na kasyno, kt?ry dzia?a podobnie jak na Wypasie.
Gdy gracz podejdzie do kratki x i wylosuje los, wtedy GM lub osoba z wy?szym accesem poci?ga za wajch? i wtedy gracz nie ma mo?liwo?ci wzi?cia udzia?y. Za nim los zostanie wylosowany musi po?o?y? na blacie jaka? ilo?? crystal coin.
Rodzaj skryptu:
Opis skryptu: Skrypt jest na sprzeda? punkt?w premium, prawdopodobnie jest to talkactions.
Za pomoc? /points nick, ilo?? punkt?w gracz mo?e sprzeda? za pomoc? trade swoje punkty. Gracz musi mie? co najmniej 7 pkt premium, aby mog?o doj?? do transakcji.
Gdy dochodzi do transakcji, to za pomoc? trade, czyli wymiany dochodzi, jak m?wi?em do transakcji. System ten ju? gdzie? tutaj by?, ale prawdopodobnie ju? go nie ma.
Pozdrawiam.
Pierwszego nie zrozumia?em.
Co do drugiego, to mam gotowy skrypt na przesy?anie, tylko nie ma ?adnej funkcji, kt?ra wywo?ywa?aby trade - szuka?em nawet w source.

Wiem, ?e masz ju? sporo na g?owie ale nie chce od Ciebie skryptu tylko pewien szablon ot?? chodzi mi o szablon npc.
O co chodzi?
Chodzi mi o to, ?e zrobi?by? szablon npc na zasadzie npc zadaje pytanie odpowiadasz X dostajesz inny talk state ni? jak odpowiesz Y.
Je?li wiesz o co chodzi to 5 min roboty dla Ciebie:)
PHP:
-- Copyright by Magic
-- magichereos@gmail.com
-- http://tibia.net.pl/members/magic.html
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid)				npcHandler:onCreatureAppear(cid)			end
function onCreatureDisappear(cid)			npcHandler:onCreatureDisappear(cid)			end
function onCreatureSay(cid, type, msg)			npcHandler:onCreatureSay(cid, type, msg)		end
function onThink()					npcHandler:onThink()					end

function creatureSayCallback(cid, type, msg)
	
	if(not npcHandler:isFocused(cid)) then
		return false
	end

	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	if(msgcontains(msg, 'mission') and talkState[talkUser] == 0) then
		selfSay('Are you Wazer\'s Friend ?', cid)
		talkState[talkUser] = 1
	elseif(msgcontains(msg, 'yes') talkState[talkUser] == 1) then
		selfSay('Oh, I found you!!!', cid)
		talkState[talkUser] = 2
	elseif(msgcontains(msg, 'no') talkState[talkUser] == 1) then
		selfSay('So what do you want from me?', cid)
		talkState[talkUser] = 0
	end
	return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
O co? takiego Ci chodzi?o?
Rodzaj skryptu:
Opis skryptu: Chodzi mi o taki skrypt, gdy naci?niemy na przedmiot (kt?ry b?dzie sta? w temple) b?dzie ?adowa? pe?ne ?ycie, i drugi taki sam tylko, ?e b?dzie dodawa? pe?n? mane :)
Dzi?ki :)
actions.xml
PHP:
<action itemid="2523" event="script" value="temple.lua"/>
<action itemid="2524" event="script" value="temple.lua"/>
temple.lua
PHP:
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(item.itemid == 2523) then
		print(1)
		if(getCreatureMaxMana(cid) == getCreatureMana(cid)) then
			doPlayerSendCancel(cid, "Masz pelna mane!")
			return false
		end
		doCreatureAddMana(cid, getCreatureMaxMana(cid)-getCreatureMana(cid))
	elseif(item.itemid == 2524) then
		if(getCreatureMaxHealth(cid) == getCreatureHealth(cid)) then
			doPlayerSendCancel(cid, "Masz pelne hp!")
			return false
		end
		doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid))
	end
	return true
end
@Stasiorex
Doszed?em do wniosku, ?e na razie Ci tego nie napisz? - troch? za d?ugie, mo?e w niedziele.
 

Arts18

Signed...
Joined
May 7, 2009
Messages
2,888
Reaction score
231
Age
33
Odp: Skrypty na zam?wienie.

Domy?lam si?, ?e jest tutaj interakcja z baz? danych, a by? spr?bowa? napisa? t? funkcj?, kt?ra by wywo?ywa?a okno trade, jak nie to mo?e jaki? inny spos?b? Co ty na to.

Ten pierwszy skrypt o kt?ry Ci? poprosi?em, dzia?a na jak Wypasie. To nie jest zwyk?e kasyno, gdzie po po?o?eniu na puchar kasy i poci?gni?ciu za wajch? losuj? Ci ilo?? kasy, albo nic nie masz. Tutaj jest inna zasada - ot?? jak opisywa?em.

Dany gracz gdy stanie na kratk? x i po po?o?eniu kasy, wtedy GM lub osoba z wy?szym accesem wyrzuca kostk? dan? ilo?? oczek i zaraz po przeci?gni?ciu za wajch? l?dujesz w ?wi?tyni, potem ten gracz nie b?dzie mia? mo?liwo?ci wzi?cia udzia?u w dalszej grze w tym dniu, tylko w nast?pnym. Mam nadzieje, ?e teraz mnie zrozumia?e?, bo inaczej nie mog?em tego bardziej opisa?.
 

arynthia

Advanced User
Joined
Jan 27, 2010
Messages
349
Reaction score
23
Odp: Skrypty na zam?wienie.

Typ: globalevents
Opis: Co godzine wy?wietla na ots ile jest aktualnie graczy online

Prosz? od szybk? odpowied?.
 

Magic

3+3=3!
Joined
Aug 4, 2008
Messages
1,338
Reaction score
180
Odp: Skrypty na zam?wienie.

Typ: globalevents
Opis: Co godzine wy?wietla na ots ile jest aktualnie graczy online
Prosz? od szybk? odpowied?.
globalevents.xml:
PHP:
<globalevent name="players" interval="3600" event="script" value="players.lua"/>
players.lua
PHP:
function onThink(interval, lastExecution, thinkInterval)
	doBroadcastMessage("Online player(s): ".. #getOnlinePlayers(), MESSAGE_STATUS_WARNING)
	return true
end

@Stasiorex
Jak ju? zaczn? robi?, to nie ma znaczenia ile to zajmie czasu - wybierz wersje, kt?ra Ci bardziej odpowiada i napisz na pw, nie spamuj w temacie, bo moderator b?dzie mia? wi?cej pracy.

@Osoby maj?ce mniej ni? 50 post?w.
Ch?opaki, pomagajcie innym, nabijcie 50 post?w a ch?tnie zrobi? Wasze skrypty :)
 
Last edited:

panczo 1995

Advanced User
Joined
Apr 5, 2009
Messages
383
Reaction score
13
Odp: Skrypty na zam?wienie.

Typ: Talkactions
Opis: Po nacisnieciu na przedmiot o xxx uid daje mi
-aol
-bless
cos takiego:

przy blesach zolty napis i zolte nutki.
 

Magic

3+3=3!
Joined
Aug 4, 2008
Messages
1,338
Reaction score
180
Odp: Skrypty na zam?wienie.

Typ: Talkactions
Opis: Po nacisnieciu na przedmiot o xxx uid daje mi
-aol
-bless
cos takiego:

przy blesach zolty napis i zolte nutki.
PHP:
<action uniqueid="2523" event="script" value="bless.lua"/>
bless.lua
PHP:
function onUse(cid, item, fromPosition, itemEx, toPosition)
	local aol = 2173
	doPlayerAddItem(cid, aol)
	for i=1, 5 do
		doPlayerAddBlessing(cid, i)
	end
	doSendMagicEffect(getPlayerPosition(cid), CONST_ME_SOUND_RED)
	return true
end
@DOWN
Teraz powinno p?j??.
 
Last edited:

RafalGra

Advanced User
Joined
Dec 3, 2009
Messages
184
Reaction score
6
Odp: Skrypty na zam?wienie.

TYP: Actions
OPIS: Gracz ma przedmiot o ID: 7253. Gdy u?yje go na sobie, dodaje mu 250 many a przedmiot zamienia na ID: 2006 (wtedy jak si? go u?yje nie dodaje graczowi MP). Po 5 sekundach ten przedmiot (2006) zamienia si? spowrotem w 7253. Ten przedmiot ma 250 ?adunk?w. 1 u?ycie = 1 ?adunek. Po 250 u?yciach znika on.
 

Geragonixus

Active User
Joined
Jul 17, 2010
Messages
123
Reaction score
1
Odp: Skrypty na zam?wienie.

Typ:Actions

Opis:Dodaje graczowi xxx many i hp uwaga !! nie ?aduje tylko dodaje czyli jak gracz ma 500 hp to jak u?yje runki b?dzie mia? 800 tego i tego pod 7.6
 

cell

Active User
Joined
May 12, 2008
Messages
80
Reaction score
1
Odp: Skrypty na zam?wienie.

Rodzaj skryptu : creaturescrips
Opis:
Chcia? bym ?eby wygl?da? tak.
[Id profesji na kt?rej dzia?a skrypt][ile many zabiera na jedn? sekund?. je?eli player nie posiada many to zamienia go w profesje o id 2 i zostaje zmieniony mu looktype na 120]
Przyk?adowo:
[1][spendMana ="20", nexvoc ="2", looktype = 120]
__________
Pozdrawiam
 

Magic

3+3=3!
Joined
Aug 4, 2008
Messages
1,338
Reaction score
180
Odp: Skrypty na zam?wienie.

Rodzaj skryptu : creaturescrips
Opis:
Chcia? bym ?eby wygl?da? tak.
[Id profesji na kt?rej dzia?a skrypt][ile many zabiera na jedn? sekund?. je?eli player nie posiada many to zamienia go w profesje o id 2 i zostaje zmieniony mu looktype na 120]
Przyk?adowo:
[1][spendMana ="20", nexvoc ="2", looktype = 120]
__________
Pozdrawiam
creaturescripts.xml
PHP:
<event type="think" name="PlayerMana" event="script" value="mana.lua"/>
login.lua:
dodaj
PHP:
registerCreatureEvent(cid, "PlayerMana")
po
PHP:
registerCreatureEvent(cid, "Mail")
mana.lua:
PHP:
function onThink(cid, interval)
	local profesions = {
		{vocid=1, mana=20, newvoc=2, looktype=144},
		{vocid=2, mana=20, newvoc=3, looktype=113}
	}
	for i=1, #profesions do
		if(getPlayerVocation(cid) == profesions[i].vocid) then
			if(getCreatureMana(cid) < profesions[i].mana) then
				local outfit = getCreatureOutfit(cid)
				outfit.lookType = profesions[i].looktype
				doCreatureChangeOutfit(cid, outfit)
				doCreatureAddMana(cid, getCreatureMaxMana(cid)) -- add if you wanna player have full mana after transformation
				doPlayerSetVocation(cid, profesions[i].newvoc)
			else
				doCreatureAddMana(cid, -profesions[i].mana)
			end
		end
	end
	return true
end
@Stasiorex
Wybacz za tragiczn? optymalizacje kodu, ale nie chcia?o mi si? robi? takiej ilo?ci skrypt?w, a chcia?em zrobi? to szybciej:
actions.xml:
PHP:
<action uniqueid="6231" event="script" value="nagrody.lua"/>
	<action uniqueid="9554" event="script" value="nagrody.lua"/>
	<action uniqueid="1277" event="script" value="nagrody.lua"/>
	<action uniqueid="2339" event="script" value="nagrody.lua"/>
	<action uniqueid="9923" event="script" value="nagrody.lua"/>
	<action uniqueid="6623" event="script" value="nagrody.lua"/>
	<action uniqueid="5555" event="script" value="quest.lua"/>
	<action uniqueid="2345" event="script" value="skrzynki.lua"/>
	<action uniqueid="1367" event="script" value="skrzynki.lua"/>
	<action uniqueid="1345" event="script" value="skrzynki.lua"/>
	<action uniqueid="7643" event="script" value="skrzynki.lua"/>
	<action uniqueid="2445" event="script" value="skrzynki.lua"/>
skrzynki.lua
PHP:
function onUse(cid, item, fromPosition, itemEx, toPosition)
local storages = {
2345,
1367,
1345,
7643,
2445
}
for i=1, #storages do
	if(item.uid == storages[i]) then
		if(getPlayerStorageValue(cid, storages[i]) ~= 1) then
			setPlayerStorageValue(cid, storages[i], 1)
		else
			doPlayerSendCancel(cid, "Otwierales juz te skrzynke!")
		end
	end
end
return true
end
quest.lua
PHP:
function onUse(cid, item, fromPosition, itemEx, toPosition)
local storages = {
{sid=2345, v=1},
{sid=1367, v=1},
{sid=1345, v=1},
{sid=7643, v=1},
{sid=2445, v=1},
{sid=5688, v=11},
{sid=1023, v=21},
{sid=6523, v=1},
{sid=1865, v=1}
}
local pos = {x=120, y=292, z=7} -- pozycja 
	for i=1, #storages do
		if(getPlayerStorageValue(cid, storages[i].sid) ~= storages[i].v) then
			doPlayerSendCancel(cid, "Nie otworzyles wszystkich drzwi!")
			return false
		end
	end
	if(getPlayerStorageValue(cid, 2099) ~= 1) then
		setPlayerStorageValue(cid, 2099, 0)
	end
	doTeleportThing(cid, pos)
	return true
end
nagrody.lua(tutaj zmieniasz itemy jakie s? za nagrode)
PHP:
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(getPlayerStorageValue(cid, 2099) == 1) then
		doPlayerSendCancel(cid, "Zabrales juz nagrode!")
		return true
	end
	local items = 
	{
	2312,
	1256,
	1235,
	1254,
	6578,
	3466
	}
	if(item.uid == 6623) then
		doPlayerAddItem(cid, items[1]) 
	elseif(item.uid == 9923) then
		doPlayerAddItem(cid, items[2]) 
	elseif(item.uid == 2339) then
		doPlayerAddItem(cid, items[3]) 
	elseif(item.uid == 1277) then
		doPlayerAddItem(cid, items[4]) 
	elseif(item.uid == 9554) then
		doPlayerAddItem(cid, items[5])
	elseif(item.uid == 6231) then
		doPlayerAddItem(cid, items[6])
	end
	setPlayerStorageValue(cid, 2099, 1)
	return true
end
NPC:
First.xml
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="First" script="first.lua" walkinterval="3000" floorchange="0">
	<health now="100" max="100"/>
	<look type="130" head="0" body="0" legs="0" feet="0" addons="3"/>
	<parameters>
		<parameter key="message_greet" value="Chcesz pomocy z drzwiami?"/>
	</parameters>
</npc>
Second.xml
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Second" script="second.lua" walkinterval="3000" floorchange="0">
	<health now="100" max="100"/>
	<look type="130" head="0" body="0" legs="0" feet="0" addons="3"/>
	<parameters>
		<parameter key="message_greet" value="Chcesz pomocy z drzwiami?"/>
	</parameters>
</npc>
Third.xml
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Third" script="third.lua" walkinterval="3000" floorchange="0">
	<health now="100" max="100"/>
	<look type="130" head="0" body="0" legs="0" feet="0" addons="3"/>
	<parameters>
		<parameter key="message_greet" value="Chcesz pomocy z drzwiami?"/>
	</parameters>
</npc>
Tasker.xml:
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Tasker" script="tasker.lua" walkinterval="3000" floorchange="0">
	<health now="100" max="100"/>
	<look type="131" head="0" body="0" legs="0" feet="0" addons="3"/>
	<parameters>
		<parameter key="message_greet" value="Cchcesz pomocy z drzwiami?"/>
	</parameters>
</npc>

Skrypty dla npc:
first.lua
PHP:
-- Copyright by Magic
-- magichereos@gmail.com
-- http://tibia.net.pl/members/magic.html
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid)            end
function onCreatureDisappear(cid)            npcHandler:onCreatureDisappear(cid)            end
function onCreatureSay(cid, type, msg)            npcHandler:onCreatureSay(cid, type, msg)        end
function onThink()                    npcHandler:onThink()                    end

function creatureSayCallback(cid, type, msg)
    
    if(not npcHandler:isFocused(cid)) then
        return false
    end
	local storageid = 6523
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    if(msgcontains(msg, 'drzwi')) then
        selfSay('Okej, wyslalem swojego syna, otworzy Ci drzwi.', cid)
		setPlayerStorageValue(cid, storageid, 1)
    end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
second.lua
PHP:
-- Copyright by Magic
-- magichereos@gmail.com
-- http://tibia.net.pl/members/magic.html
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid)            end
function onCreatureDisappear(cid)            npcHandler:onCreatureDisappear(cid)            end
function onCreatureSay(cid, type, msg)            npcHandler:onCreatureSay(cid, type, msg)        end
function onThink()                    npcHandler:onThink()                    end

function creatureSayCallback(cid, type, msg)
    
    if(not npcHandler:isFocused(cid)) then
        return false
    end
	local storageid = 4673
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    if(msgcontains(msg, 'drzwi')) then
        selfSay('Okej, wyslalem swojego syna, otworzy Ci drzwi.', cid)
		setPlayerStorageValue(cid, storageid, 1)
    end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
third.lua
PHP:
-- Copyright by Magic
-- magichereos@gmail.com
-- http://tibia.net.pl/members/magic.html
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid)            end
function onCreatureDisappear(cid)            npcHandler:onCreatureDisappear(cid)            end
function onCreatureSay(cid, type, msg)            npcHandler:onCreatureSay(cid, type, msg)        end
function onThink()                    npcHandler:onThink()                    end

function creatureSayCallback(cid, type, msg)
    
    if(not npcHandler:isFocused(cid)) then
        return false
    end
	local storageid = 1865
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    if(msgcontains(msg, 'drzwi')) then
        selfSay('Okej, wyslalem swojego syna, otworzy Ci drzwi.', cid)
		setPlayerStorageValue(cid, storageid, 1)
    end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
tasker.lua
PHP:
-- Copyright by Magic
-- magichereos@gmail.com
-- http://tibia.net.pl/members/magic.html
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid)            end
function onCreatureDisappear(cid)            npcHandler:onCreatureDisappear(cid)            end
function onCreatureSay(cid, type, msg)            npcHandler:onCreatureSay(cid, type, msg)        end
function onThink()                    npcHandler:onThink()                    end

function creatureSayCallback(cid, type, msg)
    
    if(not npcHandler:isFocused(cid)) then
        return false
    end
	local storage_demons = 5688
	local storage_yeti = 1023
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    if(msgcontains(msg, 'drzwi') and getPlayerStorageValue(cid, storage_demons) < 0) then
        selfSay('Hmm, upoluj 10 demonow i wroc do mnie, a pozwole Ci przejsc przez jedne z nich.', cid)
		setPlayerStorageValue(cid, storage_demons, 0)
    elseif(msgcontains(msg, 'drzwi') and getPlayerStorageValue(cid, storage_demons) == 10) then
		selfSay('Okej, otworzylem Ci jedne z drzwi. Ale to nie koniec, zeby przejsc przez ostatnie, musisz upolowac 20 yetich.', cid)
		setPlayerStorageValue(cid, storage_demons, 11)
		setPlayerStorageValue(cid, storage_yeti, 0)
	elseif(msgcontains(msg, 'drzwi') and getPlayerStorageValue(cid, storage_yeti) == 20) then
		setPlayerStorageValue(cid, storage_yeti, 21)
		selfSay('Otworzylem wszystkie drzwi, jakie moglem.', cid)
	end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
creaturescripts.xml:
PHP:
<event type="kill" name="Monsters" event="script" value="monsters.lua"/>
monsters.lua:
PHP:
function onKill(cid, target, lastHit)
	local monsters = 
	{
		{monster_count=10, monster= "Demon", storageid = 5688},
		{monster_count=20, monster= "Yeti", storageid = 1023}
	}
	for i=1, #monsters do
		if(getPlayerStorageValue(cid, monsters[i].storageid) >= 0) then
			if(getCreatureName(target) == monsters[i].monster) then
				if(getPlayerStorageValue(cid, monsters[i].storageid) < monsters[i].monster_count) then
					setPlayerStorageValue(cid, monsters[i].storageid, getPlayerStorageValue(cid, monsters[i].storageid)+1)
				end
			end
		end	
	end
	return true
end
login.lua:
po
PHP:
registerCreatureEvent(cid, "GuildMotd")
dodaj:
PHP:
registerCreatureEvent(cid, "Monsters")

@Geragonixus
Przykro mi, pod 7.6 nie robi? skrypt?w.
 
Last edited:
Status
Not open for further replies.
Top