Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define FILTERSCRIPT
- #include <a_samp>
- #include <zcmd>
- #include <YSI\y_ini>
- #include <file>
- #include <sscanf2>
- forward AdminCheck(playerid);
- new tDuty[MAX_PLAYERS] = 0;
- //----------------Uncomment section below to use this filterscript for RCON admins ------- Delete section if you are going to load admin levels from scriptfiles
- public AdminCheck(playerid){
- if(IsPlayerAdmin(playerid)) return 1;
- return 0;
- }
- //----------------------------------------------------------------------------------------------------------------------------------------------------------------
- //---------------Uncomment the section below and edit to check admin levels of users saved using another gamemode/filterscript ---- Delete Section if using RCON
- /*
- new AdminLevel[MAX_PLAYERS] = 0;
- //change this to the required admin level needed to use the ticket system
- #define RequiredAdminLevel 5
- public AdminCheck(playerid){
- if(AdminLevel[playerid] >= RequiredAdminLevel) return 1;
- return 0;
- }
- //--------------------------------------------------------------------------------------------------------------------------------------------------------------
- */
- //-----------------SETTINGS, EDIT THESE
- //Message to send if a non-admin enters an admin command
- new NonAdminMessage[128] = "You must be an admin to use this command";
- //Color of non-admin Message
- #define NonAdminColor 0xFF0000FF
- //Message to Send if user submits ticket, but no admins are on duty
- new NoDutyMessage[128] = "No admins are currently on duty or may be busy. Try again later";
- //Color of no-duty Message
- #define NoDutyColor 0xFF0000FF
- //-----------------END OF SETTINGS, DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING
- enum tVars //---ADDED
- {
- claimed,
- query[128],
- player,
- helper
- };
- new TicketInfo[MAX_PLAYERS][tVars];
- new SubmittedTicket[MAX_PLAYERS] = -1;
- new AnsweredTicket[MAX_PLAYERS] = -1;
- forward AdminsOnDuty();
- public AdminsOnDuty(){
- for(new i; i <= MAX_PLAYERS; i++){
- if(tDuty[i]) return 1;
- }
- return 0;
- }
- stock SendClientMessageToOnDutyAdmins(message[128]){
- for(new i = 0; i <= MAX_PLAYERS; i++){
- if(tDuty[i]){
- SendClientMessage(i, 0xFA8072FF, message);
- }
- }
- }
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print("-----Ticket System by Nathan_Taylor----- ");
- print("--------------------------------------\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- print("Nathan_Taylor's ticket system shut down");
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- if(AdminCheck(playerid)){
- SendClientMessage(playerid, 0xFA8072FF, "** Ticket System Enabled. Use /tduty to go on duty");
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- TicketInfo[playerid][claimed] = 0;
- TicketInfo[playerid][query] = 0;
- TicketInfo[playerid][player] = -1;
- TicketInfo[playerid][helper] = -1;
- tDuty[playerid] = 0;
- return 1;
- }
- CMD:tduty(playerid, params[]){
- if(!AdminCheck(playerid)) return SendClientMessage(playerid, NonAdminColor, NonAdminMessage);
- new Message[128];
- new aName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
- if(tDuty[playerid] == 0){
- tDuty[playerid] = 1;
- format(Message, sizeof(Message), "Admin %s is now on duty for tickets. Use /ticket to submit one", aName);
- SendClientMessageToAll(0xFA8072FF, Message);
- } else {
- tDuty[playerid] = 0;
- format(Message, sizeof(Message), "Admin %s is no longer on duty for tickets", aName);
- SendClientMessageToAll(0xFA8072FF, Message);
- }
- return 1;
- }
- CMD:ticket(playerid, params[])
- {
- new text[128];
- if(!sscanf(params, "s[128]", text)){
- if(AdminCheck(playerid)) return SendClientMessage(playerid, 0xFA8072FF, "Admins cannot submit tickets"); //delete if if you want admins to be able to submit tickets
- if(SubmittedTicket[playerid] != -1) return SendClientMessage(playerid, 0xFA8072FF, "You already have a ticket sent out");
- if(!AdminsOnDuty()) return SendClientMessage(playerid, NoDutyColor, NoDutyMessage);
- SubmittedTicket[playerid] = playerid;
- SendClientMessage(playerid, 0xFA8072FF, "** Ticket has been sent to on duty admins");
- //format message to admins
- new aMessage[128];
- new pName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
- format(aMessage, sizeof(aMessage), "** Incoming ticket from %s, Use /claim %i to claim", pName, playerid);
- SendClientMessageToOnDutyAdmins(aMessage);
- TicketInfo[playerid][claimed] = 0;
- TicketInfo[playerid][query] = text;
- TicketInfo[playerid][player] = playerid;
- TicketInfo[playerid][helper] = -1;
- } else {
- return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /ticket [question]");
- }
- return 1;
- }
- CMD:claim(playerid, params[])
- {
- new tid;
- if(!AdminCheck(playerid)) return SendClientMessage(playerid, NonAdminColor, NonAdminMessage);
- if(!sscanf(params, "i", tid)){
- if(TicketInfo[tid][player] != tid) return SendClientMessage(playerid, 0xFA8072FF, "** This ticket ID does not exist");
- if(TicketInfo[tid][claimed] == 1) {
- new cName[MAX_PLAYER_NAME];
- new string[128];
- GetPlayerName(TicketInfo[tid][helper], cName, MAX_PLAYER_NAME);
- format(string, sizeof(string), "** %s has already claimed this ticket", cName);
- return SendClientMessage(playerid, 0xFA8072FF, string);
- }
- TicketInfo[tid][claimed] = 1;
- TicketInfo[tid][helper] = playerid;
- AnsweredTicket[playerid] = tid;
- tDuty[playerid] = 0;
- new pmessage[128], amessage[128], amessage2[128], allamessage[128], pName[MAX_PLAYER_NAME], aName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
- GetPlayerName(tid, pName, MAX_PLAYER_NAME);
- format(pmessage, sizeof(pmessage), "** %s has picked up your ticket. You may now use /treply", aName);
- format(amessage2, sizeof(amessage2), "** Ticket Claimed. You may now use /treply /ttp /ttphere /tclose");
- format(amessage2, sizeof(amessage2), "** %s: %s", pName, TicketInfo[tid][query]);
- format(allamessage, sizeof(allamessage), "** %s claimed %s's ticket", aName, pName);
- SendClientMessage(tid, 0xFA8072FF, pmessage);
- SendClientMessage(playerid, 0xFA8072FF, amessage);
- SendClientMessage(playerid, 0xFA8072FF, amessage2);
- SendClientMessageToOnDutyAdmins(allamessage);
- } else {
- return SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /claim [ticket id]");
- }
- return 1;
- }
- CMD:tclose(playerid, params[])
- {
- if(!AdminCheck(playerid)) return SendClientMessage(playerid, NonAdminColor, NonAdminMessage);
- if(AnsweredTicket[playerid] == -1) return SendClientMessage(playerid, 0xFA8072FF, "** No Ticket Opened");
- new tid = TicketInfo[AnsweredTicket[playerid]][player];
- TicketInfo[tid][claimed] = 0;
- TicketInfo[tid][helper] = -1;
- TicketInfo[tid][player] = -1;
- TicketInfo[tid][query] = 0;
- SubmittedTicket[tid] = -1;
- AnsweredTicket[playerid] = -1;
- new pName[MAX_PLAYER_NAME], aName[MAX_PLAYER_NAME], amessage[128], pmessage[128], allamessage[128];
- GetPlayerName(playerid, aName, MAX_PLAYER_NAME);
- GetPlayerName(tid, pName, MAX_PLAYER_NAME);
- format(allamessage, sizeof(allamessage), "** %s closed %s's ticket", aName, pName);
- format(pmessage, sizeof(pmessage), "** %s has closed your ticket", aName);
- format(amessage, sizeof(amessage), "** Closed %s's ticket", pName);
- SendClientMessageToOnDutyAdmins(allamessage);
- SendClientMessage(tid, 0xFA8072FF, pmessage);
- SendClientMessage(playerid, 0xFA8072FF, amessage);
- tDuty[playerid] = 1;
- return 1;
- }
- CMD:ttp(playerid, params[])
- {
- if(!AdminCheck(playerid)) return SendClientMessage(playerid, NonAdminColor, NonAdminMessage);
- if(AnsweredTicket[playerid] == -1) return SendClientMessage(playerid, 0xFA8072FF, "** No Ticket Opened");
- new tid = AnsweredTicket[playerid];
- new pName[MAX_PLAYER_NAME], aName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
- GetPlayerName(tid, aName, MAX_PLAYER_NAME);
- new
- Float: x,
- Float: y,
- Float: z;
- GetPlayerPos(tid, x, y, z);
- SetPlayerPos(playerid, x, y, z);
- new amessage[128], pmessage[128];
- format(pmessage, sizeof(pmessage), "** %s has teleported to your location", aName);
- format(amessage, sizeof(amessage), "** You have teleported to %s's location", pName);
- SendClientMessage(playerid, 0xFA8072FF, amessage);
- SendClientMessage(tid, 0xFA8072FF, pmessage);
- return 1;
- }
- CMD:ttphere(playerid, params[])
- {
- if(!AdminCheck(playerid)) return SendClientMessage(playerid, NonAdminColor, NonAdminMessage);
- if(AnsweredTicket[playerid] == -1) return SendClientMessage(playerid, 0xFA8072FF, "** No Ticket Opened");
- new tid = AnsweredTicket[playerid];
- new pName[MAX_PLAYER_NAME], aName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
- GetPlayerName(tid, aName, MAX_PLAYER_NAME);
- new
- Float: x,
- Float: y,
- Float: z;
- GetPlayerPos(playerid, x, y, z);
- SetPlayerPos(tid, x, y, z);
- new amessage[128], pmessage[128];
- format(pmessage, sizeof(pmessage), "** %s teleported you to their location", aName);
- format(amessage, sizeof(amessage), "** %s has been teleported to your location", pName);
- SendClientMessage(playerid, 0xFA8072FF, amessage);
- SendClientMessage(tid, 0xFA8072FF, pmessage);
- return 1;
- }
- CMD:treply(playerid, params[]){
- new string[128], message[128];
- if(AnsweredTicket[playerid] == -1 && SubmittedTicket[playerid] == -1) return SendClientMessage(playerid, 0xFA8072FF, "** No Ticket Opened");
- if(SubmittedTicket[playerid] != -1){
- if(TicketInfo[playerid][claimed] == 0){
- return SendClientMessage(playerid, 0xFA8072FF, "** No one has claimed your ticket yet.");
- }
- }
- if(!sscanf(params, "s", string)){
- new aid, pid, name[MAX_PLAYER_NAME];
- if(AdminCheck(playerid)){
- //is admin
- aid = playerid;
- pid = AnsweredTicket[playerid];
- } else {
- aid = TicketInfo[playerid][helper];
- pid = playerid;
- //is player
- }
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- format(message, sizeof(message), "** %s: %s", name, string);
- SendClientMessage(aid, 0xFA8072FF, string);
- SendClientMessage(pid, 0xFA8072FF, string);
- } else {
- SendClientMessage(playerid, 0xFFFFFFFF, "USAGE: /treply [message]");
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement