• logo_cipsoft
    Nowe serwery zostały otwarte 19 Lut 2025:
    Noctalia (Open PvP) Ignitera (Open PvP) us_logo Xybra (Open PvP)

8.54 Vip system na konto i dni.

Status
Zamknięty.

Sassin

Forum friend
Dołączył
Czerwiec 13, 2009
Posty
1281
Liczba reakcji
105
Ze wzgl?du na to, i? wiele user?w pyta czy mo?na przerobi? vip system, ?eby by? na ca?e konto, a nie tylko na jedn? posta?, postanowi?em nareszcie odpowiedzie? "tak!", ot?? znalaz?em na to spos?b, przejd? mo?e od razu do rzeczy...

Do bazy danych:
PHP:
	CREATE TABLE IF NOT EXISTS `accounts_storage` (
  `id` int(11) NOT NULL DEFAULT '0',
  `key` int(10) NOT NULL DEFAULT '0',
  `value` varchar(255) NOT NULL DEFAULT '0',

  UNIQUE KEY `id_key` (`id`,`key`),
  KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

data/lib/050-function.lua\function.lua (na samym ko?cu):
PHP:
function setAcccountStorageValue(cid, key, value)
 
	local result = db.getResult("SELECT `key` FROM `accounts_storage` WHERE (`id` = '" .. getPlayerAccountId(cid) .. "' and `key` = '" .. key .. "');")
	if result:getDataInt("key") == nil then
		return db.executeQuery("INSERT INTO `accounts_storage` (`id`, `key`, `value`) VALUES (" .. getPlayerAccountId(cid) .. ", " .. key .. ", " .. value .. ")")
	else
		return db.executeQuery("UPDATE `accounts_storage` SET `value` = " .. value .. " WHERE (`id` = '" .. getPlayerAccountId(cid) .. "' and `key` = '" .. key .. "');")
	end
end
 
function getAccountStorageValue(cid, key)
	local value = db.getResult("SELECT `value` FROM `accounts_storage` WHERE (`id` = '" .. getAccountAccountId(cid) .. "' and `key` = '" .. key .. "');")
	return value:getDataInt("value")
end

actions.xml:
PHP:
		<!-- Vip System by Sassin -->
	<action actionid="12694" event="script" value="vip/drzwi.lua" />
	<action itemid="XXXX" event="script" value="vip/vip.lua"/> -- XXXX id itemu dajacego vip
	--<action itemid="ZZZZ" event="script" value="vip/vip2.lua"/> -- ZZZZ id drugiego itemu dajacego vip

data/actions/scripts/vip/drzwi.lua:
PHP:
	-- Vip system by Sassin
local config = {
	storage = 246282 -- nie ruszac
	wejscie = "Witaj vip graczu!" -- tekst, ktory pojawi sie nad graczem po przesciu przez drzwi vip
	brakvip = "Nie masz vip'a, nie mozesz przesc przez te drzwi." -- tekst, ktory wyswietli sie gracza, ktorzy probuja przesc, a nie maja vipa

}

	function onUse(cid, item, fromPosition, itemEx, toPosition)
	local gracz = getCreaturePosition(cid) -- nie ruszac

			if (item.actionid == 12694 and getAccountStorageValue(cid, config.storage) >= 1) then
				if gracz.x < toPosition.x then
					doTeleportThing(cid, {x=toPosition.x+1,y=toPosition.y,z=toPosition.z}, TRUE)
					doCreatureSay(cid, ""..config.wejscie.."", TALKTYPE_ORANGE_1)
				else
					doTeleportThing(cid, {x=toPosition.x-1,y=toPosition.y,z=toPosition.z}, TRUE)
					doCreatureSay(cid, ""..config.wejscie.."", TALKTYPE_ORANGE_1)
				end
					return TRUE
				else
					doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ""..config.brakvip.."")
				return TRUE
			end
	return FALSE
	end

data/actions/scripts/vip/vip.lua
PHP:
-- Vip system by Sassin
local config = {
	lvl = 10 -- lvl od jakiego mozna uzyc vip itemu
	storage = 246282 -- nie ruszac
	dni = 10 -- ile item zadekralorwany w actions.xml ze sciezka do tego pliku ma dawac dni vipa
	braklvl = "Level wymagany to "..config.lvl..", wbij i sprobuj ponownie." -- co ma pisac gdy nie ma lvl
	tekstgracz = "Gratulacje! Otrzymales vipa na "..config.dni.." dni! Mozesz isc do miast vip!." -- co ma pisac graczowi uzywajacemu vipa
}

	function onUse(cid, item, fromPosition, itemEx, toPosition)
	local gracz = getPlayerPosition(cid) -- nie ruszac

		if(getPlayerLevel(cid) >= config.lvl) then
			getAccountStorageValue(cid, config.storage)
			doCreatureSay(cid, ""..config.tekstgracz.."", TALKTYPE_ORANGE_1)
			setAccountStorageValue(cid, config.storage, (getAccountStorageValue(cid, config.storage) + config.dni))
			doRemoveItem(item.uid, 1)
		else
			doPlayerSendCancel(cid, ""..config.braklvl.."")
		end
return TRUE
end

globalevents.xml:
PHP:
	    <!-- Vip System by Sassin -->
    <globalevent name="checkvip" interval="86400000" event="script" value="vip/dni.lua"/>
    <globalevent name="removevip" interval="36000000" event="script" value="vip/vip.lua"/>

data/globalevents/scripts/vip/dni.lua
PHP:
	-- Vip system by Sassin
local config = {
	storage = 246282 -- nie ruszac
}

	function onThink(cid, item, fromPosition, toPosition)
	for _, name in ipairs(getOnlinePlayers()) do
	local gracz = getPlayerByName(name)
	
			if getAccountStorageValue(gracz, config.storage) > 1 then
				setAccountStorageValue(gracz, config.storage, getAccountStorageValue(gracz) - 1)
			end
		end
	end

data/globalevents/scripts/vip/vip.lua
PHP:
	-- Vip system by Sassin
local config = {
	storage = 246282 -- nie ruszac
}

	function onThink(cid, item, fromPosition, toPosition)
	for _, name in ipairs(getOnlinePlayers()) do
	local gracz = getPlayerByName(name)

			if getAccountStorageValue(gracz, config.storage) == 1 then
				setAccountStorageValue(gracz, config.storage, 0)
			end
		end
	end

Prosz? o wyrozumia?o??, skrypt by? pisany 30 minut przed opublikowaniem, jestem wystarczaj?co pijany, ?eby mie? prawo na liter?wk?, o wszystkich b??dach informowa?. : )

Ch?? opublikowania na innych forach ma by? skonsultowana ze mn?!

Pozdrawiam,
Sassin

Notka moderatorska:
Jestem pod wra?eniem Twoich osi?gni?? przez ten czas co Ci? nie by?o. Oczywi?cie skrypt dobry. Przenosz?.
 
Odp: 8.54 Vip system na konto i dni.

#Off
Dzi?ki Oskar, ale tu masz racje, sam jestem pod wra?eniem. ; )

Od?wie?am i prosz? o jakie? komentarze.
 
Odp: 8.54 Vip system na konto i dni.

Sassin od kiedy si? u?ywa w globalevents funkcji onUse ;), a wydaje mi si? ze funkcje nie pisa?e? tylko skopiowa?e? z otlandu. Zaliczy?e? face pall z tym globalevents. Wracaj?c do tematu to przydatne to si? zaczyna robi?.
 
Odp: 8.54 Vip system na konto i dni.

Dzi?ki Xart, jak ju? m?wi?em by?em pijany i po prostu si? zagalopowa?em. =D

Poprawione.

Prosz? o dalsze komentarze.

Pozdrawiam,
Sassin

Notka moderatorska:
W sumie skrypt opiera si? na actions, wi?c tam przenosz?.
 
Ostatnio edytowane przez moderatora:
Odp: 8.54 Vip system na konto i dni.

Komentujcie!!!!!!!!!!1111!!!11 Refresz!

(od?wie?am)
 
Odp: 8.54 Vip system na konto i dni.

nie wiem czy vip to jest dobre,
na tibia 8.4 to byla furora,
teraz gracze nie lubi? tego systemu poniewa? vipa trzeba kupic,
a pomysl... jak jakis h lvl expi tam a polowa guildi nie ma vipa do po niego nie wpadn?, wiec lipa,
ogolnie skrypt fajny ; ]],
napracowales sie ale mowie, nikt go raczej nie bedzie uzywal. ; /
 
Odp: 8.54 Vip system na konto i dni.

#up
Mo?e i masz racje, ale wci?? jest mn?stwo ots'?w, kt?re korzystaj? z Vip systemu i ca?kiem dobrze funkcjonuj?, wi?c wci?? wydaje mi si?, ?e pomys? nie jest najgorszy (system nie jest przewidziany na ots'y RPG). ; )

Prosz? o dalsze komentarze.

#down
A ma?o jest dzieci, kt?re tak robi??
 
Ostatnia edycja:
Odp: 8.54 Vip system na konto i dni.

175 odwiedzin i tylko 3 komentarze? Od?wie?am!
 
Odp: 8.54 Vip system na konto i dni.

Dzi?kuje za umieszczenie tego skrypta, bardzo przyda mi si? na moim Otku, aczkolwiek mam pytanie, o co chodzi z tym do "Bazy Danych" gdzie mam to konkretnie wkleic itd.
Oczekuj? szybkiej odpowiedzi - z g?ry wielkie dzi?ki.

I odno?nie tej linijki skryptu:

tekstgracz = "Gratulacje! Otrzymales vipa na "..config.dni.." dni! Mozesz isc do miast vip!." -- co ma pisac graczowi uzywajacemu vipa

?eby wy?wietla?o ten napis, ?e na 30 dni to mam zmieni? "..config.dni.." na "30 dni"? Czy ma by? "..config.30" Mam nadziej?, ?e wiesz o co mi chodzi;)

Pozdrawiam.
 
Ostatnia edycja:
Odp: 8.54 Vip system na konto i dni.

#up
Co do
PHP:
"..config.dni.."
to, to samo sprawdza ilo?? dni z:
PHP:
dni = 10
kt?re r?wnie? znajduje si? w configu, wi?c tego nie ruszaj je?eli chcesz, ?eby samo sprawdza?o ilo?? dni.
A bardziej rzeczowo:
s?owo config odnosi si? do samego configu (gdzie)
a po
s?owo dni odnosi si? do pozycji dni w configu, kt?re umie?ci?em wy?ej w PHP CODE.

Tutaj wspomn?, ?e nie jestem najlepszym materia?em na nauczyciela, wi?c jak nic nie zrozumiesz to raczej moja wina. ; )

A co do Bazy Danych to wejd?:
CLICK
i po zalogowaniu kliknij zak?adk?
PHP:
SQL
tam to wklej.
 
Ostatnia edycja:
Odp: 8.54 Vip system na konto i dni.

Lajcik, wszystko rozumiem, juz sie do tego zabieram.
Wielkie dzieki, pozdrawiam ;)
 
Ostatnia edycja:
Odp: 8.54 Vip system na konto i dni.

Moim zdaniem ?le skonfigurowa?e? config, je?eli jeste? pewny, ?e nie to jutro postaram si? to ogarn??. Mo?liwe, ?e pope?ni?em jaki? b??d. : )
 
Ostatnia edycja:
Odp: 8.54 Vip system na konto i dni.

Calkiem mozliwe, ze jest cos na rzeczy, mozesz zobaczyc. Bo robiac wszystko tak jak napisales nie zadzialalo, dopiero gdy przerobilem troche Twoj skrypt i kopiujac pare rzeczy z innego skrypyta, ktory znalazlem na innym forum i smiga jak talala:P
 
Odp: 8.54 Vip system na konto i dni.

Witam!
Co do tego ?e Vip ma?o kto lubi, to si? mylicie je?eli jest to Vip z potworami takimi samymi jak dla normalnego gracza, nie ma tam rzeczy nie wyobra?alnych tylko po prostu drugie respy, gdy s? zaj?te expowiska na zwyk?ej mapie, wtedy idziemy na Vip i w tym momencie mamy wyb?r, albo kupi? Vip albo zosta? na pierwszej wyspie. Vip, kt?re na Serwerach RPG sk?ada si? z teleport?w, jest bardzo wkurzaj?ce i wtedy ka?dy to kupuje lub po prostu nie gra.
&TOPIC
No tak, skrypt naprawd? ?wietny cieszy mnie to ?e idziesz ca?y czas to przodu, nie widzia?em takiego skryptu nigdzie a my?la?em kiedy? o takim, no c?? mog? ci tylko Pogratulowa? pozdrawiam!
 
Odp: 8.54 Vip system na konto i dni.

Dziwne to troche. VIP powinien byc na postac a nie na konto.ale pozatym skrypt 9/10.
 
Odp: 8.54 Vip system na konto i dni.

[evil]skrypt lepszy od orgina?u, dzi?ki, da?em go koledze, a on mi 5z? wi?c dla ciebie reput xD
no i oceniam go na [evil]9/10[/evil] bo ju? go si? tak nei stosuje xddd [/evil]
 
Odp: 8.54 Vip system na konto i dni.

Skrypt bardzo dobry, sam takiego szuka?em do?? d?ugo, w ko?cu si? wkurzy?em i napisa?em w?asny... A teraz c?? widz?? :D Nie widzia?em nigdzie takiego, wi?c gratuluj? :d
Moja ocena: 9/10 :D (poniewa? jak ots nie stoi na dedyku to nie b?dzie odejmowa?o dni ;))
 
Odp: 8.54 Vip system na konto i dni.

Skrypt bardzo dobry, sam takiego szuka?em do?? d?ugo, w ko?cu si? wkurzy?em i napisa?em w?asny... A teraz c?? widz?? :D Nie widzia?em nigdzie takiego, wi?c gratuluj? :d
Moja ocena: 9/10 :D (poniewa? jak ots nie stoi na dedyku to nie b?dzie odejmowa?o dni ;))

My?l?, ?e masz racj?, ale nie jest to uzale?nione tego czy ma si? dedyka, a od tego czy wie si? jak samemu go hostowa?. ; )

Od?wie?am.
 
Odp: 8.54 Vip system na konto i dni.

W skrypcie vip.lua niepotrzebna deklaracja zmiennej gracz. Nigdzie p??niej jej nie u?ywasz. W globalevents nie zwracasz ?adnych warto?ci. Nie sprawdzasz flagi b??du w po??czeniu z SQL, pobieraj?c warto??. W linijce 20 w skrypcie drzwi.lua niepotrzebne
Kod:
return TRUE
Do tego zamiast zadeklarowa? zmienn? raz i zmienia? jej warto?? w p?tlach(globalevents), Ty za ka?dym razem deklarujesz now? zmienn?.Marnotrawstwo. Do tego t? cz??? kodu mo?na zmieni?, ?atwymi operacjami na tablicach:
Kod:
if gracz.x < toPosition.x then
                    doTeleportThing(cid, {x=toPosition.x+1,y=toPosition.y,z=toPosition.z}, TRUE)
                    doCreatureSay(cid, ""..config.wejscie.."", TALKTYPE_ORANGE_1)
                else
                    doTeleportThing(cid, {x=toPosition.x-1,y=toPosition.y,z=toPosition.z}, TRUE)
                    doCreatureSay(cid, ""..config.wejscie.."", TALKTYPE_ORANGE_1)
                end

Wed?ug mnie skrypt napisany, ?eby nie powiedzie? chujowo, to lipnie.
 
Status
Zamknięty.
Do góry