Jump to content
  • 0

npc voteforpoints does not record points


Geralt

Question


  • Group:  Members
  • Topic Count:  61
  • Topics Per Day:  0.01
  • Content Count:  108
  • Reputation:   0
  • Joined:  12/26/12
  • Last Seen:  

Guys I had created another topic another section on voteforpoints. OK
https://github.com/sanasol/FluxCP_Addons-VoteForPoints
It worked fine but the npc does not record the points,

example: I voted for topragnarok there
inside the server it does not count the points is 0

 

prontera,150,150,4    script    VFP Manager    62,{
    function getPoints;

    set .@n$,             "[VFP Manager]";
    set .@settings,     1;        // 0 = item, 1 = shop
    set .@itemReward,     501;    // if settings is set to item
    set .@convertRate,     2;        // 2 Vote Points for 1 Red Potion
    set .vp,             getPoints(getcharid(3));
    
    switch (.@settings) {
        case 0:
            mes .@n$;
            mes "Would you like to convert your "+ .vp +" Vote Points?";
            mes "^ff0000The current convert rate is "+ .@convertRate +" Vote Points for 1 "+ getitemname(.@itemReward) +".";
            next;
            menu "Yes", L_Convert, "No", -;
            mes .@n$;
            mes "Bye, then.";
            break;
        case 1:
            mes .@n$;
            mes "You have ^ff0000"+ .vp +"^000000 Vote Points.";
            mes "Would you like to go shopping?";
            next;
            menu "Yes", -, "No", L_Goodbye;
            mes .@n$;
            mes "Have fun shopping!";
            callshop "votepoints_shop",1;
            npcshopattach "votepoints_shop";
            end;
    }
    
    L_Goodbye:
        mes .@n$;
        mes "Goodbye, then.";
        close;
    
    L_Convert:
        if (.vp < .@convertRate)
            goto L_VotePointsTooLow;
        mes .@n$;
        mes "How much Vote Points would you like to convert?";
        next;
        menu "All", L_ConvertAll, "Input Amount", L_ConvertAmount;
    
    L_ConvertAmount:
        input .@convert;
        
        if (.@convert > .vp)
            goto L_VotePointsTooLow;
        
        set .vp, ((.vp - .@convert) + (.@convert % .@convertRate));
        set .@convert, (.@convert / .@convertRate);
        getitem .@itemReward, .@convert;
        query_sql("UPDATE cp_createlog SET votepoints = "+ .vp +" WHERE account_id = "+ getcharid(3));
        
        mes .@n$;
        mes "You have received "+ .@convert +"x "+ getitemname(.@itemReward) +".";
        mes "Your current Vote Points is "+ .vp;
        close;
        
    L_ConvertAll:
        set .@convert, (.vp / .@convertRate);
        set .vp, (.vp % .@convertRate);
        getitem .@itemReward, .@convert;
        query_sql("UPDATE cp_createlog SET votepoints = "+ .vp +" WHERE account_id = "+ getcharid(3));
        
        mes .@n$;
        mes "You have received "+ .@convert +"x "+ getitemname(.@itemReward) +".";
        mes "Your current Vote Points is "+ .vp;
        close;
    
    L_VotePointsTooLow:
        mes .@n$;
        mes "Your Vote Points is too low. Come back when you have the minimum amount of Vote Points.";
        close;
    
    function getPoints {
        set .@account_id, getarg(0);
        
        set .@count, query_sql("SELECT votepoints FROM cp_createlog WHERE account_id = "+ .@account_id, .@votepoints);
        
        return .@count ? .@votepoints : 0;
    }
    
    OnBuyItem:
        set .@cost,0;
        for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1)
            for(set .@j,0; .@j<getarraysize(.itemShop); set .@j,.@j+2)
                if (@bought_nameid[.@i] == .itemShop[.@j]) {
                    set .@cost, .@cost+(.itemShop[.@j+1]*@bought_quantity[.@i]);
                    break;
                }
        mes .@n$;
        if (.@cost > .vp) mes "You don't have enough Vote Points.";
        else {
            for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1) {
                getitem @bought_nameid[.@i], @bought_quantity[.@i];
                dispbottom "Purchased "+@bought_quantity[.@i]+"x "+getitemname(@bought_nameid[.@i])+".";
            }
            set .vp, .vp - .@cost;
            query_sql("UPDATE cp_createlog SET votepoints = votepoints - "+ .@cost +" WHERE account_id = "+ getcharid(3));
            mes .@n$;
            mes "Deal completed.";
            mes "You now have ^ff0000"+ .vp +"^000000 Vote Points.";
            emotion e_cash;
        }
        set .@cost,0;
        deletearray @bought_nameid[0], getarraysize(@bought_nameid);
        deletearray @bought_quantity[0], getarraysize(@bought_quantity);
        close;
    
    OnInit:
        setarray .itemShop[0],    501,2,607,5; // <ITEM_ID>,<PRICE>,...
        
        npcshopdelitem "votepoints_shop",512;
        for(set .@i, 0; .@i < getarraysize(.itemShop); set .@i, .@i+2)
            npcshopadditem "votepoints_shop", .itemShop[.@i], .itemShop[.@i+1];
    end;
}

