Advertisement
Guest User

Untitled

a guest
Nov 14th, 2010
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.56 KB | None | 0 0
  1. #include <a_samp>
  2. #include <a_vehicles>
  3. #include <dini>
  4. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  5.  
  6. #define MaxJobs 20
  7. #define MaxCheckpoints 70
  8. #define ENTGELD 1975
  9. #define TRINKGELD "ON"
  10. #define TRINKGELDBETRAG 90 // die random() Fuktion wählt eine Zufallszahl aus die unter dem TRINKGELDBETRAG liegt.
  11.  
  12. new Missions = 0;
  13. new JobID[MAX_PLAYERS];
  14. new JobCar[MaxJobs];
  15. new Checkpoint[MAX_PLAYERS];
  16. new bool:mission[MAX_PLAYERS];
  17. new checkpoints = 0;
  18. new InProcess[MAX_PLAYERS];
  19. new bool:pJobVehicle[MAX_PLAYERS];
  20.  
  21. forward IsAJobCar(carid);
  22. forward missionfailed(playerid);
  23. forward LoadMissions();
  24. forward CheckCar(playerid);
  25.  
  26.  
  27.  
  28. #define COLOR_LIGHTGREEN 0x86FF59FF
  29. #define COLOR_RED 0xFF0000FF
  30. #define COLOR_GREEN 0x00CA00FF
  31.  
  32.  
  33.  
  34.  
  35. enum p_infos
  36. {
  37. Name[64],
  38. Model,
  39. Float:xx,
  40. Float:yy,
  41. Float:zz,
  42. Float:rr,
  43. Color1,
  44. Color2,
  45. Float:Checkpoints_x[MaxCheckpoints],
  46. Float:Checkpoints_y[MaxCheckpoints],
  47. Float:Checkpoints_z[MaxCheckpoints]
  48. };
  49. new JobInfo[MAX_PLAYERS][p_infos];
  50.  
  51. public OnFilterScriptInit()
  52. {
  53. print("|=> Job Creator 1.0 by AlexandA <=|");
  54. LoadMissions();
  55. return 1;
  56. }
  57.  
  58.  
  59. public OnFilterScriptExit()
  60. {
  61. return 1;
  62. }
  63.  
  64. public OnGameModeExit() {
  65. return 1;
  66. }
  67.  
  68. public OnPlayerRequestClass(playerid, classid) {
  69. return 1;
  70. }
  71.  
  72. public OnPlayerRequestSpawn(playerid) {
  73. return 1;
  74. }
  75.  
  76. public OnPlayerConnect(playerid)
  77. {
  78. mission[playerid] = false;
  79. InProcess[playerid] = 0;
  80. Checkpoint[playerid] = 0;
  81. JobID[playerid] = 0;
  82. pJobVehicle[playerid] = false;
  83. return 1;
  84. }
  85.  
  86. public OnPlayerCommandText(playerid, cmdtext[])
  87. {
  88. dcmd(starten, 7, cmdtext);
  89. dcmd(neu, 3, cmdtext);
  90. dcmd(hier, 4, cmdtext);
  91. dcmd(check, 5, cmdtext);
  92. dcmd(fertig, 6, cmdtext);
  93. dcmd(raus, 4, cmdtext);
  94. return 0;
  95. }
  96.  
  97. dcmd_raus(playerid, params[])
  98. {
  99. #pragma unused params
  100. if(pJobVehicle[playerid] == false) { return SendClientMessage(playerid, COLOR_RED, "Diese Aktion kannst du mit diesem Fahrzeug nicht ausführen!"); }
  101. RemovePlayerFromVehicle(playerid);
  102. TogglePlayerControllable(playerid, 1);
  103. OnPlayerExitVehicle(playerid, GetPlayerVehicleID(playerid));
  104. return 1;
  105. }
  106.  
  107. dcmd_fertig(playerid, params[])
  108. {
  109. #pragma unused params
  110. if(InProcess[playerid] != 6) { return SendClientMessage(playerid, COLOR_RED, "Das kannst du noch nicht !"); }
  111. new
  112. Float:x,
  113. Float:y,
  114. Float:z,
  115. string[64],
  116. key[64];
  117. SendClientMessage(playerid, COLOR_RED, "Speicher Daten...");
  118. new File:Liste;
  119. Liste = fopen("Jobs/Liste.txt", io_append);
  120. format(string,sizeof(string), "%s|",JobInfo[Missions][Name]);
  121. fwrite(Liste, string);
  122. fclose(Liste);
  123. format(string, sizeof(string), "Jobs/%s.cfg", JobInfo[Missions][Name]);
  124. dini_IntSet(string, "Model", JobInfo[Missions][Model]);
  125. dini_FloatSet(string, "FX", JobInfo[Missions][xx]);
  126. dini_FloatSet(string, "FY", JobInfo[Missions][yy]);
  127. dini_FloatSet(string, "FZ", JobInfo[Missions][zz]);
  128. dini_FloatSet(string, "FR", JobInfo[Missions][rr]);
  129. dini_IntSet(string, "Color1", JobInfo[Missions][Color1]);
  130. dini_IntSet(string, "Color2", JobInfo[Missions][Color2]);
  131. InProcess[playerid] = 0;
  132. for(new c = 1; c < 60; c++)
  133. {
  134. if(JobInfo[Missions][Checkpoints_x][c] == 0.0) { SendClientMessage(playerid, COLOR_RED, "... Daten wurden erfolgreich gespeichert."); Missions ++; return 1;}
  135. x = JobInfo[Missions][Checkpoints_x][c];
  136. y = JobInfo[Missions][Checkpoints_y][c];
  137. z = JobInfo[Missions][Checkpoints_z][c];
  138. format(key, sizeof(key), "Checkpoint_X[%d]", c);
  139. dini_FloatSet(string, key, x);
  140. format(key, sizeof(key), "Checkpoint_Y[%d]", c);
  141. dini_FloatSet(string, key, y);
  142. format(key, sizeof(key), "Checkpoint_Z[%d]", c);
  143. dini_FloatSet(string, key, z);
  144. }
  145. return 1;
  146. }
  147.  
  148.  
  149.  
  150.  
  151. dcmd_check(playerid, params[])
  152. {
  153. #pragma unused params
  154. if(InProcess[playerid] != 6) { return SendClientMessage(playerid, COLOR_RED, "Das kannst du noch nicht !"); }
  155. checkpoints ++;
  156. new Float:x,Float:z,Float:y;
  157. GetPlayerPos(playerid, x,y,z);
  158. JobInfo[Missions][Checkpoints_x][checkpoints] = x;
  159. JobInfo[Missions][Checkpoints_y][checkpoints] = y;
  160. JobInfo[Missions][Checkpoints_z][checkpoints] = z;
  161. SendClientMessage(playerid, COLOR_RED, "Position wurde gespeichert. Weiter gehts. Wenn du fertig bist tippe /fertig");
  162. return 1;
  163. }
  164. dcmd_hier(playerid, params[])
  165. {
  166. #pragma unused params
  167. if(InProcess[playerid] != 3) { return SendClientMessage(playerid, COLOR_RED, "Das kannst du jetzt nicht!"); }
  168. if(!IsPlayerInVehicle(playerid, JobCar[Missions])) { return SendClientMessage(playerid, COLOR_RED, "Du musst im Auto sitzen."); }
  169. new Float:x,Float:y,Float:z,Float:r;
  170. GetVehiclePos(JobCar[Missions], x,y,z);
  171. GetVehicleZAngle(JobCar[Missions], r);
  172. JobInfo[Missions][xx] = x;
  173. JobInfo[Missions][yy] = y;
  174. JobInfo[Missions][zz] = z;
  175. JobInfo[Missions][rr] = r;
  176. SendClientMessage(playerid, COLOR_LIGHTGREEN, "Als nächstes, gib bitte die Farbe-1 deines Fahrzeuges an.");
  177. InProcess[playerid] = 4;
  178. return 1;
  179. }
  180.  
  181. dcmd_neu(playerid, params[])
  182. {
  183. #pragma unused params
  184. if(!IsPlayerAdmin(playerid)) { return SendClientMessage(playerid, COLOR_RED, "Du musst als Rcon-Admin eingeloggt sein!"); }
  185. if(InProcess[playerid] > 0) { return SendClientMessage(playerid, COLOR_RED, "Du bist schon dabei eine neue Route zu erstellen! Tippe /stop falls du abbrechen möchtest!"); }
  186. InProcess[playerid] = 1;
  187. SendClientMessage(playerid, COLOR_LIGHTGREEN, "Du bist nun dabei einen neuen Beruf zu erstellen.");
  188. SendClientMessage(playerid, COLOR_LIGHTGREEN, "Tippe nun den Namen deines neuen Berufes ein !");
  189. return 1;
  190. }
  191.  
  192.  
  193.  
  194. dcmd_starten(playerid, params[])
  195. {
  196. #pragma unused params
  197. if(mission[playerid] == true) { return SendClientMessage(playerid, COLOR_RED, "Es laeuft schon ein Job!"); }
  198. //if(!IsAJobCar(GetPlayerVehicleID(playerid))) { return SendClientMessage(playerid, COLOR_RED, "Diese Aktion kannst du mit diesem Fahrzeug nicht ausführen!"); }
  199. if(pJobVehicle[playerid] == false) { return SendClientMessage(playerid, COLOR_RED, "Diese Aktion kannst du mit diesem Fahrzeug nicht ausführen!"); }
  200. new string[128];
  201. mission[playerid] = true; Checkpoint[playerid] = 0;
  202. JobID[playerid] = IsAJobCar(GetPlayerVehicleID(playerid));
  203. format(string,sizeof(string), "Du startest nun Beruf: %s", JobInfo[IsAJobCar(GetPlayerVehicleID(playerid))][Name]);
  204. SendClientMessage(playerid, COLOR_RED, string);
  205. SendClientMessage(playerid, COLOR_LIGHTGREEN, "Fahre nun zu den einzelnen Stationen. Sie sind rot auf deiner Karte markiert!");
  206. SetPlayerCheckpoint(playerid,JobInfo[IsAJobCar(GetPlayerVehicleID(playerid))][Checkpoints_x][1],JobInfo[IsAJobCar(GetPlayerVehicleID(playerid))][Checkpoints_y][1],JobInfo[IsAJobCar(GetPlayerVehicleID(playerid))][Checkpoints_z][1], 6.0);
  207. TogglePlayerControllable(playerid, 1);
  208. return 1;
  209. }
  210.  
  211. public OnPlayerStateChange(playerid, newstate, oldstate)
  212. {
  213. if(newstate == PLAYER_STATE_DRIVER)
  214. {
  215. new carid = GetPlayerVehicleID(playerid);
  216. if (IsAJobCar(carid) && mission[playerid] == false)
  217. {
  218. TogglePlayerControllable(playerid, 0);
  219. }
  220. }
  221. return 1;
  222. }
  223. public OnPlayerExitVehicle(playerid, vehicleid)
  224. {
  225. new carid = GetPlayerVehicleID(playerid);
  226. if (IsAJobCar(vehicleid) || IsAJobCar(carid))
  227. {
  228. if(mission[playerid] == true)
  229. {
  230. SendClientMessage(playerid, COLOR_RED, "* Du hast 15 Sekunden um zurueck in das Job-Auto zu steigen !");
  231. SetTimerEx("missionfailed", 15000, 0,"d",playerid); pJobVehicle[playerid] = false;
  232. return 1;
  233. }
  234. else { TogglePlayerControllable(playerid, 1); }
  235. }
  236. return 1;
  237. }
  238.  
  239. public OnPlayerEnterVehicle(playerid, vehicleid)
  240. {
  241. new
  242. string[128];
  243. new carid = GetPlayerVehicleID(playerid);
  244. if(IsAJobCar(vehicleid) || IsAJobCar(carid))
  245. {
  246. if(mission[playerid] == false)
  247. {
  248. format(string, sizeof(string), "Dies ist das Auto von dem Beruf: %s. Tippe /starten um den Beruf auszuführen. Tippe /raus um auszusteigen.",JobInfo[IsAJobCar(vehicleid)][Name]);
  249. SendClientMessage(playerid, COLOR_RED, string); pJobVehicle[playerid] = true; SetTimerEx("CheckCar", 5000, 0, "d", playerid);
  250. }}
  251. return 1;
  252. }
  253.  
  254. public OnPlayerEnterCheckpoint(playerid)
  255. {
  256. if(mission[playerid] == false) { return 1; }
  257. if(!IsPlayerInAnyVehicle(playerid)) {return 1; }
  258. new
  259. trinkgeld,
  260. string[128];
  261. trinkgeld = random(TRINKGELDBETRAG);
  262. Checkpoint[playerid] ++;
  263. SendClientMessage(playerid, COLOR_RED, "Station erreicht!");
  264. if (!strcmp("ON", TRINKGELD , true))
  265. {
  266. GivePlayerMoney(playerid, trinkgeld);
  267. format(string, sizeof(string), "** Du hast %d$ Trinkgeld bekommen!",trinkgeld);
  268. SendClientMessage(playerid, COLOR_GREEN, string);
  269. }
  270. new vehid = GetPlayerVehicleID(playerid);
  271. if(JobInfo[IsAJobCar(vehid)][Checkpoints_x][Checkpoint[playerid]] == 0)
  272. {
  273. DisablePlayerCheckpoint(playerid);
  274. format(string, 128, "Dein Lohn beträgt: %d", ENTGELD);
  275. GivePlayerMoney(playerid, ENTGELD);
  276. SendClientMessage(playerid, COLOR_RED, string);
  277. mission[playerid] = false;
  278. Checkpoint[playerid] = 0;
  279. JobID[playerid] = 0;
  280. SendClientMessage(playerid, COLOR_RED, "Vielen Dank für deine Arbeit.");
  281. SetVehicleToRespawn(GetPlayerVehicleID(playerid));
  282. return 1;
  283. }
  284. SendClientMessage(playerid, COLOR_RED, "Weiter gehts.");
  285. DisablePlayerCheckpoint(playerid);
  286. SetPlayerCheckpoint(playerid, JobInfo[IsAJobCar(GetPlayerVehicleID(playerid))][Checkpoints_x][Checkpoint[playerid]],JobInfo[IsAJobCar(GetPlayerVehicleID(playerid))][Checkpoints_y][Checkpoint[playerid]],JobInfo[IsAJobCar(GetPlayerVehicleID(playerid))][Checkpoints_z][Checkpoint[playerid]], 6.0);
  287. return 1;
  288. }
  289.  
  290. public missionfailed(playerid)
  291. {
  292. if(!IsAJobCar(GetPlayerVehicleID(playerid)))
  293. {
  294. SendClientMessage(playerid, COLOR_RED, "Job abgebrochen!");
  295. DisablePlayerCheckpoint(playerid);
  296. mission[playerid] = false;
  297. Checkpoint[playerid] = 0;
  298. }
  299. return 1;
  300. }
  301.  
  302.  
  303. public OnPlayerText(playerid, text[])
  304. {
  305. if(InProcess[playerid] == 1)
  306. {
  307. if(strlen(text) > 64 ) {
  308. return 0;
  309. }
  310. format(JobInfo[Missions][Name],strlen(text), "%s", text);
  311. SendClientMessage(playerid, COLOR_LIGHTGREEN, "Ok, tippe nun ModelID für dein gewünschtes Job-Fahrzeug ein");
  312. new
  313. string[128];
  314. format(string, sizeof(string),"Jobs/%s.cfg", text);
  315. if(!dini_Exists("Jobs/Liste.txt")) { dini_Create("Jobs/Liste.txt"); }
  316. dini_Create(string);
  317. InProcess[playerid] = 2;
  318. return 0;
  319. }
  320. if(InProcess[playerid] == 2)
  321. {
  322. if(strlen(text) > 3 ) {
  323. return 0;
  324. }
  325.  
  326. new
  327. model = strval(text);
  328. if(model < 400 || model > 611) {
  329. return SendClientMessage(playerid, COLOR_RED, "Bitte nur Zahlen von 400 - 611");
  330. }
  331. new
  332. Float:x,
  333. Float:y,
  334. Float:z;
  335. GetPlayerPos(playerid, x,y,z);
  336. JobCar[Missions] = CreateVehicle(model, x+1.0,y,z+1.0, 0,-1,-1,60000);
  337. PutPlayerInVehicle(playerid, JobCar[Missions], 0);
  338. JobInfo[Missions][Model] = model;
  339. InProcess[playerid] = 3;
  340. }
  341. if(InProcess[playerid] == 3)
  342. {
  343. SendClientMessage(playerid, COLOR_LIGHTGREEN, "Fahre nun zu der Stelle wo das Auto zukünftig spawnen soll und tippe /hier");
  344. return 0;
  345. }
  346. if(InProcess[playerid] == 4)
  347. {
  348. if(strlen(text) > 3 ) {
  349. return 0;
  350. }
  351.  
  352. new
  353. color = strval(text);
  354. if(color < 0 || color > 126) {
  355. return SendClientMessage(playerid, COLOR_RED, "Bitte nur Zahlen von 0 - 126");
  356. }
  357. JobInfo[Missions][Color1] = color;
  358. InProcess[playerid] = 5;
  359. SendClientMessage(playerid, COLOR_LIGHTGREEN, "Und nun, Farbe-2");
  360. return 0;
  361. }
  362. if(InProcess[playerid] == 5)
  363. {
  364. if(strlen(text) > 3 ) {
  365. return 0;
  366. }
  367.  
  368. new
  369. color = strval(text);
  370. if(color < 0 || color > 126) {
  371. return SendClientMessage(playerid, COLOR_RED, "Bitte nur Zahlen von 0 - 126");
  372. }
  373. JobInfo[Missions][Color2] = color;
  374. ChangeVehicleColor(JobCar[Missions], JobInfo[Missions][Color1],JobInfo[Missions][Color2]);
  375. InProcess[playerid] = 6;
  376. SendClientMessage(playerid, COLOR_LIGHTGREEN, "Nun musst du deine Strecke planen und speichern.");
  377. SendClientMessage(playerid, COLOR_LIGHTGREEN, "Für jeden Checkpoint machst du /check");
  378. return 0;
  379. }
  380. return 1;
  381. }
  382.  
  383. public LoadMissions()
  384. {
  385. if(!dini_Exists("Jobs/Liste.txt")) { print ("Not found Liste.txt"); return 1; }
  386. new str[256], Dateien[MaxJobs][32];
  387. new File:file = fopen("Jobs/Liste.txt",io_read);
  388. fread(file, str);
  389. fclose(file);
  390. split(str,Dateien,'|');
  391. for(new d=0; d<sizeof(Dateien); d++)
  392. {
  393. new s[30];
  394. format(JobInfo[Missions][Name],60,"%s",Dateien[d]);
  395. format(s, sizeof(s), "Jobs/%s.cfg",Dateien[d]);
  396. if(!dini_Exists(s)) { printf ("Not found %s", s); return 1; }
  397. //format(JobInfo[Missions][Name], sizeof(JobInfo[Missions][Name]),"%s", Dateien[d]);
  398. //strmid(JobInfo[Missions][Name],s,0,strlen(JobInfo[Missions][Name]),strlen(JobInfo[Missions][Name]));
  399. format(str, sizeof(str),"%s", JobInfo[Missions][Name]);
  400. JobInfo[Missions][Model] = dini_Int(s, "Model");
  401. format(str, sizeof(str),"%d", JobInfo[Missions][Model]);
  402. JobInfo[Missions][xx] = dini_Float(s, "FX");
  403. format(str, sizeof(str),"%f", JobInfo[Missions][xx]);
  404. JobInfo[Missions][yy] = dini_Float(s, "FY");
  405. format(str, sizeof(str),"%f", JobInfo[Missions][yy]);
  406. JobInfo[Missions][zz] = dini_Float(s, "FZ");
  407. format(str, sizeof(str),"%f", JobInfo[Missions][zz]);
  408. JobInfo[Missions][rr] = dini_Float(s, "FR");
  409. format(str, sizeof(str),"%f", JobInfo[Missions][rr]);
  410. JobInfo[Missions][Color1] = dini_Int(s, "Color1");
  411. format(str, sizeof(str),"%d", JobInfo[Missions][Color1]);
  412. JobInfo[Missions][Color2] = dini_Int(s, "Color2");
  413. format(str, sizeof(str),"%d", JobInfo[Missions][Color2]);
  414. for(new c = 1; c < 60; c++)
  415. {
  416. new key[60];
  417. format(key, sizeof(key), "Checkpoint_X[%d]", c);
  418. if(!dini_Isset(s, key)) { }
  419. else
  420. {
  421. JobInfo[Missions][Checkpoints_x][c] = dini_Float(s, key);
  422. format(key, sizeof(key), "Checkpoint_Y[%d]", c);
  423. JobInfo[Missions][Checkpoints_y][c] = dini_Float(s, key);
  424. format(key, sizeof(key), "Checkpoint_Z[%d]", c);
  425. JobInfo[Missions][Checkpoints_z][c] = dini_Float(s, key);
  426. format(str, sizeof(str), "%f,%f,%f", JobInfo[Missions][Checkpoints_x][c],JobInfo[Missions][Checkpoints_y][c],JobInfo[Missions][Checkpoints_z][c]);
  427. }
  428. }
  429. JobCar[Missions] = CreateVehicle(JobInfo[Missions][Model], JobInfo[Missions][xx],JobInfo[Missions][yy],JobInfo[Missions][zz],JobInfo[Missions][rr],JobInfo[Missions][Color1],JobInfo[Missions][Color2],60000);
  430. Missions ++;
  431. }
  432. return 1;
  433. }
  434.  
  435. stock split(const strsrc[], strdest[][], delimiter)
  436. {
  437. new i, li;
  438. new aNum;
  439. new len;
  440. while(i <= strlen(strsrc))
  441. {
  442. if(strsrc[i] == delimiter || i == strlen(strsrc))
  443. {
  444. len = strmid(strdest[aNum], strsrc, li, i, 128);
  445. strdest[aNum][len] = 0;
  446. li = i+1;
  447. aNum++;
  448. }
  449. i++;
  450. }
  451. return 1;
  452. }
  453.  
  454. public IsAJobCar(carid)
  455. {
  456. for(new i = 0; i < MaxJobs; i++)
  457. {
  458. if(carid == JobCar[i])
  459. {
  460. return i;
  461. }
  462. }
  463. return 0;
  464.  
  465. }
  466.  
  467. public CheckCar(playerid)
  468. {
  469. if(IsPlayerInAnyVehicle(playerid)) { return 1;}
  470. else { pJobVehicle[playerid] = false; return 1; }
  471. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement