Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Credits:
- SA:MP-Team (a_samp)
- Y-Less (SScanf)
- Kleiner Opa (ocmd)
- BlueG und maddinat0r (MySQL R39-3)
- Jeffry (MixString)
- Siedler (& tonyalva)[Leitung von RPG-City] (auf eine tolle Idee gebracht, danke euch dafür!)
- Tony_Jackson aka. iEnerqie (Scripter)
- */
- #include <a_samp>
- #include <a_mysql>
- #include <sscanf>
- #include <ocmd>
- #define M_HOST ""
- #define M_DB ""
- #define M_USER ""
- #define M_PW ""
- #define ERROR_MSG_RANG "{FF0000}FEHLER: {FFFFFF}Dein Rang ist für diesen Befehl nicht ausreichend!" //<<--- anpassen
- static db_H,f_timestamp;
- enum MARKER_DATA{
- ID = 255,
- Float:MX,
- Float:MY,
- Float:MZ,
- Wort[20],
- Loesung[20],
- Text3D:Label,
- timestamp,
- Gewinn,
- status
- };
- new MarkerData[20][MARKER_DATA],Text3D:h_Marker;
- public OnFilterScriptInit(){
- h_Marker = Create3DTextLabel("{0087FF}[iNRQ-Events]\n{FFFFFF}Abgabepunkt:\n/fdeliver",0xFFFFFFFF,1381.4646,-1088.8201,27.5033,50.0,0,1);
- db_H = mysql_connect(M_HOST,M_USER,M_DB,M_PW,3306,false,2);
- mysql_log(LOG_ALL);
- if(mysql_errno(db_H) != 0)
- return SetTimer("@MakeIt",3000,false);
- mysql_tquery(db_H,"CREATE TABLE IF NOT EXISTS `samp`.`NRQ_marker` (\
- `ID` int(100) NOT NULL AUTO_INCREMENT,\
- `X` float NOT NULL,\
- `Y` float NOT NULL,\
- `Z` float NOT NULL,\
- `fwort` varchar(20) NOT NULL,\
- `solution` varchar(20) NOT NULL,\
- `state` int(1) NOT NULL,\
- `cash` int(6) NOT NULL,\
- `timestamp` int(255) NOT NULL,\
- PRIMARY KEY (`ID`)\
- ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;","","");
- f_timestamp = gettime();
- return 1;
- }
- public OnFilterScriptExit(){
- Delete3DTextLabel(h_Marker);
- for(new x;x<20;x++)
- Delete3DTextLabel(MarkerData[x][Label]);
- mysql_close(db_H);
- return 1;
- }
- forward ReloadMarker(tsp,step);public ReloadMarker(tsp,step){
- if(!step){
- new query[100];
- format(query,sizeof(query),"SELECT * FROM `samp`.`NRQ_marker` WHERE `timestamp` = '%d' ORDER BY ID ASC;",f_timestamp);
- mysql_tquery(db_H,query,"ReloadMarker","dd",f_timestamp,1);
- return 1;
- }
- if(step){
- for(new i=0; i<(cache_get_row_count()); i++){
- if(MarkerData[i][Label])Delete3DTextLabel(MarkerData[i][Label]);
- MarkerData[i][ID] = cache_get_field_content_int(i,"ID",db_H);
- MarkerData[i][MX] = cache_get_field_content_float(i,"X",db_H);
- MarkerData[i][MY] = cache_get_field_content_float(i,"Y",db_H);
- MarkerData[i][MZ] = cache_get_field_content_float(i,"Z",db_H);
- cache_get_field_content(i, "fwort", MarkerData[i][Wort],db_H,20);
- cache_get_field_content(i, "solution", MarkerData[i][Loesung],db_H,20);
- MarkerData[i][Gewinn] = cache_get_field_content_int(i,"cash",db_H);
- MarkerData[i][status] = cache_get_field_content_int(i,"state",db_H);
- if(MarkerData[i][status] !=1){
- new string[55];
- format(string,sizeof(string),"{0087FF}[iNRQ-Events]\n{FFFFFF}Wort:\n%s",MarkerData[i][Wort]);
- MarkerData[i][Label] = Create3DTextLabel(string,0xFFFFFFFF,MarkerData[i][MX],MarkerData[i][MY],MarkerData[i][MZ],45.0,0,1);
- }
- else{
- 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);
- }
- MarkerData[i][timestamp] = tsp;
- }
- return 1;
- }
- return 1;
- }
- ocmd:fdeliver(playerid,params[]){
- if(GetPVarInt(playerid,"admin") >= 1) return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}Fehler: {FFFFFF}Als {0087FF}Administrator {FFFFFF}darfst du nicht am Event teilnehmen!");
- new word[20];if(sscanf(params,"s[20]",word))return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}Fehler: {FFFFFF}/fdeliver <Lösung>");
- 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}!");
- new failed=0;
- for(new x; x<20; x++){
- if(MarkerData[x][ID] == 255)break;
- if(failed == 20)return SendClientMessage(playerid,0xFFFFFFFF,"{0087FF}[iNRQ-Events] {FFFFFF}Ungültige Eingabe!");
- if(!strcmp(MarkerData[x][Loesung],word,false) && MarkerData[x][ID] != 0 && MarkerData[x][status] == 0){
- SetPVarInt(playerid,"money",GetPVarInt(playerid,"money")+MarkerData[x][Gewinn]);
- MarkerData[x][status] = 1;
- new query[256];
- mysql_format(db_H,query,sizeof(query),"UPDATE `samp`.`NRQ_marker` SET `state`='1' WHERE `solution`='%e' AND `timestamp`='%d';",word,f_timestamp);
- mysql_tquery(db_H,query,"","");
- new name[MAX_PLAYER_NAME+1];
- GetPlayerName(playerid,name,sizeof(name));
- 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]);
- SendClientMessageToAll(0xFFFFFFFF,query);
- ReloadMarker(f_timestamp,0);
- break;
- }else{
- failed++;
- if(failed == 20){
- SendClientMessage(playerid,0xFFFFFFFF,"{0087FF}[iNRQ-Events] {FFFFFF}Ungültige Eingabe!");
- break;
- }
- }
- }
- return 1;
- }
- ocmd:fcreate(playerid,params[]){
- if(GetPVarInt(playerid,"admin") <= 2) return SendClientMessage(playerid,0xFFFFFFFF,ERROR_MSG_RANG);
- new fwort[20],win,l_word[20];
- if(sscanf(params,"s[20]d",fwort,win))return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}Fehler: {FFFFFF}/fcreate <Wort> <Gewinn ($)> - maximale Zeichenlänge vom Wort: 20");
- l_word = fwort;
- if(win > 50000 || win < 10000)return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}Fehler: {FFFFFF}Der Gewinn muss zwischen 10.000$ und 50.000$ liegen!");
- new query[400],Float:pos[3];GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
- 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);
- mysql_tquery(db_H,query,"","");
- SendClientMessage(playerid,0xFFFFFFFF,"{0087FF}[iNRQ-Events] {FFFFFF}Marker {FF0000}erstellt{FFFFFF}! Wenn du fertig bist, kannst du /frefresh eingeben damit er sichtbar wird.");
- new string[128],name[MAX_PLAYER_NAME+1];
- GetPlayerName(playerid,name,sizeof(name));
- format(string,sizeof(string),"{0087FF}[iNRQ-Events] {FF0000}%s {FFFFFF}hat ein {0087FF}Event-Marker {FFFFFF} erstellt.",name);
- SendAdminsMessage(string);
- #pragma unused query
- return 1;
- }
- ocmd:frefresh(playerid,params[]){
- if(GetPVarInt(playerid,"admin") <= 2) return SendClientMessage(playerid,0xFFFFFFFF,ERROR_MSG_RANG);
- ReloadMarker(f_timestamp,0);
- return 1;
- }
- /*ocmd:ftp(playerid,params[]){
- return SetPlayerPos(playerid,1381.4646,-1088.8201,27.5033);
- }*/
- ocmd:freload(playerid,params[]){
- if(GetPVarInt(playerid,"admin") <= 2) return SendClientMessage(playerid,0xFFFFFFFF,ERROR_MSG_RANG);
- for(new i; i<20; i++)
- if(MarkerData[i][Label])Delete3DTextLabel(MarkerData[i][Label]);
- f_timestamp = gettime();
- @ResetVariablen();
- return 1;
- }
- ocmd:fdelete(playerid,params[]){
- if(GetPVarInt(playerid,"admin") <= 2) return SendClientMessage(playerid,0xFFFFFFFF,ERROR_MSG_RANG);
- for(new i; i<20; i++){
- if(MarkerData[i][ID] == 255)break;
- if(!IsPlayerInRangeOfPoint(playerid,1.25,MarkerData[i][MX],MarkerData[i][MY],MarkerData[i][MZ])) continue;
- new query[256];
- format(query,sizeof(query),"UPDATE `samp`.`NRQ_marker` SET `state`='1' WHERE `ID`='%d' AND `timestamp`='%d';",MarkerData[i][ID],f_timestamp);
- mysql_tquery(db_H,query,"","");
- MarkerData[i][status]=1;
- new string[128],name[MAX_PLAYER_NAME+1];
- GetPlayerName(playerid,name,sizeof(name));
- 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]);
- SendAdminsMessage(string);
- ReloadMarker(f_timestamp,0);
- break;
- }
- return 1;
- }
- @ResetVariablen();@ResetVariablen(){
- for(new i; i<20; i++){
- 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;
- }
- return 1;
- }
- @MakeIt(x);@MakeIt(x){
- CallRemoteFunction("CloseFilterscript","i",1),print("[iNRQ-Events] Das Script konnte nicht ausgeführt werden!");
- return 1;
- }
- stock SendAdminsMessage(const mg[]){
- for(new y=0; y<MAX_PLAYERS; y++){
- if(!IsPlayerConnected(y) || GetPVarInt(y,"admin") <= 0)continue;
- SendClientMessage(y,0xFFFFFFFF,mg);
- }
- return 1;
- }
- stock MixString(string[]) //©Jeffry
- {
- new mixed[256], len = strlen(string), rand;
- for(new i=0; i<len; i++)
- {
- rand = random(len-i);
- mixed[i] = string[rand];
- strdel(string, rand, rand+1);
- }
- return mixed;
- }
- /*
- in den Gamemode:
- forward CloseFilterscript(step);public CloseFilterscript(step){
- if(step == 2) return SendRconCommand("unloadfs fevents");
- return SetTimerEx("CloseFilterscript",1000,false,"i",2);
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement