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

Zapisywanie mapy z poziomu skryptu

harry127

Member
Joined
Jul 19, 2009
Messages
435
Reaction score
5
Location
Poland
Mam skrypt pozwalający graczom budować domki z użyciem desek. Czy po zbudowaniu mogę te zbudowane domki jakoś dopisać do mapy, żeby po restarcie serwera ciągle tam były?
 
Dlaczego C++ :)?
Wystarczy samo LUA, skrypt w LUA + tabela w bazie danych + Loader w LUA przy starcie OTS'a.

Ja za Ciebie nie napiszę, wybacz ;>.

Rep+?
 
Code:
darqnies.rep++;

To trochę bez sensu, tak tworzyć przy starcie te wszystkie domki...
Oczywiście będzie działać i już się za to biorę, ale czy nie ma innego sposobu?
 
Jak dla mnie ten jest najproszy do wykonania :).

Zrób sobie komende /is - kopia /i, która przy storzeniu obiektu wykonuje query do bazy danych - dodaje wpis do tabeli (np.) "dodatkowe_obiekty". Zapisujesz w tym wpisie (porób sobie kolumny najlepiej) pozycje X,Y,Z,ID obiektu.

To będzie skrypt do talkactions, możesz jeszcze pokombinować z usuwaniem obiektów, ale tu zostawiam Cię sam =).
po prostu wykonanie query - ja to widze tak: DELETE FROM `dodatkowe_obiekty` WHERE `x` = 'twoja pozycja x' AND `y` = 'twoja poz...' AND `z` = '...' - No i usuniecie obiektu spod ciebie, tylko query usunie WSZYSTKIE obiekty spod ciebie, no to jest problem =p

Następny skrypt dajesz do globalevents, skrypt ma się wykonać przy starcie serwera - nie pamietam jak to miałoby wyglądać dokładnie.
Pobierasz wszystkie rekordy z tabeli "dodatkowe_obiekty" i tworzysz obiekty o id i pozycjach odczytanych z bazy danych...

Prościej się nie da =).

@elf
Dzia!
 
Masz tu taki kodzik na szybko napisany:
Code:
function onStartup()
	print("Loading custom houses, please wait...")

	local result = db.getResult("SELECT FROM `custom_tiles`;")
	repeat
		doCreateItem(result:getDataInt("itemid"), result:getDataInt("count"), {x = result:getDataInt("posx"), y = result:getDataInt("posy"), z = result:getDataInt("posz")})
	until not result:next()
	result:free()

	print("Custom houses loaded.")
	return true
end

A tu struktura:
Code:
CREATE TABLE `custom_tiles` (
`id` INT( 16 ) NOT NULL AUTO_INCREMENT ,
`itemid` INT( 8 ) NOT NULL ,
`count` INT( 4 ) NOT NULL ,
`posx` INT( 8 ) NOT NULL ,
`posy` INT( 8 ) NOT NULL ,
`posz` INT( 8 ) NOT NULL ,
PRIMARY KEY ( `id` ) ,
UNIQUE ( `id` ) ;

Nie wiem po co pole ID, moze jakos sobie sortowac bedziesz od najnowszych do najstarszych czy cos xd
 
id - indeks każdego pola, identyfikator

Jakbyś chciał później usunąć jakiś item to możesz właśnie po ID :) (usunąć z bazy danych =p np. jak sobie ogarniesz jakis smieszny panel www :D moze nawet mapeditor =p).

@edit
W sumie nie glupi pomysł xPP MapEditor viaWWW :), no...

Troche ajaxa, javascript, zapał i do roboty :D
 
Last edited:
id - indeks każdego pola, identyfikator

Jakbyś chciał później usunąć jakiś item to możesz właśnie po ID :) (usunąć z bazy danych =p np. jak sobie ogarniesz jakis smieszny panel www :D moze nawet mapeditor =p).

@edit
W sumie nie glupi pomysł xPP MapEditor viaWWW :), no...

Troche ajaxa, javascript, zapał i do roboty :D

gdzie znajdę taki zapał? xD
 
Masz tu taki kodzik na szybko napisany:
Code:
function onStartup()
	print("Loading custom houses, please wait...")

	local result = db.getResult("SELECT FROM `custom_tiles`;")
	repeat
		doCreateItem(result:getDataInt("itemid"), result:getDataInt("count"), {x = result:getDataInt("posx"), y = result:getDataInt("posy"), z = result:getDataInt("posz")})
	until not result:next()
	result:free()

	print("Custom houses loaded.")
	return true
end

A tu struktura:
Code:
CREATE TABLE `custom_tiles` (
`id` INT( 16 ) NOT NULL AUTO_INCREMENT ,
`itemid` INT( 8 ) NOT NULL ,
`count` INT( 4 ) NOT NULL ,
`posx` INT( 8 ) NOT NULL ,
`posy` INT( 8 ) NOT NULL ,
`posz` INT( 8 ) NOT NULL ,
PRIMARY KEY ( `id` ) ,
UNIQUE ( `id` ) ;

Nie wiem po co pole ID, moze jakos sobie sortowac bedziesz od najnowszych do najstarszych czy cos xd

Już się za to wziąłem, aczkolwiek dzięki, że ci się chciało coś naskrobać (na Polish Board nieczęsto się to zdarza...). Rep++.
 
Tak na szybko przed wyjsciem napisalem.

@darnies:
Mozna usuwac po pozycjach. :p
 
Tak na szybko przed wyjsciem napisalem.

@darnies:
Mozna usuwac po pozycjach. :p

A co jesli na pozycji 100,100,7 jest obiekt 2160 w ilosci 100, i na tym znow obiekt 2160 w ilosci 100, wtedy bedzie duplikat, wiec identyfikator powinien byc. :)
 
To niech skrypt boba budowniczego ogranicza 1 obiekt na kratke.
 
Back
Top