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+?
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
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` ) ;
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
moze nawet mapeditor =p).
@edit
W sumie nie glupi pomysł xPP MapEditor viaWWW, no...
Troche ajaxa, javascript, zapał i do roboty![]()
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
Tak na szybko przed wyjsciem napisalem.
@darnies:
Mozna usuwac po pozycjach.![]()