-    shop    votepoints_shop    -1,512:-1
Edited by Akkarin
Please use codebox for code instead of quotes /no1
Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

  • Group:  Forum Manager
  • Topic Count:  282
  • Topics Per Day:  0.06
  • Content Count:  3123
  • Reputation:   1617
  • Joined:  03/26/12
  • Last Seen:  

Summoning @Sanasol

  • Love 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  11
  • Topics Per Day:  0.00
  • Content Count:  185
  • Reputation:   53
  • Joined:  01/04/12
  • Last Seen:  

https://github.com/sanasol/FluxCP_Addons-VoteForPoints/blob/master/config/addon.php#L4

 

Do you use vote option here?

 

NPC only works in this case i guess ?

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  318
  • Topics Per Day:  0.07
  • Content Count:  931
  • Reputation:   13
  • Joined:  12/20/11
  • Last Seen:  

On 4/14/2020 at 12:23 PM, Sanasol said:

https://github.com/sanasol/FluxCP_Addons-VoteForPoints/blob/master/config/addon.php#L4

 

Do you use vote option here?

 

NPC only works in this case i guess ?

I used vote option. I tried to vote 

upon checking cp_createlog. It appears to still be empty. that is why the NPC doesn't retrieve anything so what I need was 

 I tried to insert values manually making sure to populate the accound_id then i tried to vote again using the account_id. After checking votepoints has been added.

I think the issue maybe due to the lack of insert function for vote? I'm really not sure

 

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  0
  • Topics Per Day:  0
  • Content Count:  90
  • Reputation:   34
  • Joined:  10/01/18
  • Last Seen:  

On 5/10/2020 at 10:45 AM, darking123 said:

I used vote option. I tried to vote 

upon checking cp_createlog. It appears to still be empty. that is why the NPC doesn't retrieve anything so what I need was 

 I tried to insert values manually making sure to populate the accound_id then i tried to vote again using the account_id. After checking votepoints has been added.

I think the issue maybe due to the lack of insert function for vote? I'm really not sure

 

Alright! This is how i fixed the issue regarding not updating SQL.

 

Make sure your using the "vote":
Locate: addons\voteforpoints\config\addon.php

'PointsType'			=> "vote", // credit, vote, cash



What i did was creating a new table, which is "cp_v4p_voters"

SQL Table: (Execute this query)

CREATE TABLE `cp_v4p_voters` (
  `account_id` int(10) unsigned NOT NULL,
  `votepoints` int(10) unsigned NOT NULL,
  PRIMARY KEY (`account_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

First removed the existing one:
 

							case "vote":
                                // update votepoints
                                $sql = "UPDATE $server->loginDatabase.cp_createlog SET votepoints = votepoints + ? WHERE account_id = ?";
                                $sth = $server->connection->getStatement($sql);
                                $sth->execute(array((int) $res->votepoints, $account_id));
                                break;

 

And Insert this: (Locate)

addons\voteforpoints\modules\voteforpoints\index.php

							case "vote":
							// update votepoints
							$sql = "UPDATE $server->loginDatabase.cp_v4p_voters SET votepoints = votepoints + ? WHERE account_id = ?";
							$sth = $server->connection->getStatement($sql);
							$sth->execute(array((int) $res->votepoints, $account_id));
								if ( ! $sth->rowCount())
								{
									$sql = "INSERT INTO $server->loginDatabase.cp_v4p_voters VALUES (?, ?)";
									$sth = $server->connection->getStatement($sql);
									$bind = array($account_id, $res->votepoints);
									$sth->execute($bind);

								if ( ! $sth->rowCount())
									$errorMessage = sprintf(Flux::message("UnableToVote"), 3);
                                } else {
                                    $sql = "UPDATE $server->loginDatabase.cp_v4p_voters SET `value` = `value` + ? WHERE `key` = ? AND account_id = ?";
                                    $sth = $server->connection->getStatement($sql);
									$sth->execute(array((int) $res->votepoints, $account_id));
                                }
                                break;

 

PROOF it works .

Capture.PNG.80838874b86abfeba361e4e6086e21eb.PNG

Edited by Royr
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  13
  • Topics Per Day:  0.00
  • Content Count:  50
  • Reputation:   1
  • Joined:  02/13/13
  • Last Seen:  

this script good to use... but cant points in to player only to phpmyadmin..

cash points  good use.. but vote points not work

Edited by rizal84150
  • Upvote 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  96
  • Topics Per Day:  0.02
  • Content Count:  554
  • Reputation:   14
  • Joined:  09/24/12
  • Last Seen:  

On 11/11/2020 at 9:27 PM, Royr said:

Alright! This is how i fixed the issue regarding not updating SQL.

 

Make sure your using the "vote":
Locate: addons\voteforpoints\config\addon.php


'PointsType'			=> "vote", // credit, vote, cash



What i did was creating a new table, which is "cp_v4p_voters"

SQL Table: (Execute this query)


CREATE TABLE `cp_v4p_voters` (
  `account_id` int(10) unsigned NOT NULL,
  `votepoints` int(10) unsigned NOT NULL,
  PRIMARY KEY (`account_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

First removed the existing one:
 


							case "vote":
                                // update votepoints
                                $sql = "UPDATE $server->loginDatabase.cp_createlog SET votepoints = votepoints + ? WHERE account_id = ?";
                                $sth = $server->connection->getStatement($sql);
                                $sth->execute(array((int) $res->votepoints, $account_id));
                                break;

 

And Insert this: (Locate)

addons\voteforpoints\modules\voteforpoints\index.php


							case "vote":
							// update votepoints
							$sql = "UPDATE $server->loginDatabase.cp_v4p_voters SET votepoints = votepoints + ? WHERE account_id = ?";
							$sth = $server->connection->getStatement($sql);
							$sth->execute(array((int) $res->votepoints, $account_id));
								if ( ! $sth->rowCount())
								{
									$sql = "INSERT INTO $server->loginDatabase.cp_v4p_voters VALUES (?, ?)";
									$sth = $server->connection->getStatement($sql);
									$bind = array($account_id, $res->votepoints);
									$sth->execute($bind);

								if ( ! $sth->rowCount())
									$errorMessage = sprintf(Flux::message("UnableToVote"), 3);
                                } else {
                                    $sql = "UPDATE $server->loginDatabase.cp_v4p_voters SET `value` = `value` + ? WHERE `key` = ? AND account_id = ?";
                                    $sth = $server->connection->getStatement($sql);
									$sth->execute(array((int) $res->votepoints, $account_id));
                                }
                                break;

 

PROOF it works .

Capture.PNG.80838874b86abfeba361e4e6086e21eb.PNG

Yeash this works flawlesly BUT it still did not work & still did not shown any point while in game.
(Btw do you restart the whole server?)

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  13
  • Topics Per Day:  0.00
  • Content Count:  50
  • Reputation:   1
  • Joined:  02/13/13
  • Last Seen:  

Nice thx sir

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  30
  • Topics Per Day:  0.01
  • Content Count:  89
  • Reputation:   1
  • Joined:  11/11/17
  • Last Seen:  

On 4/14/2020 at 1:23 AM, Sanasol said:

https://github.com/sanasol/FluxCP_Addons-VoteForPoints/blob/master/config/addon.php#L4

 

Do you use vote option here?

 

NPC only works in this case i guess ?

when I buy the apple at the shop, it doesn't deduct the points, nor does it check if I have enough points.
 

poring_c01,104,100,4	script	VFP Manager	62,{
	function getPoints;

	set .@n$, 			"[VFP Manager]";
	set .@settings, 	1;		// 0 = item, 1 = shop
	set .@itemReward, 	501;	// if settings is set to item
	set .@convertRate, 	2;		// 2 Vote Points for 1 Red Potion
	set .vp, 			getPoints(getcharid(3));
	
	switch (.@settings) {
		case 0:
			mes .@n$;
			mes "Would you like to convert your "+ .vp +" Vote Points?";
			mes "^ff0000The current convert rate is "+ .@convertRate +" Vote Points for 1 "+ getitemname(.@itemReward) +".";
			next;
			menu "Yes", L_Convert, "No", -;
			mes .@n$;
			mes "Bye, then.";
			break;
		case 1:
			mes .@n$;
			mes "You have ^ff0000"+ .vp +"^000000 Vote Points.";
			mes "Would you like to go shopping?";
			next;
			menu "Yes", -, "No", L_Goodbye;
			mes .@n$;
			mes "Have fun shopping!";
			callshop "votepoints_shop",1;
			npcshopattach "votepoints_shop";
			end;
	}
	
	L_Goodbye:
		mes .@n$;
		mes "Goodbye, then.";
		close;
	
	L_Convert:
		if (.vp < .@convertRate)
			goto L_VotePointsTooLow;
		mes .@n$;
		mes "How much Vote Points would you like to convert?";
		next;
		menu "All", L_ConvertAll, "Input Amount", L_ConvertAmount;
	
	L_ConvertAmount:
		input .@convert;
		
		if (.@convert > .vp)
			goto L_VotePointsTooLow;
		
		set .vp, ((.vp - .@convert) + (.@convert % .@convertRate));
		set .@convert, (.@convert / .@convertRate);
		getitem .@itemReward, .@convert;
		query_sql("UPDATE cp_createlog SET votepoints = "+ .vp +" WHERE account_id = "+ getcharid(3));
		
		mes .@n$;
		mes "You have received "+ .@convert +"x "+ getitemname(.@itemReward) +".";
		mes "Your current Vote Points is "+ .vp;
		close;
		
	L_ConvertAll:
		set .@convert, (.vp / .@convertRate);
		set .vp, (.vp % .@convertRate);
		getitem .@itemReward, .@convert;
		query_sql("UPDATE cp_createlog SET votepoints = "+ .vp +" WHERE account_id = "+ getcharid(3));
		
		mes .@n$;
		mes "You have received "+ .@convert +"x "+ getitemname(.@itemReward) +".";
		mes "Your current Vote Points is "+ .vp;
		close;
	
	L_VotePointsTooLow:
		mes .@n$;
		mes "Your Vote Points is too low. Come back when you have the minimum amount of Vote Points.";
		close;
	
	function getPoints {
		set .@account_id, getarg(0);
		
		set .@count, query_sql("SELECT votepoints FROM cp_createlog WHERE account_id = "+ .@account_id, .@votepoints);
		
		return .@count ? .@votepoints : 0;
	}
	
	OnBuyItem:
		set .@cost,0;
		for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1)
			for(set .@j,0; .@j<getarraysize(.itemShop); set .@j,.@j+2)
				if (@bought_nameid[.@i] == .itemShop[.@j]) {
					set .@cost, .@cost+(.itemShop[.@j+1]*@bought_quantity[.@i]);
					break;
				}
		mes .@n$;
		if (.@cost > .vp) mes "You don't have enough Vote Points.";
		else {
			for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1) {
				getitem @bought_nameid[.@i], @bought_quantity[.@i];
				dispbottom "Purchased "+@bought_quantity[.@i]+"x "+getitemname(@bought_nameid[.@i])+".";
			}
			set .vp, .vp - .@cost;
			query_sql("UPDATE cp_createlog SET votepoints = votepoints - "+ .@cost +" WHERE account_id = "+ getcharid(3));
			mes .@n$;
			mes "Deal completed.";
			mes "You now have ^ff0000"+ .vp +"^000000 Vote Points.";
			emotion e_cash;
		}
		set .@cost,0;
		deletearray @bought_nameid[0], getarraysize(@bought_nameid);
		deletearray @bought_quantity[0], getarraysize(@bought_quantity);
		close;
	
	OnInit:
		setarray .itemShop[0],	501,2,607,5; // <ITEM_ID>,<PRICE>,...	
		
		npcshopdelitem "votepoints_shop",512;
		for(set .@i, 0; .@i < getarraysize(.itemShop); set .@i, .@i+2)
			npcshopadditem "votepoints_shop", .itemShop[.@i], .itemShop[.@i+1];
	end;
}

-	shop	votepoints_shop	-1,512:1
<?php if (!defined('FLUX_ROOT')) exit;
return array(
	'DefaultThemeName'		=> 'default',
	'PointsType'			=> "vote", // credit, vote, cash
	'DefaultIntervalVoting' => 12,
	'DefaultVotePoints' 	=> 0,
	'VoteNameMax'			=> 15,
	'VoteNameMin' 			=> 6,
	'VotePointsMin'			=> 0,
	'VotePointsMax'			=> 999,
	'VoteIntervalMin'		=> 1,
	'VoteIntervalMax'		=> 24,
	'AllowedImgType'		=> array('jpg', 'jpeg', 'png', 'gif'),
	'MaxFileSize'			=> 500, // KB,
	'ImageMaxWidth'			=> 150,
	'ImageMaxHeight'		=> 150,
	'ImageUploadPath'		=> "votes", // /themes/default/img/votes/
	'EnableIPVoteCheck'		=> true,
	'AlphaNumSpaceRegex'	=> "/^[A-Za-z0-9_\s]+$/",

	'MenuItems'	=> array(
		'Other'	=> array(
			'Vote for Points' => array(
				'module' => 'voteforpoints'
			)
		)
	),

	'SubMenuItems'	=> array(
		'voteforpoints'	=> array(
			'index' => 'Vote',
			'add' => 'Add Voting Site',
			'list' => 'List Voting Sites',
			'log' => 'Voters Log',
		)
	),

	'FluxTables'	=> array(
		'vfp_logs' => 'cp_vfp_logs',
		'vfp_sites' => 'cp_vfp_sites',
		'cashpoints' => 'acc_reg_num'
	)
)
?>

Can someone help me please

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.00
  • Content Count:  3
  • Reputation:   0
  • Joined:  02/02/23
  • Last Seen:  

On 11/11/2020 at 10:27 AM, Royr said:

Alright! This is how i fixed the issue regarding not updating SQL.

 

Make sure your using the "vote":
Locate: addons\voteforpoints\config\addon.php

'PointsType'			=> "vote", // credit, vote, cash



What i did was creating a new table, which is "cp_v4p_voters"

SQL Table: (Execute this query)

CREATE TABLE `cp_v4p_voters` (
  `account_id` int(10) unsigned NOT NULL,
  `votepoints` int(10) unsigned NOT NULL,
  PRIMARY KEY (`account_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

First removed the existing one:
 

							case "vote":
                                // update votepoints
                                $sql = "UPDATE $server->loginDatabase.cp_createlog SET votepoints = votepoints + ? WHERE account_id = ?";
                                $sth = $server->connection->getStatement($sql);
                                $sth->execute(array((int) $res->votepoints, $account_id));
                                break;

 

And Insert this: (Locate)

addons\voteforpoints\modules\voteforpoints\index.php

							case "vote":
							// update votepoints
							$sql = "UPDATE $server->loginDatabase.cp_v4p_voters SET votepoints = votepoints + ? WHERE account_id = ?";
							$sth = $server->connection->getStatement($sql);
							$sth->execute(array((int) $res->votepoints, $account_id));
								if ( ! $sth->rowCount())
								{
									$sql = "INSERT INTO $server->loginDatabase.cp_v4p_voters VALUES (?, ?)";
									$sth = $server->connection->getStatement($sql);
									$bind = array($account_id, $res->votepoints);
									$sth->execute($bind);

								if ( ! $sth->rowCount())
									$errorMessage = sprintf(Flux::message("UnableToVote"), 3);
                                } else {
                                    $sql = "UPDATE $server->loginDatabase.cp_v4p_voters SET `value` = `value` + ? WHERE `key` = ? AND account_id = ?";
                                    $sth = $server->connection->getStatement($sql);
									$sth->execute(array((int) $res->votepoints, $account_id));
                                }
                                break;

 

PROOF it works .

Capture.PNG.80838874b86abfeba361e4e6086e21eb.PNG

You are phenomenal!!! It will help a lot of people with vote saving problems!

 

Nice!!!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...