Jump to content
  • 0

H>Item Ranking


GM Winter

Question


  • Group:  Members
  • Topic Count:  176
  • Topics Per Day:  0.14
  • Content Count:  666
  • Reputation:   9
  • Joined:  12/04/20
  • Last Seen:  

hello im having a problem in this script its an item ranking script example the most number of apple that given to this npc will show the rank and will be the winner of the event in my case during test in offline server it works fine but when i put it in the online server theres an error and i cant fixed it anyone have idea whats the error

this is the original script: 

Quote

/*
CREATE TABLE IF NOT EXISTS `e_npc_trade_item` (
  `cid` INT(11) UNSIGNED NOT NULL DEFAULT '0',
  `name` VARCHAR(30) NOT NULL DEFAULT '',
  `nameid` INT(11) UNSIGNED NOT NULL DEFAULT '0',
  `amount` INT(11) UNSIGNED NOT NULL DEFAULT '0',
  PRIMARY KEY (`cid`,`nameid`,`amount`)
) ENGINE=MyISAM;
*/

//sky_quest,38,34,5    script    Scroll Collector    2_m_sage_old,{
malangdo,134,114,5    script    Scroll Collector    2_m_sage_old,{
    doevent "trade_item_main::OnTalk";
}


-    script    trade_item_main    -1,{
    function    func_DisallowItem    {
        switch ( getarg( 0,0 ) ) {
            default: 
                return 0;
            // case <itemID>:
            case 501:    // Red Potion
            case 502:    // Orange Potion
            case 4001:    // Poring Card 
                return 1;
        }
        return 0;
    }
    
    OnInit:
        // Top Rank
        .top_rank = 10;
        
        // NPC take what item ID, 0 = all items.
        .only_one_itemid = 61631; // special event scroll
        end;
    
    OnTalk:
        .@is_gm = ( getgmlevel() >= 99 );
        
        mes "^0055FF[ Special Scroll Collector ]^000000";
        mes "Do you have Special Scroll? You may give it to me.";
        mes " ";
        mes "I'll always remember who giveaway this items to me.";
        next;
        switch( select(
            "View Top "+.top_rank+" Rank",
            "Give Special Scroll",
            ( .@is_gm ) ? "[GM] Reset" : ""
        )) {
            default:
                do {
                    
                    switch( select( 
                        "Filter by Name", 
                        ( .only_one_itemid ) ? "":"Filter by ItemID",
                        "Without Filter" 
                    ) ) {
                        case 1: mes "Enter Char Name"; break;
                        case 2: mes "Enter ItemID"; break;
                        default: break;
                    }
                    
                    if ( @menu && @menu < 3 ) {
                        next;
                        input .@input$;
                    }
                    
                    .@sql$ = "SELECT `name`, `nameid`, SUM(`amount`) AS `total` "
                            + "FROM `e_npc_trade_item` "
                            + "WHERE 1 = 1 "
                            + ( .only_one_itemid ? "AND `nameid` = "+.only_one_itemid+" " : "" )
                            + ( ( @menu == 1 ) ? "AND `name` = '"+escape_sql( .@input$ )+"' " : "" )
                            + ( ( @menu == 2 ) ? "AND `nameid` = '"+escape_sql( .@input$ )+"' " : "" )
                            + "GROUP BY `cid`,`nameid` "
                            + "ORDER BY `total` DESC LIMIT "+.top_rank;
                    query_sql( .@sql$,.@name$,.@nameid,.@total );
                    .@size = getarraysize( .@name$ );
                    
                    mes "Top "+.top_rank+" Records:";
                    if ( .@size ) {
                        for ( .@i = 0; .@i < .@size; .@i++ ) {
                            //mes "["+(.@i+1)+".] ~ '"+getitemname( .@nameid[.@i] )+"' | [ "+.@total[.@i]+"ea ] - '^0000FF"+.@name$[.@i]+"'^000000 ";
                            mes "["+(.@i+1)+".] '"+getitemname( .@nameid[.@i] )+"' ("+.@total[.@i]+"ea) - '"+.@name$[.@i]+"' ";
                        }
                    }
                    else {
                        mes "no record found.";
                    }
                    next;
                } while ( 1 );
                break;
            case 2:
                if ( !.only_one_itemid ) {
                    mes "Pick an item and give to me";
                    getinventorylist;
                    for ( .@i = 0; .@i < @inventorylist_count; .@i++ ) {
                        if ( @inventorylist_bound[.@i] <= 0
                            && @inventorylist_expire[.@i] <= 0
                            && @inventorylist_equip[.@i] <= 0
                            && func_DisallowItem( @inventorylist_id[.@i] ) <= 0
                        ) {
                            .@menu$ = .@menu$ + getitemname( @inventorylist_id[.@i] ) + " ("+@inventorylist_amount[.@i]+" left)";
                            .@count++;
                        }
                        .@menu$ = .@menu$ + ":";
                    }
                    if ( .@count ) {
                        .@i = select( .@menu$ ) - 1;
                        .@itemid = @inventorylist_id[.@i];
                    }
                }
                else {
                    .@itemid = .only_one_itemid;
                    .@count++;
                }
                if ( .@itemid ) {
                    mes "How many "+getitemname( .@itemid )+" will be given to me?";
                    input .@amount,0,countitem( .@itemid );
                    if ( .@amount ) {
                        delitem .@itemid,.@amount;
                        npctalk "Thank you, "+strcharinfo(0)+" donated "+.@amount+"x "+getitemname( .@itemid )+" to me.";
                        query_sql( "INSERT INTO `e_npc_trade_item` ( `cid`,`name`,`nameid`,`amount` ) VALUES ( "+getcharid(0)+",'"+escape_sql( strcharinfo(0) )+"',"+.@itemid+","+.@amount+" ) ON DUPLICATE KEY UPDATE `amount` = `amount` + "+.@amount );
                        mes "Thank for your kindness.";
                    }
                }
                else {
                    mes "You dont have any item available to give to NPC.";
                }
                break;
            case 3:
                mes "This action cant be undo, confirm your action?";
                next;
                if ( select( "Yes, confirm.","Cancel" ) == 1 ) {
                    query_sql( "TRUNCATE `e_npc_trade_item`" );
                }
                break;
        }
        close;
}

and this is the error:

 

Quote

[SQL]: DB error - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mydatabased.e_npc_trade_item.name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
[Debug]: at script.cpp:17049 - SELECT `name`, `nameid`, SUM(`amount`) AS `total` FROM `e_npc_trade_item` WHERE 1 = 1 AND `nameid` = 61631 GROUP BY `cid`,`nameid` ORDER BY `total` DESC LIMIT 10
[Debug]: Source (NPC): trade_item_main (invisible/not on a map)



 

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

  • Group:  Forum Moderator
  • Topic Count:  93
  • Topics Per Day:  0.02
  • Content Count:  10013
  • Reputation:   2348
  • Joined:  10/28/11
  • Last Seen:  

4 minutes ago, Emistry said:

this will be addressed in the upcoming version v1.4

https://pastebin.com/raw/1Fbmakbe

refrain from creating multiple post just for same issue or question. One post is more than enough.

Edited by Emistry
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...