A question about an Idea.

01/22/2015 07:59 Dotzie#1
Hello Guys, I figured i would like to try something new out on my server.

I came to a Answer that it should be possible but wasnt sure so i wanted to ask and see what you say about it.

How about adding an item into the game wish will give you skillpoints when Clicking it? Like a SkillReset but instead of reseting it could add like 5 points per item.

There are items such as AP Coins and Gold Coins wish actually adds it into the character. The Trigger for using that is basicly the same as the one using AP Coin..

Here is how i thought about it...

PHP Code:
USE [PS_GameLog]
GO
/****** Object: StoredProcedure [dbo].[usp_Insert_Action_Log_E] Script Date: 02/07/2012 00:46:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/****** Object: Stored Procedure dbo.usp_Insert_Action_Log_E Script Date: 2008-6-7 18:32:40 ******/

/****** Object: Stored Procedure dbo.usp_Insert_Action_Log_E Script Date: 2008/3/15 下午 05:16:53 ******/



ALTER Proc [dbo].[usp_Insert_Action_Log_E]

/*
Created by [Only registered and activated users can see links. Click Here To Register...], 2004-08-17
Modified by [Only registered and activated users can see links. Click Here To Register...], 2004-08-19

게임내 행동 로그 남기기 */


/*

*/

@UserID varchar(18),
@
UserUID int,
@
CharID int,
@
CharName varchar(50),
@
CharLevel tinyint,
@
CharExp int,
@
MapID smallint,
@
PosX real,
@
PosY real,
@
PosZ real,
@
ActionTime datetime,
@
ActionType tinyint,
@
Value1 bigint null,
@
Value2 int null,
@
Value3 int null,
@
Value4 bigint null,
@
Value5 int null,
@
Value6 int null,
@
Value7 int null,
@
Value8 int null,
@
Value9 int null,
@
Value10 int null,
@
Text1 varchar(100) = '',
@
Text2 varchar(100) = '',
@
Text3 varchar(100) = '',
@
Text4 varchar(100) = '',
@
Sql nvarchar(4000) = '',
@
yyyy varchar(4) = '',
@
mm varchar(2) = '',
@
dd varchar(2) = '',
@
Bucket smallint = -1

AS

SET @yyyy datepart(yyyy, @ActionTime)
SET @mm datepart(mm, @ActionTime)
SET @dd datepart(dd, @ActionTime)


IF(
LEN(@mm) = 1)
BEGIN
SET 
@mm '0' + @mm
END

IF(LEN(@dd) = 1)
BEGIN
SET 
@dd '0' + @dd
END

SET 
@Sql N'
INSERT INTO PS_GameLog.dbo.ActionLog
(UserID, UserUID, CharID, CharName, CharLevel, CharExp, MapID, PosX, PosY, PosZ, ActionTime, ActionType,
Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8, Value9, Value10, Text1, Text2, Text3, Text4)
VALUES(@UserID, @UserUID, @CharID, @CharName, @CharLevel, @CharExp, @MapID, @PosX, @PosY, @PosZ, @ActionTime, @ActionType,
@Value1, @Value2, @Value3, @Value4, @Value5, @Value6, @Value7, @Value8, @Value9, @Value10, @Text1, @Text2, @Text3, @Text4)'

EXEC sp_executesql @Sql,
N'@UserID varchar(18), @UserUID int, @CharID int, @CharName varchar(50),
@CharLevel tinyint, @CharExp int, @MapID smallint, @PosX real, @PosY real, @PosZ real, @ActionTime datetime, @ActionType tinyint,
@Value1 bigint, @Value2 int, @Value3 int, @Value4 bigint, @Value5 int, @Value6 int, @Value7 int, @Value8 int,
@Value9 int, @Value10 int, @Text1 varchar(100), @Text2 varchar(100), @Text3 varchar(100), @Text4 varchar(100)'
,
@
UserID, @UserUID, @CharID, @CharName, @CharLevel, @CharExp, @MapID, @PosX, @PosY, @PosZ, @ActionTime, @ActionType,
@
Value1, @Value2, @Value3, @Value4, @Value5, @Value6, @Value7, @Value8, @Value9, @Value10, @Text1, @Text2, @Text3, @Text4

IF( @ActionType 114 )
BEGIN
IF( @Value2 25046 )
BEGIN
UPDATE ps_GameData
.dbo.Chars
SET SkillPoint 
SkillPoint + ( * @Value4 )
WHERE useruid = @UserUID
END

IF( @Value2 25044 )
BEGIN
UPDATE ps_GameData
.dbo.Chars
SET SkillPoint 
SkillPoint + ( * @Value4 )
WHERE useruid = @UserUID
END
END 
01/22/2015 09:12 wallerus#2
I can see why you'd think this would be possible, it almost is. A few mistakes in your codes are marked in red below, just for learning purposes.

IF( @ActionType = 114 )
BEGIN
IF( @Value2 = 25046 )
BEGIN
UPDATE ps_GameData.dbo.Chars
SET SkillPoint = SkillPoint + ( 2 * @Value4 )
WHERE CharID=@CharID
END
END -- Missing END.

IF( @Value2 = 25044 )
BEGIN
UPDATE ps_GameData.dbo.Chars
SET SkillPoint = SkillPoint + ( 5 * @Value4 )
WHERE CharID=@CharID
END
END

The only reason this doesn't work is that for the effects to show and be available to your character, you have to re-log (go to char screen). In this time, your old Skill Point value overwrites the (what would be) new value. However, if you use UserID as you originally used all your characters (except the one that used/NPC'd the item) will receive this Skillpoint increase. I assume that's not how you'd want it to work, so that's why I said it almost does.
01/22/2015 10:30 Dotzie#3
Actually i did notice it would need a relog for the Skillpoints to take effect. Its not that bad if it has to. However Thanks for changing those parts i didnt see before.

It should update the skillpoints without any Futher problem aslong the character relog after using the item right?
01/22/2015 14:22 wallerus#4
Read what I said :P
Quote:
Originally Posted by wallerus View Post
The only reason this doesn't work is that for the effects to show and be available to your character, you have to re-log (go to char screen). In this time, your old Skill Point value overwrites the (what would be) new value.
Basically, for it to work you'd have to relog, but when you logout it saves your current in-game points into the database, overwriting any new value. Here's a step-by-step of what happens:
  1. Skillpoints=100
  2. Sell/Use Item
  3. New Skillpoints=105 (database only, requires relog for ingame)
  4. Go to character screen
  5. Game saves "old" Skillpoints (=100)
  6. Database now reads 100 again
  7. Login, you are still at 100 points
However, if you use UserID rather than CharID, all characters EXCEPT the one you sold/used the item with, will have an increase in Skillpoints.
01/22/2015 14:53 Boul27#5
Hi,

I have an idea that could be exploited.

You can create a new table where you stock the CharID and the new amount of skillpoints.
Add a trigger that read the table, if there is a line, it set the skillpoint to the value of this database, and erease the line.

This is a step-by-step of what i think:
Skillpoints=100
Sell/Use Item
New Skillpoints=105 in the added database
Go to character screen
Trigger read that there is a line in the new database
Set the new skillpoints into ps_GameData.dbo.Chars


I don't know if it's possible
But it's an idea :)