Forráskód Böngészése

Fixed unnecessary row autoincrement

Minor optimizations, too.  We'll check if the achievement exists first
before attempting to register it.
nosoop 7 éve
szülő
commit
374554badf
1 módosított fájl, 10 hozzáadás és 6 törlés
  1. 10 6
      scripting/custom_achievements.sp

+ 10 - 6
scripting/custom_achievements.sp

@@ -13,7 +13,7 @@
 #include <stocksoup/log_server>
 #include <stocksoup/tf/tempents_stocks>
 
-#define PLUGIN_VERSION "0.1.0"
+#define PLUGIN_VERSION "0.1.1"
 public Plugin myinfo = {
 	name = "[CSRD] Custom Achievements",
 	author = "nosoop",
@@ -105,18 +105,22 @@ public int Native_RegisterAchievement(Handle hPlugin, int argc) {
 	
 	int achievementStyle = GetNativeCell(2);
 	
-	g_QueryRegisterAchievement.BindString(0, internalName, false);
-	g_QueryRegisterAchievement.BindInt(1, achievementStyle, false);
-	
-	SQL_Execute(g_QueryRegisterAchievement);
-	
+	// Attempt to fetch achievement first, creating it if it doesn't exist.
 	g_QueryGetAchievementIdentifier.BindString(0, internalName, false);
 	SQL_Execute(g_QueryGetAchievementIdentifier);
 	
 	int iAchievement;
 	if (SQL_FetchRow(g_QueryGetAchievementIdentifier)) {
 		iAchievement = SQL_FetchInt(g_QueryGetAchievementIdentifier, 0);
+	} else {
+		g_QueryRegisterAchievement.BindString(0, internalName, false);
+		g_QueryRegisterAchievement.BindInt(1, achievementStyle, false);
+		
+		SQL_Execute(g_QueryRegisterAchievement);
+		
+		iAchievement = SQL_GetInsertId(g_QueryRegisterAchievement);
 	}
+	
 	LogDebug("Achievement '%s' registered under identifier %d", internalName, iAchievement);
 	return iAchievement;
 }