· 9 years ago · Nov 30, 2016, 06:34 PM
1Index: src/server/bulkobjects/pscharacter.cpp
2===================================================================
3--- src/server/bulkobjects/pscharacter.cpp (revisione 9963)
4+++ src/server/bulkobjects/pscharacter.cpp (copia locale)
5@@ -2449,7 +2449,20 @@
6 return false;
7 }
8
9+bool psCharacter::AddAchievement(PID achievement quantity)
10+{
11+ int rows = db->Command("INSERT INTO character_achievements (character_id, achievement_id, achievement_quantity) VALUES (%u, %u, %u)",
12+ pid.Unbox(), achievement.Unbox(), quantity.Unbox());
13
14+ if(rows != 1)
15+ {
16+ psserver->GetDatabase()->SetLastError(psserver->GetDatabase()->GetLastSQLError());
17+ return false;
18+ }
19+
20+ return true;
21+}
22+
23 bool psCharacter::AddExploredArea(PID explored)
24 {
25 int rows = db->Command("INSERT INTO character_relationships (character_id, related_id, relationship_type) VALUES (%u, %u, 'exploration')",
26@@ -2715,6 +2728,10 @@
27
28 return skills.AddSkillPractice(skill, params[1]);
29 }
30+ else if(function == "AddAchievement")
31+ {
32+ return AddAchievement(params[0] params[1]);
33+ }
34 else if(function == "HasExploredArea")
35 {
36 if(!HasExploredArea(params[0]))
37Index: src/server/bulkobjects/pscharacter.h
38===================================================================
39--- src/server/bulkobjects/pscharacter.h (revisione 9963)
40+++ src/server/bulkobjects/pscharacter.h (copia locale)
41@@ -985,6 +985,14 @@
42 float GetScaleValue();
43
44 /**
45+ * Add a new achievement.
46+ *
47+ * @param achievement The Achievement ID from achievements table.
48+ * @param quantity The Achievement quantity.
49+ */
50+ bool AddAchievement(PID achievement quantity);
51+
52+ /**
53 * Add a new explored area.
54 *
55 * @param explored The PID of the area npc.
56Index: src/server/database/mysql/achievements.sql
57===================================================================
58--- src/server/database/mysql/achievements.sql (nonexistent)
59+++ src/server/database/mysql/achievements.sql (copia locale)
60@@ -0,0 +1,16 @@
61+# MySQL-Front Dump 1.16 beta
62+#
63+# Host: localhost Database: planeshift
64+#--------------------------------------------------------
65+# Server version 3.23.52-max-nt
66+#
67+# Table structure for table 'achievements'
68+#
69+CREATE TABLE `achievements` (
70+ `id` int(11) NOT NULL COMMENT 'the achievement id',
71+ `name` varchar(200) DEFAULT NULL COMMENT 'Achievement id',
72+ `description` text COMMENT 'the achievement description',
73+ `group` varchar(200) DEFAULT NULL COMMENT 'the achievement group or type',
74+ `icon` varchar(200) DEFAULT NULL COMMENT 'the achievement icon',
75+ PRIMARY KEY (`id`)
76+ ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
77Index: src/server/database/mysql/character_achievements.sql
78===================================================================
79--- src/server/database/mysql/character_achievements.sql (nonexistent)
80+++ src/server/database/mysql/character_achievements.sql (copia locale)
81@@ -0,0 +1,25 @@
82+# MySQL-Front Dump 1.16 beta
83+#
84+# Host: localhost Database: planeshift
85+#--------------------------------------------------------
86+# Server version 3.23.52-max-nt
87+#
88+# Table structure for table 'character_achievement'
89+#
90+
91+DROP TABLE IF EXISTS `character_achievements`;
92+CREATE TABLE `character_achievements`
93+(
94+ character_id int(10) unsigned NOT NULL default '0' COMMENT 'character id from the characters table' ,
95+ achievement_id int(10) unsigned NOT NULL default '0' COMMENT 'the achievement ID from the achievements table' ,
96+ achievement_quantity int(10) NOT NULL default '0' COMMENT 'number of achievements gained' ,
97+
98+ PRIMARY KEY (`character_id`, `achievement_id`),
99+ KEY ( `character_id` ),
100+ KEY (`achievement_id`)
101+)
102+COMMENT = 'relations of char to another char, ex. buddy';
103+
104+
105+INSERT INTO character_achievements VALUES( 2, 1, 1 );
106+INSERT INTO character_achievements VALUES( 2, 2, 3 );
107Index: src/server/database/mysql/upgrade_schema.sql
108===================================================================
109--- src/server/database/mysql/upgrade_schema.sql (revisione 9963)
110+++ src/server/database/mysql/upgrade_schema.sql (copia locale)
111@@ -1881,10 +1881,13 @@
112 ALTER TABLE accounts ADD COLUMN `Machine_type` char(6) DEFAULT NULL AFTER OS_platform;
113 UPDATE `server_options` SET `option_value`='1280' WHERE `option_name`='db_version';
114
115+#
116+# Add character character_achievements tables in the database.
117+#
118+SOURCE character_achievements.sql;
119+UPDATE `server_options` SET `option_value`='1281' WHERE `option_name`='db_version';
120+
121 # Insert your upgrade before this line. Remember when you set a new db_version
122 # to update the server_options.sql file and update psserver.cpp as well.
123 # This to ensure that everything is working if you use the create_all.sql to
124 # create a new fresh DB.
125-
126-
127-
128Index: src/server/psserver.cpp
129===================================================================
130--- src/server/psserver.cpp (revisione 9963)
131+++ src/server/psserver.cpp (copia locale)
132@@ -95,7 +95,7 @@
133 #include "workmanager.h"
134
135 // Remember to bump this in server_options.sql and add to upgrade_schema.sql!
136-#define DATABASE_VERSION_STR "1280"
137+#define DATABASE_VERSION_STR "1281"
138
139
140 psCharacterLoader psServer::CharacterLoader;