Wydobywanie, np. kryszta??w

Status
Zamknięty.

Szkal96

Advanced User
Zarejestrowany
Dołączył
Lipiec 17, 2009
Posty
187
Liczba reakcji
9
Witam. Ze wzgl?du na to, ?e dawno si? nie udziela?em na forum, nie znalaz?em innego takiego tematu oraz nie chce wypa?? z wprawy napisa?em skrypt na wydobywanie czegokolwiek czymkolwiek. U mnie w skrypcie jest ustawione na wydobywanie kryszta??w, ale opisze co zrobi?, aby wydobywa?, np. kamienie.

A wi?c do roboty. Po pierwsze nale?y utworzy? nowy plik mine.lua w folderze data/actions/scripts/. Wpisujemy do niego tak? oto tre??:
Kod:
---------Szakal996 (Szkal96)
function onUse(cid, item, fromPosition, itemEx, toPosition)
 if(itemEx.itemid == [COLOR="Sienna"]8634[/COLOR]) then
    if getPlayerLevel(cid) >= [COLOR="DarkOliveGreen"]40[/COLOR] then
        doPlayerAddItem(cid, [COLOR="DarkSlateBlue"]2177[/COLOR], [COLOR="Yellow"]1[/COLOR])
	doCreatureAddHealth(cid,-math.random([COLOR="Indigo"]0,15[/COLOR]))
	doPlayerAddExp(cid,[COLOR="DarkOrange"]100[/COLOR])
    else
        doPlayerSendTextMessage(cid, 22, "You don't have level.")
    end
 end
return true
end

8634 - ID przedmiotu, na kt?rym mamy co? u?y?.
40 - Poziom (level), od kt?rego mo?na wydobywa?.
2177 - ID przedmiotu, kt?ry dostaniemy z wydobycia.
1 - Ilo?? przedmiot?w, kt?re dostaniemy.
0,15 - Od ile (0) do ilu (15) ?ycia ma nam zabra? wydobywanie (mo?na usun?? ca?? linijk?).
100 - Ile do?wiadczenia (exp) mamy dosta? za wydobycie (mo?na usun?? ca?? linijk?).

Wracamy do folderu data/actions/. Znajdziemy tam plik actions.xml. Nale?y dopisa? do niego mi?dzy tagami <actions> (na samej g?rze) a </actions> tak? oto linijk?:
Kod:
	<action itemid="[COLOR="MediumTurquoise"]2553[/COLOR]" script="mine.lua"/>
2553 - ID przedmiotu, kt?rego u?ywamy (w tym przypadku jest to kilof). Jednak je?li dodamy t? linijk? ten lub zwyk?y skrypt na kopanie kilofem przestanie dzia?a? (w zale?no?ci od tego, kt?ry b?dzie wy?ej).

Zapraszam do komentowania!

Pozdrawiam,
Szkal96.

@all down
wow... du?o odpowiedzi oO
Zapewne wszyscy, kt?rzy poprawili skrypt (w tym ci, kt?rzy dopisali tylko "else" (poprawi?em, bo po prostu zapomnia?em)) zrobili s?usznie. Dzi?kuje za komentarze, reput itp.
 
Odp: Wydobywanie, np. kryszta??w

Ca?kiem ciekawe..
Mo?na to np. da? do questa.
Aby przej?? dalej trzeba wykopa? dany item itp.
Jak dla mnie bomba !!!!!!!!!!!! :)
 
Odp: Wydobywanie, np. kryszta??w

My?l?, ?e lepszym wyj?ciem zamiast:
Kod:
doCreatureAddHealth(cid,-math.random(0,15)

b?dzie co? w ten dese?:
Kod:
doTargetCombatHealth(0, cid, COMBAT_PHYSICALDAMAGE, -1, -15, CONST_ME_NONE)
 
Odp: Wydobywanie, np. kryszta??w

Pozwoli?em sobie troch? przerobi? ten skrypt:
--- System kopania by. Szkal96
--- Edited by Crypton

random_items = {
{1,2492,1}, -- 0.1% do DSM
{1,2160,8}, -- 0.1% do 8cc
{3,2446,10}, -- 0.3% do pharaoh sword
{30,2146,12}, -- 3% do 12 small sapphires
{20,2152,6}, -- 2% do 6 platinum coins
{20,2056,1}, -- 2% do wypalonej pochodni
{40,2152,3}, -- 4% do 3 platinum coins
{80,7909,4}, -- 8% do orzeszkow
{80,2146,4}, -- 8% do 4 small sapphires
{80,7759,2}, -- 8% do enchanted small sapphire
{80,2643,1}, -- 8% do butow xD
{80,2152,1}, -- 8% do platinum coin
{100,2391,1}, -- 10% do war hammera
{150,2512,1}, -- 15% do tarczy
{150,2229,1}, -- 15% do smieci
{150,2228,1}, -- 15% do smieci
{150,2230,1}, -- 15% do smieci
{150,2233,1}, -- 15% do smieci
{400,2148,60}, -- 20% do 60 gold coins
{400,2146,2}, -- 30% do 2 small sapphires
{400,2148,40}, -- 40% do 40 gold coins
{1000,2148,20} -- 100% do 20 gold coins
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
if(itemEx.itemid == 8633) then

if getPlayerLevel(cid) >= 5 then
local item = {}
local reward = 0
local count = ""
for i = 1, #random_items do
item = random_items
if (math.random(0,999) < item[1]) then
reward = item[2]
subType = item[3]
if subType > 1 then
count = subType .. " "
end
break
end
end
doPlayerAddItem(cid, reward, subType)

doSendMagicEffect(fromPosition,34)
doPlayerSendTextMessage(cid, 22, "*kop* *kop*")
doCreatureAddHealth(cid,-math.random(0,15))
doPlayerAddExp(cid,100)
end
end
return true
end

Doda?em kopanie losowych item?w, powinno dzia?a?.

Co do twojego skryptu, bardzo dobry ;]
 
Ostatnia edycja:
Odp: Wydobywanie, np. kryszta??w

Zrobilem wszystko jak pisze i przy wlanczaniu OTS mi sie wylancza ??
 
Odp: Wydobywanie, np. kryszta??w

To jest pod 8.50. Je?li u?ywasz starszej wersji, to normalne, ?e nie dzia?a ;)
W sumie bym sprawdzi? skrypcik, ale mam OTSa pod 8.1 :p
Brzmi interesuj?co, napisa?e? przejrzy?cie, a to ceni?. Jak dla mnie 9/10 :D

