Editor.cpp 97 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079
  1. #include "Editor.h"
  2. #include <Datei.h>
  3. #include "Reader.h"
  4. // Inhalt der Editor Klasse aus Editor.h
  5. // Konstruktor
  6. Editor::Editor()
  7. {
  8. ref = 1;
  9. }
  10. // Destruktor
  11. Editor::~Editor()
  12. {}
  13. // nicht constant
  14. void Editor::setPfad( char *pfad )
  15. {
  16. this->pfad = pfad;
  17. this->pfad += "/editor";
  18. }
  19. void Editor::open()
  20. {
  21. }
  22. bool Editor::nachricht( SKlient *k )
  23. {
  24. err = "";
  25. char n = 0;
  26. k->getNachrichtEncrypted( &n, 1 );
  27. switch( n )
  28. {
  29. case 0: // Initialisierung
  30. k->sendeEncrypted( "\1", 1 );
  31. if( DateiExistiert( pfad ) )
  32. k->sendeEncrypted( "\2", 1 );
  33. else
  34. {
  35. if( createSitzung() )
  36. k->sendeEncrypted( "\1", 1 );
  37. else
  38. return 0;
  39. }
  40. return 1;
  41. case 1: // Sitzung verwerfen
  42. if( createSitzung() )
  43. k->sendeEncrypted( "\1", 1 );
  44. else
  45. return 0;
  46. return 1;
  47. case 2: // Sitzung speichern und beenden
  48. if( saveSitzung() )
  49. k->sendeEncrypted( "\1", 1 );
  50. else
  51. return 0;
  52. return 1;
  53. case 3: // Get Size
  54. {
  55. Text tmpPf = pfad.getText();
  56. tmpPf += "/size";
  57. Datei d;
  58. d.setDatei( tmpPf );
  59. if( d.open( Datei::Style::lesen ) )
  60. {
  61. k->sendeEncrypted( "\1", 1 );
  62. int width;
  63. int height;
  64. d.lese( (char *)&width, 4 );
  65. d.lese( (char *)&height, 4 );
  66. k->sendeEncrypted( (char *)&width, 4 );
  67. k->sendeEncrypted( (char *)&height, 4 );
  68. d.close();
  69. }
  70. else
  71. {
  72. err = "Fehler beim laden von ";
  73. err += tmpPf.getText();
  74. return 0;
  75. }
  76. return 1;
  77. }
  78. case 4: // Lade Team Daten
  79. {
  80. Text tmpPf = pfad.getText();
  81. tmpPf += "/team";
  82. Datei d;
  83. d.setDatei( tmpPf );
  84. RCArray< Text > *files = d.getDateiListe();
  85. if( files )
  86. {
  87. k->sendeEncrypted( "\1", 1 );
  88. int anz = files->getEintragAnzahl();
  89. k->sendeEncrypted( (char *)&anz, 4 );
  90. for( int i = 0; i < anz; i++ )
  91. {
  92. Text pf = tmpPf;
  93. pf += "/";
  94. pf += files->z( i )->getText();
  95. Datei team;
  96. team.setDatei( pf );
  97. team.open( Datei::Style::lesen );
  98. int id = *files->z( i );
  99. int maxWbZeit;
  100. int punkte;
  101. team.lese( (char *)&maxWbZeit, 4 );
  102. team.lese( (char *)&punkte, 4 );
  103. team.close();
  104. k->sendeEncrypted( (char *)&id, 4 );
  105. k->sendeEncrypted( (char *)&maxWbZeit, 4 );
  106. k->sendeEncrypted( (char *)&punkte, 4 );
  107. }
  108. }
  109. else
  110. {
  111. err = "Fehler beim laden von ";
  112. err += tmpPf.getText();
  113. return 0;
  114. }
  115. return 1;
  116. }
  117. case 5: // Lade Spieler Daten
  118. {
  119. Text tmpPf = pfad.getText();
  120. tmpPf += "/player";
  121. Datei d;
  122. d.setDatei( tmpPf );
  123. RCArray< Text > *files = d.getDateiListe();
  124. if( files )
  125. {
  126. k->sendeEncrypted( "\1", 1 );
  127. int anz = files->getEintragAnzahl();
  128. k->sendeEncrypted( (char *)&anz, 4 );
  129. for( int i = 0; i < anz; i++ )
  130. {
  131. Text pf = tmpPf;
  132. pf += "/";
  133. pf += files->z( i )->getText();
  134. Datei player;
  135. player.setDatei( pf );
  136. player.open( Datei::Style::lesen );
  137. int id = *files->z( i );
  138. int spawnX;
  139. int spawnY;
  140. player.lese( (char *)&spawnX, 4 );
  141. player.lese( (char *)&spawnY, 4 );
  142. player.close();
  143. k->sendeEncrypted( (char *)&id, 4 );
  144. k->sendeEncrypted( (char *)&spawnX, 4 );
  145. k->sendeEncrypted( (char *)&spawnY, 4 );
  146. }
  147. }
  148. else
  149. {
  150. err = "Fehler beim laden von ";
  151. err += tmpPf.getText();
  152. return 0;
  153. }
  154. return 1;
  155. }
  156. case 6: // Lade Bariere Daten
  157. {
  158. Text tmpPf = pfad.getText();
  159. tmpPf += "/bariere";
  160. Datei d;
  161. d.setDatei( tmpPf );
  162. RCArray< Text > *files = d.getDateiListe();
  163. if( files )
  164. {
  165. k->sendeEncrypted( "\1", 1 );
  166. int anz = files->getEintragAnzahl();
  167. k->sendeEncrypted( (char *)&anz, 4 );
  168. for( int i = 0; i < anz; i++ )
  169. {
  170. Text pf = tmpPf;
  171. pf += "/";
  172. pf += files->z( i )->getText();
  173. Datei object;
  174. object.setDatei( pf );
  175. object.open( Datei::Style::lesen );
  176. int id = *files->z( i );
  177. int x;
  178. int y;
  179. int breite;
  180. int height;
  181. int style;
  182. int verschiebungWeite;
  183. int autoSchaltungMaxTime;
  184. int team;
  185. object.lese( (char *)&x, 4 );
  186. object.lese( (char *)&y, 4 );
  187. object.lese( (char *)&breite, 4 );
  188. object.lese( (char *)&height, 4 );
  189. object.lese( (char *)&style, 4 );
  190. object.lese( (char *)&verschiebungWeite, 4 );
  191. object.lese( (char *)&autoSchaltungMaxTime, 4 );
  192. object.lese( (char *)&team, 4 );
  193. object.close();
  194. k->sendeEncrypted( (char *)&id, 4 );
  195. k->sendeEncrypted( (char *)&x, 4 );
  196. k->sendeEncrypted( (char *)&y, 4 );
  197. k->sendeEncrypted( (char *)&breite, 4 );
  198. k->sendeEncrypted( (char *)&height, 4 );
  199. k->sendeEncrypted( (char *)&style, 4 );
  200. k->sendeEncrypted( (char *)&verschiebungWeite, 4 );
  201. k->sendeEncrypted( (char *)&autoSchaltungMaxTime, 4 );
  202. k->sendeEncrypted( (char *)&team, 4 );
  203. }
  204. }
  205. else
  206. {
  207. err = "Fehler beim laden von ";
  208. err += tmpPf.getText();
  209. return 0;
  210. }
  211. return 1;
  212. }
  213. case 7: // Lade Base Daten
  214. {
  215. Text tmpPf = pfad.getText();
  216. tmpPf += "/base";
  217. Datei d;
  218. d.setDatei( tmpPf );
  219. RCArray< Text > *files = d.getDateiListe();
  220. if( files )
  221. {
  222. k->sendeEncrypted( "\1", 1 );
  223. int anz = files->getEintragAnzahl();
  224. k->sendeEncrypted( (char *)&anz, 4 );
  225. for( int i = 0; i < anz; i++ )
  226. {
  227. Text pf = tmpPf;
  228. pf += "/";
  229. pf += files->z( i )->getText();
  230. Datei object;
  231. object.setDatei( pf );
  232. object.open( Datei::Style::lesen );
  233. int id = *files->z( i );
  234. int x;
  235. int y;
  236. int breite;
  237. int height;
  238. int maxTime;
  239. int team;
  240. bool showTimer;
  241. int timerX;
  242. int timerY;
  243. int timerFarbe;
  244. object.lese( (char *)&x, 4 );
  245. object.lese( (char *)&y, 4 );
  246. object.lese( (char *)&breite, 4 );
  247. object.lese( (char *)&height, 4 );
  248. object.lese( (char *)&maxTime, 4 );
  249. object.lese( (char *)&team, 4 );
  250. object.lese( (char *)&showTimer, 1 );
  251. object.lese( (char *)&timerX, 4 );
  252. object.lese( (char *)&timerY, 4 );
  253. object.lese( (char *)&timerFarbe, 4 );
  254. object.close();
  255. k->sendeEncrypted( (char *)&id, 4 );
  256. k->sendeEncrypted( (char *)&x, 4 );
  257. k->sendeEncrypted( (char *)&y, 4 );
  258. k->sendeEncrypted( (char *)&breite, 4 );
  259. k->sendeEncrypted( (char *)&height, 4 );
  260. k->sendeEncrypted( (char *)&maxTime, 4 );
  261. k->sendeEncrypted( (char *)&team, 4 );
  262. k->sendeEncrypted( (char *)&showTimer, 1 );
  263. k->sendeEncrypted( (char *)&timerX, 4 );
  264. k->sendeEncrypted( (char *)&timerY, 4 );
  265. k->sendeEncrypted( (char *)&timerFarbe, 4 );
  266. }
  267. }
  268. else
  269. {
  270. err = "Fehler beim laden von ";
  271. err += tmpPf.getText();
  272. return 0;
  273. }
  274. return 1;
  275. }
  276. case 8: // Lade Drop Daten
  277. {
  278. Text tmpPf = pfad.getText();
  279. tmpPf += "/drop";
  280. Datei d;
  281. d.setDatei( tmpPf );
  282. RCArray< Text > *files = d.getDateiListe();
  283. if( files )
  284. {
  285. k->sendeEncrypted( "\1", 1 );
  286. int anz = files->getEintragAnzahl();
  287. k->sendeEncrypted( (char *)&anz, 4 );
  288. for( int i = 0; i < anz; i++ )
  289. {
  290. Text pf = tmpPf;
  291. pf += "/";
  292. pf += files->z( i )->getText();
  293. Datei object;
  294. object.setDatei( pf );
  295. object.open( Datei::Style::lesen );
  296. int id = *files->z( i );
  297. int minX;
  298. int minY;
  299. int maxX;
  300. int maxY;
  301. int maxTime;
  302. int numDrops;
  303. float wahrscheinlichkeit[ ITEMANZAHL ];
  304. unsigned char len;
  305. object.lese( (char *)&minX, 4 );
  306. object.lese( (char *)&minY, 4 );
  307. object.lese( (char *)&maxX, 4 );
  308. object.lese( (char *)&maxY, 4 );
  309. object.lese( (char *)&maxTime, 4 );
  310. object.lese( (char *)&numDrops, 4 );
  311. for( int i = 0; i < ITEMANZAHL; i++ )
  312. object.lese( (char *)&wahrscheinlichkeit[ i ], 4 );
  313. object.lese( (char *)&len, 1 );
  314. char *name = new char[ len ];
  315. object.lese( name, len );
  316. object.close();
  317. k->sendeEncrypted( (char *)&id, 4 );
  318. k->sendeEncrypted( (char *)&minX, 4 );
  319. k->sendeEncrypted( (char *)&minY, 4 );
  320. k->sendeEncrypted( (char *)&maxX, 4 );
  321. k->sendeEncrypted( (char *)&maxY, 4 );
  322. k->sendeEncrypted( (char *)&maxTime, 4 );
  323. k->sendeEncrypted( (char *)&numDrops, 4 );
  324. for( int i = 0; i < ITEMANZAHL; i++ )
  325. k->sendeEncrypted( (char *)&wahrscheinlichkeit[ i ], 4 );
  326. k->sendeEncrypted( (char *)&len, 1 );
  327. k->sendeEncrypted( name, len );
  328. delete[] name;
  329. }
  330. }
  331. else
  332. {
  333. err = "Fehler beim laden von ";
  334. err += tmpPf.getText();
  335. return 0;
  336. }
  337. return 1;
  338. }
  339. case 9: // Lade Schalter Daten
  340. {
  341. Text tmpPf = pfad.getText();
  342. tmpPf += "/schalter";
  343. Datei d;
  344. d.setDatei( tmpPf );
  345. RCArray< Text > *files = d.getDateiListe();
  346. if( files )
  347. {
  348. k->sendeEncrypted( "\1", 1 );
  349. int anz = files->getEintragAnzahl();
  350. k->sendeEncrypted( (char *)&anz, 4 );
  351. for( int i = 0; i < anz; i++ )
  352. {
  353. Text pf = tmpPf;
  354. pf += "/";
  355. pf += files->z( i )->getText();
  356. Datei object;
  357. object.setDatei( pf );
  358. object.open( Datei::Style::lesen );
  359. int id = *files->z( i );
  360. int x;
  361. int y;
  362. int breite;
  363. int height;
  364. bool aktive;
  365. object.lese( (char *)&x, 4 );
  366. object.lese( (char *)&y, 4 );
  367. object.lese( (char *)&breite, 4 );
  368. object.lese( (char *)&height, 4 );
  369. object.lese( (char *)&aktive, 1 );
  370. object.close();
  371. k->sendeEncrypted( (char *)&id, 4 );
  372. k->sendeEncrypted( (char *)&x, 4 );
  373. k->sendeEncrypted( (char *)&y, 4 );
  374. k->sendeEncrypted( (char *)&breite, 4 );
  375. k->sendeEncrypted( (char *)&height, 4 );
  376. k->sendeEncrypted( (char *)&aktive, 1 );
  377. }
  378. }
  379. else
  380. {
  381. err = "Fehler beim laden von ";
  382. err += tmpPf.getText();
  383. return 0;
  384. }
  385. return 1;
  386. }
  387. case 0xA: // Lade Schiene Daten
  388. {
  389. Text tmpPf = pfad.getText();
  390. tmpPf += "/schiene";
  391. Datei d;
  392. d.setDatei( tmpPf );
  393. RCArray< Text > *files = d.getDateiListe();
  394. if( files )
  395. {
  396. k->sendeEncrypted( "\1", 1 );
  397. int anz = files->getEintragAnzahl();
  398. k->sendeEncrypted( (char *)&anz, 4 );
  399. for( int i = 0; i < anz; i++ )
  400. {
  401. Text pf = tmpPf;
  402. pf += "/";
  403. pf += files->z( i )->getText();
  404. Datei object;
  405. object.setDatei( pf );
  406. object.open( Datei::Style::lesen );
  407. int id = *files->z( i );
  408. int x;
  409. int y;
  410. int breite;
  411. int height;
  412. object.lese( (char *)&x, 4 );
  413. object.lese( (char *)&y, 4 );
  414. object.lese( (char *)&breite, 4 );
  415. object.lese( (char *)&height, 4 );
  416. object.close();
  417. k->sendeEncrypted( (char *)&id, 4 );
  418. k->sendeEncrypted( (char *)&x, 4 );
  419. k->sendeEncrypted( (char *)&y, 4 );
  420. k->sendeEncrypted( (char *)&breite, 4 );
  421. k->sendeEncrypted( (char *)&height, 4 );
  422. }
  423. }
  424. else
  425. {
  426. err = "Fehler beim laden von ";
  427. err += tmpPf.getText();
  428. return 0;
  429. }
  430. return 1;
  431. }
  432. case 0xB: // Lade Schiene Daten
  433. {
  434. Text tmpPf = pfad.getText();
  435. tmpPf += "/timer";
  436. Datei d;
  437. d.setDatei( tmpPf );
  438. RCArray< Text > *files = d.getDateiListe();
  439. if( files )
  440. {
  441. k->sendeEncrypted( "\1", 1 );
  442. int anz = files->getEintragAnzahl();
  443. k->sendeEncrypted( (char *)&anz, 4 );
  444. for( int i = 0; i < anz; i++ )
  445. {
  446. Text pf = tmpPf;
  447. pf += "/";
  448. pf += files->z( i )->getText();
  449. Datei object;
  450. object.setDatei( pf );
  451. object.open( Datei::Style::lesen );
  452. int id = *files->z( i );
  453. int x;
  454. int y;
  455. int maxZeit;
  456. bool sichtbar;
  457. bool autoWiederhohlung;
  458. bool runns;
  459. int farbe;
  460. unsigned char len;
  461. object.lese( (char *)&x, 4 );
  462. object.lese( (char *)&y, 4 );
  463. object.lese( (char *)&maxZeit, 4 );
  464. object.lese( (char *)&sichtbar, 1 );
  465. object.lese( (char *)&autoWiederhohlung, 1 );
  466. object.lese( (char *)&runns, 1 );
  467. object.lese( (char *)&farbe, 4 );
  468. object.lese( (char *)&len, 1 );
  469. char *name = new char[ len ];
  470. object.lese( name, len );
  471. object.close();
  472. k->sendeEncrypted( (char *)&id, 4 );
  473. k->sendeEncrypted( (char *)&x, 4 );
  474. k->sendeEncrypted( (char *)&y, 4 );
  475. k->sendeEncrypted( (char *)&maxZeit, 4 );
  476. k->sendeEncrypted( (char *)&sichtbar, 1 );
  477. k->sendeEncrypted( (char *)&autoWiederhohlung, 1 );
  478. k->sendeEncrypted( (char *)&runns, 1 );
  479. k->sendeEncrypted( (char *)&farbe, 4 );
  480. k->sendeEncrypted( (char *)&len, 1 );
  481. k->sendeEncrypted( name, len );
  482. delete[]name;
  483. }
  484. }
  485. else
  486. {
  487. err = "Fehler beim laden von ";
  488. err += tmpPf.getText();
  489. return 0;
  490. }
  491. return 1;
  492. }
  493. case 0xC: // Lade Tunnel Daten
  494. {
  495. Text tmpPf = pfad.getText();
  496. tmpPf += "/tunnel";
  497. Datei d;
  498. d.setDatei( tmpPf );
  499. RCArray< Text > *files = d.getDateiListe();
  500. if( files )
  501. {
  502. k->sendeEncrypted( "\1", 1 );
  503. int anz = files->getEintragAnzahl();
  504. k->sendeEncrypted( (char *)&anz, 4 );
  505. for( int i = 0; i < anz; i++ )
  506. {
  507. Text pf = tmpPf;
  508. pf += "/";
  509. pf += files->z( i )->getText();
  510. Datei object;
  511. object.setDatei( pf );
  512. object.open( Datei::Style::lesen );
  513. int id = *files->z( i );
  514. int x;
  515. int y;
  516. int breite;
  517. int height;
  518. int zielX;
  519. int zielY;
  520. bool aktiv;
  521. object.lese( (char *)&x, 4 );
  522. object.lese( (char *)&y, 4 );
  523. object.lese( (char *)&breite, 4 );
  524. object.lese( (char *)&height, 4 );
  525. object.lese( (char *)&zielX, 4 );
  526. object.lese( (char *)&zielY, 4 );
  527. object.lese( (char *)&aktiv, 1 );
  528. object.close();
  529. k->sendeEncrypted( (char *)&id, 4 );
  530. k->sendeEncrypted( (char *)&x, 4 );
  531. k->sendeEncrypted( (char *)&y, 4 );
  532. k->sendeEncrypted( (char *)&breite, 4 );
  533. k->sendeEncrypted( (char *)&height, 4 );
  534. k->sendeEncrypted( (char *)&zielX, 4 );
  535. k->sendeEncrypted( (char *)&zielY, 4 );
  536. k->sendeEncrypted( (char *)&aktiv, 1 );
  537. }
  538. }
  539. else
  540. {
  541. err = "Fehler beim laden von ";
  542. err += tmpPf.getText();
  543. return 0;
  544. }
  545. return 1;
  546. }
  547. case 0xD: // Lade Umlenkung Daten
  548. {
  549. Text tmpPf = pfad.getText();
  550. tmpPf += "/umlenkung";
  551. Datei d;
  552. d.setDatei( tmpPf );
  553. RCArray< Text > *files = d.getDateiListe();
  554. if( files )
  555. {
  556. k->sendeEncrypted( "\1", 1 );
  557. int anz = files->getEintragAnzahl();
  558. k->sendeEncrypted( (char *)&anz, 4 );
  559. for( int i = 0; i < anz; i++ )
  560. {
  561. Text pf = tmpPf;
  562. pf += "/";
  563. pf += files->z( i )->getText();
  564. Datei object;
  565. object.setDatei( pf );
  566. object.open( Datei::Style::lesen );
  567. int id = *files->z( i );
  568. int x;
  569. int y;
  570. int breite;
  571. int height;
  572. char richtung;
  573. int maxAbklingzeit;
  574. bool drehend;
  575. bool aktiv;
  576. object.lese( (char *)&x, 4 );
  577. object.lese( (char *)&y, 4 );
  578. object.lese( (char *)&breite, 4 );
  579. object.lese( (char *)&height, 4 );
  580. object.lese( (char *)&richtung, 1 );
  581. object.lese( (char *)&maxAbklingzeit, 4 );
  582. object.lese( (char *)&drehend, 1 );
  583. object.lese( (char *)&aktiv, 1 );
  584. object.close();
  585. k->sendeEncrypted( (char *)&id, 4 );
  586. k->sendeEncrypted( (char *)&x, 4 );
  587. k->sendeEncrypted( (char *)&y, 4 );
  588. k->sendeEncrypted( (char *)&breite, 4 );
  589. k->sendeEncrypted( (char *)&height, 4 );
  590. k->sendeEncrypted( (char *)&richtung, 1 );
  591. k->sendeEncrypted( (char *)&maxAbklingzeit, 4 );
  592. k->sendeEncrypted( (char *)&drehend, 1 );
  593. k->sendeEncrypted( (char *)&aktiv, 1 );
  594. }
  595. }
  596. else
  597. {
  598. err = "Fehler beim laden von ";
  599. err += tmpPf.getText();
  600. return 0;
  601. }
  602. return 1;
  603. }
  604. case 0xE: // Lade Trigger Daten
  605. {
  606. Text tmpPf = pfad.getText();
  607. tmpPf += "/trigger";
  608. Datei d;
  609. d.setDatei( tmpPf );
  610. RCArray< Text > *files = d.getDateiListe();
  611. if( files )
  612. {
  613. k->sendeEncrypted( "\1", 1 );
  614. int anz = files->getEintragAnzahl();
  615. k->sendeEncrypted( (char *)&anz, 4 );
  616. for( int i = 0; i < anz; i++ )
  617. {
  618. Text pf = tmpPf;
  619. pf += "/";
  620. pf += files->z( i )->getText();
  621. Datei object;
  622. object.setDatei( pf );
  623. __int64 size = object.getSize();
  624. object.open( Datei::Style::lesen );
  625. char buffer[ 2048 ];
  626. int id = *files->z( i );
  627. k->sendeEncrypted( (char *)&id, 4 );
  628. k->sendeEncrypted( (char *)&size, 8 );
  629. while( size > 0 )
  630. {
  631. object.lese( buffer, MIN( 2048, (int)size ) );
  632. k->sendeEncrypted( buffer, MIN( 2048, (int)size ) );
  633. size -= 2048;
  634. }
  635. object.close();
  636. }
  637. }
  638. else
  639. {
  640. err = "Fehler beim laden von ";
  641. err += tmpPf.getText();
  642. return 0;
  643. }
  644. return 1;
  645. }
  646. case 0xF: // Lade Variable Daten
  647. {
  648. Text tmpPf = pfad.getText();
  649. tmpPf += "/variable";
  650. Datei d;
  651. d.setDatei( tmpPf );
  652. RCArray< Text > *files = d.getDateiListe();
  653. if( files )
  654. {
  655. k->sendeEncrypted( "\1", 1 );
  656. int anz = files->getEintragAnzahl();
  657. k->sendeEncrypted( (char *)&anz, 4 );
  658. for( int i = 0; i < anz; i++ )
  659. {
  660. Text pf = tmpPf;
  661. pf += "/";
  662. pf += files->z( i )->getText();
  663. Datei object;
  664. object.setDatei( pf );
  665. __int64 size = object.getSize();
  666. object.open( Datei::Style::lesen );
  667. char buffer[ 2048 ];
  668. unsigned char len = (unsigned char)(files->z( i )->getLength() - 2);
  669. k->sendeEncrypted( (char *)&len, 1 );
  670. k->sendeEncrypted( *files->z( i ), len );
  671. k->sendeEncrypted( (char *)&size, 8 );
  672. while( size > 0 )
  673. {
  674. object.lese( buffer, MIN( 2048, (int)size ) );
  675. k->sendeEncrypted( buffer, MIN( 2048, (int)size ) );
  676. size -= 2048;
  677. }
  678. object.close();
  679. }
  680. }
  681. else
  682. {
  683. err = "Fehler beim laden von ";
  684. err += tmpPf.getText();
  685. return 0;
  686. }
  687. return 1;
  688. }
  689. case 0x10: // Change Map Size
  690. {
  691. Text tmpPf = pfad.getText();
  692. tmpPf += "/size";
  693. Datei d;
  694. d.setDatei( tmpPf );
  695. if( d.open( Datei::Style::schreiben ) )
  696. {
  697. k->sendeEncrypted( "\1", 1 );
  698. int width;
  699. int height;
  700. k->getNachrichtEncrypted( (char *)&width, 4 );
  701. k->getNachrichtEncrypted( (char *)&height, 4 );
  702. if( width <= 0 || height <= 0 )
  703. {
  704. err = "Illegal Argument Exception";
  705. return 0;
  706. }
  707. k->sendeEncrypted( "\1", 1 );
  708. d.schreibe( (char *)&width, 4 );
  709. d.schreibe( (char *)&height, 4 );
  710. d.close();
  711. }
  712. else
  713. {
  714. err = "Fehler beim schreiben von ";
  715. err += tmpPf.getText();
  716. return 0;
  717. }
  718. return 1;
  719. }
  720. case 0x11: // Change Team data
  721. {
  722. k->sendeEncrypted( "\1", 1 );
  723. int id;
  724. k->getNachrichtEncrypted( (char *)&id, 4 );
  725. Text tmpPf = pfad.getText();
  726. tmpPf += "/team/";
  727. tmpPf += id;
  728. tmpPf += ".t";
  729. Datei d;
  730. d.setDatei( tmpPf );
  731. if( d.open( Datei::Style::schreiben ) )
  732. {
  733. k->sendeEncrypted( "\1", 1 );
  734. int maxWbZeit;
  735. int punkte;
  736. k->getNachrichtEncrypted( (char *)&maxWbZeit, 4 );
  737. k->getNachrichtEncrypted( (char *)&punkte, 4 );
  738. d.schreibe( (char *)&maxWbZeit, 4 );
  739. d.schreibe( (char *)&punkte, 4 );
  740. d.close();
  741. k->sendeEncrypted( "\1", 1 );
  742. return 1;
  743. }
  744. else
  745. {
  746. err = "Fehler beim schreiben von ";
  747. err += tmpPf.getText();
  748. return 0;
  749. }
  750. }
  751. case 0x12: // Change Player data
  752. {
  753. k->sendeEncrypted( "\1", 1 );
  754. int id;
  755. k->getNachrichtEncrypted( (char *)&id, 4 );
  756. Text tmpPf = pfad.getText();
  757. tmpPf += "/player/";
  758. tmpPf += id;
  759. tmpPf += ".p";
  760. Datei d;
  761. d.setDatei( tmpPf );
  762. if( d.open( Datei::Style::schreiben ) )
  763. {
  764. k->sendeEncrypted( "\1", 1 );
  765. int spawnX;
  766. int spawnY;
  767. k->getNachrichtEncrypted( (char *)&spawnX, 4 );
  768. k->getNachrichtEncrypted( (char *)&spawnY, 4 );
  769. d.schreibe( (char *)&spawnX, 4 );
  770. d.schreibe( (char *)&spawnY, 4 );
  771. d.close();
  772. k->sendeEncrypted( "\1", 1 );
  773. return 1;
  774. }
  775. else
  776. {
  777. err = "Fehler beim schreiben von ";
  778. err += tmpPf.getText();
  779. return 0;
  780. }
  781. }
  782. case 0x13: // Change Bariere data
  783. {
  784. k->sendeEncrypted( "\1", 1 );
  785. int id;
  786. k->getNachrichtEncrypted( (char *)&id, 4 );
  787. Text tmpPf = pfad.getText();
  788. tmpPf += "/bariere/";
  789. tmpPf += id;
  790. tmpPf += ".b";
  791. Datei d;
  792. d.setDatei( tmpPf );
  793. if( d.open( Datei::Style::schreiben ) )
  794. {
  795. k->sendeEncrypted( "\1", 1 );
  796. int x;
  797. int y;
  798. int breite;
  799. int height;
  800. int style;
  801. int verschiebungWeite;
  802. int autoSchaltungMaxTime;
  803. int team;
  804. k->getNachrichtEncrypted( (char *)&x, 4 );
  805. k->getNachrichtEncrypted( (char *)&y, 4 );
  806. k->getNachrichtEncrypted( (char *)&breite, 4 );
  807. k->getNachrichtEncrypted( (char *)&height, 4 );
  808. k->getNachrichtEncrypted( (char *)&style, 4 );
  809. k->getNachrichtEncrypted( (char *)&verschiebungWeite, 4 );
  810. k->getNachrichtEncrypted( (char *)&autoSchaltungMaxTime, 4 );
  811. k->getNachrichtEncrypted( (char *)&team, 4 );
  812. d.schreibe( (char *)&x, 4 );
  813. d.schreibe( (char *)&y, 4 );
  814. d.schreibe( (char *)&breite, 4 );
  815. d.schreibe( (char *)&height, 4 );
  816. d.schreibe( (char *)&style, 4 );
  817. d.schreibe( (char *)&verschiebungWeite, 4 );
  818. d.schreibe( (char *)&autoSchaltungMaxTime, 4 );
  819. d.schreibe( (char *)&team, 4 );
  820. d.close();
  821. k->sendeEncrypted( "\1", 1 );
  822. return 1;
  823. }
  824. else
  825. {
  826. err = "Fehler beim schreiben von ";
  827. err += tmpPf.getText();
  828. return 0;
  829. }
  830. }
  831. case 0x14: // Change Base data
  832. {
  833. k->sendeEncrypted( "\1", 1 );
  834. int id;
  835. k->getNachrichtEncrypted( (char *)&id, 4 );
  836. Text tmpPf = pfad.getText();
  837. tmpPf += "/base/";
  838. tmpPf += id;
  839. tmpPf += ".b";
  840. Datei d;
  841. d.setDatei( tmpPf );
  842. if( d.open( Datei::Style::schreiben ) )
  843. {
  844. k->sendeEncrypted( "\1", 1 );
  845. int x;
  846. int y;
  847. int breite;
  848. int height;
  849. int maxTime;
  850. int team;
  851. bool showTimer;
  852. int timerX;
  853. int timerY;
  854. int timerFarbe;
  855. k->getNachrichtEncrypted( (char *)&x, 4 );
  856. k->getNachrichtEncrypted( (char *)&y, 4 );
  857. k->getNachrichtEncrypted( (char *)&breite, 4 );
  858. k->getNachrichtEncrypted( (char *)&height, 4 );
  859. k->getNachrichtEncrypted( (char *)&maxTime, 4 );
  860. k->getNachrichtEncrypted( (char *)&team, 4 );
  861. k->getNachrichtEncrypted( (char *)&showTimer, 1 );
  862. k->getNachrichtEncrypted( (char *)&timerX, 4 );
  863. k->getNachrichtEncrypted( (char *)&timerY, 4 );
  864. k->getNachrichtEncrypted( (char *)&timerFarbe, 4 );
  865. d.schreibe( (char *)&x, 4 );
  866. d.schreibe( (char *)&y, 4 );
  867. d.schreibe( (char *)&breite, 4 );
  868. d.schreibe( (char *)&height, 4 );
  869. d.schreibe( (char *)&maxTime, 4 );
  870. d.schreibe( (char *)&team, 4 );
  871. d.schreibe( (char *)&showTimer, 1 );
  872. d.schreibe( (char *)&timerX, 4 );
  873. d.schreibe( (char *)&timerY, 4 );
  874. d.schreibe( (char *)&timerFarbe, 4 );
  875. d.close();
  876. k->sendeEncrypted( "\1", 1 );
  877. return 1;
  878. }
  879. else
  880. {
  881. err = "Fehler beim schreiben von ";
  882. err += tmpPf.getText();
  883. return 0;
  884. }
  885. }
  886. case 0x15: // Change Drop data
  887. {
  888. k->sendeEncrypted( "\1", 1 );
  889. int id;
  890. k->getNachrichtEncrypted( (char *)&id, 4 );
  891. Text tmpPf = pfad.getText();
  892. tmpPf += "/drop/";
  893. tmpPf += id;
  894. tmpPf += ".d";
  895. Datei d;
  896. d.setDatei( tmpPf );
  897. if( d.open( Datei::Style::schreiben ) )
  898. {
  899. k->sendeEncrypted( "\1", 1 );
  900. int minX;
  901. int minY;
  902. int maxX;
  903. int maxY;
  904. int maxTime;
  905. int numDrops;
  906. float wahrscheinlichkeit[ ITEMANZAHL ];
  907. unsigned char len;
  908. k->getNachrichtEncrypted( (char *)&minX, 4 );
  909. k->getNachrichtEncrypted( (char *)&minY, 4 );
  910. k->getNachrichtEncrypted( (char *)&maxX, 4 );
  911. k->getNachrichtEncrypted( (char *)&maxY, 4 );
  912. k->getNachrichtEncrypted( (char *)&maxTime, 4 );
  913. k->getNachrichtEncrypted( (char *)&numDrops, 4 );
  914. for( int i = 0; i < ITEMANZAHL; i++ )
  915. k->getNachrichtEncrypted( (char *)&wahrscheinlichkeit[ i ], 4 );
  916. k->getNachrichtEncrypted( (char *)&len, 1 );
  917. char *name = new char[ len ];
  918. k->getNachrichtEncrypted( name, len );
  919. d.schreibe( (char *)&minX, 4 );
  920. d.schreibe( (char *)&minY, 4 );
  921. d.schreibe( (char *)&maxX, 4 );
  922. d.schreibe( (char *)&maxY, 4 );
  923. d.schreibe( (char *)&maxTime, 4 );
  924. d.schreibe( (char *)&numDrops, 4 );
  925. for( int i = 0; i < ITEMANZAHL; i++ )
  926. d.schreibe( (char *)&wahrscheinlichkeit[ i ], 4 );
  927. d.schreibe( (char *)&len, 1 );
  928. d.schreibe( name, len );
  929. delete[]name;
  930. d.close();
  931. k->sendeEncrypted( "\1", 1 );
  932. return 1;
  933. }
  934. else
  935. {
  936. err = "Fehler beim schreiben von ";
  937. err += tmpPf.getText();
  938. return 0;
  939. }
  940. }
  941. case 0x16: // Change Schalter data
  942. {
  943. k->sendeEncrypted( "\1", 1 );
  944. int id;
  945. k->getNachrichtEncrypted( (char *)&id, 4 );
  946. Text tmpPf = pfad.getText();
  947. tmpPf += "/schalter/";
  948. tmpPf += id;
  949. tmpPf += ".s";
  950. Datei d;
  951. d.setDatei( tmpPf );
  952. if( d.open( Datei::Style::schreiben ) )
  953. {
  954. k->sendeEncrypted( "\1", 1 );
  955. int x;
  956. int y;
  957. int breite;
  958. int height;
  959. bool aktive;
  960. k->getNachrichtEncrypted( (char *)&x, 4 );
  961. k->getNachrichtEncrypted( (char *)&y, 4 );
  962. k->getNachrichtEncrypted( (char *)&breite, 4 );
  963. k->getNachrichtEncrypted( (char *)&height, 4 );
  964. k->getNachrichtEncrypted( (char *)&aktive, 1 );
  965. d.schreibe( (char *)&x, 4 );
  966. d.schreibe( (char *)&y, 4 );
  967. d.schreibe( (char *)&breite, 4 );
  968. d.schreibe( (char *)&height, 4 );
  969. d.schreibe( (char *)&aktive, 1 );
  970. d.close();
  971. k->sendeEncrypted( "\1", 1 );
  972. return 1;
  973. }
  974. else
  975. {
  976. err = "Fehler beim schreiben von ";
  977. err += tmpPf.getText();
  978. return 0;
  979. }
  980. }
  981. case 0x17: // Change Schiene data
  982. {
  983. k->sendeEncrypted( "\1", 1 );
  984. int id;
  985. k->getNachrichtEncrypted( (char *)&id, 4 );
  986. Text tmpPf = pfad.getText();
  987. tmpPf += "/schiene/";
  988. tmpPf += id;
  989. tmpPf += ".s";
  990. Datei d;
  991. d.setDatei( tmpPf );
  992. if( d.open( Datei::Style::schreiben ) )
  993. {
  994. k->sendeEncrypted( "\1", 1 );
  995. int x;
  996. int y;
  997. int breite;
  998. int height;
  999. k->getNachrichtEncrypted( (char *)&x, 4 );
  1000. k->getNachrichtEncrypted( (char *)&y, 4 );
  1001. k->getNachrichtEncrypted( (char *)&breite, 4 );
  1002. k->getNachrichtEncrypted( (char *)&height, 4 );
  1003. d.schreibe( (char *)&x, 4 );
  1004. d.schreibe( (char *)&y, 4 );
  1005. d.schreibe( (char *)&breite, 4 );
  1006. d.schreibe( (char *)&height, 4 );
  1007. d.close();
  1008. k->sendeEncrypted( "\1", 1 );
  1009. return 1;
  1010. }
  1011. else
  1012. {
  1013. err = "Fehler beim schreiben von ";
  1014. err += tmpPf.getText();
  1015. return 0;
  1016. }
  1017. }
  1018. case 0x18: // Change Timer data
  1019. {
  1020. k->sendeEncrypted( "\1", 1 );
  1021. int id;
  1022. k->getNachrichtEncrypted( (char *)&id, 4 );
  1023. Text tmpPf = pfad.getText();
  1024. tmpPf += "/timer/";
  1025. tmpPf += id;
  1026. tmpPf += ".t";
  1027. Datei d;
  1028. d.setDatei( tmpPf );
  1029. if( d.open( Datei::Style::schreiben ) )
  1030. {
  1031. k->sendeEncrypted( "\1", 1 );
  1032. int x;
  1033. int y;
  1034. int maxZeit;
  1035. bool sichtbar;
  1036. bool autoWiederhohlung;
  1037. bool runns;
  1038. int farbe;
  1039. unsigned char len;
  1040. k->getNachrichtEncrypted( (char *)&x, 4 );
  1041. k->getNachrichtEncrypted( (char *)&y, 4 );
  1042. k->getNachrichtEncrypted( (char *)&maxZeit, 4 );
  1043. k->getNachrichtEncrypted( (char *)&sichtbar, 1 );
  1044. k->getNachrichtEncrypted( (char *)&autoWiederhohlung, 1 );
  1045. k->getNachrichtEncrypted( (char *)&runns, 1 );
  1046. k->getNachrichtEncrypted( (char *)&farbe, 4 );
  1047. k->getNachrichtEncrypted( (char *)&len, 1 );
  1048. char *name = new char[ len ];
  1049. k->getNachrichtEncrypted( name, len );
  1050. d.schreibe( (char *)&x, 4 );
  1051. d.schreibe( (char *)&y, 4 );
  1052. d.schreibe( (char *)&maxZeit, 4 );
  1053. d.schreibe( (char *)&sichtbar, 1 );
  1054. d.schreibe( (char *)&autoWiederhohlung, 1 );
  1055. d.schreibe( (char *)&runns, 1 );
  1056. d.schreibe( (char *)&farbe, 4 );
  1057. d.schreibe( (char *)&len, 1 );
  1058. d.schreibe( name, len );
  1059. delete[]name;
  1060. d.close();
  1061. k->sendeEncrypted( "\1", 1 );
  1062. return 1;
  1063. }
  1064. else
  1065. {
  1066. err = "Fehler beim schreiben von ";
  1067. err += tmpPf.getText();
  1068. return 0;
  1069. }
  1070. }
  1071. case 0x19: // Change Tunnel data
  1072. {
  1073. k->sendeEncrypted( "\1", 1 );
  1074. int id;
  1075. k->getNachrichtEncrypted( (char *)&id, 4 );
  1076. Text tmpPf = pfad.getText();
  1077. tmpPf += "/tunnel/";
  1078. tmpPf += id;
  1079. tmpPf += ".t";
  1080. Datei d;
  1081. d.setDatei( tmpPf );
  1082. if( d.open( Datei::Style::schreiben ) )
  1083. {
  1084. k->sendeEncrypted( "\1", 1 );
  1085. int x;
  1086. int y;
  1087. int breite;
  1088. int height;
  1089. int zielX;
  1090. int zielY;
  1091. bool aktiv;
  1092. k->getNachrichtEncrypted( (char *)&x, 4 );
  1093. k->getNachrichtEncrypted( (char *)&y, 4 );
  1094. k->getNachrichtEncrypted( (char *)&breite, 4 );
  1095. k->getNachrichtEncrypted( (char *)&height, 4 );
  1096. k->getNachrichtEncrypted( (char *)&zielX, 4 );
  1097. k->getNachrichtEncrypted( (char *)&zielY, 4 );
  1098. k->getNachrichtEncrypted( (char *)&aktiv, 1 );
  1099. d.schreibe( (char *)&x, 4 );
  1100. d.schreibe( (char *)&y, 4 );
  1101. d.schreibe( (char *)&breite, 4 );
  1102. d.schreibe( (char *)&height, 4 );
  1103. d.schreibe( (char *)&zielX, 4 );
  1104. d.schreibe( (char *)&zielY, 4 );
  1105. d.schreibe( (char *)&aktiv, 1 );
  1106. d.close();
  1107. k->sendeEncrypted( "\1", 1 );
  1108. return 1;
  1109. }
  1110. else
  1111. {
  1112. err = "Fehler beim schreiben von ";
  1113. err += tmpPf.getText();
  1114. return 0;
  1115. }
  1116. }
  1117. case 0x1A: // Change Umlenkung data
  1118. {
  1119. k->sendeEncrypted( "\1", 1 );
  1120. int id;
  1121. k->getNachrichtEncrypted( (char *)&id, 4 );
  1122. Text tmpPf = pfad.getText();
  1123. tmpPf += "/umlenkung/";
  1124. tmpPf += id;
  1125. tmpPf += ".u";
  1126. Datei d;
  1127. d.setDatei( tmpPf );
  1128. if( d.open( Datei::Style::schreiben ) )
  1129. {
  1130. k->sendeEncrypted( "\1", 1 );
  1131. int x;
  1132. int y;
  1133. int breite;
  1134. int height;
  1135. char richtung;
  1136. int maxAbklingzeit;
  1137. bool drehend;
  1138. bool aktiv;
  1139. k->getNachrichtEncrypted( (char *)&x, 4 );
  1140. k->getNachrichtEncrypted( (char *)&y, 4 );
  1141. k->getNachrichtEncrypted( (char *)&breite, 4 );
  1142. k->getNachrichtEncrypted( (char *)&height, 4 );
  1143. k->getNachrichtEncrypted( (char *)&richtung, 1 );
  1144. k->getNachrichtEncrypted( (char *)&maxAbklingzeit, 4 );
  1145. k->getNachrichtEncrypted( (char *)&drehend, 1 );
  1146. k->getNachrichtEncrypted( (char *)&aktiv, 1 );
  1147. d.schreibe( (char *)&x, 4 );
  1148. d.schreibe( (char *)&y, 4 );
  1149. d.schreibe( (char *)&breite, 4 );
  1150. d.schreibe( (char *)&height, 4 );
  1151. d.schreibe( (char *)&richtung, 1 );
  1152. d.schreibe( (char *)&maxAbklingzeit, 4 );
  1153. d.schreibe( (char *)&drehend, 1 );
  1154. d.schreibe( (char *)&aktiv, 1 );
  1155. d.close();
  1156. k->sendeEncrypted( "\1", 1 );
  1157. return 1;
  1158. }
  1159. else
  1160. {
  1161. err = "Fehler beim schreiben von ";
  1162. err += tmpPf.getText();
  1163. return 0;
  1164. }
  1165. }
  1166. case 0x1B: // Change Trigger data
  1167. {
  1168. k->sendeEncrypted( "\1", 1 );
  1169. int id;
  1170. k->getNachrichtEncrypted( (char *)&id, 4 );
  1171. Text tmpPf = pfad.getText();
  1172. tmpPf += "/trigger/";
  1173. tmpPf += id;
  1174. tmpPf += ".t";
  1175. Datei d;
  1176. d.setDatei( tmpPf );
  1177. if( d.open( Datei::Style::schreiben ) )
  1178. {
  1179. k->sendeEncrypted( "\1", 1 );
  1180. __int64 size;
  1181. k->getNachrichtEncrypted( (char *)&size, 8 );
  1182. char buffer[ 2048 ];
  1183. while( size > 0 )
  1184. {
  1185. k->getNachrichtEncrypted( buffer, MIN( 2048, (int)size ) );
  1186. d.schreibe( buffer, MIN( 2048, (int)size ) );
  1187. size -= 2048;
  1188. }
  1189. d.close();
  1190. k->sendeEncrypted( "\1", 1 );
  1191. return 1;
  1192. }
  1193. else
  1194. {
  1195. err = "Fehler beim schreiben von ";
  1196. err += tmpPf.getText();
  1197. return 0;
  1198. }
  1199. }
  1200. case 0x1C: // Change Variable data
  1201. {
  1202. k->sendeEncrypted( "\1", 1 );
  1203. unsigned char len;
  1204. k->getNachrichtEncrypted( (char *)&len, 1 );
  1205. char *originalName = new char[ len + 1 ];
  1206. k->getNachrichtEncrypted( (char *)&originalName, len );
  1207. originalName[ len ] = 0;
  1208. Text tmpPf = pfad.getText();
  1209. tmpPf += "/variable/";
  1210. tmpPf += originalName;
  1211. tmpPf += ".v";
  1212. Datei d;
  1213. d.setDatei( tmpPf );
  1214. k->getNachrichtEncrypted( (char *)&len, 1 );
  1215. char *name = new char[ len + 1 ];
  1216. k->getNachrichtEncrypted( (char *)&name, len );
  1217. name[ len ] = 0;
  1218. if( !Text( name ).istGleich( originalName ) )
  1219. {
  1220. Text tmpPf = pfad.getText();
  1221. tmpPf += "/variable/";
  1222. tmpPf += name;
  1223. tmpPf += ".v";
  1224. if( !d.umbenennen( tmpPf ) )
  1225. {
  1226. err = "Fehler beim schreiben von ";
  1227. err += tmpPf.getText();
  1228. return 0;
  1229. }
  1230. }
  1231. if( d.open( Datei::Style::schreiben ) )
  1232. {
  1233. k->sendeEncrypted( "\1", 1 );
  1234. __int64 size;
  1235. k->getNachrichtEncrypted( (char *)&size, 8 );
  1236. char buffer[ 2048 ];
  1237. while( size > 0 )
  1238. {
  1239. k->getNachrichtEncrypted( buffer, MIN( 2048, (int)size ) );
  1240. d.schreibe( buffer, MIN( 2048, (int)size ) );
  1241. size -= 2048;
  1242. }
  1243. d.close();
  1244. k->sendeEncrypted( "\1", 1 );
  1245. }
  1246. else
  1247. {
  1248. err = "Fehler beim schreiben von ";
  1249. err += tmpPf.getText();
  1250. return 0;
  1251. }
  1252. delete[]name;
  1253. delete[]originalName;
  1254. }
  1255. case 0x1D: // Add Bariere
  1256. {
  1257. Text tmpPf = pfad.getText();
  1258. tmpPf += "/bariere/";
  1259. int id = 0;
  1260. while( true )
  1261. {
  1262. if( !DateiExistiert( tmpPf + id + ".b" ) )
  1263. break;
  1264. id++;
  1265. }
  1266. tmpPf += id;
  1267. tmpPf += ".b";
  1268. Datei d;
  1269. d.setDatei( tmpPf );
  1270. if( d.open( Datei::Style::schreiben ) )
  1271. {
  1272. k->sendeEncrypted( "\1", 1 );
  1273. k->sendeEncrypted( (char*)&id, 4 );
  1274. int x;
  1275. int y;
  1276. int breite;
  1277. int height;
  1278. int style;
  1279. int verschiebungWeite;
  1280. int autoSchaltungMaxTime;
  1281. int team;
  1282. k->getNachrichtEncrypted( (char *)&x, 4 );
  1283. k->getNachrichtEncrypted( (char *)&y, 4 );
  1284. k->getNachrichtEncrypted( (char *)&breite, 4 );
  1285. k->getNachrichtEncrypted( (char *)&height, 4 );
  1286. k->getNachrichtEncrypted( (char *)&style, 4 );
  1287. k->getNachrichtEncrypted( (char *)&verschiebungWeite, 4 );
  1288. k->getNachrichtEncrypted( (char *)&autoSchaltungMaxTime, 4 );
  1289. k->getNachrichtEncrypted( (char *)&team, 4 );
  1290. d.schreibe( (char *)&x, 4 );
  1291. d.schreibe( (char *)&y, 4 );
  1292. d.schreibe( (char *)&breite, 4 );
  1293. d.schreibe( (char *)&height, 4 );
  1294. d.schreibe( (char *)&style, 4 );
  1295. d.schreibe( (char *)&verschiebungWeite, 4 );
  1296. d.schreibe( (char *)&autoSchaltungMaxTime, 4 );
  1297. d.schreibe( (char *)&team, 4 );
  1298. d.close();
  1299. k->sendeEncrypted( "\1", 1 );
  1300. return 1;
  1301. }
  1302. else
  1303. {
  1304. err = "Fehler beim schreiben von ";
  1305. err += tmpPf.getText();
  1306. return 0;
  1307. }
  1308. }
  1309. case 0x1E: // Add Base
  1310. {
  1311. Text tmpPf = pfad.getText();
  1312. tmpPf += "/base/";
  1313. int id = 0;
  1314. while( true )
  1315. {
  1316. if( !DateiExistiert( tmpPf + id + ".b" ) )
  1317. break;
  1318. id++;
  1319. }
  1320. tmpPf += id;
  1321. tmpPf += ".b";
  1322. Datei d;
  1323. d.setDatei( tmpPf );
  1324. if( d.open( Datei::Style::schreiben ) )
  1325. {
  1326. k->sendeEncrypted( "\1", 1 );
  1327. k->sendeEncrypted( (char*)&id, 4 );
  1328. int x;
  1329. int y;
  1330. int breite;
  1331. int height;
  1332. int maxTime;
  1333. int team;
  1334. bool showTimer;
  1335. int timerX;
  1336. int timerY;
  1337. int timerFarbe;
  1338. k->getNachrichtEncrypted( (char *)&x, 4 );
  1339. k->getNachrichtEncrypted( (char *)&y, 4 );
  1340. k->getNachrichtEncrypted( (char *)&breite, 4 );
  1341. k->getNachrichtEncrypted( (char *)&height, 4 );
  1342. k->getNachrichtEncrypted( (char *)&maxTime, 4 );
  1343. k->getNachrichtEncrypted( (char *)&team, 4 );
  1344. k->getNachrichtEncrypted( (char *)&showTimer, 1 );
  1345. k->getNachrichtEncrypted( (char *)&timerX, 4 );
  1346. k->getNachrichtEncrypted( (char *)&timerY, 4 );
  1347. k->getNachrichtEncrypted( (char *)&timerFarbe, 4 );
  1348. d.schreibe( (char *)&x, 4 );
  1349. d.schreibe( (char *)&y, 4 );
  1350. d.schreibe( (char *)&breite, 4 );
  1351. d.schreibe( (char *)&height, 4 );
  1352. d.schreibe( (char *)&maxTime, 4 );
  1353. d.schreibe( (char *)&team, 4 );
  1354. d.schreibe( (char *)&showTimer, 1 );
  1355. d.schreibe( (char *)&timerX, 4 );
  1356. d.schreibe( (char *)&timerY, 4 );
  1357. d.schreibe( (char *)&timerFarbe, 4 );
  1358. d.close();
  1359. k->sendeEncrypted( "\1", 1 );
  1360. return 1;
  1361. }
  1362. else
  1363. {
  1364. err = "Fehler beim schreiben von ";
  1365. err += tmpPf.getText();
  1366. return 0;
  1367. }
  1368. }
  1369. case 0x1F: // Add Drop
  1370. {
  1371. Text tmpPf = pfad.getText();
  1372. tmpPf += "/drop/";
  1373. int id = 0;
  1374. while( true )
  1375. {
  1376. if( !DateiExistiert( tmpPf + id + ".d" ) )
  1377. break;
  1378. id++;
  1379. }
  1380. tmpPf += id;
  1381. tmpPf += ".d";
  1382. Datei d;
  1383. d.setDatei( tmpPf );
  1384. if( d.open( Datei::Style::schreiben ) )
  1385. {
  1386. k->sendeEncrypted( "\1", 1 );
  1387. k->sendeEncrypted( (char *)&id, 4 );
  1388. int minX;
  1389. int minY;
  1390. int maxX;
  1391. int maxY;
  1392. int maxTime;
  1393. int numDrops;
  1394. float wahrscheinlichkeit[ ITEMANZAHL ];
  1395. unsigned char len;
  1396. k->getNachrichtEncrypted( (char *)&minX, 4 );
  1397. k->getNachrichtEncrypted( (char *)&minY, 4 );
  1398. k->getNachrichtEncrypted( (char *)&maxX, 4 );
  1399. k->getNachrichtEncrypted( (char *)&maxY, 4 );
  1400. k->getNachrichtEncrypted( (char *)&maxTime, 4 );
  1401. k->getNachrichtEncrypted( (char *)&numDrops, 4 );
  1402. for( int i = 0; i < ITEMANZAHL; i++ )
  1403. k->getNachrichtEncrypted( (char *)&wahrscheinlichkeit[ i ], 4 );
  1404. k->getNachrichtEncrypted( (char *)&len, 1 );
  1405. char *name = new char[ len ];
  1406. k->getNachrichtEncrypted( name, len );
  1407. d.schreibe( (char *)&minX, 4 );
  1408. d.schreibe( (char *)&minY, 4 );
  1409. d.schreibe( (char *)&maxX, 4 );
  1410. d.schreibe( (char *)&maxY, 4 );
  1411. d.schreibe( (char *)&maxTime, 4 );
  1412. d.schreibe( (char *)&numDrops, 4 );
  1413. for( int i = 0; i < ITEMANZAHL; i++ )
  1414. d.schreibe( (char *)&wahrscheinlichkeit[ i ], 4 );
  1415. d.schreibe( (char *)&len, 1 );
  1416. d.schreibe( name, len );
  1417. delete[]name;
  1418. d.close();
  1419. k->sendeEncrypted( "\1", 1 );
  1420. return 1;
  1421. }
  1422. else
  1423. {
  1424. err = "Fehler beim schreiben von ";
  1425. err += tmpPf.getText();
  1426. return 0;
  1427. }
  1428. }
  1429. case 0x20: // Add Schalter
  1430. {
  1431. Text tmpPf = pfad.getText();
  1432. tmpPf += "/schalter/";
  1433. int id = 0;
  1434. while( true )
  1435. {
  1436. if( !DateiExistiert( tmpPf + id + ".s" ) )
  1437. break;
  1438. id++;
  1439. }
  1440. tmpPf += id;
  1441. tmpPf += ".s";
  1442. Datei d;
  1443. d.setDatei( tmpPf );
  1444. if( d.open( Datei::Style::schreiben ) )
  1445. {
  1446. k->sendeEncrypted( "\1", 1 );
  1447. k->sendeEncrypted( (char *)&id, 4 );
  1448. int x;
  1449. int y;
  1450. int breite;
  1451. int height;
  1452. bool aktive;
  1453. k->getNachrichtEncrypted( (char *)&x, 4 );
  1454. k->getNachrichtEncrypted( (char *)&y, 4 );
  1455. k->getNachrichtEncrypted( (char *)&breite, 4 );
  1456. k->getNachrichtEncrypted( (char *)&height, 4 );
  1457. k->getNachrichtEncrypted( (char *)&aktive, 1 );
  1458. d.schreibe( (char *)&x, 4 );
  1459. d.schreibe( (char *)&y, 4 );
  1460. d.schreibe( (char *)&breite, 4 );
  1461. d.schreibe( (char *)&height, 4 );
  1462. d.schreibe( (char *)&aktive, 1 );
  1463. d.close();
  1464. k->sendeEncrypted( "\1", 1 );
  1465. return 1;
  1466. }
  1467. else
  1468. {
  1469. err = "Fehler beim schreiben von ";
  1470. err += tmpPf.getText();
  1471. return 0;
  1472. }
  1473. }
  1474. case 0x21: // Add Schiene
  1475. {
  1476. Text tmpPf = pfad.getText();
  1477. tmpPf += "/schiene/";
  1478. int id = 0;
  1479. while( true )
  1480. {
  1481. if( !DateiExistiert( tmpPf + id + ".s" ) )
  1482. break;
  1483. id++;
  1484. }
  1485. tmpPf += id;
  1486. tmpPf += ".s";
  1487. Datei d;
  1488. d.setDatei( tmpPf );
  1489. if( d.open( Datei::Style::schreiben ) )
  1490. {
  1491. k->sendeEncrypted( "\1", 1 );
  1492. k->sendeEncrypted( (char *)&id, 4 );
  1493. int x;
  1494. int y;
  1495. int breite;
  1496. int height;
  1497. k->getNachrichtEncrypted( (char *)&x, 4 );
  1498. k->getNachrichtEncrypted( (char *)&y, 4 );
  1499. k->getNachrichtEncrypted( (char *)&breite, 4 );
  1500. k->getNachrichtEncrypted( (char *)&height, 4 );
  1501. d.schreibe( (char *)&x, 4 );
  1502. d.schreibe( (char *)&y, 4 );
  1503. d.schreibe( (char *)&breite, 4 );
  1504. d.schreibe( (char *)&height, 4 );
  1505. d.close();
  1506. k->sendeEncrypted( "\1", 1 );
  1507. return 1;
  1508. }
  1509. else
  1510. {
  1511. err = "Fehler beim schreiben von ";
  1512. err += tmpPf.getText();
  1513. return 0;
  1514. }
  1515. }
  1516. case 0x22: // Add Timer
  1517. {
  1518. Text tmpPf = pfad.getText();
  1519. tmpPf += "/timer/";
  1520. int id = 0;
  1521. while( true )
  1522. {
  1523. if( !DateiExistiert( tmpPf + id + ".t" ) )
  1524. break;
  1525. id++;
  1526. }
  1527. tmpPf += id;
  1528. tmpPf += ".t";
  1529. Datei d;
  1530. d.setDatei( tmpPf );
  1531. if( d.open( Datei::Style::schreiben ) )
  1532. {
  1533. k->sendeEncrypted( "\1", 1 );
  1534. k->sendeEncrypted( (char *)&id, 4 );
  1535. int x;
  1536. int y;
  1537. int maxZeit;
  1538. bool sichtbar;
  1539. bool autoWiederhohlung;
  1540. bool runns;
  1541. int farbe;
  1542. unsigned char len;
  1543. k->getNachrichtEncrypted( (char *)&x, 4 );
  1544. k->getNachrichtEncrypted( (char *)&y, 4 );
  1545. k->getNachrichtEncrypted( (char *)&maxZeit, 4 );
  1546. k->getNachrichtEncrypted( (char *)&sichtbar, 1 );
  1547. k->getNachrichtEncrypted( (char *)&autoWiederhohlung, 1 );
  1548. k->getNachrichtEncrypted( (char *)&runns, 1 );
  1549. k->getNachrichtEncrypted( (char *)&farbe, 4 );
  1550. k->getNachrichtEncrypted( (char *)&len, 1 );
  1551. char *name = new char[ len ];
  1552. k->getNachrichtEncrypted( name, len );
  1553. d.schreibe( (char *)&x, 4 );
  1554. d.schreibe( (char *)&y, 4 );
  1555. d.schreibe( (char *)&maxZeit, 4 );
  1556. d.schreibe( (char *)&sichtbar, 1 );
  1557. d.schreibe( (char *)&autoWiederhohlung, 1 );
  1558. d.schreibe( (char *)&runns, 1 );
  1559. d.schreibe( (char *)&farbe, 4 );
  1560. d.schreibe( (char *)&len, 1 );
  1561. d.schreibe( name, len );
  1562. delete[]name;
  1563. d.close();
  1564. k->sendeEncrypted( "\1", 1 );
  1565. return 1;
  1566. }
  1567. else
  1568. {
  1569. err = "Fehler beim schreiben von ";
  1570. err += tmpPf.getText();
  1571. return 0;
  1572. }
  1573. }
  1574. case 0x23: // Add Tunnel
  1575. {
  1576. Text tmpPf = pfad.getText();
  1577. tmpPf += "/tunnel/";
  1578. int id = 0;
  1579. while( true )
  1580. {
  1581. if( !DateiExistiert( tmpPf + id + ".t" ) )
  1582. break;
  1583. id++;
  1584. }
  1585. tmpPf += id;
  1586. tmpPf += ".t";
  1587. Datei d;
  1588. d.setDatei( tmpPf );
  1589. if( d.open( Datei::Style::schreiben ) )
  1590. {
  1591. k->sendeEncrypted( "\1", 1 );
  1592. k->sendeEncrypted( (char *)&id, 4 );
  1593. int x;
  1594. int y;
  1595. int breite;
  1596. int height;
  1597. int zielX;
  1598. int zielY;
  1599. bool aktiv;
  1600. k->getNachrichtEncrypted( (char *)&x, 4 );
  1601. k->getNachrichtEncrypted( (char *)&y, 4 );
  1602. k->getNachrichtEncrypted( (char *)&breite, 4 );
  1603. k->getNachrichtEncrypted( (char *)&height, 4 );
  1604. k->getNachrichtEncrypted( (char *)&zielX, 4 );
  1605. k->getNachrichtEncrypted( (char *)&zielY, 4 );
  1606. k->getNachrichtEncrypted( (char *)&aktiv, 1 );
  1607. d.schreibe( (char *)&x, 4 );
  1608. d.schreibe( (char *)&y, 4 );
  1609. d.schreibe( (char *)&breite, 4 );
  1610. d.schreibe( (char *)&height, 4 );
  1611. d.schreibe( (char *)&zielX, 4 );
  1612. d.schreibe( (char *)&zielY, 4 );
  1613. d.schreibe( (char *)&aktiv, 1 );
  1614. d.close();
  1615. k->sendeEncrypted( "\1", 1 );
  1616. return 1;
  1617. }
  1618. else
  1619. {
  1620. err = "Fehler beim schreiben von ";
  1621. err += tmpPf.getText();
  1622. return 0;
  1623. }
  1624. }
  1625. case 0x24: // Add Umlenkung
  1626. {
  1627. Text tmpPf = pfad.getText();
  1628. tmpPf += "/umlenkung/";
  1629. int id = 0;
  1630. while( true )
  1631. {
  1632. if( !DateiExistiert( tmpPf + id + ".u" ) )
  1633. break;
  1634. id++;
  1635. }
  1636. tmpPf += id;
  1637. tmpPf += ".u";
  1638. Datei d;
  1639. d.setDatei( tmpPf );
  1640. if( d.open( Datei::Style::schreiben ) )
  1641. {
  1642. k->sendeEncrypted( "\1", 1 );
  1643. k->sendeEncrypted( (char *)&id, 4 );
  1644. int x;
  1645. int y;
  1646. int breite;
  1647. int height;
  1648. char richtung;
  1649. int maxAbklingzeit;
  1650. bool drehend;
  1651. bool aktiv;
  1652. k->getNachrichtEncrypted( (char *)&x, 4 );
  1653. k->getNachrichtEncrypted( (char *)&y, 4 );
  1654. k->getNachrichtEncrypted( (char *)&breite, 4 );
  1655. k->getNachrichtEncrypted( (char *)&height, 4 );
  1656. k->getNachrichtEncrypted( (char *)&richtung, 1 );
  1657. k->getNachrichtEncrypted( (char *)&maxAbklingzeit, 4 );
  1658. k->getNachrichtEncrypted( (char *)&drehend, 1 );
  1659. k->getNachrichtEncrypted( (char *)&aktiv, 1 );
  1660. d.schreibe( (char *)&x, 4 );
  1661. d.schreibe( (char *)&y, 4 );
  1662. d.schreibe( (char *)&breite, 4 );
  1663. d.schreibe( (char *)&height, 4 );
  1664. d.schreibe( (char *)&richtung, 1 );
  1665. d.schreibe( (char *)&maxAbklingzeit, 4 );
  1666. d.schreibe( (char *)&drehend, 1 );
  1667. d.schreibe( (char *)&aktiv, 1 );
  1668. d.close();
  1669. k->sendeEncrypted( "\1", 1 );
  1670. return 1;
  1671. }
  1672. else
  1673. {
  1674. err = "Fehler beim schreiben von ";
  1675. err += tmpPf.getText();
  1676. return 0;
  1677. }
  1678. }
  1679. case 0x25: // Add Trigger
  1680. {
  1681. Text tmpPf = pfad.getText();
  1682. tmpPf += "/trigger/";
  1683. int id = 0;
  1684. while( true )
  1685. {
  1686. if( !DateiExistiert( tmpPf + id + ".t" ) )
  1687. break;
  1688. id++;
  1689. }
  1690. tmpPf += id;
  1691. tmpPf += ".t";
  1692. Datei d;
  1693. d.setDatei( tmpPf );
  1694. if( d.open( Datei::Style::schreiben ) )
  1695. {
  1696. k->sendeEncrypted( "\1", 1 );
  1697. __int64 size;
  1698. k->getNachrichtEncrypted( (char *)&size, 8 );
  1699. char buffer[ 2048 ];
  1700. while( size > 0 )
  1701. {
  1702. k->getNachrichtEncrypted( buffer, MIN( 2048, (int)size ) );
  1703. d.schreibe( buffer, MIN( 2048, (int)size ) );
  1704. size -= 2048;
  1705. }
  1706. d.close();
  1707. k->sendeEncrypted( "\1", 1 );
  1708. return 1;
  1709. }
  1710. else
  1711. {
  1712. err = "Fehler beim schreiben von ";
  1713. err += tmpPf.getText();
  1714. return 0;
  1715. }
  1716. }
  1717. case 0x26: // Add Variable
  1718. {
  1719. k->sendeEncrypted( "\1", 1 );
  1720. unsigned char len;
  1721. k->getNachrichtEncrypted( (char *)&len, 1 );
  1722. char *name = new char[ len + 1 ];
  1723. k->getNachrichtEncrypted( (char *)&name, len );
  1724. Text tmpPf = pfad.getText();
  1725. tmpPf += "/variable/";
  1726. tmpPf += name;
  1727. tmpPf += ".v";
  1728. Datei d;
  1729. if( d.existiert() )
  1730. {
  1731. err = "Die Variable existiert bereits";
  1732. return 0;
  1733. }
  1734. d.setDatei( tmpPf );
  1735. name[ len ] = 0;
  1736. if( d.open( Datei::Style::schreiben ) )
  1737. {
  1738. k->sendeEncrypted( "\1", 1 );
  1739. __int64 size;
  1740. k->getNachrichtEncrypted( (char *)&size, 8 );
  1741. char buffer[ 2048 ];
  1742. while( size > 0 )
  1743. {
  1744. k->getNachrichtEncrypted( buffer, MIN( 2048, (int)size ) );
  1745. d.schreibe( buffer, MIN( 2048, (int)size ) );
  1746. size -= 2048;
  1747. }
  1748. d.close();
  1749. k->sendeEncrypted( "\1", 1 );
  1750. }
  1751. else
  1752. {
  1753. err = "Fehler beim schreiben von ";
  1754. err += tmpPf.getText();
  1755. return 0;
  1756. }
  1757. delete[]name;
  1758. }
  1759. case 0x27: // Remove Bariere
  1760. {
  1761. k->sendeEncrypted( "\1", 1 );
  1762. int id;
  1763. k->getNachrichtEncrypted( (char *)&id, 4 );
  1764. Text tmpPf = pfad.getText();
  1765. tmpPf += "/bariere/";
  1766. tmpPf += id;
  1767. tmpPf += ".b";
  1768. if( DateiRemove( tmpPf ) )
  1769. {
  1770. k->sendeEncrypted( "\1", 1 );
  1771. }
  1772. else
  1773. {
  1774. err = "Fehler beim löschen von ";
  1775. err += tmpPf.getText();
  1776. return 0;
  1777. }
  1778. }
  1779. case 0x28: // Remove Base
  1780. {
  1781. k->sendeEncrypted( "\1", 1 );
  1782. int id;
  1783. k->getNachrichtEncrypted( (char *)&id, 4 );
  1784. Text tmpPf = pfad.getText();
  1785. tmpPf += "/base/";
  1786. tmpPf += id;
  1787. tmpPf += ".b";
  1788. if( DateiRemove( tmpPf ) )
  1789. {
  1790. k->sendeEncrypted( "\1", 1 );
  1791. }
  1792. else
  1793. {
  1794. err = "Fehler beim löschen von ";
  1795. err += tmpPf.getText();
  1796. return 0;
  1797. }
  1798. }
  1799. case 0x29: // Remove Drop
  1800. {
  1801. k->sendeEncrypted( "\1", 1 );
  1802. int id;
  1803. k->getNachrichtEncrypted( (char *)&id, 4 );
  1804. Text tmpPf = pfad.getText();
  1805. tmpPf += "/drop/";
  1806. tmpPf += id;
  1807. tmpPf += ".d";
  1808. if( DateiRemove( tmpPf ) )
  1809. {
  1810. k->sendeEncrypted( "\1", 1 );
  1811. }
  1812. else
  1813. {
  1814. err = "Fehler beim löschen von ";
  1815. err += tmpPf.getText();
  1816. return 0;
  1817. }
  1818. }
  1819. case 0x2A: // Remove Schalter
  1820. {
  1821. k->sendeEncrypted( "\1", 1 );
  1822. int id;
  1823. k->getNachrichtEncrypted( (char *)&id, 4 );
  1824. Text tmpPf = pfad.getText();
  1825. tmpPf += "/schalter/";
  1826. tmpPf += id;
  1827. tmpPf += ".s";
  1828. if( DateiRemove( tmpPf ) )
  1829. {
  1830. k->sendeEncrypted( "\1", 1 );
  1831. }
  1832. else
  1833. {
  1834. err = "Fehler beim löschen von ";
  1835. err += tmpPf.getText();
  1836. return 0;
  1837. }
  1838. }
  1839. case 0x2B: // Remove Schiene
  1840. {
  1841. k->sendeEncrypted( "\1", 1 );
  1842. int id;
  1843. k->getNachrichtEncrypted( (char *)&id, 4 );
  1844. Text tmpPf = pfad.getText();
  1845. tmpPf += "/schiene/";
  1846. tmpPf += id;
  1847. tmpPf += ".s";
  1848. if( DateiRemove( tmpPf ) )
  1849. {
  1850. k->sendeEncrypted( "\1", 1 );
  1851. }
  1852. else
  1853. {
  1854. err = "Fehler beim löschen von ";
  1855. err += tmpPf.getText();
  1856. return 0;
  1857. }
  1858. }
  1859. case 0x2C: // Remove Timer
  1860. {
  1861. k->sendeEncrypted( "\1", 1 );
  1862. int id;
  1863. k->getNachrichtEncrypted( (char *)&id, 4 );
  1864. Text tmpPf = pfad.getText();
  1865. tmpPf += "/timer/";
  1866. tmpPf += id;
  1867. tmpPf += ".t";
  1868. if( DateiRemove( tmpPf ) )
  1869. {
  1870. k->sendeEncrypted( "\1", 1 );
  1871. }
  1872. else
  1873. {
  1874. err = "Fehler beim löschen von ";
  1875. err += tmpPf.getText();
  1876. return 0;
  1877. }
  1878. }
  1879. case 0x2D: // Remove Tunnel
  1880. {
  1881. k->sendeEncrypted( "\1", 1 );
  1882. int id;
  1883. k->getNachrichtEncrypted( (char *)&id, 4 );
  1884. Text tmpPf = pfad.getText();
  1885. tmpPf += "/tunnel/";
  1886. tmpPf += id;
  1887. tmpPf += ".t";
  1888. if( DateiRemove( tmpPf ) )
  1889. {
  1890. k->sendeEncrypted( "\1", 1 );
  1891. }
  1892. else
  1893. {
  1894. err = "Fehler beim löschen von ";
  1895. err += tmpPf.getText();
  1896. return 0;
  1897. }
  1898. }
  1899. case 0x2E: // Remove Umlenkung
  1900. {
  1901. k->sendeEncrypted( "\1", 1 );
  1902. int id;
  1903. k->getNachrichtEncrypted( (char *)&id, 4 );
  1904. Text tmpPf = pfad.getText();
  1905. tmpPf += "/umlenkung/";
  1906. tmpPf += id;
  1907. tmpPf += ".u";
  1908. if( DateiRemove( tmpPf ) )
  1909. {
  1910. k->sendeEncrypted( "\1", 1 );
  1911. }
  1912. else
  1913. {
  1914. err = "Fehler beim löschen von ";
  1915. err += tmpPf.getText();
  1916. return 0;
  1917. }
  1918. }
  1919. case 0x2F: // Remove Trigger
  1920. {
  1921. k->sendeEncrypted( "\1", 1 );
  1922. int id;
  1923. k->getNachrichtEncrypted( (char *)&id, 4 );
  1924. Text tmpPf = pfad.getText();
  1925. tmpPf += "/trigger/";
  1926. tmpPf += id;
  1927. tmpPf += ".t";
  1928. if( DateiRemove( tmpPf ) )
  1929. {
  1930. k->sendeEncrypted( "\1", 1 );
  1931. }
  1932. else
  1933. {
  1934. err = "Fehler beim löschen von ";
  1935. err += tmpPf.getText();
  1936. return 0;
  1937. }
  1938. }
  1939. case 0x30: // Remove Variable
  1940. {
  1941. k->sendeEncrypted( "\1", 1 );
  1942. unsigned char len;
  1943. k->getNachrichtEncrypted( (char *)&len, 1 );
  1944. char *name = new char[ len + 1 ];
  1945. k->getNachrichtEncrypted( name, len );
  1946. name[ len ] = 0;
  1947. Text tmpPf = pfad.getText();
  1948. tmpPf += "/variable/";
  1949. tmpPf += name;
  1950. tmpPf += ".v";
  1951. delete[]name;
  1952. if( DateiRemove( tmpPf ) )
  1953. {
  1954. k->sendeEncrypted( "\1", 1 );
  1955. }
  1956. else
  1957. {
  1958. err = "Fehler beim löschen von ";
  1959. err += tmpPf.getText();
  1960. return 0;
  1961. }
  1962. }
  1963. default:
  1964. err = "Unbekannte Nachricht. Error Code: " __FILE__ ":";
  1965. err += __LINE__;
  1966. return 0;
  1967. }
  1968. return 0;
  1969. }
  1970. // constant
  1971. char *Editor::getLetzterFehler() const
  1972. {
  1973. return err;
  1974. }
  1975. // Reference Counting
  1976. ESEditorV *Editor::getThis()
  1977. {
  1978. ref++;
  1979. return this;
  1980. }
  1981. ESEditorV *Editor::release()
  1982. {
  1983. ref--;
  1984. if( !ref )
  1985. delete this;
  1986. return 0;
  1987. }
  1988. // privat
  1989. bool Editor::createSitzung()
  1990. {
  1991. DateiRemove( pfad );
  1992. Text pf = pfad.getText();
  1993. pf.remove( pf.getLength() - 6, pf.getLength() );
  1994. pf += "map/server/sts.ltgd";
  1995. int spielerAnzahl;
  1996. int teamAnzahl;
  1997. Datei d;
  1998. d.setDatei( pf );
  1999. if( !d.existiert() || d.istOrdner() )
  2000. {
  2001. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim lesen von ";
  2002. err += pf;
  2003. err += ". Fehler Code: " __FILE__ ":";
  2004. err += __LINE__;
  2005. err += "\n";
  2006. return 0;
  2007. }
  2008. d.open( Datei::Style::lesen );
  2009. d.lese( (char *)&spielerAnzahl, 4 );
  2010. d.lese( (char *)&teamAnzahl, 4 );
  2011. d.close();
  2012. pf = pfad.getText();
  2013. pf.remove( pf.getLength() - 6, pf.getLength() );
  2014. pf += "map/server/data.map";
  2015. d.setDatei( pf.getText() );
  2016. if( d.open( Datei::Style::lesen ) )
  2017. {
  2018. // map size
  2019. pf = pfad.getText();
  2020. pf += "/size";
  2021. Datei s;
  2022. s.setDatei( pf.getText() );
  2023. if( !s.open( Datei::Style::schreiben ) )
  2024. {
  2025. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim lesen von ";
  2026. err += pf;
  2027. err += ". Fehler Code: " __FILE__ ":";
  2028. err += __LINE__;
  2029. err += "\n";
  2030. }
  2031. __int64 size = 0;
  2032. d.lese( (char *)&size, 8 );
  2033. s.schreibe( (char *)&size, 8 );
  2034. s.close();
  2035. // teams
  2036. pf = pfad.getText();
  2037. pf += "/team/";
  2038. for( int i = 0; i < teamAnzahl; i++ )
  2039. {
  2040. Text tmpPf = pf.getText();
  2041. tmpPf += i;
  2042. tmpPf += ".t";
  2043. int maxWbZeit;
  2044. int punkte;
  2045. d.lese( (char *)&maxWbZeit, 4 );
  2046. d.lese( (char *)&punkte, 4 );
  2047. Datei t;
  2048. t.setDatei( tmpPf );
  2049. t.erstellen();
  2050. if( !t.open( Datei::Style::schreiben ) )
  2051. {
  2052. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von ";
  2053. err += tmpPf;
  2054. err += ". Fehler Code: " __FILE__ ":";
  2055. err += __LINE__;
  2056. err += "\n";
  2057. }
  2058. t.schreibe( (char *)&maxWbZeit, 4 );
  2059. t.schreibe( (char *)&punkte, 4 );
  2060. t.close();
  2061. }
  2062. // spieler
  2063. pf = pfad.getText();
  2064. pf += "/player/";
  2065. for( int i = 0; i < spielerAnzahl; i++ )
  2066. {
  2067. Text tmpPf = pf.getText();
  2068. tmpPf += i;
  2069. tmpPf += ".p";
  2070. int spawnX;
  2071. int spawnY;
  2072. d.lese( (char *)&spawnX, 4 );
  2073. d.lese( (char *)&spawnY, 4 );
  2074. Datei s;
  2075. s.setDatei( tmpPf );
  2076. s.erstellen();
  2077. if( !s.open( Datei::Style::schreiben ) )
  2078. {
  2079. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von ";
  2080. err += tmpPf;
  2081. err += ". Fehler Code: " __FILE__ ":";
  2082. err += __LINE__;
  2083. err += "\n";
  2084. }
  2085. s.schreibe( (char *)&spawnX, 4 );
  2086. s.schreibe( (char *)&spawnY, 4 );
  2087. s.close();
  2088. }
  2089. // barieren
  2090. pf = pfad.getText();
  2091. pf += "/bariere/";
  2092. int anz;
  2093. d.lese( (char *)&anz, 4 );
  2094. for( int i = 0; i < anz; i++ )
  2095. {
  2096. int id;
  2097. d.lese( (char *)&id, 4 );
  2098. Text tmpPf = pf.getText();
  2099. tmpPf += id;
  2100. tmpPf += ".b";
  2101. char buffer[ 32 ];
  2102. d.lese( buffer, 32 );
  2103. Datei s;
  2104. s.setDatei( tmpPf );
  2105. s.erstellen();
  2106. if( !s.open( Datei::Style::schreiben ) )
  2107. {
  2108. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von ";
  2109. err += tmpPf;
  2110. err += ". Fehler Code: " __FILE__ ":";
  2111. err += __LINE__;
  2112. err += "\n";
  2113. }
  2114. s.schreibe( buffer, 32 );
  2115. s.close();
  2116. }
  2117. // basen
  2118. pf = pfad.getText();
  2119. pf += "/base/";
  2120. d.lese( (char *)&anz, 4 );
  2121. for( int i = 0; i < anz; i++ )
  2122. {
  2123. int id;
  2124. d.lese( (char *)&id, 4 );
  2125. Text tmpPf = pf.getText();
  2126. tmpPf += id;
  2127. tmpPf += ".b";
  2128. char buffer[ 24 ];
  2129. d.lese( buffer, 24 );
  2130. Datei s;
  2131. s.setDatei( tmpPf );
  2132. s.erstellen();
  2133. if( !s.open( Datei::Style::schreiben ) )
  2134. {
  2135. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von ";
  2136. err += tmpPf;
  2137. err += ". Fehler Code: " __FILE__ ":";
  2138. err += __LINE__;
  2139. err += "\n";
  2140. }
  2141. s.schreibe( buffer, 24 );
  2142. s.close();
  2143. }
  2144. // drops
  2145. pf = pfad.getText();
  2146. pf += "/drop/";
  2147. d.lese( (char *)&anz, 4 );
  2148. for( int i = 0; i < anz; i++ )
  2149. {
  2150. int id;
  2151. d.lese( (char *)&id, 4 );
  2152. Text tmpPf = pf.getText();
  2153. tmpPf += id;
  2154. tmpPf += ".d";
  2155. char buffer[ 96 ];
  2156. d.lese( buffer, 96 );
  2157. Datei s;
  2158. s.setDatei( tmpPf );
  2159. s.erstellen();
  2160. if( !s.open( Datei::Style::schreiben ) )
  2161. {
  2162. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von ";
  2163. err += tmpPf;
  2164. err += ". Fehler Code: " __FILE__ ":";
  2165. err += __LINE__;
  2166. err += "\n";
  2167. }
  2168. s.schreibe( buffer, 96 );
  2169. unsigned char len;
  2170. d.lese( (char *)&len, 1 );
  2171. char *name = new char[ (int)len + 1 ];
  2172. d.lese( name, len );
  2173. name[ (int)len ] = 0;
  2174. s.schreibe( (char *)&len, 1 );
  2175. s.schreibe( (char *)&name, len );
  2176. delete[] name;
  2177. s.close();
  2178. }
  2179. // schalter
  2180. pf = pfad.getText();
  2181. pf += "/schalter/";
  2182. d.lese( (char *)&anz, 4 );
  2183. for( int i = 0; i < anz; i++ )
  2184. {
  2185. int id;
  2186. d.lese( (char *)&id, 4 );
  2187. Text tmpPf = pf.getText();
  2188. tmpPf += id;
  2189. tmpPf += ".s";
  2190. char buffer[ 17 ];
  2191. d.lese( buffer, 17 );
  2192. Datei s;
  2193. s.setDatei( tmpPf );
  2194. s.erstellen();
  2195. if( !s.open( Datei::Style::schreiben ) )
  2196. {
  2197. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von ";
  2198. err += tmpPf;
  2199. err += ". Fehler Code: " __FILE__ ":";
  2200. err += __LINE__;
  2201. err += "\n";
  2202. }
  2203. s.schreibe( buffer, 17 );
  2204. s.close();
  2205. }
  2206. // schiene
  2207. pf = pfad.getText();
  2208. pf += "/schiene/";
  2209. d.lese( (char *)&anz, 4 );
  2210. for( int i = 0; i < anz; i++ )
  2211. {
  2212. int id;
  2213. d.lese( (char *)&id, 4 );
  2214. Text tmpPf = pf.getText();
  2215. tmpPf += id;
  2216. tmpPf += ".s";
  2217. char buffer[ 16 ];
  2218. d.lese( buffer, 16 );
  2219. Datei s;
  2220. s.setDatei( tmpPf );
  2221. s.erstellen();
  2222. if( !s.open( Datei::Style::schreiben ) )
  2223. {
  2224. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von ";
  2225. err += tmpPf;
  2226. err += ". Fehler Code: " __FILE__ ":";
  2227. err += __LINE__;
  2228. err += "\n";
  2229. }
  2230. s.schreibe( buffer, 16 );
  2231. s.close();
  2232. }
  2233. // timer
  2234. pf = pfad.getText();
  2235. pf += "/timer/";
  2236. d.lese( (char *)&anz, 4 );
  2237. for( int i = 0; i < anz; i++ )
  2238. {
  2239. int id;
  2240. d.lese( (char *)&id, 4 );
  2241. Text tmpPf = pf.getText();
  2242. tmpPf += id;
  2243. tmpPf += ".t";
  2244. char buffer[ 19 ];
  2245. d.lese( buffer, 19 );
  2246. Datei s;
  2247. s.setDatei( tmpPf );
  2248. s.erstellen();
  2249. if( !s.open( Datei::Style::schreiben ) )
  2250. {
  2251. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von ";
  2252. err += tmpPf;
  2253. err += ". Fehler Code: " __FILE__ ":";
  2254. err += __LINE__;
  2255. err += "\n";
  2256. }
  2257. s.schreibe( buffer, 19 );
  2258. unsigned char len;
  2259. d.lese( (char *)&len, 1 );
  2260. char *name = new char[ (int)len + 1 ];
  2261. d.lese( name, len );
  2262. name[ (int)len ] = 0;
  2263. s.schreibe( (char *)&len, 1 );
  2264. s.schreibe( (char *)&name, len );
  2265. delete[] name;
  2266. s.close();
  2267. }
  2268. // tunnel
  2269. pf = pfad.getText();
  2270. pf += "/tunnel/";
  2271. d.lese( (char *)&anz, 4 );
  2272. for( int i = 0; i < anz; i++ )
  2273. {
  2274. int id;
  2275. d.lese( (char *)&id, 4 );
  2276. Text tmpPf = pf.getText();
  2277. tmpPf += id;
  2278. tmpPf += ".t";
  2279. char buffer[ 25 ];
  2280. d.lese( buffer, 25 );
  2281. Datei s;
  2282. s.setDatei( tmpPf );
  2283. s.erstellen();
  2284. if( !s.open( Datei::Style::schreiben ) )
  2285. {
  2286. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von ";
  2287. err += tmpPf;
  2288. err += ". Fehler Code: " __FILE__ ":";
  2289. err += __LINE__;
  2290. err += "\n";
  2291. }
  2292. s.schreibe( buffer, 25 );
  2293. s.close();
  2294. }
  2295. // umlenkung
  2296. pf = pfad.getText();
  2297. pf += "/umlenkung/";
  2298. d.lese( (char *)&anz, 4 );
  2299. for( int i = 0; i < anz; i++ )
  2300. {
  2301. int id;
  2302. d.lese( (char *)&id, 4 );
  2303. Text tmpPf = pf.getText();
  2304. tmpPf += id;
  2305. tmpPf += ".u";
  2306. char buffer[ 23 ];
  2307. d.lese( buffer, 23 );
  2308. Datei s;
  2309. s.setDatei( tmpPf );
  2310. s.erstellen();
  2311. if( !s.open( Datei::Style::schreiben ) )
  2312. {
  2313. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von ";
  2314. err += tmpPf;
  2315. err += ". Fehler Code: " __FILE__ ":";
  2316. err += __LINE__;
  2317. err += "\n";
  2318. }
  2319. s.schreibe( buffer, 23 );
  2320. s.close();
  2321. }
  2322. // trigger
  2323. MapReader mr;
  2324. pf = pfad.getText();
  2325. pf += "/trigger/";
  2326. d.lese( (char *)&anz, 4 );
  2327. for( int i = 0; i < anz; i++ )
  2328. {
  2329. int id;
  2330. d.lese( (char *)&id, 4 );
  2331. Text tmpPf = pf.getText();
  2332. tmpPf += id;
  2333. tmpPf += ".t";
  2334. Datei s;
  2335. s.setDatei( tmpPf );
  2336. s.erstellen();
  2337. if( !s.open( Datei::Style::schreiben ) )
  2338. {
  2339. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von ";
  2340. err += tmpPf;
  2341. err += ". Fehler Code: " __FILE__ ":";
  2342. err += __LINE__;
  2343. err += "\n";
  2344. }
  2345. unsigned char len;
  2346. d.lese( (char *)&len, 1 );
  2347. char *name = new char[ (int)len + 1 ];
  2348. d.lese( name, len );
  2349. name[ (int)len ] = 0;
  2350. s.schreibe( (char *)&len, 1 );
  2351. s.schreibe( (char *)&name, len );
  2352. delete[] name;
  2353. int ereignisAnzahl;
  2354. int bedingungAnzahl;
  2355. int aktionAnzahl;
  2356. d.lese( (char *)&ereignisAnzahl, 4 );
  2357. d.lese( (char *)&bedingungAnzahl, 4 );
  2358. d.lese( (char *)&aktionAnzahl, 4 );
  2359. s.schreibe( (char *)&ereignisAnzahl, 4 );
  2360. s.schreibe( (char *)&bedingungAnzahl, 4 );
  2361. s.schreibe( (char *)&aktionAnzahl, 4 );
  2362. for( int j = 0; j < ereignisAnzahl; j++ )
  2363. {
  2364. int typ;
  2365. d.lese( (char *)&typ, 4 );
  2366. s.schreibe( (char *)&typ, 4 );
  2367. }
  2368. for( int j = 0; j < bedingungAnzahl; j++ )
  2369. mr.writeAktion( mr.readAktion( d ), s );
  2370. for( int j = 0; j < aktionAnzahl; j++ )
  2371. mr.writeAktion( mr.readAktion( d ), s );
  2372. s.close();
  2373. }
  2374. // variable
  2375. pf = pfad.getText();
  2376. pf += "/variable/";
  2377. d.lese( (char *)&anz, 4 );
  2378. for( int i = 0; i < anz; i++ )
  2379. {
  2380. char len;
  2381. d.lese( (char *)&len, 1 );
  2382. char *name = new char[ (int)len + 1 ];
  2383. d.lese( name, len );
  2384. name[ (int)len ] = 0;
  2385. Text tmpPf = pf.getText();
  2386. tmpPf += name;
  2387. tmpPf += ".v";
  2388. delete[] name;
  2389. Datei s;
  2390. s.setDatei( tmpPf );
  2391. s.erstellen();
  2392. if( !s.open( Datei::Style::schreiben ) )
  2393. {
  2394. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim schreiben von ";
  2395. err += tmpPf;
  2396. err += ". Fehler Code: " __FILE__ ":";
  2397. err += __LINE__;
  2398. err += "\n";
  2399. }
  2400. char typ;
  2401. d.lese( &typ, 1 );
  2402. char def;
  2403. d.lese( &def, 1 );
  2404. s.schreibe( &typ, 1 );
  2405. s.schreibe( &def, 1 );
  2406. if( def )
  2407. {
  2408. if( typ == BOOLEAN || typ == TASTE )
  2409. {
  2410. char v;
  2411. d.lese( &v, 1 );
  2412. s.schreibe( &v, 1 );
  2413. }
  2414. else if( typ == STRING || typ == RICHTUNG )
  2415. {
  2416. char len;
  2417. d.lese( (char *)&len, 1 );
  2418. char *str = new char[ (int)len + 1 ];
  2419. d.lese( str, len );
  2420. s.schreibe( &len, 1 );
  2421. s.schreibe( str, len );
  2422. delete[] str;
  2423. }
  2424. else if( typ != NICHTS )
  2425. {
  2426. int v;
  2427. d.lese( (char *)&v, 4 );
  2428. s.schreibe( (char *)&v, 4 );
  2429. }
  2430. }
  2431. s.close();
  2432. }
  2433. d.close();
  2434. }
  2435. else
  2436. {
  2437. err = "Sitzung konnte nicht korrekt erstellt werden. Fehler beim lesen von ";
  2438. err += pf;
  2439. err += ". Fehler Code: " __FILE__ ":";
  2440. err += __LINE__;
  2441. pf = pfad.getText();
  2442. pf += "/empty.file";
  2443. DateiPfadErstellen( pf );
  2444. DateiRemove( pf );
  2445. }
  2446. if( !err.getLength() )
  2447. return 1;
  2448. else
  2449. return 0;
  2450. return 0;
  2451. }
  2452. bool Editor::saveSitzung()
  2453. {
  2454. Text pf = pfad.getText();
  2455. pf.remove( pf.getLength() - 6, pf.getLength() );
  2456. pf += "map/server/sts.ltgd";
  2457. int spielerAnzahl;
  2458. int teamAnzahl;
  2459. Datei d;
  2460. d.setDatei( pf );
  2461. if( !d.existiert() || d.istOrdner() )
  2462. {
  2463. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim lesen von ";
  2464. err += pf;
  2465. err += ". Fehler Code: " __FILE__ ":";
  2466. err += __LINE__;
  2467. err += "\n";
  2468. return 0;
  2469. }
  2470. d.open( Datei::Style::lesen );
  2471. d.lese( (char *)&spielerAnzahl, 4 );
  2472. d.lese( (char *)&teamAnzahl, 4 );
  2473. d.close();
  2474. pf = pfad.getText();
  2475. pf.remove( pf.getLength() - 6, pf.getLength() );
  2476. pf += "map/server/data_tmp.map";
  2477. d.setDatei( pf.getText() );
  2478. if( d.open( Datei::Style::schreiben ) )
  2479. {
  2480. pf = pfad.getText();
  2481. pf += "/size";
  2482. Datei s;
  2483. s.setDatei( pf.getText() );
  2484. if( !s.open( Datei::Style::schreiben ) )
  2485. {
  2486. err += "Sitzung konnte nicht korrekt erstellt werden. Fehler beim lesen von ";
  2487. err += pf;
  2488. err += ". Fehler Code: " __FILE__ ":";
  2489. err += __LINE__;
  2490. err += "\n";
  2491. }
  2492. __int64 size = 0;
  2493. s.lese( (char *)&size, 8 );
  2494. d.schreibe( (char *)&size, 8 );
  2495. s.close();
  2496. for( int i = 0; i < teamAnzahl; i++ )
  2497. {
  2498. Text tmpPf = pfad + "/team/";
  2499. tmpPf += i;
  2500. tmpPf += ".t";
  2501. Datei r;
  2502. r.setDatei( tmpPf );
  2503. if( r.open( Datei::Style::lesen ) )
  2504. {
  2505. int maxWbZeit;
  2506. int punkte;
  2507. r.lese( (char *)&maxWbZeit, 4 );
  2508. r.lese( (char *)&punkte, 4 );
  2509. d.schreibe( (char *)&maxWbZeit, 4 );
  2510. d.schreibe( (char *)&punkte, 4 );
  2511. r.close();
  2512. }
  2513. else
  2514. {
  2515. err = "Fehler beim Lesen von ";
  2516. err += tmpPf.getText();
  2517. err += ". Fehler Code: " __FILE__ ":";
  2518. err += __LINE__;
  2519. d.close();
  2520. d.remove();
  2521. return 0;
  2522. }
  2523. }
  2524. for( int i = 0; i < spielerAnzahl; i++ )
  2525. {
  2526. Text tmpPf = pfad + "/player/";
  2527. tmpPf += i;
  2528. tmpPf += ".p";
  2529. Datei r;
  2530. r.setDatei( tmpPf );
  2531. if( r.open( Datei::Style::lesen ) )
  2532. {
  2533. int spawnX;
  2534. int spawnY;
  2535. r.lese( (char *)&spawnX, 4 );
  2536. r.lese( (char *)&spawnY, 4 );
  2537. d.schreibe( (char *)&spawnX, 4 );
  2538. d.schreibe( (char *)&spawnY, 4 );
  2539. r.close();
  2540. }
  2541. else
  2542. {
  2543. err = "Fehler beim Lesen von ";
  2544. err += tmpPf.getText();
  2545. err += ". Fehler Code: " __FILE__ ":";
  2546. err += __LINE__;
  2547. d.close();
  2548. d.remove();
  2549. return 0;
  2550. }
  2551. }
  2552. pf = pfad.getText();
  2553. pf += "/bariere";
  2554. Datei obj;
  2555. obj.setDatei( pf );
  2556. RCArray<Text> *objList = obj.getDateiListe();
  2557. if( objList )
  2558. {
  2559. int anz = objList->getEintragAnzahl();
  2560. d.schreibe( (char *)&anz, 4 );
  2561. for( auto objPf = objList->getIterator(); objPf && objPf._; objPf++ )
  2562. {
  2563. Text tmp = pf.getText();
  2564. tmp += "/";
  2565. tmp += objPf->getText();
  2566. Datei r;
  2567. r.setDatei( tmp );
  2568. if( r.open( Datei::Style::lesen ) )
  2569. {
  2570. int id = (int)*objPf.val();
  2571. d.schreibe( (char *)&id, 4 );
  2572. char buffer[ 32 ];
  2573. r.lese( buffer, 32 );
  2574. d.schreibe( buffer, 32 );
  2575. r.close();
  2576. }
  2577. else
  2578. {
  2579. err = "Fehler beim Lesen von ";
  2580. err += tmp.getText();
  2581. err = ". Fehler Code: " __FILE__ ":";
  2582. err += __LINE__;
  2583. d.close();
  2584. d.remove();
  2585. objList->release();
  2586. return 0;
  2587. }
  2588. }
  2589. objList->release();
  2590. }
  2591. else
  2592. d.schreibe( "\0\0\0\0", 4 );
  2593. pf = pfad.getText();
  2594. pf += "/base";
  2595. obj.setDatei( pf );
  2596. objList = obj.getDateiListe();
  2597. if( objList )
  2598. {
  2599. int anz = objList->getEintragAnzahl();
  2600. d.schreibe( (char *)&anz, 4 );
  2601. for( auto objPf = objList->getIterator(); objPf && objPf._; objPf++ )
  2602. {
  2603. Text tmp = pf.getText();
  2604. tmp += "/";
  2605. tmp += objPf->getText();
  2606. Datei r;
  2607. r.setDatei( tmp );
  2608. if( r.open( Datei::Style::lesen ) )
  2609. {
  2610. int id = (int)*objPf.val();
  2611. d.schreibe( (char *)&id, 4 );
  2612. char buffer[ 24 ];
  2613. r.lese( buffer, 24 );
  2614. d.schreibe( buffer, 24 );
  2615. r.close();
  2616. }
  2617. else
  2618. {
  2619. err = "Fehler beim Lesen von ";
  2620. err += tmp.getText();
  2621. err = ". Fehler Code: " __FILE__ ":";
  2622. err += __LINE__;
  2623. d.close();
  2624. d.remove();
  2625. objList->release();
  2626. return 0;
  2627. }
  2628. }
  2629. objList->release();
  2630. }
  2631. else
  2632. d.schreibe( "\0\0\0\0", 4 );
  2633. pf = pfad.getText();
  2634. pf += "/drop";
  2635. obj.setDatei( pf );
  2636. objList = obj.getDateiListe();
  2637. if( objList )
  2638. {
  2639. int anz = objList->getEintragAnzahl();
  2640. d.schreibe( (char *)&anz, 4 );
  2641. for( auto objPf = objList->getIterator(); objPf && objPf._; objPf++ )
  2642. {
  2643. Text tmp = pf.getText();
  2644. tmp += "/";
  2645. tmp += objPf->getText();
  2646. Datei r;
  2647. r.setDatei( tmp );
  2648. if( r.open( Datei::Style::lesen ) )
  2649. {
  2650. int id = (int)*objPf.val();
  2651. d.schreibe( (char *)&id, 4 );
  2652. char buffer[ 96 ];
  2653. r.lese( buffer, 96 );
  2654. d.schreibe( buffer, 96 );
  2655. unsigned char len;
  2656. r.lese( (char *)&len, 1 );
  2657. char *name = new char[ (int)len + 1 ];
  2658. r.lese( name, len );
  2659. name[ (int)len ] = 0;
  2660. d.schreibe( (char *)&len, 1 );
  2661. d.schreibe( (char *)&name, len );
  2662. delete[] name;
  2663. r.close();
  2664. }
  2665. else
  2666. {
  2667. err = "Fehler beim Lesen von ";
  2668. err += tmp.getText();
  2669. err = ". Fehler Code: " __FILE__ ":";
  2670. err += __LINE__;
  2671. d.close();
  2672. d.remove();
  2673. objList->release();
  2674. return 0;
  2675. }
  2676. }
  2677. objList->release();
  2678. }
  2679. else
  2680. d.schreibe( "\0\0\0\0", 4 );
  2681. pf = pfad.getText();
  2682. pf += "/schalter";
  2683. obj.setDatei( pf );
  2684. objList = obj.getDateiListe();
  2685. if( objList )
  2686. {
  2687. int anz = objList->getEintragAnzahl();
  2688. d.schreibe( (char *)&anz, 4 );
  2689. for( auto objPf = objList->getIterator(); objPf && objPf._; objPf++ )
  2690. {
  2691. Text tmp = pf.getText();
  2692. tmp += "/";
  2693. tmp += objPf->getText();
  2694. Datei r;
  2695. r.setDatei( tmp );
  2696. if( r.open( Datei::Style::lesen ) )
  2697. {
  2698. int id = (int)*objPf.val();
  2699. d.schreibe( (char *)&id, 4 );
  2700. char buffer[ 17 ];
  2701. r.lese( buffer, 17 );
  2702. d.schreibe( buffer, 17 );
  2703. r.close();
  2704. }
  2705. else
  2706. {
  2707. err = "Fehler beim Lesen von ";
  2708. err += tmp.getText();
  2709. err = ". Fehler Code: " __FILE__ ":";
  2710. err += __LINE__;
  2711. d.close();
  2712. d.remove();
  2713. objList->release();
  2714. return 0;
  2715. }
  2716. }
  2717. objList->release();
  2718. }
  2719. else
  2720. d.schreibe( "\0\0\0\0", 4 );
  2721. pf = pfad.getText();
  2722. pf += "/schiene";
  2723. obj.setDatei( pf );
  2724. objList = obj.getDateiListe();
  2725. if( objList )
  2726. {
  2727. int anz = objList->getEintragAnzahl();
  2728. d.schreibe( (char *)&anz, 4 );
  2729. for( auto objPf = objList->getIterator(); objPf && objPf._; objPf++ )
  2730. {
  2731. Text tmp = pf.getText();
  2732. tmp += "/";
  2733. tmp += objPf->getText();
  2734. Datei r;
  2735. r.setDatei( tmp );
  2736. if( r.open( Datei::Style::lesen ) )
  2737. {
  2738. int id = (int)*objPf.val();
  2739. d.schreibe( (char *)&id, 4 );
  2740. char buffer[ 16 ];
  2741. r.lese( buffer, 16 );
  2742. d.schreibe( buffer, 16 );
  2743. r.close();
  2744. }
  2745. else
  2746. {
  2747. err = "Fehler beim Lesen von ";
  2748. err += tmp.getText();
  2749. err = ". Fehler Code: " __FILE__ ":";
  2750. err += __LINE__;
  2751. d.close();
  2752. d.remove();
  2753. objList->release();
  2754. return 0;
  2755. }
  2756. }
  2757. objList->release();
  2758. }
  2759. else
  2760. d.schreibe( "\0\0\0\0", 4 );
  2761. pf = pfad.getText();
  2762. pf += "/timer";
  2763. obj.setDatei( pf );
  2764. objList = obj.getDateiListe();
  2765. if( objList )
  2766. {
  2767. int anz = objList->getEintragAnzahl();
  2768. d.schreibe( (char *)&anz, 4 );
  2769. for( auto objPf = objList->getIterator(); objPf && objPf._; objPf++ )
  2770. {
  2771. Text tmp = pf.getText();
  2772. tmp += "/";
  2773. tmp += objPf->getText();
  2774. Datei r;
  2775. r.setDatei( tmp );
  2776. if( r.open( Datei::Style::lesen ) )
  2777. {
  2778. int id = (int)*objPf.val();
  2779. d.schreibe( (char *)&id, 4 );
  2780. char buffer[ 19 ];
  2781. r.lese( buffer, 19 );
  2782. d.schreibe( buffer, 19 );
  2783. unsigned char len;
  2784. r.lese( (char *)&len, 1 );
  2785. char *name = new char[ (int)len + 1 ];
  2786. r.lese( name, len );
  2787. name[ (int)len ] = 0;
  2788. d.schreibe( (char *)&len, 1 );
  2789. d.schreibe( (char *)&name, len );
  2790. delete[] name;
  2791. r.close();
  2792. }
  2793. else
  2794. {
  2795. err = "Fehler beim Lesen von ";
  2796. err += tmp.getText();
  2797. err = ". Fehler Code: " __FILE__ ":";
  2798. err += __LINE__;
  2799. d.close();
  2800. d.remove();
  2801. objList->release();
  2802. return 0;
  2803. }
  2804. }
  2805. objList->release();
  2806. }
  2807. else
  2808. d.schreibe( "\0\0\0\0", 4 );
  2809. pf = pfad.getText();
  2810. pf += "/tunnel";
  2811. obj.setDatei( pf );
  2812. objList = obj.getDateiListe();
  2813. if( objList )
  2814. {
  2815. int anz = objList->getEintragAnzahl();
  2816. d.schreibe( (char *)&anz, 4 );
  2817. for( auto objPf = objList->getIterator(); objPf && objPf._; objPf++ )
  2818. {
  2819. Text tmp = pf.getText();
  2820. tmp += "/";
  2821. tmp += objPf->getText();
  2822. Datei r;
  2823. r.setDatei( tmp );
  2824. if( r.open( Datei::Style::lesen ) )
  2825. {
  2826. int id = (int)*objPf.val();
  2827. d.schreibe( (char *)&id, 4 );
  2828. char buffer[ 25 ];
  2829. r.lese( buffer, 25 );
  2830. d.schreibe( buffer, 25 );
  2831. r.close();
  2832. }
  2833. else
  2834. {
  2835. err = "Fehler beim Lesen von ";
  2836. err += tmp.getText();
  2837. err = ". Fehler Code: " __FILE__ ":";
  2838. err += __LINE__;
  2839. d.close();
  2840. d.remove();
  2841. objList->release();
  2842. return 0;
  2843. }
  2844. }
  2845. objList->release();
  2846. }
  2847. else
  2848. d.schreibe( "\0\0\0\0", 4 );
  2849. pf = pfad.getText();
  2850. pf += "/umlenkung";
  2851. obj.setDatei( pf );
  2852. objList = obj.getDateiListe();
  2853. if( objList )
  2854. {
  2855. int anz = objList->getEintragAnzahl();
  2856. d.schreibe( (char *)&anz, 4 );
  2857. for( auto objPf = objList->getIterator(); objPf && objPf._; objPf++ )
  2858. {
  2859. Text tmp = pf.getText();
  2860. tmp += "/";
  2861. tmp += objPf->getText();
  2862. Datei r;
  2863. r.setDatei( tmp );
  2864. if( r.open( Datei::Style::lesen ) )
  2865. {
  2866. int id = (int)*objPf.val();
  2867. d.schreibe( (char *)&id, 4 );
  2868. char buffer[ 23 ];
  2869. r.lese( buffer, 23 );
  2870. d.schreibe( buffer, 23 );
  2871. r.close();
  2872. }
  2873. else
  2874. {
  2875. err = "Fehler beim Lesen von ";
  2876. err += tmp.getText();
  2877. err = ". Fehler Code: " __FILE__ ":";
  2878. err += __LINE__;
  2879. d.close();
  2880. d.remove();
  2881. objList->release();
  2882. return 0;
  2883. }
  2884. }
  2885. objList->release();
  2886. }
  2887. else
  2888. d.schreibe( "\0\0\0\0", 4 );
  2889. pf = pfad.getText();
  2890. pf += "/trigger";
  2891. MapReader mr;
  2892. obj.setDatei( pf );
  2893. objList = obj.getDateiListe();
  2894. if( objList )
  2895. {
  2896. int anz = objList->getEintragAnzahl();
  2897. d.schreibe( (char *)&anz, 4 );
  2898. for( auto objPf = objList->getIterator(); objPf && objPf._; objPf++ )
  2899. {
  2900. Text tmp = pf.getText();
  2901. tmp += "/";
  2902. tmp += objPf->getText();
  2903. Datei r;
  2904. r.setDatei( tmp );
  2905. if( r.open( Datei::Style::lesen ) )
  2906. {
  2907. int id = (int)*objPf.val();
  2908. d.schreibe( (char *)&id, 4 );
  2909. unsigned char len;
  2910. r.lese( (char *)&len, 1 );
  2911. char *name = new char[ (int)len + 1 ];
  2912. r.lese( name, len );
  2913. name[ (int)len ] = 0;
  2914. d.schreibe( (char *)&len, 1 );
  2915. d.schreibe( (char *)&name, len );
  2916. delete[] name;
  2917. int ereignisAnzahl;
  2918. int bedingungAnzahl;
  2919. int aktionAnzahl;
  2920. r.lese( (char *)&ereignisAnzahl, 4 );
  2921. r.lese( (char *)&bedingungAnzahl, 4 );
  2922. r.lese( (char *)&aktionAnzahl, 4 );
  2923. d.schreibe( (char *)&ereignisAnzahl, 4 );
  2924. d.schreibe( (char *)&bedingungAnzahl, 4 );
  2925. d.schreibe( (char *)&aktionAnzahl, 4 );
  2926. for( int j = 0; j < ereignisAnzahl; j++ )
  2927. {
  2928. int typ;
  2929. r.lese( (char *)&typ, 4 );
  2930. d.schreibe( (char *)&typ, 4 );
  2931. }
  2932. for( int j = 0; j < bedingungAnzahl; j++ )
  2933. mr.writeAktion( mr.readAktion( r ), d );
  2934. for( int j = 0; j < aktionAnzahl; j++ )
  2935. mr.writeAktion( mr.readAktion( r ), d );
  2936. r.close();
  2937. }
  2938. else
  2939. {
  2940. err = "Fehler beim Lesen von ";
  2941. err += tmp.getText();
  2942. err = ". Fehler Code: " __FILE__ ":";
  2943. err += __LINE__;
  2944. d.close();
  2945. d.remove();
  2946. objList->release();
  2947. return 0;
  2948. }
  2949. }
  2950. objList->release();
  2951. }
  2952. else
  2953. d.schreibe( "\0\0\0\0", 4 );
  2954. pf = pfad.getText();
  2955. pf += "/variable";
  2956. obj.setDatei( pf );
  2957. objList = obj.getDateiListe();
  2958. if( objList )
  2959. {
  2960. int anz = objList->getEintragAnzahl();
  2961. d.schreibe( (char *)&anz, 4 );
  2962. for( auto objPf = objList->getIterator(); objPf && objPf._; objPf++ )
  2963. {
  2964. Text tmp = pf.getText();
  2965. tmp += "/";
  2966. tmp += objPf->getText();
  2967. Datei r;
  2968. r.setDatei( tmp );
  2969. if( r.open( Datei::Style::lesen ) )
  2970. {
  2971. unsigned char len = (unsigned char)(objPf->getLength() - 2);
  2972. d.schreibe( (char *)&len, 1 );
  2973. d.schreibe( objPf->getText(), len );
  2974. char typ;
  2975. r.lese( &typ, 1 );
  2976. char def;
  2977. r.lese( &def, 1 );
  2978. d.schreibe( &typ, 1 );
  2979. d.schreibe( &def, 1 );
  2980. if( def )
  2981. {
  2982. if( typ == BOOLEAN || typ == TASTE )
  2983. {
  2984. char v;
  2985. r.lese( &v, 1 );
  2986. d.schreibe( &v, 1 );
  2987. }
  2988. else if( typ == STRING || typ == RICHTUNG )
  2989. {
  2990. char len;
  2991. r.lese( (char *)&len, 1 );
  2992. char *str = new char[ (int)len + 1 ];
  2993. r.lese( str, len );
  2994. d.schreibe( &len, 1 );
  2995. d.schreibe( str, len );
  2996. delete[] str;
  2997. }
  2998. else if( typ != NICHTS )
  2999. {
  3000. int v;
  3001. r.lese( (char *)&v, 4 );
  3002. d.schreibe( (char *)&v, 4 );
  3003. }
  3004. }
  3005. r.close();
  3006. }
  3007. else
  3008. {
  3009. err = "Fehler beim Lesen von ";
  3010. err += tmp.getText();
  3011. err = ". Fehler Code: " __FILE__ ":";
  3012. err += __LINE__;
  3013. d.close();
  3014. d.remove();
  3015. objList->release();
  3016. return 0;
  3017. }
  3018. }
  3019. objList->release();
  3020. }
  3021. else
  3022. d.schreibe( "\0\0\0\0", 4 );
  3023. pf = pfad.getText();
  3024. pf.remove( pf.getLength() - 6, pf.getLength() );
  3025. pf += "map/server/data.map";
  3026. d.close();
  3027. if( !DateiRemove( pf ) || !d.umbenennen( pf ) )
  3028. {
  3029. err = "Fehler beim Übernehmen der Änderungen. Fehler Code: " __FILE__ ":";
  3030. err += __LINE__;
  3031. return 0;
  3032. }
  3033. }
  3034. else
  3035. {
  3036. err = "Fehler beim Speichern der Änderungen (Server). Fehler Code: " __FILE__ ":";
  3037. err += __LINE__;
  3038. return 0;
  3039. }
  3040. pf = pfad.getText();
  3041. pf.remove( pf.getLength() - 6, pf.getLength() );
  3042. pf += "map/client/map/data/data.map";
  3043. Datei d2;
  3044. d2.setDatei( pf.getText() );
  3045. if( d2.open( Datei::Style::schreiben ) && d.open( Datei::Style::lesen ) )
  3046. {
  3047. __int64 size = d.getSize();
  3048. char *buffer = new char[ 2048 ];
  3049. while( size > 0 )
  3050. {
  3051. int len = (int)( size > 2048 ? 2048 : size );
  3052. d.lese( buffer, len );
  3053. d2.schreibe( buffer, len );
  3054. size -= len;
  3055. }
  3056. delete[] buffer;
  3057. d.close();
  3058. d2.close();
  3059. }
  3060. else
  3061. {
  3062. err = "Fehler beim Speichern der Änderungen (Client). Fehler Code: " __FILE__ ":";
  3063. err += __LINE__;
  3064. return 0;
  3065. }
  3066. DateiRemove( pfad.getText() );
  3067. return 1;
  3068. }