prt_vilg01,98,76,5 script Mail NPC 4_F_KAFRA9,{ doevent "mail_main::OnTalk"; end; } - script mail_main -1,{ function func_getitemname { .@refine = getarg(0,0); .@nameid = getarg(1,0); .@amount = getarg(2,0); if ( .@nameid >= 1 && .@amount >= 1 ) { .@name$ = getitemname( .@nameid ); .@itemtype = getiteminfo( .@nameid,2 ); if ( .@itemtype == IT_WEAPON || .@itemtype == IT_WEAPON ) { if ( .@refine ) .@name$ = "+"+.@refine+" "+.@name$; .@name$ = .@name$+" ["+getitemslots( .@nameid )+"]"; } } return .@name$; } OnTalk: switch( select( "Read mail", "Compose Mail", "Cancel" )) { case 1: .@sql$ = "SELECT `id`,`send_name`,`title`,`message`,`zeny`,`nameid`,`amount`,`refine`,`attribute`,`identify`,`card0`,`card1`,`card2`,`card3`" + "FROM `mail` " + "WHERE `dest_name` = '"+escape_sql( strcharinfo(0) )+"' " + "ORDER BY `time` DESC " + "LIMIT "+.max_size; query_sql( .@sql$,.@id,.@send_name$,.@title$,.@message$,.@zeny,.@nameid,.@amount,.@refine,.@attribute,.@identify,.@card0,.@card1,.@card2,.@card3 ); .@id_size = getarraysize( .@id ); if ( !.@id_size ) { mes "Didn't have any email."; } else { for ( .@i = 0; .@i < .@id_size; .@i++ ) .@menu$ = .@menu$ + replacestr( .@title$[.@i], ":", " " ) + "by " + replacestr( .@send_name$[.@i], ":", " " ) + ":"; .@i = select( .@menu$ ) - 1; mes "Sender: "+.@send_name$[.@i]; mes "Title: "+.@title$[.@i]; mes "Message: "+.@message$[.@i]; if ( .@nameid[.@i] && .@amount[.@i] ) mes "Item: "+func_getitemname( .@refine[.@i],.@nameid[.@i],.@amount[.@i] ); if ( .@zeny[.@i] ) mes "Zeny: "+F_InsertComma( .@zeny[.@i] )+"z"; if ( select( (( .@nameid[.@i] && .@amount[.@i] ) || .@zeny[.@i] ) ? "Retrieve Item(s) & Delete Mail":"Delete Mail","Cancel" ) ) { mes "This action cant be undo, are you sure ?"; if ( select( "Confirm","Cancel" ) == 1 ) { if ( .@nameid[.@i] && .@amount[.@i] ) { if ( !checkweight( .@nameid[.@i],.@amount[.@i] ) ) { mes "You're overweight."; break; } else { getitem2 .@nameid[.@i],.@amount[.@i],.@identify[.@i],.@refine[.@i],.@attribute[.@i],.@card0[.@i],.@card1[.@i],.@card2[.@i],.@card3[.@i]; } } if ( .@zeny[.@i] ) Zeny += .@zeny[.@i]; query_sql( "DELETE FROM `mail` WHERE `id` = '"+.@id[.@i]+"' LIMIT 1" ); } } } break; case 2: disable_items; do { .@is_complete = ( .@dest_id != 0 && .@dest_name$ != "" && .@title$ != "" && .@message$ != "" ); mes "Receiver: "+.@dest_name$; mes "Title: "+.@title$; mes "Message: "+.@message$; if ( .@nameid && .@amount ) mes "Item: "+func_getitemname( .@refine,.@nameid,.@amount ); if ( .@zeny ) mes "Zeny: "+F_InsertComma( .@zeny )+"z"; next; switch ( select( "Edit Receiver", "Edit Title", "Edit Message", "Edit Item", "Edit Zeny", ( .@is_complete ) ? "Complete":"" )) { case 1: mes "Enter Player Name"; input .@input$; query_sql( "SELECT `account_id`,`name` FROM `char` WHERE `name` LIKE '"+escape_sql( .@input$ )+"' LIMIT 1",.@dest_id,.@dest_name$ ); if ( !.@dest_id ) { mes "Char not found."; } break; case 2: mes "Enter Title"; input .@title$,0,45; break; case 3: mes "Enter Message"; input .@message$; break; break; case 4: .@temp_menu$ = ""; .@temp_count = 0; getinventorylist; for ( .@i = 0; .@i < @inventorylist_count; .@i++ ) { if ( !@inventorylist_bound[.@i] && !@inventorylist_expire[.@i] && !@inventorylist_equip[.@i] && @inventorylist_amount[.@i] > 0 ) { .@temp_menu$ = .@temp_menu$ + func_getitemname( @inventorylist_refine[.@i],@inventorylist_id[.@i],@inventorylist_amount[.@i] ); .@temp_count++; } .@temp_menu$ = .@temp_menu$ + ":"; } if ( !.@temp_count ) { mes "Dont have available item(s) for mail."; } else { mes "Pick an item from your inventory."; .@i = select( .@temp_menu$+"None" ) - 1; if ( .@i < @inventorylist_count ) { .@nameid = @inventorylist_id[.@i]; .@amount = @inventorylist_amount[.@i]; .@refine = @inventorylist_refine[.@i]; .@identify = @inventorylist_identify[.@i]; .@attribute = @inventorylist_attribute[.@i]; .@card0 = @inventorylist_card1[.@i]; .@card1 = @inventorylist_card2[.@i]; .@card2 = @inventorylist_card3[.@i]; .@card3 = @inventorylist_card4[.@i]; } else { .@nameid = 0; .@amount = 0; } } break; case 5: mes "Enter Zeny"; input .@zeny,0,Zeny; break; case 6: mes "Confirm your action."; if ( select( "Confirm","Cancel" ) == 1 ) { if ( .@nameid && .@amount > 0 ) { delitem2 .@nameid,.@amount,.@identify,.@refine,.@attribute,.@card0,.@card1,.@card2,.@card3; } if ( .@zeny[.@i] ) Zeny -= .@zeny; .@sql$ = sprintf( "INSERT INTO `mail` ( %s ) VALUES ( %s ) ", "`send_name`,`send_id`,`dest_name`,`dest_id`,`title`,`message`,`time`,`status`,`zeny`,`nameid`,`amount`,`refine`,`attribute`,`identify`,`card0`,`card1`,`card2`,`card3`", "'"+escape_sql( .@send_name$ )+"',"+getcharid(3)+",'"+escape_sql( .@dest_name$ )+"',"+.@dest_id+",'"+escape_sql( .@title$ )+"','"+escape_sql( .@message$ )+"',"+gettimetick(2)+",1,"+.@zeny+","+.@nameid+","+.@amount+","+.@refine+","+.@attribute+","+.@identify+","+.@card0+","+.@card1+","+.@card2+","+.@card3 ); query_sql( .@sql$ ); mes "Done"; close; } break; } next; } while ( 1 ); break; default: break; } close; OnInit: .max_size = 30; end; }