Pozdrawiam
 
Odp: Wydobywanie, np. kryszta??w

Witam, Pozwoli?em sobie poprawi? skrypt.

PHP:
---------Szakal996 (Szkal96)
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(itemEx.itemid == 8634) then
		if getPlayerLevel(cid) >= 40 then
			doPlayerAddItem(cid, 2177, 1)
			doCreatureAddHealth(cid, -math.random(0, 15))
			doPlayerAddExp(cid, 100)
		else
			doPlayerSendTextMessage(cid, 22, "You don't have level.")
		end
	end
	return true
end

Pozdrawiam.
 
Odp: Wydobywanie, np. kryszta??w

fajne fajne a da?oby rade zrobi? tak ?e wydoby? mo?na tylko raz?
 
Odp: Wydobywanie, np. kryszta??w

Bardzo ?adny skrypt. Taki uniwersalny :D Wszystko wszystkim, pomys? mi si? bardzo podoba. Na questa ?e musi zdoby? kilka itemk?w z lawy lub co? takiego i gitez :D:D 9/10
 
Odp: Wydobywanie, np. kryszta??w

Takich prostych i przejrzystych skrypt?w nam trzeba. Dzi?k?wa ziom. Dosta?e? zas?usu?ony reput.
 
Odp: Wydobywanie, np. kryszta??w

a nie lepiej
function onUse(cid, item, fromPosition, itemEx, toPosition)
if getPlayerLevel(cid) >= 40)==TRUE then
return doPlayerAddItem(cid, 2177, 1) and doCreatureAddHealth(cid,-math.random(0,15)) and doPlayerAddExp(cid,100)
else
doPlayerSendTextMessage(cid, 22, "You don't have level.")
end
end



Taires, popraw mnie je?eli b??dze. Dopiero teraz zaczynam uczy? si? optymalizacji skrypt?w. Wi?kszo?? skrypt?w kt?re pisze maj? po 150 -200 linijek!! (z czego 10 jest naprawde przydatna, reszta to localne :d)
 
Odp: Wydobywanie, np. kryszta??w

Tak jest chyba troch? lepiej:
Kod:
local minerales = 
{
[8634] = {level = 40, item = 2177, count = 1, healthMin = 0, healthMax = 15, experience = 100, quest = true, storage = 5670},
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
local minerale = minerales[itemEx.itemid]
	if(minerale == nil) then
		return false
	end
	if(minerale.quest == true) then
		if(getPlayerStorageValue(cid, minerale.storage) < 1) then
			return false
		end
	end
	if(getPlayerLevel(cid) >= minerale.level) then
		return false
	end
	doPlayerAddItem(cid, minerale.item, minerale.count)
	doCreatureAddHealth(cid,-math.random(minerale.healthMin,minerale.healthMax))
	doPlayerAddExp(cid,100)
return true
end

Aby doda? nowy kryszta? w minerales pod
Kod:
[8634] = {level = 40, item = 2177, count = 1, healthMin = 0, healthMax = 15, experience = 100, quest = true, storage = 5670},

Dodajemy w ten spos?b:
Kod:
[item_skaly] = {level = wymagany_level, item = dodany_item, count = ilosc, healthMin = minimalna_ilosc_zabranego_hp, healthMax = max_ilosc_zabranego_hp, experience = dodane_doswiadczenie, quest = warto?ci true/false czy potrzebuje sie questa, storage = jezeli_potrzeba_questa_jaka_wartosc_storage},
 
Status
Zamknięty.
Back
Do góry