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 :)