· 5 years ago · Nov 12, 2020, 11:14 PM
1#include <sourcemod>
2#include <SteamWorks>
3
4#pragma semicolon 1
5#pragma newdecls required
6
7Database db;
8int g_iCounter;
9int g_iHowMany = 100; //Wpisz tu ile ma być wpisów.
10
11public Plugin myinfo =
12{
13 name = "Jakieś gówno dla Krystyny",
14 description = "",
15 author = "Ch W.",
16 version = "1.0",
17 url = ""
18};
19
20public void OnPluginStart()
21{
22 RegConsoleCmd("sm_freeotm", CmdFreeOtm);
23}
24
25public void OnConfigsExecuted()
26{
27 if (db == null)
28 DbConnect();
29}
30
31public void OnMapStart()
32{
33 DBResultSet rs;
34 g_iCounter = 0; //tu be siur.
35
36 if ((rs = SQL_Query(db, "SELECT id FROM freeotm")) == null)
37 {
38 char error[255];
39 SQL_GetError(db, error, sizeof(error));
40 LogError("Error on count query: %s", error);
41 return;
42 }
43
44 g_iCounter = rs.RowCount;
45 delete rs;
46}
47
48public void DbConnect()
49{
50 char error[255];
51 char query[512];
52
53 if(SQL_CheckConfig("freeotm"))
54 {
55 db = SQL_Connect("freeotm", true, error, 255);
56
57 if (db == null)
58 SetFailState("Error on start. Reason: %s", error);
59 }
60 else
61 SetFailState("Cant find `freeotm` on database.cfg");
62
63 Format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `freeotm` ( `id` INT NOT NULL AUTO_INCREMENT, `auth` TEXT NOT NULL, `name` TEXT NOT NULL, PRIMARY KEY (`id`)) ENGINE = MyISAM;");
64 db.Query(SQLT_Error, query);
65}
66
67public void SQLT_Error(Database database, DBResultSet results, const char[] error, any data)
68{
69 if(results == null)
70 LogError("Error: %s", error);
71}
72
73public Action CmdFreeOtm(int client, int args)
74{
75 if(!IsValidClient(client))
76 return Plugin_Handled;
77
78 if(IsClientAllowed(client))
79 MakeAVote(client);
80
81 return Plugin_Handled;
82}
83
84public void MakeAVote(int client)
85{
86 char error[255];
87 char query[255];
88 char auth[64];
89 DBResultSet rs;
90
91 if(GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth)))
92 {
93 Format(query, sizeof(query), "SELECT id FROM freeotm WHERE auth = '%s' LIMIT 1", auth);
94 if ((rs = SQL_Query(db, query)) == null)
95 {
96 SQL_GetError(db, error, sizeof(error));
97 LogError("Error: %s", error);
98 return;
99 }
100 }
101
102 if(!rs.FetchRow())
103 {
104 //ciekawe czy musze to "usuwać"... :)
105 delete rs;
106 Format(query, sizeof(query), "INSERT INTO `freeotm` (`id`, `auth`, `name`) VALUES (NULL, '%s', '%N')", auth, client);
107
108 if((rs = SQL_Query(db, query)) == null)
109 {
110 SQL_GetError(db, error, sizeof(error));
111 LogError("Error: %s", error);
112 PrintToChat(client, "Coś nie pykło #error");
113 return;
114 }
115 else
116 {
117 g_iCounter++;
118 PrintToChat(client, "Pykło... jest to wpis: %i/%i", g_iCounter, g_iHowMany);
119 }
120
121 }
122 else
123 PrintToChat(client, "Drugi raz? No nie... jebać Ci matke. jest już wpisów: %i/%i", g_iCounter, g_iHowMany);
124
125 delete rs;
126}
127
128public bool IsClientAllowed(int client)
129{
130 if((k_EUserHasLicenseResultDoesNotHaveLicense != SteamWorks_HasLicenseForApp(client, 624820)) || hasVipAccess(client))
131 return true;
132 return false;
133}
134
135public bool hasVipAccess(int client)
136{
137 if(GetUserFlagBits(client) & ADMFLAG_CUSTOM3)
138 return true;
139 return false;
140}
141
142public bool IsValidClient(int client)
143{
144 if(client <= 0 ) return false;
145 if(client > MaxClients) return false;
146 if(!IsClientConnected(client)) return false;
147 if(IsClientReplay(client)) return false;
148 if(IsFakeClient(client)) return false;
149 if(IsClientSourceTV(client)) return false;
150 return IsClientInGame(client);
151}