Advertisement
Guest User

iNRQ-Events | fevents 2.0.3

a guest
Apr 8th, 2015
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.80 KB | None | 0 0
  1. /*
  2. Credits:
  3. SA:MP-Team (a_samp)
  4. Y-Less (SScanf)
  5. Kleiner Opa (ocmd)
  6. BlueG und maddinat0r (MySQL R39-3)
  7. Jeffry (MixString)
  8. Siedler (& tonyalva)[Leitung von RPG-City] (auf eine tolle Idee gebracht, danke euch dafür!)
  9. Tony_Jackson aka. iEnerqie (Scripter)
  10. */
  11. #include <a_samp>
  12. #include <a_mysql>
  13. #include <sscanf>
  14. #include <ocmd>
  15. #define M_HOST      ""
  16. #define M_DB        ""
  17. #define M_USER      ""
  18. #define M_PW        ""
  19. #define ERROR_MSG_RANG "{FF0000}FEHLER: {FFFFFF}Dein Rang ist für diesen Befehl nicht ausreichend!" //<<--- anpassen
  20. static db_H,f_timestamp;
  21. enum MARKER_DATA{
  22.     ID = 255,
  23.     Float:MX,
  24.     Float:MY,
  25.     Float:MZ,
  26.     Wort[20],
  27.     Loesung[20],
  28.     Text3D:Label,
  29.     timestamp,
  30.     Gewinn,
  31.     status
  32. };
  33. new MarkerData[20][MARKER_DATA],Text3D:h_Marker;
  34. public OnFilterScriptInit(){
  35.     h_Marker = Create3DTextLabel("{0087FF}[iNRQ-Events]\n{FFFFFF}Abgabepunkt:\n/fdeliver",0xFFFFFFFF,1381.4646,-1088.8201,27.5033,50.0,0,1);
  36.     db_H = mysql_connect(M_HOST,M_USER,M_DB,M_PW,3306,false,2);
  37.     mysql_log(LOG_ALL);
  38.     if(mysql_errno(db_H) != 0)
  39.         return SetTimer("@MakeIt",3000,false);
  40.     mysql_tquery(db_H,"CREATE TABLE IF NOT EXISTS `samp`.`NRQ_marker` (\
  41.  `ID` int(100) NOT NULL AUTO_INCREMENT,\
  42.  `X` float NOT NULL,\
  43.  `Y` float NOT NULL,\
  44.  `Z` float NOT NULL,\
  45.  `fwort` varchar(20) NOT NULL,\
  46.  `solution` varchar(20) NOT NULL,\
  47.  `state` int(1) NOT NULL,\
  48.  `cash` int(6) NOT NULL,\
  49.  `timestamp` int(255) NOT NULL,\
  50.  PRIMARY KEY (`ID`)\
  51. ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;","","");
  52.     f_timestamp = gettime();
  53.     return 1;
  54. }
  55. public OnFilterScriptExit(){
  56.     Delete3DTextLabel(h_Marker);
  57.     for(new x;x<20;x++)
  58.         Delete3DTextLabel(MarkerData[x][Label]);
  59.     mysql_close(db_H);
  60.     return 1;
  61. }
  62. forward ReloadMarker(tsp,step);public ReloadMarker(tsp,step){
  63.     if(!step){
  64.         new query[100];
  65.         format(query,sizeof(query),"SELECT * FROM `samp`.`NRQ_marker` WHERE `timestamp` = '%d' ORDER BY ID ASC;",f_timestamp);
  66.         mysql_tquery(db_H,query,"ReloadMarker","dd",f_timestamp,1);
  67.         return 1;
  68.     }
  69.     if(step){
  70.         for(new i=0; i<(cache_get_row_count()); i++){
  71.             if(MarkerData[i][Label])Delete3DTextLabel(MarkerData[i][Label]);
  72.             MarkerData[i][ID] = cache_get_field_content_int(i,"ID",db_H);
  73.             MarkerData[i][MX] = cache_get_field_content_float(i,"X",db_H);
  74.             MarkerData[i][MY] = cache_get_field_content_float(i,"Y",db_H);
  75.             MarkerData[i][MZ] = cache_get_field_content_float(i,"Z",db_H);
  76.             cache_get_field_content(i, "fwort", MarkerData[i][Wort],db_H,20);
  77.             cache_get_field_content(i, "solution", MarkerData[i][Loesung],db_H,20);
  78.             MarkerData[i][Gewinn] = cache_get_field_content_int(i,"cash",db_H);
  79.             MarkerData[i][status] = cache_get_field_content_int(i,"state",db_H);
  80.             if(MarkerData[i][status] !=1){
  81.                 new string[55];
  82.                 format(string,sizeof(string),"{0087FF}[iNRQ-Events]\n{FFFFFF}Wort:\n%s",MarkerData[i][Wort]);
  83.                 MarkerData[i][Label] = Create3DTextLabel(string,0xFFFFFFFF,MarkerData[i][MX],MarkerData[i][MY],MarkerData[i][MZ],45.0,0,1);
  84.             }
  85.             else{
  86.                 MarkerData[i][Label] = Create3DTextLabel("{0087FF}[iNRQ-Events]\n{FFFFFF}Wort:\n-",0xFFFFFFFF,MarkerData[i][MX],MarkerData[i][MY],MarkerData[i][MZ],45.0,0,1);
  87.             }
  88.             MarkerData[i][timestamp] = tsp;
  89.         }
  90.         return 1;
  91.     }
  92.     return 1;
  93. }
  94. ocmd:fdeliver(playerid,params[]){
  95.     if(GetPVarInt(playerid,"admin") >= 1) return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}Fehler: {FFFFFF}Als {0087FF}Administrator {FFFFFF}darfst du nicht am Event teilnehmen!");
  96.     new word[20];if(sscanf(params,"s[20]",word))return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}Fehler: {FFFFFF}/fdeliver <Lösung>");
  97.     if(!IsPlayerInRangeOfPoint(playerid,1.25,1381.4646,-1088.8201,27.5033))return SendClientMessage(playerid,0xFFFFFFFF,"{0087FF}[iNRQ-Events] {FFFFFF}Du befindest dich nicht am {FF0000}Abgabepunkt{FFFFFF}!");
  98.     new failed=0;
  99.     for(new x; x<20; x++){
  100.         if(MarkerData[x][ID] == 255)break;
  101.         if(failed == 20)return SendClientMessage(playerid,0xFFFFFFFF,"{0087FF}[iNRQ-Events] {FFFFFF}Ungültige Eingabe!");
  102.         if(!strcmp(MarkerData[x][Loesung],word,false) && MarkerData[x][ID] != 0 && MarkerData[x][status] == 0){
  103.             SetPVarInt(playerid,"money",GetPVarInt(playerid,"money")+MarkerData[x][Gewinn]);
  104.             MarkerData[x][status] = 1;
  105.             new query[256];
  106.             mysql_format(db_H,query,sizeof(query),"UPDATE `samp`.`NRQ_marker` SET `state`='1' WHERE `solution`='%e' AND `timestamp`='%d';",word,f_timestamp);
  107.             mysql_tquery(db_H,query,"","");
  108.             new name[MAX_PLAYER_NAME+1];
  109.             GetPlayerName(playerid,name,sizeof(name));
  110.             format(query,sizeof(query),"{0087FF}[iNRQ-Events] {FFFFFF}Spieler {FF0000}%s {FFFFFF}hat ein {FF0000}Event-Quiz (ID: %d) gelöst!",name,MarkerData[x][ID]);
  111.             SendClientMessageToAll(0xFFFFFFFF,query);
  112.             ReloadMarker(f_timestamp,0);
  113.             break;
  114.            
  115.         }else{
  116.             failed++;
  117.             if(failed == 20){
  118.                 SendClientMessage(playerid,0xFFFFFFFF,"{0087FF}[iNRQ-Events] {FFFFFF}Ungültige Eingabe!");
  119.                 break;
  120.             }
  121.         }
  122.     }
  123.     return 1;
  124. }
  125. ocmd:fcreate(playerid,params[]){
  126.     if(GetPVarInt(playerid,"admin") <= 2) return SendClientMessage(playerid,0xFFFFFFFF,ERROR_MSG_RANG);
  127.     new fwort[20],win,l_word[20];
  128.     if(sscanf(params,"s[20]d",fwort,win))return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}Fehler: {FFFFFF}/fcreate <Wort> <Gewinn ($)> - maximale Zeichenlänge vom Wort: 20");
  129.     l_word = fwort;
  130.     if(win > 50000 || win < 10000)return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}Fehler: {FFFFFF}Der Gewinn muss zwischen 10.000$ und 50.000$ liegen!");
  131.     new query[400],Float:pos[3];GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
  132.     mysql_format(db_H,query,sizeof(query),"INSERT INTO `samp`.`NRQ_marker` (`ID`,`X`,`Y`,`Z`,`fwort`,`solution`,`state`,`cash`,`timestamp`) VALUES (NULL,'%f','%f','%f','%e','%e','0','%d','%d');",pos[0],pos[1],pos[2],MixString(fwort),l_word,win,f_timestamp);
  133.     mysql_tquery(db_H,query,"","");
  134.     SendClientMessage(playerid,0xFFFFFFFF,"{0087FF}[iNRQ-Events] {FFFFFF}Marker {FF0000}erstellt{FFFFFF}! Wenn du fertig bist, kannst du /frefresh eingeben damit er sichtbar wird.");
  135.     new string[128],name[MAX_PLAYER_NAME+1];
  136.     GetPlayerName(playerid,name,sizeof(name));
  137.     format(string,sizeof(string),"{0087FF}[iNRQ-Events] {FF0000}%s {FFFFFF}hat ein {0087FF}Event-Marker {FFFFFF} erstellt.",name);
  138.     SendAdminsMessage(string);
  139.     #pragma unused query
  140.     return 1;
  141. }
  142. ocmd:frefresh(playerid,params[]){
  143.     if(GetPVarInt(playerid,"admin") <= 2) return SendClientMessage(playerid,0xFFFFFFFF,ERROR_MSG_RANG);
  144.     ReloadMarker(f_timestamp,0);
  145.     return 1;
  146. }
  147. /*ocmd:ftp(playerid,params[]){
  148.     return SetPlayerPos(playerid,1381.4646,-1088.8201,27.5033);
  149. }*/
  150. ocmd:freload(playerid,params[]){
  151.     if(GetPVarInt(playerid,"admin") <= 2) return SendClientMessage(playerid,0xFFFFFFFF,ERROR_MSG_RANG);
  152.     for(new i; i<20; i++)
  153.         if(MarkerData[i][Label])Delete3DTextLabel(MarkerData[i][Label]);
  154.     f_timestamp = gettime();
  155.     @ResetVariablen();
  156.     return 1;
  157. }
  158. ocmd:fdelete(playerid,params[]){
  159.     if(GetPVarInt(playerid,"admin") <= 2) return SendClientMessage(playerid,0xFFFFFFFF,ERROR_MSG_RANG);
  160.     for(new i; i<20; i++){
  161.         if(MarkerData[i][ID] == 255)break;
  162.         if(!IsPlayerInRangeOfPoint(playerid,1.25,MarkerData[i][MX],MarkerData[i][MY],MarkerData[i][MZ])) continue;
  163.         new query[256];
  164.         format(query,sizeof(query),"UPDATE `samp`.`NRQ_marker` SET `state`='1' WHERE `ID`='%d' AND `timestamp`='%d';",MarkerData[i][ID],f_timestamp);
  165.         mysql_tquery(db_H,query,"","");
  166.         MarkerData[i][status]=1;
  167.         new string[128],name[MAX_PLAYER_NAME+1];
  168.         GetPlayerName(playerid,name,sizeof(name));
  169.         format(string,sizeof(string),"{0087FF}[iNRQ-Events] {FF0000}%s {FFFFFF}hat den Marker {0087FF}%d {FFFFFF}gelöscht/ungültig gestellt{FFFFFF}!",name,MarkerData[i][ID]);
  170.         SendAdminsMessage(string);
  171.         ReloadMarker(f_timestamp,0);
  172.         break;
  173.     }
  174.     return 1;
  175. }
  176. @ResetVariablen();@ResetVariablen(){
  177.     for(new i; i<20; i++){
  178.         MarkerData[i][ID]=255;MarkerData[i][MX]=0.0;MarkerData[i][MY]=0.0;MarkerData[i][MZ]=0.0;format(MarkerData[i][Wort],20,"");format(MarkerData[i][Loesung],20,"");MarkerData[i][timestamp]=0;MarkerData[i][Gewinn]=0;MarkerData[i][status]=0;
  179.     }
  180.     return 1;
  181. }
  182. @MakeIt(x);@MakeIt(x){
  183.     CallRemoteFunction("CloseFilterscript","i",1),print("[iNRQ-Events] Das Script konnte nicht ausgeführt werden!");
  184.     return 1;
  185. }
  186. stock SendAdminsMessage(const mg[]){
  187.     for(new y=0; y<MAX_PLAYERS; y++){
  188.         if(!IsPlayerConnected(y) || GetPVarInt(y,"admin") <= 0)continue;
  189.         SendClientMessage(y,0xFFFFFFFF,mg);
  190.     }
  191.     return 1;
  192. }
  193. stock MixString(string[]) //©Jeffry
  194. {
  195.     new mixed[256], len = strlen(string), rand;
  196.     for(new i=0; i<len; i++)
  197.     {
  198.         rand = random(len-i);
  199.         mixed[i] = string[rand];
  200.         strdel(string, rand, rand+1);
  201.     }
  202.     return mixed;
  203. }
  204. /*
  205. in den Gamemode:
  206. forward CloseFilterscript(step);public CloseFilterscript(step){
  207.     if(step == 2) return SendRconCommand("unloadfs fevents");
  208.     return SetTimerEx("CloseFilterscript",1000,false,"i",2);
  209. }
  210. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement