Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* SA-MP Include Timer Dialoge
- *
- * (c) by Kaliber, 2015
- *
- */
- #if !defined _samp_included
- #include <a_samp>
- #endif
- #if defined _samp_timeDialogs
- #endinput
- #endif
- #define _samp_timeDialogs
- forward t_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
- #if !defined MAX_DIALOGS
- #define MAX_DIALOGS 100
- #endif
- #if !defined START_DIALOG
- #define START_DIALOG 2111
- #endif
- #if !defined MAX_TIME
- #define MAX_TIME 0x3B9ACA00
- #endif
- enum e_Dialogs {
- d_Time,a_Time,
- d_Header[64],
- d_Body[0xFF],
- d_Button[0xF]
- };
- static Dialog[MAX_DIALOGS][e_Dialogs],d_idx=-1;
- /*
- native ShowPlayerTimeDialog(playerid,time,header[],body[],const button[]);
- native RestartTimeDialog(playerid,id,time=0);
- */
- stock ShowPlayerTimeDialog(playerid,time,header[],body[],const button[]) {
- if(time < 1 || time >= MAX_TIME) return -1;
- d_idx++;
- if(d_idx >= MAX_DIALOGS) return printf("Maximale Anzahl von Timer-Dialogen überschritten! Bitte Directive ändern!");
- new tmp[0xA];
- valstr(tmp,time),Dialog[d_idx][a_Time]=time;
- ShowPlayerDialog(playerid,START_DIALOG+d_idx,DIALOG_STYLE_MSGBOX,header,body,tmp,"");
- Dialog[d_idx][d_Time] = time,strcat(Dialog[d_idx][d_Header],header,64);
- strcat(Dialog[d_idx][d_Body],body,0xFF),strcat(Dialog[d_idx][d_Button],button,0xF);
- return SetTimerEx("@d_Timer",1000,0,"iii",playerid,d_idx,time),d_idx;
- }
- stock RestartTimeDialog(playerid,dialogid,time=0) {
- if(time < 0 || time >= MAX_TIME) return -1;
- new tmp[0xA];
- valstr(tmp,time),Dialog[dialogid][a_Time]=(!time)?Dialog[dialogid][d_Time]:time;
- if(time) Dialog[dialogid][d_Time] = time;
- ShowPlayerDialog(playerid,START_DIALOG+dialogid,DIALOG_STYLE_MSGBOX,Dialog[dialogid][d_Header],Dialog[dialogid][d_Body],tmp,"");
- return SetTimerEx("@d_Timer",1000,0,"iii",playerid,dialogid,time),dialogid;
- }
- @d_Timer(i,dialogid,x);@d_Timer(i,dialogid,x) {
- if(!IsPlayerConnected(i)) return Dialog[dialogid][a_Time]=0;
- Dialog[dialogid][a_Time]--;
- if(!Dialog[dialogid][a_Time]) return ShowPlayerDialog(i,START_DIALOG+dialogid,DIALOG_STYLE_MSGBOX,Dialog[dialogid][d_Header],Dialog[dialogid][d_Body],Dialog[dialogid][d_Button],"");
- new tmp[0xA];
- valstr(tmp,Dialog[dialogid][a_Time]),ShowPlayerDialog(i,START_DIALOG+dialogid,DIALOG_STYLE_MSGBOX,Dialog[dialogid][d_Header],Dialog[dialogid][d_Body],tmp,"");
- return SetTimerEx("@d_Timer",1000,0,"iii",i,dialogid,0);
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
- for(new i,tmp[0xA]; i<=d_idx; i++) {
- if(dialogid == START_DIALOG+i) {
- if(Dialog[i][a_Time]) return valstr(tmp,Dialog[i][a_Time]),ShowPlayerDialog(playerid,dialogid,DIALOG_STYLE_MSGBOX,Dialog[i][d_Header],Dialog[i][d_Body],tmp,"");
- return CallLocalFunction("OnTimeDialogResponse","ii",playerid,i);
- }
- }
- return t_OnDialogResponse(playerid,dialogid,response,listitem,inputtext);
- }
- #if defined _ALS_OnDialogResponse
- #undef OnDialogResponse
- #else
- #define _ALS_OnDialogResponse
- #endif
- #define OnDialogResponse t_OnDialogResponse
- forward OnTimeDialogResponse(playerid, dialogid);
Advertisement
Add Comment
Please, Sign In to add comment