hello gayz
rica minnet üzerine çoook uzun zaman sonra bir script yazmam gerekti. map'te custom regionları oyun içinde birilerine ayarlatmak isteyen varsa bu kodu kullanabilir. sql bağlantısı gerekiyor, veritabanının create kodunu da ekledim. biz bunlara eskiden region diyoduk sonra area mı olmuş baya bi kavram kargaşası yaşıyorum ama neyse.
bunu da tarihe not düşmek için buraya koyuyorum, sonra yabancı pack'lerdeki minnak kodlara aa bunu ben yazmıştım diyince bu zaten vardı hööö diyorlar. dedirtmem.

şu kırmızıyla işaretlediğim yerden add new region diyip

bu menü açılmışken region'ın alt ve üst noktalarına gidip gerekli butonlara tıklıyoruz. orta nokta ve ismi de değiştirip butonlarına tıklıyoruz. hepsi bitince new region'a basınca db'ye ekleniyor. ilk ss'te gördüğünüz listeden önceden oluşturulmuş regionlara girip düzenleme yapabiliyorsunuz.
EĞER account ismi kell ise (burayı değiştirirsiniz kod'dan) ekranda ekstra butonlar açılıyor kırmızıyla işaretledim.

koordinatların yanındaki mavi pıttıklara tıklayınca o koordinata uçuyor, kontrol etmek için.
sağdaki butona tıklayınca da script'in def kısmında belirlediğiniz map scriptinin en altına oluşturduğunuz area'nın kodunu yazıyor.
ben ihtiyaç olmadığı için eklemedim ama buraya region flaglar check olarak eklenirse şükela olur. bu haliyle region flagları benim önceden belirlediğim haliyle yazıyor.
bide liste kısmında sayfa ileri geri götürmede sorun var, scriptle iş bitince bir daha kullanılmayacağı için kasmadım oraya. mükemmelliyetçi biriyseniz onu da çözüverin.
sevgilerce
// CREATE TABLE `area_config` (
// `ID` INT(11) NOT NULL AUTO_INCREMENT,
// `Area_UST` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
// `Area_ALT` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
// `Area_Name` TEXT NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
// `Area_Go_P` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
// `Created` TIMESTAMP NULL DEFAULT NULL,
// PRIMARY KEY (`ID`) USING BTREE,
// INDEX `İndeks 2` (`Created`) USING BTREE
// )
// COLLATE='utf8mb4_general_ci'
// ENGINE=InnoDB
// AUTO_INCREMENT=37
// ;
// flags and region events choices are missing at both dialog and code.
// known bug: pagination is shitty, need recode.
[defname custom_region]
Area_Script_Path "C:\Sphere\scripts\maps\map0\map0_custom.scp"
[function customareaset]
db.close
db.connect
if <db.connected>
CLEARCTAGS area_ustnokta
CLEARCTAGS area_altnokta
CLEARCTAGS Area_Name
CLEARCTAGS area_go_p
CLEARCTAGS area_index
ctag0.dialog_index 1
sdialog d_areaconfig 1
else
sysmessage @55,1 CANNOT CONNET TO MYSQL DB.
endif
db.close
[dialog d_areaconfig]
0,0
page 1
RESIZEPIC 25 20 9270 394 372
dhtmlgump 65 50 220 20 0 0 <def.center><def.h4><def.bfont_size5><def.bfont_white>REGION CONFIG
db.close
db.connect
db.query SELECT * FROM area_config ORDER BY Created DESC LIMIT <eval <ctag0.dialog_index>-1>, <eval <ctag0.dialog_index>+6>;
local.x 80
for 0 <eval <db.row.numrows>-1>
button 70 <dlocal.x> 2511 2510 1 0 <eval <db.row.<dlocal._for>.ID>+100>
//dtext 100 <dlocal.x> 65 ID: <db.row.<dlocal._for>.ID> NAME: <db.row.<dlocal._for>.Area_Name>
dtext 100 <dlocal.x> 65 <db.row.<dlocal._for>.Area_Name>
local.x +=20
endfor
button 100 250 4014 4015 1 0 8 //back
//if (<eval <db.row.numrows>> >= <eval <ctag0.dialog_index>+6>)
//if (<eval <db.row.numrows>+1> > <eval <ctag0.dialog_index>+6>)
button 150 250 4005 4006 1 0 9 //next
//endif
db.close
RESIZEPIC 415 20 9270 200 150
button 430 40 55 56 1 0 1
dtext 450 40 65 Add New Region
button 100 300 2511 2510 1 0 0
dtext 130 300 15 EXIT
page 2
NOCLOSE
RESIZEPIC 25 20 9270 394 372
dhtmlgump 65 50 220 20 0 0 <def.center><def.h4><def.bfont_size5><def.bfont_white>Custom Regions
button 100 80 2511 2510 1 0 2
dtext 130 80 65 TOP POINT
if (strmatch("<ctag0.area_ustnokta>","0"))
dtext 250 80 25 NaN
else
dtext 250 80 25 <ctag0.area_ustnokta>
endif
button 100 110 2511 2510 1 0 3
dtext 130 110 65 BOTTOM POINT
if (strmatch("<ctag0.area_altnokta>","0"))
dtext 250 110 25 Nan
else
dtext 250 110 25 <ctag0.area_altnokta>
endif
button 100 140 2511 2510 1 0 4
dtext 130 140 65 MIDDLE P (GOP)
if (strmatch("<ctag0.area_go_p>","0"))
dtext 250 140 25 NaN
else
dtext 250 140 25 <ctag0.area_go_p>
endif
button 100 170 2511 2510 1 0 5
dtext 130 170 65 Name (DONT SKIP)
if (strmatch("<ctag0.area_name>","0"))
dtextentrylimited 300 170 196 17 0481 0 30 CLICK HERE
else
dtextentrylimited 300 170 196 17 0481 0 30 <ctag0.area_name>
endif
if (strmatch("<ctag0.area_index>","0"))
button 100 270 4023 4024 1 0 6
dtext 130 270 05 NEW REGION
else
button 100 270 4023 4024 1 0 7
dtext 130 270 05 CHANGE REGION
button 200 350 4017 4018 1 0 10
dtext 230 350 66 CLEAR FROM DB
endif
button 100 300 4029 4030 1 0 0
dtext 130 300 15 EXIT WITHOUTH SAVE
if (strmatch("<account.name>","kell")) && !(strmatch("<ctag0.area_index>","0"))
RESIZEPIC 415 20 9270 200 150
//check coords
button 70 80 1209 1210 1 0 11
button 70 110 1209 1210 1 0 12
button 70 140 1209 1210 1 0 13
button 430 40 55 56 1 0 14
dtext 450 40 65 Generate Script
endif
[dialog d_areaconfig button]
on= 100 99999
local.argn <eval <argn1>-100>
ctag0.area_index <eval <dlocal.argn>>
db.close
db.connect
db.query "SELECT * FROM area_config WHERE ID = <ctag0.area_index>;"
if (<db.row.numrows> > 0)
ctag0.area_ustnokta <db.row.0.Area_UST>
ctag0.area_altnokta <db.row.0.Area_ALT>
ctag0.Area_Name <db.row.0.Area_Name>
ctag0.area_go_p <db.row.0.Area_Go_P>
endif
db.close
//say ID: <local.argn>
sdialog d_areaconfig 2
on=1
ctag0.area_index 0
sdialog d_areaconfig 2
On=2
message @25 TOP POINT SAVED
ctag0.area_ustnokta <p.x>,<p.y>
sdialog d_areaconfig 2
on=3
message @15 BOTTOM POINT SAVED
ctag0.area_altnokta <p.x>,<p.y>
sdialog d_areaconfig 2
on=4
message @5 MIDDLE POINT SAVED
ctag0.area_go_p <p.x>,<p.y>
sdialog d_areaconfig 2
on=5
if (strmatch("<argtxt[0]>","0"))
MESSAGE @55 PLS DONT SKIP NAME PART
else
message @5 NAME SAVED
ctag0.area_name <argtxt[0]>
sdialog d_areaconfig 2
sdialog d_areaconfig
endif
on=6
if !(strmatch("<ctag0.area_name>","0")) && !(strmatch("<ctag0.area_ustnokta>","0")) && !(strmatch("<ctag0.area_altnokta>","0")) && !(strmatch("<ctag0.area_go_p>","0"))
db.close
db.connect
db.query INSERT INTO area_config(Area_UST, Area_ALT, Area_Name, Area_Go_P, Created) VALUES("<ctag0.area_ustnokta>", "<ctag0.area_altnokta>", "<ctag0.area_name>", "<ctag0.area_go_p>", CURRENT_TIMESTAMP);
MESSAGE @15 OK
customareaset
db.close
else
MESSAGE @25 DONT SKIP ANY PART WITHOUTH CHANGE!
sdialog d_areaconfig 2
endif
on=7
if !(strmatch("<ctag0.area_name>","0")) && !(strmatch("<ctag0.area_ustnokta>","0")) && !(strmatch("<ctag0.area_altnokta>","0")) && !(strmatch("<ctag0.area_go_p>","0"))
db.close
db.connect
db.query UPDATE area_config SET Area_UST = '<ctag0.area_ustnokta>', Area_ALT = '<ctag0.area_altnokta>', Area_Name = '<ctag0.area_name>', Area_Go_P = '<ctag0.area_go_p>' WHERE ID = <ctag0.area_index>;
customareaset
db.close
endif
on=8
ctag0.dialog_index -=7
if <ctag0.dialog_index> < 1
ctag0.dialog_index 1
endif
sdialog d_areaconfig
on=9
ctag0.dialog_index +=7
sdialog d_areaconfig
on=10
db.close
db.connect
if !(strmatch("<ctag0.area_index>","0"))
db.query DELETE FROM area_config WHERE ID = <ctag0.area_index>;
MESSAGE @66 SILINDI
endif
db.close
on=11 13
db.close
db.connect
db.query "SELECT * FROM area_config WHERE ID = <ctag0.area_index>;"
if <argn1> == 11
go <db.row.0.Area_UST>
elseif <argn1> == 12
go <db.row.0.Area_ALT>
else
go <db.row.0.Area_Go_P>
endif
sdialog d_areaconfig 2
db.close
on=14
db.close
db.connect
db.query "SELECT * FROM area_config WHERE ID = <ctag0.area_index>;"
local.topen <def.Area_Script_Path>
local.customareaname <db.row.0.Area_Name>
local.customareagroup <db.row.0.Area_Name>
local.customareap <db.row.0.Area_Go_P>
local.customarearect <db.row.0.Area_UST>,<db.row.0.ALT>,0
file.mode.append = 1
if <file.open <local.topen>>
file.writeline " "
file.writeline " "
file.writeline " "
file.writeline " "
file.writeline "[AREADEF <local.customareaname>]"
file.writeline "EVENTS=r_default"
file.writeline "NAME=<local.customareaname>"
file.writeline "FLAGS=region_flag_nobuilding|region_flag_nomining"
file.writeline "GROUP=<local.customareaname>"
file.writeline "P=<local.customareap>"
file.writeline "RECT=<local.customarearect>"
file.writeline " "
file.close
endif
db.query DELETE FROM area_config WHERE ID = <ctag0.area_index>;
db.close
message @55 SCRIPT WRITTEN AT THE FILE: <def.Area_Script_Path> & CLEARED FROM DB
Bunun doğrusu region değil miydi yahu? Area mı olmuş sahiden adı?
Eline sağlık KeLL daha çok script paylaşımı bekliyoruz :)