Advertisement
Guest User

createchar

a guest
Sep 19th, 2019
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.41 KB | None | 0 0
  1. ALTER PROCEDURE [dbo].[TCreateChar]
  2. @bCreateCnt TINYINT OUTPUT,
  3. @szNAME VARCHAR(50),
  4. @dwCharID INT OUTPUT,
  5. @dwUserID INT,
  6. @bGroup TINYINT,
  7. @bSlot TINYINT,
  8. @bClass TINYINT,
  9. @bRace TINYINT,
  10. @bCountry TINYINT,
  11. @bSex TINYINT,
  12. @bHair TINYINT,
  13. @bFace TINYINT,
  14. @bBody TINYINT,
  15. @bPants TINYINT,
  16. @bHand TINYINT,
  17. @bFoot TINYINT
  18. AS
  19. DECLARE @dwCharSeq INT
  20. DECLARE @dwMP INT
  21. DECLARE @dwHP INT
  22. DECLARE @fPosX FLOAT
  23. DECLARE @fPosY FLOAT
  24. DECLARE @fPosZ FLOAT
  25. DECLARE @wDIR SMALLINT
  26. DECLARE @wSpawnID SMALLINT
  27. DECLARE @nCheckGlobal INT
  28. DECLARE @bRealSex TINYINT
  29.  
  30. SET @bCreateCnt = 0
  31. SET @dwCharID = 0
  32. SET @dwMP = 2
  33. SET @dwHP = 2
  34.  
  35. SELECT TOP 1 @dwHP = @dwHP + wCON, @dwMP = @dwMP + wMEN FROM TCLASSCHART WHERE bClassID = @bClass
  36. SELECT TOP 1 @dwHP = @dwHP + wCON, @dwMP = @dwMP + wMEN FROM TRACECHART WHERE bRaceID = @bRace
  37.  
  38. SET @dwHP = 7 * @dwHP + 1
  39. SET @dwMP = 9 * @dwMP + 1
  40.  
  41. IF EXISTS( SELECT TOP 1 dwCharID FROM TCHARTABLE WHERE szNAME = @szNAME)
  42. RETURN 2
  43. /*
  44. * Duplicate npc name
  45. */
  46. IF EXISTS(SELECT TOP 1 * FROM TNPCCHART WHERE szNAME = @szNAME)
  47. RETURN 2
  48. /*
  49. * Duplicate monster name
  50. */
  51. IF EXISTS(SELECT TOP 1 * FROM TMONSTERCHART WHERE szNAME = @szNAME)
  52. RETURN 2
  53. /*
  54. * Invalid slot
  55. */
  56. IF EXISTS(SELECT TOP 1 dwCharID FROM TCHARTABLE WHERE dwUserID = @dwUserID AND bSlot = @bSlot AND bDelete = 0)
  57. RETURN 3
  58. /*
  59. * Check the country
  60. */
  61.  
  62. DECLARE @bOriCountry TINYINT
  63. DECLARE @bLevel TINYINT
  64. DECLARE @dwExp INT
  65. DECLARE @wSkillPoint SMALLINT
  66. SET @bOriCountry = @bCountry
  67. SET @bLevel = 1
  68. SET @dwExp = 0
  69. SET @wSkillPoint = 0
  70.  
  71. if(@bCountry = 0)
  72. BEGIN
  73. SET @fPosX = 2869.05
  74. SET @fPosY = 31.33
  75. SET @fPosZ = 5031.06
  76. SET @wDIR = 1792
  77. SET @wSpawnID = 3002
  78. END
  79. ELSE
  80. BEGIN
  81. SET @fPosX = 5366.733
  82. SET @fPosY = 95.01044
  83. SET @fPosZ = 4657.246
  84. SET @wDIR = 841
  85. SET @wSpawnID = 3102
  86. END
  87. EXEC @nCheckGlobal = TGLOBAL_GSP.DBO.TCreateChar
  88. @dwCharSeq OUTPUT,
  89. @bCreateCnt OUTPUT,
  90. @bRealSex OUTPUT,
  91. @dwUserID,
  92. @bGroup,
  93. @dwCharID,
  94. @bSlot,
  95. @szNAME,
  96. @bClass,
  97. @bRace,
  98. @bCountry,
  99. @bSex,
  100. @bHair, -- bHair
  101. @bFace, -- bFace
  102. @bBody, -- bBody
  103. @bPants, -- bPants
  104. @bHand, -- bHand
  105. @bFoot, -- bFoot
  106. @bLevel,
  107. @dwExp -- dwExp
  108.  
  109. IF(@nCheckGlobal <> 0)
  110. RETURN @nCheckGlobal
  111.  
  112. BEGIN TRAN TCREATECHAR
  113.  
  114. INSERT INTO TCHARTABLE
  115. (
  116. dwUserID,
  117. bSlot,
  118. szNAME,
  119. bRace,
  120. bCountry,
  121. bOriCountry,
  122. bSex,
  123. bRealSex,
  124. bClass,
  125. bLevel,
  126. bHair,
  127. bFace,
  128. bBody,
  129. bPants,
  130. bHand,
  131. bFoot,
  132. dwEXP,
  133. dwHP,
  134. dwMP,
  135. wSkillPoint,
  136. dwGold,
  137. dwSilver,
  138. dwCooper,
  139. wMapID,
  140. wSpawnID,
  141. wTemptedMon,
  142. bAftermath,
  143. fPosX,
  144. fPosY,
  145. fPosZ,
  146. wDIR
  147. )
  148. VALUES
  149. (
  150. @dwUserID, -- dwUserID
  151. @bSlot, -- bSlot
  152. @szNAME, -- szNAME
  153. @bRace, -- bRace
  154. @bCountry, -- bCountry
  155. @bOriCountry,
  156. @bSex, -- bSex
  157. @bRealSex, -- bRealSex
  158. @bClass, -- bClass
  159. @bLevel, -- bLevel
  160. @bHair, -- bHair
  161. @bFace,
  162. @bBody,
  163. @bPants,
  164. @bHand,
  165. @bFoot,
  166. @dwExp,
  167. @dwHP,
  168. @dwMP,
  169. @wSkillPoint,
  170. 0,
  171. 0,
  172. 0,
  173. 0,
  174. @wSpawnID,
  175. 0,
  176. 0,
  177. @fPosX,
  178. @fPosY,
  179. @fPosZ,
  180. @wDIR
  181. )
  182.  
  183. SET @dwCharID = @@IDENTITY
  184. INSERT INTO TINVENTABLE
  185. (
  186. dwCharID,
  187. bInvenID,
  188. wItemID,
  189. dEndTime
  190. )
  191. VALUES
  192. (
  193. @dwCharID,
  194. 255,
  195. 3,
  196. 0
  197. )
  198.  
  199. INSERT INTO TINVENTABLE
  200. (
  201. dwCharID,
  202. bInvenID,
  203. wItemID,
  204. dEndTime
  205. )
  206. VALUES
  207. (
  208. @dwCharID,
  209. 254,
  210. 2,
  211. 0
  212. )
  213.  
  214. INSERT INTO TCABINETTABLE VALUES(@dwCharID, 0, 1)
  215. INSERT INTO TSKILLTABLE SELECT @dwCharID, wSkillID, 1, 0 FROM TSTARTSKILL WHERE bClassID=@bClass
  216. COMMIT TRAN TCREATECHAR
  217.  
  218. DECLARE @bStartInven TINYINT
  219. DECLARE @bStartSlot TINYINT
  220. DECLARE @bStartChartType TINYINT
  221. DECLARE @wStartItemID SMALLINT
  222. DECLARE @bStartCount TINYINT
  223. DECLARE CUR_STARTITEM CURSOR FOR
  224. SELECT bInven, bSlot, bChartType, wItemID, bCount FROM TSTARTITEMCHART WHERE bCountry=@bCountry AND bClass = @bClass
  225. OPEN CUR_STARTITEM
  226. FETCH NEXT FROM CUR_STARTITEM INTO @bStartInven, @bStartSlot, @bStartChartType, @wStartItemID, @bStartCount
  227. WHILE @@FETCH_STATUS = 0
  228. BEGIN
  229. EXEC TPutItemInInven @dwCharID, @bStartInven, @bStartSlot, @bStartChartType, @wStartItemID, @bStartCount
  230. FETCH NEXT FROM CUR_STARTITEM INTO @bStartInven, @bStartSlot, @bStartChartType, @wStartItemID, @bStartCount
  231. END
  232. CLOSE CUR_STARTITEM
  233. DEALLOCATE CUR_STARTITEM
  234.  
  235. -- 편지보내기 ------------------------------------------------------------------------------------
  236. DECLARE @dwPostID INT
  237. DECLARE @dwRecvID INT
  238. DECLARE @szTitle VARCHAR(256)
  239. DECLARE @szMessage VARCHAR(2048)
  240. DECLARE @bLenTitle BINARY(4)
  241. DECLARE @bLenMessage BINARY(4)
  242. DECLARE @szT VARCHAR(8)
  243. DECLARE @szM VARCHAR(8)
  244. DECLARE @dateCreated SMALLDATETIME
  245. SET @dateCreated = GetDate()
  246. SET @szTitle = ':)'
  247. SET @szMessage = ':)
  248. ' SET @bLenTitle = DATALENGTH(@szTitle)
  249. SET @bLenMessage = DATALENGTH(@szMessage)
  250. SET @szT = RIGHT(master.dbo.fn_sqlvarbasetostr(@bLenTitle), 8)
  251. SET @szTitle = @szT + @szTitle
  252. SET @szM = RIGHT(master.dbo.fn_sqlvarbasetostr(@bLenMessage), 8)
  253. SET @szMessage = @szM + @szMessage
  254. EXEC TSavePost @dwPostID OUTPUT, @dwRecvID OUTPUT, 0, @dwCharID, @szName, ':)',@szTitle,@szMessage,0,0,0,0,0,@dateCreated
  255. -----------------------------------------------------------------------------------------------------------------------------
  256.  
  257. UPDATE TGLOBAL_GSP.DBO.TALLCHARTABLE SET dwCharID = @dwCharID WHERE dwSeq = @dwCharSeq
  258.  
  259. IF EXISTS( SELECT bClassID FROM TSTARTRECALL WHERE bClassID = @bClass AND bCountryID = @bCountry)
  260. BEGIN
  261. DECLARE @dwMonID INT
  262. DECLARE @wMonTemp SMALLINT
  263. DECLARE @dwATTR INT
  264. DECLARE @dwMaxHP INT
  265. DECLARE @dwMaxMP INT
  266. SET @wMonTemp = 0
  267. SELECT @wMonTemp = wMonID FROM TSTARTRECALL WHERE bClassID = @bClass AND bCountryID = @bCountry
  268. IF(@wMonTemp > 0)
  269. BEGIN
  270. SELECT @dwATTR = wSummonAttr FROM TMONSTERCHART WHERE wID= @wMonTemp
  271. SELECT @dwMaxHP=dwMaxHP, @dwMaxMP = dwMaxMP FROM TMONATTRCHART WHERE wID=@dwATTR AND bLevel=1
  272. UPDATE TCHARTABLE SET wTemptedMon = @wMonTemp WHERE dwCharID = @dwCharID
  273. SET @dwATTR = @dwATTR + POWER(2,16)
  274. EXEC TCreateRecallMon
  275. @dwMonID OUTPUT,
  276. @dwCharID,
  277. @wMonTemp,
  278. 0,
  279. @dwATTR,
  280. 1,
  281. @dwMaxHP,
  282. @dwMaxMP,
  283. 1,
  284. @fPosX,
  285. @fPosY,
  286.  
  287. @fPosZ,
  288. 0
  289. END
  290. END
  291. IF NOT EXISTS(SELECT dwUserID FROM TPETTABLE WHERE dwUserID = @dwUserID)
  292.  
  293. RETURN @@ERROR
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement