Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <zcmd>
- #define DATABASE "gPM.s3db"
- #define MAX_QUERY_RESULTS 20
- #define MAX_EINGANG_MESSAGES MAX_QUERY_RESULTS
- #define INVALID_USERID -1
- #define MARK_NEW_MESSAGES "*Neu"
- #define MARK_UNREAD_MESSAGES "*Ungelesen"
- #define COLOR_WHITE 0xFFFFFFFF
- #define COL_WHITE "{FFFFFF}"
- #define COL_GREY "{88ABAB}"
- #define COL_BLUE "{0000FF}"
- #define COL_GREEN "{00FF00}"
- #define COL_RED "{FF0000}"
- #define COL_ORANGE "{FF9900}"
- #define DATE_FORMAT "%d.%m.%Y"
- static
- g_iUserID[ MAX_PLAYERS ],
- g_sUserInput[ MAX_PLAYERS ][ MAX_PLAYER_NAME ],
- g_iUserInput[ MAX_PLAYERS ],
- g_iMessageID[ MAX_PLAYERS ][ MAX_EINGANG_MESSAGES ],
- g_sQuery[ 256 + 128],
- DBResult:g_dbrQuery,
- DB:g_dbPM;
- enum ( += 1 ) {
- MessageStatus_Unread = 0,
- MessageStatus_Read,
- MessageStatus_Delete
- }
- enum ( += 1 ) {
- DIALOG_PM_MENU = 12425,
- DIALOG_PM_EINGANG,
- DIALOG_PM_EINGANG_EMPTY,
- DIALOG_PM_EINGANG_NACHRICHT,
- DIALOG_PM_AUSGANG,
- DIALOG_PM_AUSGANG_EMPTY,
- DIALOG_PM_AUSGANG_NACHRICHT,
- DIALOG_PM_SCHREIBEN_USER,
- DIALOG_PM_SCHREIBEN_TEXT,
- DIALOG_PM_SCHREIBEN_VERSENDET,
- DIALOG_PM_USER_UEBERSICHT,
- DIALOG_PM_USER_UEBERSICHT_QUERY,
- }
- stock gPM_Init() {
- g_dbPM = db_open( DATABASE );
- for(new i = 0 ; i < MAX_PLAYERS ; i++) {
- if( IsPlayerConnected( i ) ) {
- gPM_OnPlayerConnect( i );
- }
- }
- // gPM_AddUsers("gPM.index");
- printf("gPM <> Users: %d", gPM_GetUsers() );
- printf("gPM <> Nachrichten: %d", gPM_GetNachrichten() );
- return 1;
- }
- stock gPM_Close() {
- db_close( g_dbPM );
- return 1;
- }
- stock gPM_AddUsername( username[] ) {
- format( g_sQuery , sizeof( g_sQuery ) , "INSERT INTO `USER` ( `Name`) VALUES ('%s')" , db_escape( username ) );
- g_dbrQuery = db_query( g_dbPM , g_sQuery );
- printf("gPM <> Added User '%s'" , username );
- db_free_result( g_dbrQuery );
- return 1;
- }
- stock gPM_OnPlayerConnect(playerid) {
- new
- iNewMessages,
- sName[ MAX_PLAYER_NAME ];
- GetPlayerName( playerid , sName , sizeof( sName ) );
- g_iUserID[ playerid ] = gPM_GetUserID( sName );
- if( g_iUserID[playerid] == INVALID_USERID ) {
- new
- sString[ 196 ];
- gPM_AddUsername( sName );
- g_iUserID[ playerid ] = gPM_GetUserID( sName );
- format( sString , sizeof( sString ) , "Hey %s, willkommen auf unserem Server. Probier doch unser neues Nachrichten-System aus. <> Diese Nachricht wurde automatisch versendet. <>" , db_escape( sName ) );
- gPM_SendMessage( 1 , g_iUserID[ playerid ] , sString );
- }
- iNewMessages = gPM_GetNewMessages( g_iUserID[ playerid ] );
- if( iNewMessages ) {
- new
- sString[ 64 ];
- format( sString , sizeof( sString ) , "* gPM: Du hast %d ungelese Nachrichten im Posteingang! ( /GPM )" , iNewMessages );
- SendClientMessage( playerid , COLOR_WHITE , sString );
- }
- return 1;
- }
- stock gPM_OnPlayerDisconnect(playerid, reason ) {
- #pragma unused reason
- g_iUserID[playerid] = INVALID_USERID;
- return 1;
- }
- stock gPM_GetNewMessages( userid) {
- new
- iRows;
- format( g_sQuery , sizeof( g_sQuery ) , "SELECT * FROM `Nachricht` WHERE `EmpfaengerID` = '%d' AND `Status` = '%d'" , userid , MessageStatus_Unread );
- g_dbrQuery = db_query( g_dbPM , g_sQuery );
- iRows = db_num_rows( g_dbrQuery );
- db_free_result( g_dbrQuery );
- return iRows;
- }
- stock gPM_GetUserID( const name[] ) {
- new
- sUserID[8],
- iUserID = INVALID_USERID;
- format( g_sQuery , sizeof( g_sQuery ) , "SELECT `UserID` FROM `USER` WHERE `Name` = '%s'" , name );
- g_dbrQuery = db_query( g_dbPM , g_sQuery );
- if( db_num_rows( g_dbrQuery ) > 0) {
- db_get_field( g_dbrQuery , 0 , sUserID , sizeof( sUserID ) );
- iUserID = strval( sUserID );
- }
- db_free_result( g_dbrQuery );
- return iUserID;
- }
- stock gPM_SendMessage( senderid , receiverid , const message[] ) {
- format( g_sQuery , sizeof( g_sQuery ) , "INSERT INTO `Nachricht` (`SenderID`,`EmpfaengerID`,`Status`,`Tag`,`Uhrzeit`,`Text`) VALUES ('%d','%d','%d', date('now') ,time('now'),'%s')" , senderid , receiverid , MessageStatus_Unread , message );
- g_dbrQuery = db_query( g_dbPM , g_sQuery );
- db_free_result( g_dbrQuery );
- for(new i = 0 ; i < MAX_PLAYERS ; i++) {
- if( IsPlayerConnected( i ) ) {
- if( g_iUserID[ i ] == receiverid ) {
- gPM_OnPlayerReceiveMessage( i , senderid , message );
- break;
- }
- }
- }
- return 1;
- }
- stock gPM_OnPlayerReceiveMessage( playerid , send_userid , const message[] ) {
- #pragma unused message
- new
- sString[ 128 ];
- format( sString , sizeof( sString ) , "* gPM: Du hast eine Nachricht von %s empfangen" , gPM_GetUsername( send_userid ) );
- SendClientMessage( playerid , COLOR_WHITE , sString );
- return 1;
- }
- stock gPM_StripMessageLines( message[196] ) {
- #define SPLIT_LEN 50
- new
- bool:_bBasic = true,
- _iParts,
- _iCount,
- _iTempLen = 0,
- _iPos = 0,
- _iTempPos = 0,
- _iLen;
- _iLen = strlen( message );
- while( ( _iPos = strfind( message , " " , false ,_iPos + 1) ) != -1 ) {
- _iCount++;
- _iTempLen += ( _iPos - _iTempPos );
- _iTempPos = _iPos;
- if( _iTempLen >= SPLIT_LEN ) {
- strins( message , "\n" , _iPos + 1);
- _iCount = 0;
- _iPos += 2;
- _bBasic = false;
- _iTempLen = 0;
- }
- }
- if( _bBasic ) {
- _iParts = ( _iLen / SPLIT_LEN );
- for( new i = 0 ; i < _iParts ; i++ ) {
- strins(message,"\n", ( ( i + 1 ) * SPLIT_LEN ) );
- }
- }
- #undef SPLIT_LEN
- return message;
- }
- stock gPM_ShowDialog(playerid,dialogid, extra = -1 ) {
- if( dialogid == DIALOG_PM_MENU ) {
- if( gPM_GetNewMessages( g_iUserID[ playerid ] ) ) {
- ShowPlayerDialog( playerid , DIALOG_PM_MENU , DIALOG_STYLE_LIST , ""#COL_ORANGE"gPM Menu" , ""COL_WHITE"Posteingang "#COL_GREEN""#MARK_NEW_MESSAGES""#COL_WHITE"\nPostausgang\nNachricht Senden\nUser Übersicht" , "Weiter" , "Schließen" );
- }
- else {
- ShowPlayerDialog( playerid , DIALOG_PM_MENU , DIALOG_STYLE_LIST , ""#COL_ORANGE"gPM Menu" , ""COL_WHITE"Posteingang\nPostausgang\nNachricht Versenden\nUser Übersicht" , "Weiter" , "Schließen" );
- }
- }
- else if( dialogid == DIALOG_PM_EINGANG ) {
- new
- sNachrichtID[ 8 ],
- iNachrichtID,
- sName[ MAX_PLAYER_NAME ],
- sStatus[ 2 ],
- iStatus,
- sText[ 196 ],
- sString[ 512 ],
- iRows;
- format( g_sQuery , sizeof( g_sQuery ) , "SELECT `NachrichtID`,`Name`,`Status`,`Text` FROM `NACHRICHT`,`USER` WHERE `EmpfaengerID` = '%d' AND `SenderID` = `UserID` ORDER BY `NachrichtID` DESC LIMIT %d;" , g_iUserID[ playerid ] , MAX_EINGANG_MESSAGES );
- g_dbrQuery = db_query( g_dbPM , g_sQuery );
- iRows = db_num_rows( g_dbrQuery );
- if( iRows ) {
- sString[0] = '\0';
- for(new i = 0 ; i < iRows ; i++) {
- db_get_field( g_dbrQuery , 0 , sNachrichtID , sizeof( sNachrichtID ) );
- db_get_field( g_dbrQuery , 1 , sName , sizeof(sName ) );
- db_get_field( g_dbrQuery , 2 , sStatus , sizeof( sStatus ) );
- db_get_field( g_dbrQuery , 3 , sText , sizeof( sText ) );
- iNachrichtID = strval( sNachrichtID );
- iStatus = strval( sStatus );
- if( iStatus == MessageStatus_Unread ) {
- format( sString , sizeof( sString ) , "%s%.20s - %.16s... "#COL_GREEN""#MARK_NEW_MESSAGES""#COL_WHITE"\n" , sString , sName , sText );
- }
- else if( iStatus == MessageStatus_Read ) {
- format( sString , sizeof( sString ) ,"%s%.20s - %.16s...\n" , sString , sName , sText );
- }
- g_iMessageID[ playerid ][ i ] = iNachrichtID;
- db_next_row( g_dbrQuery );
- }
- ShowPlayerDialog( playerid , DIALOG_PM_EINGANG , DIALOG_STYLE_LIST , ""#COL_ORANGE"gPM Posteingang" , sString , "Lesen" , "Zurück" );
- }
- else {
- ShowPlayerDialog( playerid , DIALOG_PM_EINGANG_EMPTY , DIALOG_STYLE_MSGBOX , ""#COL_ORANGE"gPM Posteingang" , ""#COL_WHITE"Du hast keine Nachrichten im Eingang!" , "Zurück" , "" );
- }
- db_free_result( g_dbrQuery );
- }
- else if( dialogid == DIALOG_PM_AUSGANG ) {
- new
- sNachrichtID[ 8 ],
- iNachrichtID,
- sName[MAX_PLAYER_NAME],
- sStatus[ 2 ],
- iStatus,
- sText[ 196 ],
- sString[ 512 ],
- iRows;
- format(g_sQuery,sizeof(g_sQuery),"SELECT `NachrichtID`,`Name`,`Status`,`Text` FROM `NACHRICHT`,`USER` WHERE `SenderID` = '%d' AND `EmpfaengerID` = `UserID` ORDER BY `NachrichtID` DESC LIMIT %d;" , g_iUserID[ playerid ] , MAX_EINGANG_MESSAGES );
- g_dbrQuery = db_query( g_dbPM , g_sQuery );
- iRows = db_num_rows( g_dbrQuery );
- if( iRows ) {
- sString[0] = '\0';
- for(new i = 0 ; i < iRows ; i++) {
- db_get_field( g_dbrQuery , 0 , sNachrichtID , sizeof( sNachrichtID ) );
- db_get_field( g_dbrQuery , 1 , sName , sizeof( sName ) );
- db_get_field( g_dbrQuery , 2 , sStatus , sizeof( sStatus ) );
- db_get_field( g_dbrQuery , 3 , sText , sizeof( sText ) );
- iNachrichtID = strval( sNachrichtID );
- iStatus = strval( sStatus );
- if( iStatus == MessageStatus_Unread ) {
- format( sString , sizeof( sString ) , "%s%.20s - %.16s... "#COL_RED""#MARK_UNREAD_MESSAGES""#COL_WHITE"\n" , sString , sName , sText );
- }
- else if( iStatus == MessageStatus_Read ) {
- format( sString , sizeof( sString ) , "%s%.20s - %.16s...\n" , sString , sName , sText );
- }
- g_iMessageID[ playerid ][ i ] = iNachrichtID;
- db_next_row( g_dbrQuery );
- }
- ShowPlayerDialog( playerid , DIALOG_PM_AUSGANG , DIALOG_STYLE_LIST , ""#COL_ORANGE"gPM Postausgang" , sString , "Lesen" , "Zurück" );
- }
- else {
- ShowPlayerDialog( playerid , DIALOG_PM_AUSGANG_EMPTY , DIALOG_STYLE_MSGBOX , ""#COL_ORANGE"gPM Postausgang" , ""#COL_WHITE"Du hast keine Nachrichten im Ausgang!" , "Zurück" , "" );
- }
- db_free_result( g_dbrQuery );
- }
- else if( dialogid == DIALOG_PM_EINGANG_NACHRICHT ) {
- format( g_sQuery , sizeof( g_sQuery ) , "SELECT `Name`,`Status`, strftime('%s',`Tag`) AS Datum,`Uhrzeit`,`Text` FROM `NACHRICHT`,`User` WHERE `NachrichtID` = '%d' AND `UserID` = `SenderID` " , DATE_FORMAT , extra );
- g_dbrQuery = db_query( g_dbPM , g_sQuery );
- if( db_num_rows( g_dbrQuery ) ) {
- new
- sStatus[ 2 ],
- sTag[ 12 ],
- sTitel[ 32+16+8 ],
- sName[ MAX_PLAYER_NAME ],
- sUhrzeit[ 12 ],
- iStatus,
- sNachricht[ 196 ],
- sString[ 512 ];
- db_get_field( g_dbrQuery , 0 , sName , sizeof( sName ) );
- db_get_field( g_dbrQuery , 1 , sStatus , sizeof( sStatus ) );
- db_get_field( g_dbrQuery , 2 , sTag , sizeof( sTag ) );
- db_get_field( g_dbrQuery , 3 , sUhrzeit , sizeof( sUhrzeit ) );
- db_get_field( g_dbrQuery , 4 , sNachricht , sizeof( sNachricht ) );
- iStatus = strval( sStatus );
- db_free_result( g_dbrQuery );
- if( iStatus == MessageStatus_Unread ) {
- format(g_sQuery,sizeof(g_sQuery),"UPDATE `Nachricht` SET `Status` = '%d' WHERE NachrichtID = '%d'",MessageStatus_Read,extra);
- g_dbrQuery = db_query( g_dbPM , g_sQuery );
- db_free_result( g_dbrQuery );
- }
- format( sString , sizeof( sString ) , ""#COL_GREY"Von: "#COL_WHITE"%s\n"#COL_GREY"Datum: "#COL_WHITE"%s %s\n\n"#COL_GREY"Nachricht:"#COL_WHITE"\n%s\n\n" , sName , sTag , sUhrzeit , gPM_StripMessageLines( sNachricht ) );
- format( sTitel , sizeof( sTitel ) , ""#COL_ORANGE"gPM Posteingang - Nachricht (%d)" , extra );
- ShowPlayerDialog( playerid , DIALOG_PM_EINGANG_NACHRICHT , DIALOG_STYLE_MSGBOX , sTitel , sString , "Zurück" , "" );
- }
- }
- else if( dialogid == DIALOG_PM_AUSGANG_NACHRICHT ) {
- format( g_sQuery , sizeof( g_sQuery ) , "SELECT `Name`,`Status`, strftime('%s',`Tag`) AS Datum,`Uhrzeit`,`Text` FROM `NACHRICHT`,`User` WHERE `NachrichtID` = '%d' AND `UserID` = `EmpfaengerID`" , DATE_FORMAT , extra );
- g_dbrQuery = db_query( g_dbPM , g_sQuery );
- if( db_num_rows( g_dbrQuery ) ) {
- new
- sStatus[ 2 ],
- sTag[ 12 ],
- sName[ MAX_PLAYER_NAME ],
- sUhrzeit[ 12 ],
- iStatus,
- sNachricht[ 196 ],
- sTitel[ 64 ],
- sString[ 384 ];
- db_get_field( g_dbrQuery , 0 , sName , sizeof( sName ) );
- db_get_field( g_dbrQuery , 1 , sStatus , sizeof( sStatus ) );
- db_get_field( g_dbrQuery , 2 , sTag , sizeof( sTag ) );
- db_get_field( g_dbrQuery , 3 , sUhrzeit , sizeof( sUhrzeit ) );
- db_get_field( g_dbrQuery , 4 , sNachricht , sizeof( sNachricht ) );
- iStatus = strval( sStatus );
- db_free_result( g_dbrQuery );
- format( sString , sizeof( sString ) , ""#COL_GREY"An: "#COL_WHITE"%s\n"#COL_GREY"Datum: "#COL_WHITE"%s %s\n\n"#COL_GREY"Nachricht:"#COL_WHITE"\n%s\n\n" , sName , sTag , sUhrzeit , gPM_StripMessageLines( sNachricht ) );
- if( iStatus == MessageStatus_Unread ) {
- format( sString , sizeof( sString ) , "%s"#COL_GREY"Status: "#COL_RED"Ungelesen" , sString );
- }
- else {
- format( sString , sizeof( sString ) , "%s"#COL_GREY"Status: "#COL_GREEN"Gelesen" , sString );
- }
- format( sTitel , sizeof( sTitel ) , ""#COL_ORANGE"gPM Postausgang - Nachricht (%d)" , extra );
- ShowPlayerDialog( playerid , DIALOG_PM_AUSGANG_NACHRICHT , DIALOG_STYLE_MSGBOX , sTitel , sString , "Zurück" , "" );
- }
- }
- else if( dialogid == DIALOG_PM_SCHREIBEN_USER ) {
- if( extra == -1 ) {
- ShowPlayerDialog( playerid , DIALOG_PM_SCHREIBEN_USER , DIALOG_STYLE_INPUT , ""#COL_ORANGE"gPM Nachricht Versenden - User",""#COL_WHITE"Gib unten den exakten Usernamen ein,\nan den du eine Textnachricht versenden möchtest!" , "Weiter" , "Zurück" );
- }
- else if(extra == 0 ) {
- new
- sString[ 256 ];
- format( sString , sizeof( sString ) , ""#COL_WHITE"Der genannte User '"#COL_GREY"%s"#COL_WHITE"' konnte nicht in unserer\nDatenbank gefunden werden.\n\nGib unten den exakten Usernamen ein,\nan den du eine Textnachricht versenden möchtest!" , g_sUserInput[ playerid ] );
- ShowPlayerDialog(playerid,DIALOG_PM_SCHREIBEN_USER,DIALOG_STYLE_INPUT,""#COL_ORANGE"gPM Nachricht Versenden - User",sString,"Weiter","Zurück");
- }
- else if( extra == 1 ) {
- ShowPlayerDialog( playerid , DIALOG_PM_SCHREIBEN_USER , DIALOG_STYLE_INPUT , ""#COL_ORANGE"gPM Nachricht Versenden - User" , ""#COL_WHITE"Du kannst dir selber keine Nachrichten schicken!\n\nGib unten den exakten Usernamen ein,\nan den du eine Textnachricht versenden möchtest!" , "Weiter" , "Zurück" );
- }
- }
- else if( dialogid == DIALOG_PM_SCHREIBEN_TEXT ) {
- new
- sString[256];
- format(sString,sizeof(sString),""#COL_WHITE"Gib unten den das Feld die Nachricht ein,\ndie du an den User '"#COL_GREY"%s"#COL_WHITE"' versenden möchtest.\nDurch die Bestätigung wird die Nachricht direkt versendet.",g_sUserInput[playerid]);
- ShowPlayerDialog(playerid,DIALOG_PM_SCHREIBEN_TEXT,DIALOG_STYLE_INPUT,""#COL_ORANGE"gPM Nachricht Versenden - Nachricht",sString,"Versenden","Zurück");
- }
- else if( dialogid == DIALOG_PM_SCHREIBEN_VERSENDET ) {
- new
- sString[ 256 ];
- format( sString , sizeof(sString) , ""#COL_WHITE"Deine Nachricht wurde erfolgreich an den User '"#COL_GREY"%s"#COL_WHITE"' versendet!\nDu findest sie in deinem Postausgang" , g_sUserInput[ playerid ] );
- ShowPlayerDialog( playerid , DIALOG_PM_SCHREIBEN_VERSENDET , DIALOG_STYLE_MSGBOX , ""#COL_ORANGE"gPM Nachricht Versenden - Versendet" , sString , "Hauptmenu" , "" );
- }
- else if( dialogid == DIALOG_PM_USER_UEBERSICHT ) {
- if( extra == -1 ) {
- ShowPlayerDialog( playerid , DIALOG_PM_USER_UEBERSICHT , DIALOG_STYLE_INPUT , ""#COL_ORANGE"gPM User Übersicht" , ""#COL_WHITE"Du kannst einen User suchen, indem du unten in das\ndas Feld seinen Namen eingibst" , "Suchen" , "Zurück" );
- }
- else if( extra == 0 ) {
- new
- sString[ 256 ];
- format( sString , sizeof( sString ) , ""#COL_WHITE"Es wurden keine User mit dem Suchkriterium '"#COL_GREY"%s"#COL_WHITE"' gefunden.\n\nDu kannst einen User suchen, indem du unten in das\ndas Feld seinen Namen eingibst" , g_sUserInput[ playerid ] );
- ShowPlayerDialog( playerid , DIALOG_PM_USER_UEBERSICHT , DIALOG_STYLE_INPUT , ""#COL_ORANGE"gPM User Übersicht" , sString , "Suchen" , "Zurück" );
- }
- else if( extra == 1 ) {
- ShowPlayerDialog( playerid , DIALOG_PM_USER_UEBERSICHT , DIALOG_STYLE_INPUT , ""#COL_ORANGE"gPM User Übersicht" , ""#COL_WHITE"Du kannst einen User suchen, indem du unten in das\ndas Feld seinen Namen eingibst" , "Suchen" , "Zurück" );
- }
- else if( extra == 2 ) {
- ShowPlayerDialog( playerid , DIALOG_PM_USER_UEBERSICHT , DIALOG_STYLE_INPUT , ""#COL_ORANGE"gPM User Übersicht" , ""#COL_WHITE"Deine Eingabe war zu kurz oder nicht vorhanden!\n\nDu kannst einen User suchen, indem du unten in das\ndas Feld seinen Namen eingibst" , "Suchen" , "Zurück" );
- }
- }
- else if( dialogid == DIALOG_PM_USER_UEBERSICHT_QUERY ) {
- new
- sString[ 256 ],
- sTitel[ 64 ],
- sName[ MAX_PLAYER_NAME ],
- iRows;
- g_dbrQuery = DBResult:extra;
- iRows = db_num_rows( g_dbrQuery );
- for(new i = 0 ; i < iRows ; i++) {
- db_get_field( g_dbrQuery , 1 , sName , sizeof( sName ) );
- format( sString ,sizeof(sString) , "%s%s\n" , sString , sName );
- db_next_row( g_dbrQuery );
- }
- format( sTitel , sizeof( sTitel ) , ""#COL_ORANGE"gPM Nachricht User Übersicht - Query (%d)" , iRows );
- ShowPlayerDialog( playerid , DIALOG_PM_USER_UEBERSICHT_QUERY , DIALOG_STYLE_LIST , sTitel , sString , "Zurück" , "" );
- db_free_result( g_dbrQuery );
- }
- return 1;
- }
- stock gPM_OnDialogResponse( playerid, dialogid , response , listitem , inputtext[] ) {
- if( dialogid == DIALOG_PM_MENU ) {
- if(response) {
- switch(listitem) {
- case 0: gPM_ShowDialog( playerid , DIALOG_PM_EINGANG );
- case 1: gPM_ShowDialog( playerid , DIALOG_PM_AUSGANG );
- case 2: gPM_ShowDialog( playerid , DIALOG_PM_SCHREIBEN_USER );
- case 3: gPM_ShowDialog( playerid , DIALOG_PM_USER_UEBERSICHT );
- }
- }
- }
- else if( dialogid == DIALOG_PM_EINGANG ) {
- if( response ) {
- return gPM_ShowDialog( playerid , DIALOG_PM_EINGANG_NACHRICHT , g_iMessageID[playerid][listitem] );
- }
- else {
- return gPM_ShowDialog( playerid , DIALOG_PM_MENU );
- }
- }
- else if( dialogid == DIALOG_PM_EINGANG_NACHRICHT ) {
- return gPM_ShowDialog( playerid , DIALOG_PM_EINGANG );
- }
- else if( dialogid == DIALOG_PM_AUSGANG ) {
- if( response ) {
- return gPM_ShowDialog( playerid , DIALOG_PM_AUSGANG_NACHRICHT , g_iMessageID[ playerid ][ listitem ] );
- }
- else {
- return gPM_ShowDialog( playerid , DIALOG_PM_MENU );
- }
- }
- else if( dialogid == DIALOG_PM_AUSGANG_NACHRICHT ) {
- return gPM_ShowDialog( playerid , DIALOG_PM_AUSGANG );
- }
- else if( dialogid == DIALOG_PM_SCHREIBEN_USER ) {
- if(response) {
- new
- iUserID;
- g_sUserInput[ playerid ][ 0 ] = '\0';
- strcat( g_sUserInput[ playerid ] , db_escape( inputtext ) , MAX_PLAYER_NAME );
- iUserID = gPM_GetUserID( g_sUserInput[ playerid ] );
- if( iUserID == INVALID_USERID ) {
- return gPM_ShowDialog( playerid , DIALOG_PM_SCHREIBEN_USER , 0 );
- }
- if( iUserID == g_iUserID[ playerid ] ) {
- return gPM_ShowDialog( playerid , DIALOG_PM_SCHREIBEN_USER , 1 );
- }
- g_iUserInput[ playerid ] = iUserID;
- return gPM_ShowDialog( playerid , DIALOG_PM_SCHREIBEN_TEXT );
- }
- else {
- return gPM_ShowDialog( playerid , DIALOG_PM_MENU );
- }
- }
- else if( dialogid == DIALOG_PM_SCHREIBEN_TEXT ) {
- if(response) {
- gPM_SendMessage( g_iUserID[ playerid ] , g_iUserInput[ playerid ] , db_escape( inputtext ) );
- return gPM_ShowDialog( playerid , DIALOG_PM_SCHREIBEN_VERSENDET );
- }
- else {
- return gPM_ShowDialog( playerid , DIALOG_PM_SCHREIBEN_USER );
- }
- }
- else if( dialogid == DIALOG_PM_SCHREIBEN_VERSENDET ) {
- return gPM_ShowDialog( playerid , DIALOG_PM_MENU );
- }
- else if( dialogid == DIALOG_PM_USER_UEBERSICHT ) {
- if(response) {
- new
- iRows;
- if( strlen(inputtext) < 2 ) {
- return gPM_ShowDialog( playerid , DIALOG_PM_USER_UEBERSICHT , 2 );
- }
- g_sUserInput[ playerid ][ 0 ] = '\0';
- strcat( g_sUserInput[ playerid ] , inputtext , MAX_PLAYER_NAME );
- gPM_FilterUsernames( g_sUserInput[ playerid ] , g_dbrQuery );
- iRows = db_num_rows( g_dbrQuery );
- if( iRows == 0 ) {
- db_free_result( g_dbrQuery );
- return gPM_ShowDialog( playerid , DIALOG_PM_USER_UEBERSICHT , 0 );
- }
- if( iRows > MAX_QUERY_RESULTS ) {
- db_free_result( g_dbrQuery );
- return gPM_ShowDialog( playerid , DIALOG_PM_USER_UEBERSICHT , 1 );
- }
- return gPM_ShowDialog( playerid , DIALOG_PM_USER_UEBERSICHT_QUERY , _:g_dbrQuery );
- }
- else {
- return gPM_ShowDialog( playerid , DIALOG_PM_MENU );
- }
- }
- else if( dialogid == DIALOG_PM_USER_UEBERSICHT_QUERY ) {
- return gPM_ShowDialog( playerid , DIALOG_PM_USER_UEBERSICHT );
- }
- else if ( dialogid == DIALOG_PM_EINGANG_EMPTY ) {
- return gPM_ShowDialog( playerid , DIALOG_PM_MENU );
- }
- else if ( dialogid == DIALOG_PM_AUSGANG_EMPTY ) {
- return gPM_ShowDialog( playerid , DIALOG_PM_MENU );
- }
- return 0;
- }
- COMMAND:gpm(playerid,params[]) {
- return gPM_ShowDialog( playerid , DIALOG_PM_MENU );
- }
- stock gPM_AddUsers(const file[]) {
- new
- _sTmp[ 54 ],
- File:fFile;
- fFile = fopen( file , io_read );
- if( fFile ) {
- while( fread( fFile , _sTmp , sizeof( _sTmp ) ) ) {
- StripNewLine( _sTmp );
- if( gPM_GetUserID( _sTmp ) == INVALID_USERID ) {
- gPM_AddUsername( _sTmp );
- }
- }
- fclose( fFile );
- return 1;
- }
- return 0;
- }
- stock StripNewLine(str[]) //ysi_misc.own
- {
- new
- l = strlen(str);
- while (l-- && str[l] <= ' ') str[l] = '\0';
- }
- stock gPM_FilterUsernames( const username_filter[] , & DBResult:dbr ) {
- format( g_sQuery , sizeof( g_sQuery ) , "SELECT * FROM `USER` WHERE `Name` LIKE '%%%s%%' ORDER BY `Name` ASC" , username_filter );
- dbr = db_query( g_dbPM , g_sQuery );
- return 1;
- }
- stock gPM_GetUsers() {
- new
- sUsers[8],
- iUsers;
- g_dbrQuery = db_query( g_dbPM , "SELECT COUNT(*) FROM `User`" );
- db_get_field( g_dbrQuery , 0 , sUsers , sizeof( sUsers ) );
- iUsers = strval( sUsers );
- db_free_result( g_dbrQuery );
- return iUsers;
- }
- stock gPM_GetNachrichten() {
- new
- sNachrichten[8],
- iNachrichten;
- g_dbrQuery = db_query( g_dbPM , "SELECT COUNT(*) FROM `Nachricht`" );
- db_get_field( g_dbrQuery , 0 , sNachrichten , sizeof( sNachrichten ) );
- iNachrichten = strval( sNachrichten );
- db_free_result( g_dbrQuery );
- return iNachrichten;
- }
- stock gPM_GetUsername( userid ) {
- new
- sUsername[ MAX_PLAYER_NAME ] = "INVALID_USERNAME";
- format( g_sQuery , sizeof( g_sQuery ) , "SELECT `Name` FROM `User` WHERE `UserID` = '%d'" , userid );
- g_dbrQuery = db_query( g_dbPM , g_sQuery );
- if( db_num_rows( g_dbrQuery ) ) {
- db_get_field( g_dbrQuery , 0 , sUsername , sizeof( sUsername ) );
- }
- db_free_result( g_dbrQuery );
- return sUsername;
- }
- #define MAX_INI_ENTRY_TEXT 196
- stock db_escape(text[]) // Y_LESS
- {
- new
- ret[MAX_INI_ENTRY_TEXT * 2],
- ch,
- i,
- j;
- while ((ch = text[i++]) && j < sizeof (ret))
- {
- if (ch == '\'')
- {
- if (j < sizeof (ret) - 2)
- {
- ret[j++] = '\'';
- ret[j++] = '\'';
- }
- }
- else if (j < sizeof (ret))
- {
- ret[j++] = ch;
- }
- else
- {
- j++;
- }
- }
- ret[sizeof (ret) - 1] = '\0';
- return ret;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement